aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/00-INDEX2
-rw-r--r--Documentation/ABI/removed/ip_queue9
-rw-r--r--Documentation/ABI/testing/debugfs-pfo-nx-crypto45
-rw-r--r--Documentation/ABI/testing/dev-kmsg90
-rw-r--r--Documentation/ABI/testing/sysfs-block-rssd15
-rw-r--r--Documentation/ABI/testing/sysfs-bus-fcoe77
-rw-r--r--Documentation/ABI/testing/sysfs-bus-i2c-devices-lm353315
-rw-r--r--Documentation/ABI/testing/sysfs-bus-iio768
-rw-r--r--Documentation/ABI/testing/sysfs-bus-rbd4
-rw-r--r--Documentation/ABI/testing/sysfs-bus-usb19
-rw-r--r--Documentation/ABI/testing/sysfs-class-backlight-driver-lm353348
-rw-r--r--Documentation/ABI/testing/sysfs-class-extcon97
-rw-r--r--Documentation/ABI/testing/sysfs-class-led-driver-lm353365
-rw-r--r--Documentation/ABI/testing/sysfs-class-mtd52
-rw-r--r--Documentation/ABI/testing/sysfs-class-net-mesh9
-rw-r--r--Documentation/ABI/testing/sysfs-devices-power35
-rw-r--r--Documentation/ABI/testing/sysfs-devices-system-cpu25
-rw-r--r--Documentation/ABI/testing/sysfs-driver-wacom23
-rw-r--r--Documentation/ABI/testing/sysfs-power59
-rw-r--r--Documentation/CodingStyle16
-rw-r--r--Documentation/DocBook/80211.tmpl2
-rw-r--r--Documentation/DocBook/Makefile2
-rw-r--r--Documentation/DocBook/kernel-api.tmpl13
-rw-r--r--Documentation/DocBook/kernel-hacking.tmpl2
-rw-r--r--Documentation/DocBook/libata.tmpl2
-rw-r--r--Documentation/DocBook/mcabook.tmpl107
-rw-r--r--Documentation/DocBook/media/Makefile4
-rw-r--r--Documentation/DocBook/media/dvb/dvbproperty.xml160
-rw-r--r--Documentation/DocBook/media/v4l/biblio.xml29
-rw-r--r--Documentation/DocBook/media/v4l/common.xml38
-rw-r--r--Documentation/DocBook/media/v4l/compat.xml75
-rw-r--r--Documentation/DocBook/media/v4l/controls.xml712
-rw-r--r--Documentation/DocBook/media/v4l/dev-subdev.xml202
-rw-r--r--Documentation/DocBook/media/v4l/io.xml12
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb10.xml2
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml29
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt.xml10
-rw-r--r--Documentation/DocBook/media/v4l/subdev-image-processing-crop.dia614
-rw-r--r--Documentation/DocBook/media/v4l/subdev-image-processing-crop.svg63
-rw-r--r--Documentation/DocBook/media/v4l/subdev-image-processing-full.dia1588
-rw-r--r--Documentation/DocBook/media/v4l/subdev-image-processing-full.svg163
-rw-r--r--Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.dia1152
-rw-r--r--Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.svg116
-rw-r--r--Documentation/DocBook/media/v4l/v4l2.xml46
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-create-bufs.xml13
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-cropcap.xml4
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-dqevent.xml2
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml211
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml4
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml119
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml4
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enuminput.xml2
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enumoutput.xml2
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-crop.xml4
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml6
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml130
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml19
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-fmt.xml2
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-frequency.xml6
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-parm.xml5
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml2
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-tuner.xml2
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml6
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml4
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml104
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-queryctrl.xml41
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-reqbufs.xml7
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml5
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml9
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml228
-rw-r--r--Documentation/DocBook/mtdnand.tmpl2
-rw-r--r--Documentation/HOWTO32
-rw-r--r--Documentation/Makefile2
-rw-r--r--Documentation/RCU/torture.txt15
-rw-r--r--Documentation/SubmittingPatches3
-rw-r--r--Documentation/arm/00-INDEX2
-rw-r--r--Documentation/arm/IXP200069
-rw-r--r--Documentation/arm/OMAP/DSS46
-rw-r--r--Documentation/arm/SPEAr/overview.txt41
-rw-r--r--Documentation/blackfin/bfin-gpio-notes.txt2
-rw-r--r--Documentation/cgroups/memory.txt37
-rw-r--r--Documentation/cgroups/resource_counter.txt12
-rw-r--r--Documentation/cris/README62
-rw-r--r--Documentation/device-mapper/thin-provisioning.txt11
-rw-r--r--Documentation/device-mapper/verity.txt131
-rw-r--r--Documentation/devices.txt11
-rw-r--r--Documentation/devicetree/bindings/arm/arch_timer.txt27
-rw-r--r--Documentation/devicetree/bindings/arm/atmel-adc.txt65
-rw-r--r--Documentation/devicetree/bindings/arm/fsl.txt12
-rw-r--r--Documentation/devicetree/bindings/arm/gic.txt35
-rw-r--r--Documentation/devicetree/bindings/arm/lpc32xx-mic.txt38
-rw-r--r--Documentation/devicetree/bindings/arm/lpc32xx.txt8
-rw-r--r--Documentation/devicetree/bindings/arm/mrvl/intc.txt40
-rw-r--r--Documentation/devicetree/bindings/arm/mrvl/mrvl.txt (renamed from Documentation/devicetree/bindings/arm/mrvl.txt)8
-rw-r--r--Documentation/devicetree/bindings/arm/mrvl/timer.txt13
-rw-r--r--Documentation/devicetree/bindings/arm/samsung/interrupt-combiner.txt52
-rw-r--r--Documentation/devicetree/bindings/arm/spear-timer.txt18
-rw-r--r--Documentation/devicetree/bindings/arm/spear.txt20
-rw-r--r--Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt11
-rw-r--r--Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-mc.txt16
-rw-r--r--Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-mc.txt18
-rw-r--r--Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt19
-rw-r--r--Documentation/devicetree/bindings/dma/snps-dma.txt17
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-mm-lantiq.txt38
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-mxs.txt87
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-nmk.txt31
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-stp-xway.txt42
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio_lpc32xx.txt43
-rw-r--r--Documentation/devicetree/bindings/gpio/mrvl-gpio.txt18
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-mux-pinctrl.txt93
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-mxs.txt16
-rw-r--r--Documentation/devicetree/bindings/i2c/mrvl-i2c.txt15
-rw-r--r--Documentation/devicetree/bindings/i2c/mux.txt60
-rw-r--r--Documentation/devicetree/bindings/i2c/pnx.txt36
-rw-r--r--Documentation/devicetree/bindings/i2c/samsung-i2c.txt8
-rw-r--r--Documentation/devicetree/bindings/i2c/xiic.txt22
-rw-r--r--Documentation/devicetree/bindings/input/fsl-mma8450.txt1
-rw-r--r--Documentation/devicetree/bindings/input/spear-keyboard.txt20
-rw-r--r--Documentation/devicetree/bindings/input/touchscreen/lpc32xx-tsc.txt16
-rw-r--r--Documentation/devicetree/bindings/input/twl6040-vibra.txt37
-rw-r--r--Documentation/devicetree/bindings/iommu/nvidia,tegra20-gart.txt14
-rw-r--r--Documentation/devicetree/bindings/mfd/da9052-i2c.txt60
-rw-r--r--Documentation/devicetree/bindings/mfd/mc13xxx.txt4
-rw-r--r--Documentation/devicetree/bindings/mfd/tps65910.txt133
-rw-r--r--Documentation/devicetree/bindings/mfd/twl6040.txt62
-rw-r--r--Documentation/devicetree/bindings/misc/bmp085.txt20
-rw-r--r--Documentation/devicetree/bindings/mmc/fsl-esdhc.txt6
-rw-r--r--Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt6
-rw-r--r--Documentation/devicetree/bindings/mmc/mmc-spi-slot.txt3
-rw-r--r--Documentation/devicetree/bindings/mmc/mmc.txt27
-rw-r--r--Documentation/devicetree/bindings/mmc/mmci.txt19
-rw-r--r--Documentation/devicetree/bindings/mmc/mxs-mmc.txt25
-rw-r--r--Documentation/devicetree/bindings/mmc/nvidia-sdhci.txt4
-rw-r--r--Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt4
-rw-r--r--Documentation/devicetree/bindings/mtd/gpmi-nand.txt33
-rw-r--r--Documentation/devicetree/bindings/mtd/mxc-nand.txt19
-rw-r--r--Documentation/devicetree/bindings/mtd/orion-nand.txt50
-rw-r--r--Documentation/devicetree/bindings/net/can/fsl-flexcan.txt2
-rw-r--r--Documentation/devicetree/bindings/net/fsl-fec.txt4
-rw-r--r--Documentation/devicetree/bindings/net/lpc-eth.txt24
-rw-r--r--Documentation/devicetree/bindings/net/mdio-mux-gpio.txt127
-rw-r--r--Documentation/devicetree/bindings/net/mdio-mux.txt136
-rw-r--r--Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt95
-rw-r--r--Documentation/devicetree/bindings/pinctrl/fsl,imx51-pinctrl.txt787
-rw-r--r--Documentation/devicetree/bindings/pinctrl/fsl,imx53-pinctrl.txt1202
-rw-r--r--Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt1630
-rw-r--r--Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt918
-rw-r--r--Documentation/devicetree/bindings/pinctrl/nvidia,tegra20-pinmux.txt132
-rw-r--r--Documentation/devicetree/bindings/pinctrl/nvidia,tegra30-pinmux.txt132
-rw-r--r--Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt128
-rw-r--r--Documentation/devicetree/bindings/pinctrl/pinctrl_spear.txt155
-rw-r--r--Documentation/devicetree/bindings/pinmux/pinmux_nvidia.txt5
-rw-r--r--Documentation/devicetree/bindings/regulator/fixed-regulator.txt5
-rw-r--r--Documentation/devicetree/bindings/regulator/tps62360-regulator.txt44
-rw-r--r--Documentation/devicetree/bindings/regulator/tps6586x.txt97
-rw-r--r--Documentation/devicetree/bindings/rtc/lpc32xx-rtc.txt15
-rw-r--r--Documentation/devicetree/bindings/rtc/spear-rtc.txt17
-rw-r--r--Documentation/devicetree/bindings/sound/imx-audio-sgtl5000.txt49
-rw-r--r--Documentation/devicetree/bindings/sound/mxs-audio-sgtl5000.txt17
-rw-r--r--Documentation/devicetree/bindings/sound/mxs-saif.txt36
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt32
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt15
-rw-r--r--Documentation/devicetree/bindings/sound/omap-dmic.txt21
-rw-r--r--Documentation/devicetree/bindings/sound/omap-mcpdm.txt21
-rw-r--r--Documentation/devicetree/bindings/sound/tegra-audio-trimslice.txt14
-rw-r--r--Documentation/devicetree/bindings/sound/tegra-audio-wm8753.txt54
-rw-r--r--Documentation/devicetree/bindings/spi/fsl-imx-cspi.txt4
-rw-r--r--Documentation/devicetree/bindings/staging/iio/adc/lpc32xx-adc.txt16
-rw-r--r--Documentation/devicetree/bindings/staging/iio/adc/spear-adc.txt26
-rw-r--r--Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt2
-rw-r--r--Documentation/devicetree/bindings/usb/isp1301.txt25
-rw-r--r--Documentation/devicetree/bindings/usb/lpc32xx-udc.txt28
-rw-r--r--Documentation/devicetree/bindings/usb/ohci-nxp.txt24
-rw-r--r--Documentation/devicetree/bindings/usb/spear-usb.txt39
-rw-r--r--Documentation/devicetree/bindings/usb/tegra-usb.txt3
-rw-r--r--Documentation/devicetree/bindings/vendor-prefixes.txt3
-rw-r--r--Documentation/devicetree/bindings/watchdog/pnx4008-wdt.txt13
-rw-r--r--Documentation/devicetree/booting-without-of.txt55
-rw-r--r--Documentation/dma-buf-sharing.txt109
-rw-r--r--Documentation/driver-model/devres.txt8
-rwxr-xr-xDocumentation/dvb/get_dvb_firmware20
-rw-r--r--Documentation/dvb/opera-firmware.txt4
-rw-r--r--Documentation/dynamic-debug-howto.txt184
-rw-r--r--Documentation/edac.txt2
-rw-r--r--Documentation/eisa.txt2
-rw-r--r--Documentation/extcon/porting-android-switch-class124
-rw-r--r--Documentation/feature-removal-schedule.txt65
-rw-r--r--Documentation/filesystems/Locking5
-rw-r--r--Documentation/filesystems/ext3.txt6
-rw-r--r--Documentation/filesystems/gfs2-glocks.txt119
-rw-r--r--Documentation/filesystems/gfs2.txt9
-rw-r--r--Documentation/filesystems/nfs/pnfs.txt2
-rw-r--r--Documentation/filesystems/porting16
-rw-r--r--Documentation/filesystems/proc.txt26
-rw-r--r--Documentation/filesystems/qnx6.txt28
-rw-r--r--Documentation/filesystems/vfs.txt17
-rw-r--r--Documentation/gpio.txt3
-rw-r--r--Documentation/hwmon/coretemp22
-rw-r--r--Documentation/hwmon/ina2xx29
-rw-r--r--Documentation/hwmon/it8730
-rw-r--r--Documentation/hwmon/wm831x2
-rw-r--r--Documentation/i2c/functionality9
-rw-r--r--Documentation/i2c/i2c-protocol9
-rw-r--r--Documentation/i2c/muxes/i2c-mux-gpio (renamed from Documentation/i2c/muxes/gpio-i2cmux)12
-rw-r--r--Documentation/initrd.txt4
-rw-r--r--Documentation/ioctl/ioctl-number.txt1
-rw-r--r--Documentation/kbuild/kbuild.txt19
-rw-r--r--Documentation/kbuild/kconfig.txt18
-rw-r--r--Documentation/kdump/kdump.txt2
-rw-r--r--Documentation/kernel-parameters.txt160
-rw-r--r--Documentation/leds/ledtrig-transient.txt152
-rw-r--r--Documentation/mca.txt313
-rw-r--r--Documentation/media-framework.txt19
-rw-r--r--Documentation/memory-devices/ti-emif.txt57
-rw-r--r--Documentation/memory-hotplug.txt2
-rw-r--r--Documentation/misc-devices/mei/.gitignore1
-rw-r--r--Documentation/misc-devices/mei/Makefile8
-rw-r--r--Documentation/misc-devices/mei/TODO2
-rw-r--r--Documentation/misc-devices/mei/mei-amt-version.c481
-rw-r--r--Documentation/misc-devices/mei/mei.txt215
-rw-r--r--Documentation/networking/00-INDEX8
-rw-r--r--Documentation/networking/3c359.txt58
-rw-r--r--Documentation/networking/3c509.txt1
-rw-r--r--Documentation/networking/batman-adv.txt22
-rw-r--r--Documentation/networking/can.txt2
-rw-r--r--Documentation/networking/fore200e.txt6
-rw-r--r--Documentation/networking/ieee802154.txt75
-rw-r--r--Documentation/networking/ip-sysctl.txt32
-rw-r--r--Documentation/networking/mac80211-auth-assoc-deauth.txt10
-rw-r--r--Documentation/networking/olympic.txt79
-rw-r--r--Documentation/networking/smctr.txt66
-rw-r--r--Documentation/networking/stmmac.txt71
-rw-r--r--Documentation/networking/tms380tr.txt147
-rw-r--r--Documentation/nfc/nfc-hci.txt180
-rw-r--r--Documentation/parisc/debugging2
-rw-r--r--Documentation/pinctrl.txt94
-rw-r--r--Documentation/power/charger-manager.txt41
-rw-r--r--Documentation/power/power_supply_class.txt2
-rw-r--r--Documentation/power/regulator/regulator.txt3
-rw-r--r--Documentation/power/suspend-and-cpuhotplug.txt2
-rw-r--r--Documentation/prctl/no_new_privs.txt57
-rw-r--r--Documentation/prctl/seccomp_filter.txt163
-rw-r--r--Documentation/ramoops.txt16
-rw-r--r--Documentation/scheduler/sched-design-CFS.txt6
-rw-r--r--Documentation/scheduler/sched-domains.txt4
-rw-r--r--Documentation/scsi/00-INDEX2
-rw-r--r--Documentation/scsi/ChangeLog.megaraid_sas8
-rw-r--r--Documentation/scsi/ibmmca.txt1402
-rw-r--r--Documentation/scsi/scsi-parameters.txt6
-rw-r--r--Documentation/scsi/scsi_mid_low_api.txt2
-rw-r--r--Documentation/security/Smack.txt204
-rw-r--r--Documentation/security/Yama.txt10
-rw-r--r--Documentation/security/keys.txt17
-rw-r--r--Documentation/serial/stallion.txt22
-rw-r--r--Documentation/sound/alsa/ALSA-Configuration.txt2
-rw-r--r--Documentation/sound/alsa/compress_offload.txt2
-rw-r--r--Documentation/sound/oss/ALS4
-rw-r--r--Documentation/sparc/README-2.546
-rw-r--r--Documentation/stable_kernel_rules.txt6
-rw-r--r--Documentation/static-keys.txt2
-rw-r--r--Documentation/sysctl/fs.txt7
-rw-r--r--Documentation/sysctl/net.txt7
-rw-r--r--Documentation/trace/uprobetracer.txt113
-rw-r--r--Documentation/usb/dwc3.txt2
-rw-r--r--Documentation/usb/functionfs.txt67
-rw-r--r--Documentation/usb/wusb-cbaf2
-rw-r--r--Documentation/video4linux/4CCs.txt32
-rw-r--r--Documentation/video4linux/README.cpia22
-rw-r--r--Documentation/video4linux/gspca.txt1
-rw-r--r--Documentation/video4linux/v4l2-controls.txt21
-rw-r--r--Documentation/video4linux/v4l2-framework.txt106
-rw-r--r--Documentation/virtual/kvm/api.txt298
-rw-r--r--Documentation/virtual/kvm/cpuid.txt6
-rw-r--r--Documentation/virtual/kvm/msr.txt4
-rw-r--r--Documentation/virtual/virtio-spec.txt1164
-rw-r--r--Documentation/vm/frontswap.txt278
-rw-r--r--Documentation/vm/pagemap.txt2
-rw-r--r--Documentation/vm/slub.txt2
-rw-r--r--Documentation/vm/transhuge.txt62
-rw-r--r--Documentation/vme_api.txt396
-rw-r--r--Documentation/watchdog/src/watchdog-test.c20
-rw-r--r--Documentation/watchdog/watchdog-kernel-api.txt45
-rw-r--r--Documentation/watchdog/watchdog-parameters.txt5
-rw-r--r--Documentation/x86/efi-stub.txt65
-rw-r--r--Documentation/zh_CN/magic-number.txt2
285 files changed, 20359 insertions, 3224 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX
index 2214f123a976..49c051380daf 100644
--- a/Documentation/00-INDEX
+++ b/Documentation/00-INDEX
@@ -218,8 +218,6 @@ m68k/
218 - directory with info about Linux on Motorola 68k architecture. 218 - directory with info about Linux on Motorola 68k architecture.
219magic-number.txt 219magic-number.txt
220 - list of magic numbers used to mark/protect kernel data structures. 220 - list of magic numbers used to mark/protect kernel data structures.
221mca.txt
222 - info on supporting Micro Channel Architecture (e.g. PS/2) systems.
223md.txt 221md.txt
224 - info on boot arguments for the multiple devices driver. 222 - info on boot arguments for the multiple devices driver.
225memory-barriers.txt 223memory-barriers.txt
diff --git a/Documentation/ABI/removed/ip_queue b/Documentation/ABI/removed/ip_queue
new file mode 100644
index 000000000000..3243613bc2d2
--- /dev/null
+++ b/Documentation/ABI/removed/ip_queue
@@ -0,0 +1,9 @@
1What: ip_queue
2Date: finally removed in kernel v3.5.0
3Contact: Pablo Neira Ayuso <pablo@netfilter.org>
4Description:
5 ip_queue has been replaced by nfnetlink_queue which provides
6 more advanced queueing mechanism to user-space. The ip_queue
7 module was already announced to become obsolete years ago.
8
9Users:
diff --git a/Documentation/ABI/testing/debugfs-pfo-nx-crypto b/Documentation/ABI/testing/debugfs-pfo-nx-crypto
new file mode 100644
index 000000000000..685d5a448423
--- /dev/null
+++ b/Documentation/ABI/testing/debugfs-pfo-nx-crypto
@@ -0,0 +1,45 @@
1What: /sys/kernel/debug/nx-crypto/*
2Date: March 2012
3KernelVersion: 3.4
4Contact: Kent Yoder <key@linux.vnet.ibm.com>
5Description:
6
7 These debugfs interfaces are built by the nx-crypto driver, built in
8arch/powerpc/crypto/nx.
9
10Error Detection
11===============
12
13errors:
14- A u32 providing a total count of errors since the driver was loaded. The
15only errors counted here are those returned from the hcall, H_COP_OP.
16
17last_error:
18- The most recent non-zero return code from the H_COP_OP hcall. -EBUSY is not
19recorded here (the hcall will retry until -EBUSY goes away).
20
21last_error_pid:
22- The process ID of the process who received the most recent error from the
23hcall.
24
25Device Use
26==========
27
28aes_bytes:
29- The total number of bytes encrypted using AES in any of the driver's
30supported modes.
31
32aes_ops:
33- The total number of AES operations submitted to the hardware.
34
35sha256_bytes:
36- The total number of bytes hashed by the hardware using SHA-256.
37
38sha256_ops:
39- The total number of SHA-256 operations submitted to the hardware.
40
41sha512_bytes:
42- The total number of bytes hashed by the hardware using SHA-512.
43
44sha512_ops:
45- The total number of SHA-512 operations submitted to the hardware.
diff --git a/Documentation/ABI/testing/dev-kmsg b/Documentation/ABI/testing/dev-kmsg
new file mode 100644
index 000000000000..281ecc5f9709
--- /dev/null
+++ b/Documentation/ABI/testing/dev-kmsg
@@ -0,0 +1,90 @@
1What: /dev/kmsg
2Date: Mai 2012
3KernelVersion: 3.5
4Contact: Kay Sievers <kay@vrfy.org>
5Description: The /dev/kmsg character device node provides userspace access
6 to the kernel's printk buffer.
7
8 Injecting messages:
9 Every write() to the opened device node places a log entry in
10 the kernel's printk buffer.
11
12 The logged line can be prefixed with a <N> syslog prefix, which
13 carries the syslog priority and facility. The single decimal
14 prefix number is composed of the 3 lowest bits being the syslog
15 priority and the higher bits the syslog facility number.
16
17 If no prefix is given, the priority number is the default kernel
18 log priority and the facility number is set to LOG_USER (1). It
19 is not possible to inject messages from userspace with the
20 facility number LOG_KERN (0), to make sure that the origin of
21 the messages can always be reliably determined.
22
23 Accessing the buffer:
24 Every read() from the opened device node receives one record
25 of the kernel's printk buffer.
26
27 The first read() directly following an open() always returns
28 first message in the buffer; there is no kernel-internal
29 persistent state; many readers can concurrently open the device
30 and read from it, without affecting other readers.
31
32 Every read() will receive the next available record. If no more
33 records are available read() will block, or if O_NONBLOCK is
34 used -EAGAIN returned.
35
36 Messages in the record ring buffer get overwritten as whole,
37 there are never partial messages received by read().
38
39 In case messages get overwritten in the circular buffer while
40 the device is kept open, the next read() will return -EPIPE,
41 and the seek position be updated to the next available record.
42 Subsequent reads() will return available records again.
43
44 Unlike the classic syslog() interface, the 64 bit record
45 sequence numbers allow to calculate the amount of lost
46 messages, in case the buffer gets overwritten. And they allow
47 to reconnect to the buffer and reconstruct the read position
48 if needed, without limiting the interface to a single reader.
49
50 The device supports seek with the following parameters:
51 SEEK_SET, 0
52 seek to the first entry in the buffer
53 SEEK_END, 0
54 seek after the last entry in the buffer
55 SEEK_DATA, 0
56 seek after the last record available at the time
57 the last SYSLOG_ACTION_CLEAR was issued.
58
59 The output format consists of a prefix carrying the syslog
60 prefix including priority and facility, the 64 bit message
61 sequence number and the monotonic timestamp in microseconds.
62 The values are separated by a ','. Future extensions might
63 add more comma separated values before the terminating ';'.
64 Unknown values should be gracefully ignored.
65
66 The human readable text string starts directly after the ';'
67 and is terminated by a '\n'. Untrusted values derived from
68 hardware or other facilities are printed, therefore
69 all non-printable characters in the log message are escaped
70 by "\x00" C-style hex encoding.
71
72 A line starting with ' ', is a continuation line, adding
73 key/value pairs to the log message, which provide the machine
74 readable context of the message, for reliable processing in
75 userspace.
76
77 Example:
78 7,160,424069;pci_root PNP0A03:00: host bridge window [io 0x0000-0x0cf7] (ignored)
79 SUBSYSTEM=acpi
80 DEVICE=+acpi:PNP0A03:00
81 6,339,5140900;NET: Registered protocol family 10
82 30,340,5690716;udevd[80]: starting version 181
83
84 The DEVICE= key uniquely identifies devices the following way:
85 b12:8 - block dev_t
86 c127:3 - char dev_t
87 n8 - netdev ifindex
88 +sound:card0 - subsystem:devname
89
90Users: dmesg(1), userspace kernel log consumers
diff --git a/Documentation/ABI/testing/sysfs-block-rssd b/Documentation/ABI/testing/sysfs-block-rssd
index d535757799fe..beef30c046b0 100644
--- a/Documentation/ABI/testing/sysfs-block-rssd
+++ b/Documentation/ABI/testing/sysfs-block-rssd
@@ -1,18 +1,5 @@
1What: /sys/block/rssd*/registers
2Date: March 2012
3KernelVersion: 3.3
4Contact: Asai Thambi S P <asamymuthupa@micron.com>
5Description: This is a read-only file. Dumps below driver information and
6 hardware registers.
7 - S ACTive
8 - Command Issue
9 - Allocated
10 - Completed
11 - PORT IRQ STAT
12 - HOST IRQ STAT
13
14What: /sys/block/rssd*/status 1What: /sys/block/rssd*/status
15Date: April 2012 2Date: April 2012
16KernelVersion: 3.4 3KernelVersion: 3.4
17Contact: Asai Thambi S P <asamymuthupa@micron.com> 4Contact: Asai Thambi S P <asamymuthupa@micron.com>
18Description: This is a read-only file. Indicates the status of the device. 5Description: This is a read-only file. Indicates the status of the device.
diff --git a/Documentation/ABI/testing/sysfs-bus-fcoe b/Documentation/ABI/testing/sysfs-bus-fcoe
new file mode 100644
index 000000000000..469d09c02f6b
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-bus-fcoe
@@ -0,0 +1,77 @@
1What: /sys/bus/fcoe/ctlr_X
2Date: March 2012
3KernelVersion: TBD
4Contact: Robert Love <robert.w.love@intel.com>, devel@open-fcoe.org
5Description: 'FCoE Controller' instances on the fcoe bus
6Attributes:
7
8 fcf_dev_loss_tmo: Device loss timeout peroid (see below). Changing
9 this value will change the dev_loss_tmo for all
10 FCFs discovered by this controller.
11
12 lesb_link_fail: Link Error Status Block (LESB) link failure count.
13
14 lesb_vlink_fail: Link Error Status Block (LESB) virtual link
15 failure count.
16
17 lesb_miss_fka: Link Error Status Block (LESB) missed FCoE
18 Initialization Protocol (FIP) Keep-Alives (FKA).
19
20 lesb_symb_err: Link Error Status Block (LESB) symbolic error count.
21
22 lesb_err_block: Link Error Status Block (LESB) block error count.
23
24 lesb_fcs_error: Link Error Status Block (LESB) Fibre Channel
25 Serivces error count.
26
27Notes: ctlr_X (global increment starting at 0)
28
29What: /sys/bus/fcoe/fcf_X
30Date: March 2012
31KernelVersion: TBD
32Contact: Robert Love <robert.w.love@intel.com>, devel@open-fcoe.org
33Description: 'FCoE FCF' instances on the fcoe bus. A FCF is a Fibre Channel
34 Forwarder, which is a FCoE switch that can accept FCoE
35 (Ethernet) packets, unpack them, and forward the embedded
36 Fibre Channel frames into a FC fabric. It can also take
37 outbound FC frames and pack them in Ethernet packets to
38 be sent to their destination on the Ethernet segment.
39Attributes:
40
41 fabric_name: Identifies the fabric that the FCF services.
42
43 switch_name: Identifies the FCF.
44
45 priority: The switch's priority amongst other FCFs on the same
46 fabric.
47
48 selected: 1 indicates that the switch has been selected for use;
49 0 indicates that the swich will not be used.
50
51 fc_map: The Fibre Channel MAP
52
53 vfid: The Virtual Fabric ID
54
55 mac: The FCF's MAC address
56
57 fka_peroid: The FIP Keep-Alive peroid
58
59 fabric_state: The internal kernel state
60 "Unknown" - Initialization value
61 "Disconnected" - No link to the FCF/fabric
62 "Connected" - Host is connected to the FCF
63 "Deleted" - FCF is being removed from the system
64
65 dev_loss_tmo: The device loss timeout peroid for this FCF.
66
67Notes: A device loss infrastructre similar to the FC Transport's
68 is present in fcoe_sysfs. It is nice to have so that a
69 link flapping adapter doesn't continually advance the count
70 used to identify the discovered FCF. FCFs will exist in a
71 "Disconnected" state until either the timer expires and the
72 FCF becomes "Deleted" or the FCF is rediscovered and becomes
73 "Connected."
74
75
76Users: The first user of this interface will be the fcoeadm application,
77 which is commonly packaged in the fcoe-utils package.
diff --git a/Documentation/ABI/testing/sysfs-bus-i2c-devices-lm3533 b/Documentation/ABI/testing/sysfs-bus-i2c-devices-lm3533
new file mode 100644
index 000000000000..1b62230b33b9
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-bus-i2c-devices-lm3533
@@ -0,0 +1,15 @@
1What: /sys/bus/i2c/devices/.../output_hvled[n]
2Date: April 2012
3KernelVersion: 3.5
4Contact: Johan Hovold <jhovold@gmail.com>
5Description:
6 Set the controlling backlight device for high-voltage current
7 sink HVLED[n] (n = 1, 2) (0, 1).
8
9What: /sys/bus/i2c/devices/.../output_lvled[n]
10Date: April 2012
11KernelVersion: 3.5
12Contact: Johan Hovold <jhovold@gmail.com>
13Description:
14 Set the controlling led device for low-voltage current sink
15 LVLED[n] (n = 1..5) (0..3).
diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio
new file mode 100644
index 000000000000..cfedf63cce15
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-bus-iio
@@ -0,0 +1,768 @@
1What: /sys/bus/iio/devices/iio:deviceX
2KernelVersion: 2.6.35
3Contact: linux-iio@vger.kernel.org
4Description:
5 Hardware chip or device accessed by one communication port.
6 Corresponds to a grouping of sensor channels. X is the IIO
7 index of the device.
8
9What: /sys/bus/iio/devices/triggerX
10KernelVersion: 2.6.35
11Contact: linux-iio@vger.kernel.org
12Description:
13 An event driven driver of data capture to an in kernel buffer.
14 May be provided by a device driver that also has an IIO device
15 based on hardware generated events (e.g. data ready) or
16 provided by a separate driver for other hardware (e.g.
17 periodic timer, GPIO or high resolution timer).
18 Contains trigger type specific elements. These do not
19 generalize well and hence are not documented in this file.
20 X is the IIO index of the trigger.
21
22What: /sys/bus/iio/devices/iio:deviceX/buffer
23KernelVersion: 2.6.35
24Contact: linux-iio@vger.kernel.org
25Description:
26 Directory of attributes relating to the buffer for the device.
27
28What: /sys/bus/iio/devices/iio:deviceX/name
29KernelVersion: 2.6.35
30Contact: linux-iio@vger.kernel.org
31Description:
32 Description of the physical chip / device for device X.
33 Typically a part number.
34
35What: /sys/bus/iio/devices/iio:deviceX/sampling_frequency
36What: /sys/bus/iio/devices/iio:deviceX/buffer/sampling_frequency
37What: /sys/bus/iio/devices/triggerX/sampling_frequency
38KernelVersion: 2.6.35
39Contact: linux-iio@vger.kernel.org
40Description:
41 Some devices have internal clocks. This parameter sets the
42 resulting sampling frequency. In many devices this
43 parameter has an effect on input filters etc rather than
44 simply controlling when the input is sampled. As this
45 effects datardy triggers, hardware buffers and the sysfs
46 direct access interfaces, it may be found in any of the
47 relevant directories. If it effects all of the above
48 then it is to be found in the base device directory.
49
50What: /sys/bus/iio/devices/iio:deviceX/sampling_frequency_available
51What: /sys/.../iio:deviceX/buffer/sampling_frequency_available
52What: /sys/bus/iio/devices/triggerX/sampling_frequency_available
53KernelVersion: 2.6.35
54Contact: linux-iio@vger.kernel.org
55Description:
56 When the internal sampling clock can only take a small
57 discrete set of values, this file lists those available.
58
59What: /sys/bus/iio/devices/iio:deviceX/oversampling_ratio
60KernelVersion: 2.6.38
61Contact: linux-iio@vger.kernel.org
62Description:
63 Hardware dependent ADC oversampling. Controls the sampling ratio
64 of the digital filter if available.
65
66What: /sys/bus/iio/devices/iio:deviceX/oversampling_ratio_available
67KernelVersion: 2.6.38
68Contact: linux-iio@vger.kernel.org
69Description:
70 Hardware dependent values supported by the oversampling filter.
71
72What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_raw
73What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_raw
74KernelVersion: 2.6.35
75Contact: linux-iio@vger.kernel.org
76Description:
77 Raw (unscaled no bias removal etc) voltage measurement from
78 channel Y. In special cases where the channel does not
79 correspond to externally available input one of the named
80 versions may be used. The number must always be specified and
81 unique to allow association with event codes. Units after
82 application of scale and offset are microvolts.
83
84What: /sys/bus/iio/devices/iio:deviceX/in_voltageY-voltageZ_raw
85KernelVersion: 2.6.35
86Contact: linux-iio@vger.kernel.org
87Description:
88 Raw (unscaled) differential voltage measurement equivalent to
89 channel Y - channel Z where these channel numbers apply to the
90 physically equivalent inputs when non differential readings are
91 separately available. In differential only parts, then all that
92 is required is a consistent labeling. Units after application
93 of scale and offset are microvolts.
94
95What: /sys/bus/iio/devices/iio:deviceX/in_capacitanceY_raw
96KernelVersion: 3.2
97Contact: linux-iio@vger.kernel.org
98Description:
99 Raw capacitance measurement from channel Y. Units after
100 application of scale and offset are nanofarads.
101
102What: /sys/.../iio:deviceX/in_capacitanceY-in_capacitanceZ_raw
103KernelVersion: 3.2
104Contact: linux-iio@vger.kernel.org
105Description:
106 Raw differential capacitance measurement equivalent to
107 channel Y - channel Z where these channel numbers apply to the
108 physically equivalent inputs when non differential readings are
109 separately available. In differential only parts, then all that
110 is required is a consistent labeling. Units after application
111 of scale and offset are nanofarads.
112
113What: /sys/bus/iio/devices/iio:deviceX/in_temp_raw
114What: /sys/bus/iio/devices/iio:deviceX/in_tempX_raw
115What: /sys/bus/iio/devices/iio:deviceX/in_temp_x_raw
116What: /sys/bus/iio/devices/iio:deviceX/in_temp_y_raw
117What: /sys/bus/iio/devices/iio:deviceX/in_temp_z_raw
118KernelVersion: 2.6.35
119Contact: linux-iio@vger.kernel.org
120Description:
121 Raw (unscaled no bias removal etc) temperature measurement.
122 If an axis is specified it generally means that the temperature
123 sensor is associated with one part of a compound device (e.g.
124 a gyroscope axis). Units after application of scale and offset
125 are milli degrees Celsuis.
126
127What: /sys/bus/iio/devices/iio:deviceX/in_tempX_input
128KernelVersion: 2.6.38
129Contact: linux-iio@vger.kernel.org
130Description:
131 Scaled temperature measurement in milli degrees Celsius.
132
133What: /sys/bus/iio/devices/iio:deviceX/in_accel_x_raw
134What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_raw
135What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_raw
136KernelVersion: 2.6.35
137Contact: linux-iio@vger.kernel.org
138Description:
139 Acceleration in direction x, y or z (may be arbitrarily assigned
140 but should match other such assignments on device).
141 Has all of the equivalent parameters as per voltageY. Units
142 after application of scale and offset are m/s^2.
143
144What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_x_raw
145What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_y_raw
146What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_z_raw
147KernelVersion: 2.6.35
148Contact: linux-iio@vger.kernel.org
149Description:
150 Angular velocity about axis x, y or z (may be arbitrarily
151 assigned) Data converted by application of offset then scale to
152 radians per second. Has all the equivalent parameters as
153 per voltageY. Units after application of scale and offset are
154 radians per second.
155
156What: /sys/bus/iio/devices/iio:deviceX/in_incli_x_raw
157What: /sys/bus/iio/devices/iio:deviceX/in_incli_y_raw
158What: /sys/bus/iio/devices/iio:deviceX/in_incli_z_raw
159KernelVersion: 2.6.35
160Contact: linux-iio@vger.kernel.org
161Description:
162 Inclination raw reading about axis x, y or z (may be
163 arbitrarily assigned). Data converted by application of offset
164 and scale to Degrees.
165
166What: /sys/bus/iio/devices/iio:deviceX/in_magn_x_raw
167What: /sys/bus/iio/devices/iio:deviceX/in_magn_y_raw
168What: /sys/bus/iio/devices/iio:deviceX/in_magn_z_raw
169KernelVersion: 2.6.35
170Contact: linux-iio@vger.kernel.org
171Description:
172 Magnetic field along axis x, y or z (may be arbitrarily
173 assigned). Data converted by application of offset
174 then scale to Gauss.
175
176What: /sys/bus/iio/devices/iio:deviceX/in_accel_x_peak_raw
177What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_peak_raw
178What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_peak_raw
179KernelVersion: 2.6.36
180Contact: linux-iio@vger.kernel.org
181Description:
182 Highest value since some reset condition. These
183 attributes allow access to this and are otherwise
184 the direct equivalent of the <type>Y[_name]_raw attributes.
185
186What: /sys/bus/iio/devices/iio:deviceX/in_accel_xyz_squared_peak_raw
187KernelVersion: 2.6.36
188Contact: linux-iio@vger.kernel.org
189Description:
190 A computed peak value based on the sum squared magnitude of
191 the underlying value in the specified directions.
192
193What: /sys/bus/iio/devices/iio:deviceX/in_accel_offset
194What: /sys/bus/iio/devices/iio:deviceX/in_accel_x_offset
195What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_offset
196What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_offset
197What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_offset
198What: /sys/bus/iio/devices/iio:deviceX/in_voltage_offset
199What: /sys/bus/iio/devices/iio:deviceX/in_tempY_offset
200What: /sys/bus/iio/devices/iio:deviceX/in_temp_offset
201KernelVersion: 2.6.35
202Contact: linux-iio@vger.kernel.org
203Description:
204 If known for a device, offset to be added to <type>[Y]_raw prior
205 to scaling by <type>[Y]_scale in order to obtain value in the
206 <type> units as specified in <type>[y]_raw documentation.
207 Not present if the offset is always 0 or unknown. If Y or
208 axis <x|y|z> is not present, then the offset applies to all
209 in channels of <type>.
210 May be writable if a variable offset can be applied on the
211 device. Note that this is different to calibbias which
212 is for devices (or drivers) that apply offsets to compensate
213 for variation between different instances of the part, typically
214 adjusted by using some hardware supported calibration procedure.
215 Calibbias is applied internally, offset is applied in userspace
216 to the _raw output.
217
218What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_scale
219What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_scale
220What: /sys/bus/iio/devices/iio:deviceX/in_voltage_scale
221What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_scale
222What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_scale
223What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale
224What: /sys/bus/iio/devices/iio:deviceX/in_accel_peak_scale
225What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_scale
226What: /sys/bus/iio/devices/iio:deviceX/in_magn_scale
227What: /sys/bus/iio/devices/iio:deviceX/in_magn_x_scale
228What: /sys/bus/iio/devices/iio:deviceX/in_magn_y_scale
229What: /sys/bus/iio/devices/iio:deviceX/in_magn_z_scale
230KernelVersion: 2.6.35
231Contact: linux-iio@vger.kernel.org
232Description:
233 If known for a device, scale to be applied to <type>Y[_name]_raw
234 post addition of <type>[Y][_name]_offset in order to obtain the
235 measured value in <type> units as specified in
236 <type>[Y][_name]_raw documentation. If shared across all in
237 channels then Y and <x|y|z> are not present and the value is
238 called <type>[Y][_name]_scale. The peak modifier means this
239 value is applied to <type>Y[_name]_peak_raw values.
240
241What: /sys/bus/iio/devices/iio:deviceX/in_accel_x_calibbias
242What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_calibbias
243What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_calibbias
244What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_x_calibbias
245What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_y_calibbias
246What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_z_calibbias
247What: /sys/bus/iio/devices/iio:deviceX/in_illuminance0_calibbias
248What: /sys/bus/iio/devices/iio:deviceX/in_proximity0_calibbias
249KernelVersion: 2.6.35
250Contact: linux-iio@vger.kernel.org
251Description:
252 Hardware applied calibration offset. (assumed to fix production
253 inaccuracies).
254
255What /sys/bus/iio/devices/iio:deviceX/in_voltageY_calibscale
256What /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_calibscale
257What /sys/bus/iio/devices/iio:deviceX/in_voltage_calibscale
258What /sys/bus/iio/devices/iio:deviceX/in_accel_x_calibscale
259What /sys/bus/iio/devices/iio:deviceX/in_accel_y_calibscale
260What /sys/bus/iio/devices/iio:deviceX/in_accel_z_calibscale
261What /sys/bus/iio/devices/iio:deviceX/in_anglvel_x_calibscale
262What /sys/bus/iio/devices/iio:deviceX/in_anglvel_y_calibscale
263What /sys/bus/iio/devices/iio:deviceX/in_anglvel_z_calibscale
264what /sys/bus/iio/devices/iio:deviceX/in_illuminance0_calibscale
265what /sys/bus/iio/devices/iio:deviceX/in_proximity0_calibscale
266KernelVersion: 2.6.35
267Contact: linux-iio@vger.kernel.org
268Description:
269 Hardware applied calibration scale factor. (assumed to fix
270 production inaccuracies). If shared across all channels,
271 <type>_calibscale is used.
272
273What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale_available
274What: /sys/.../iio:deviceX/in_voltageX_scale_available
275What: /sys/.../iio:deviceX/in_voltage-voltage_scale_available
276What: /sys/.../iio:deviceX/out_voltageX_scale_available
277What: /sys/.../iio:deviceX/out_altvoltageX_scale_available
278What: /sys/.../iio:deviceX/in_capacitance_scale_available
279KernelVersion: 2.635
280Contact: linux-iio@vger.kernel.org
281Description:
282 If a discrete set of scale values are available, they
283 are listed in this attribute.
284
285What /sys/bus/iio/devices/iio:deviceX/out_voltageY_hardwaregain
286KernelVersion: 2.6.35
287Contact: linux-iio@vger.kernel.org
288Description:
289 Hardware applied gain factor. If shared across all channels,
290 <type>_hardwaregain is used.
291
292What: /sys/.../in_accel_filter_low_pass_3db_frequency
293What: /sys/.../in_magn_filter_low_pass_3db_frequency
294What: /sys/.../in_anglvel_filter_low_pass_3db_frequency
295KernelVersion: 3.2
296Contact: linux-iio@vger.kernel.org
297Description:
298 If a known or controllable low pass filter is applied
299 to the underlying data channel, then this parameter
300 gives the 3dB frequency of the filter in Hz.
301
302What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_raw
303What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_raw
304KernelVersion: 2.6.37
305Contact: linux-iio@vger.kernel.org
306Description:
307 Raw (unscaled, no bias etc.) output voltage for
308 channel Y. The number must always be specified and
309 unique if the output corresponds to a single channel.
310 While DAC like devices typically use out_voltage,
311 a continuous frequency generating device, such as
312 a DDS or PLL should use out_altvoltage.
313
314What: /sys/bus/iio/devices/iio:deviceX/out_voltageY&Z_raw
315What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY&Z_raw
316KernelVersion: 2.6.37
317Contact: linux-iio@vger.kernel.org
318Description:
319 Raw (unscaled, no bias etc.) output voltage for an aggregate of
320 channel Y, channel Z, etc. This interface is available in cases
321 where a single output sets the value for multiple channels
322 simultaneously.
323
324What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_powerdown_mode
325What: /sys/bus/iio/devices/iio:deviceX/out_voltage_powerdown_mode
326What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_powerdown_mode
327What: /sys/bus/iio/devices/iio:deviceX/out_altvoltage_powerdown_mode
328KernelVersion: 2.6.38
329Contact: linux-iio@vger.kernel.org
330Description:
331 Specifies the output powerdown mode.
332 DAC output stage is disconnected from the amplifier and
333 1kohm_to_gnd: connected to ground via an 1kOhm resistor
334 100kohm_to_gnd: connected to ground via an 100kOhm resistor
335 three_state: left floating
336 For a list of available output power down options read
337 outX_powerdown_mode_available. If Y is not present the
338 mode is shared across all outputs.
339
340What: /sys/.../iio:deviceX/out_votlageY_powerdown_mode_available
341What: /sys/.../iio:deviceX/out_voltage_powerdown_mode_available
342What: /sys/.../iio:deviceX/out_altvotlageY_powerdown_mode_available
343What: /sys/.../iio:deviceX/out_altvoltage_powerdown_mode_available
344KernelVersion: 2.6.38
345Contact: linux-iio@vger.kernel.org
346Description:
347 Lists all available output power down modes.
348 If Y is not present the mode is shared across all outputs.
349
350What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_powerdown
351What: /sys/bus/iio/devices/iio:deviceX/out_voltage_powerdown
352What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_powerdown
353What: /sys/bus/iio/devices/iio:deviceX/out_altvoltage_powerdown
354KernelVersion: 2.6.38
355Contact: linux-iio@vger.kernel.org
356Description:
357 Writing 1 causes output Y to enter the power down mode specified
358 by the corresponding outY_powerdown_mode. Clearing returns to
359 normal operation. Y may be suppressed if all outputs are
360 controlled together.
361
362What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_frequency
363KernelVersion: 3.4.0
364Contact: linux-iio@vger.kernel.org
365Description:
366 Output frequency for channel Y in Hz. The number must always be
367 specified and unique if the output corresponds to a single
368 channel.
369
370What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_phase
371KernelVersion: 3.4.0
372Contact: linux-iio@vger.kernel.org
373Description:
374 Phase in radians of one frequency/clock output Y
375 (out_altvoltageY) relative to another frequency/clock output
376 (out_altvoltageZ) of the device X. The number must always be
377 specified and unique if the output corresponds to a single
378 channel.
379
380What: /sys/bus/iio/devices/iio:deviceX/events
381KernelVersion: 2.6.35
382Contact: linux-iio@vger.kernel.org
383Description:
384 Configuration of which hardware generated events are passed up
385 to user-space.
386
387What: /sys/.../iio:deviceX/events/in_accel_x_thresh_rising_en
388What: /sys/.../iio:deviceX/events/in_accel_x_thresh_falling_en
389What: /sys/.../iio:deviceX/events/in_accel_y_thresh_rising_en
390What: /sys/.../iio:deviceX/events/in_accel_y_thresh_falling_en
391What: /sys/.../iio:deviceX/events/in_accel_z_thresh_rising_en
392What: /sys/.../iio:deviceX/events/in_accel_z_thresh_falling_en
393What: /sys/.../iio:deviceX/events/in_anglvel_x_thresh_rising_en
394What: /sys/.../iio:deviceX/events/in_anglvel_x_thresh_falling_en
395What: /sys/.../iio:deviceX/events/in_anglvel_y_thresh_rising_en
396What: /sys/.../iio:deviceX/events/in_anglvel_y_thresh_falling_en
397What: /sys/.../iio:deviceX/events/in_anglvel_z_thresh_rising_en
398What: /sys/.../iio:deviceX/events/in_anglvel_z_thresh_falling_en
399What: /sys/.../iio:deviceX/events/in_magn_x_thresh_rising_en
400What: /sys/.../iio:deviceX/events/in_magn_x_thresh_falling_en
401What: /sys/.../iio:deviceX/events/in_magn_y_thresh_rising_en
402What: /sys/.../iio:deviceX/events/in_magn_y_thresh_falling_en
403What: /sys/.../iio:deviceX/events/in_magn_z_thresh_rising_en
404What: /sys/.../iio:deviceX/events/in_magn_z_thresh_falling_en
405What: /sys/.../iio:deviceX/events/in_voltageY_supply_thresh_rising_en
406What: /sys/.../iio:deviceX/events/in_voltageY_supply_thresh_falling_en
407What: /sys/.../iio:deviceX/events/in_voltageY_thresh_rising_en
408What: /sys/.../iio:deviceX/events/in_voltageY_thresh_falling_en
409What: /sys/.../iio:deviceX/events/in_tempY_thresh_rising_en
410What: /sys/.../iio:deviceX/events/in_tempY_thresh_falling_en
411KernelVersion: 2.6.37
412Contact: linux-iio@vger.kernel.org
413Description:
414 Event generated when channel passes a threshold in the specified
415 (_rising|_falling) direction. If the direction is not specified,
416 then either the device will report an event which ever direction
417 a single threshold value is passed in (e.g.
418 <type>[Y][_name]_<raw|input>_thresh_value) or
419 <type>[Y][_name]_<raw|input>_thresh_rising_value and
420 <type>[Y][_name]_<raw|input>_thresh_falling_value may take
421 different values, but the device can only enable both thresholds
422 or neither.
423 Note the driver will assume the last p events requested are
424 to be enabled where p is however many it supports (which may
425 vary depending on the exact set requested. So if you want to be
426 sure you have set what you think you have, check the contents of
427 these attributes after everything is configured. Drivers may
428 have to buffer any parameters so that they are consistent when
429 a given event type is enabled a future point (and not those for
430 whatever event was previously enabled).
431
432What: /sys/.../iio:deviceX/events/in_accel_x_roc_rising_en
433What: /sys/.../iio:deviceX/events/in_accel_x_roc_falling_en
434What: /sys/.../iio:deviceX/events/in_accel_y_roc_rising_en
435What: /sys/.../iio:deviceX/events/in_accel_y_roc_falling_en
436What: /sys/.../iio:deviceX/events/in_accel_z_roc_rising_en
437What: /sys/.../iio:deviceX/events/in_accel_z_roc_falling_en
438What: /sys/.../iio:deviceX/events/in_anglvel_x_roc_rising_en
439What: /sys/.../iio:deviceX/events/in_anglvel_x_roc_falling_en
440What: /sys/.../iio:deviceX/events/in_anglvel_y_roc_rising_en
441What: /sys/.../iio:deviceX/events/in_anglvel_y_roc_falling_en
442What: /sys/.../iio:deviceX/events/in_anglvel_z_roc_rising_en
443What: /sys/.../iio:deviceX/events/in_anglvel_z_roc_falling_en
444What: /sys/.../iio:deviceX/events/in_magn_x_roc_rising_en
445What: /sys/.../iio:deviceX/events/in_magn_x_roc_falling_en
446What: /sys/.../iio:deviceX/events/in_magn_y_roc_rising_en
447What: /sys/.../iio:deviceX/events/in_magn_y_roc_falling_en
448What: /sys/.../iio:deviceX/events/in_magn_z_roc_rising_en
449What: /sys/.../iio:deviceX/events/in_magn_z_roc_falling_en
450What: /sys/.../iio:deviceX/events/in_voltageY_supply_roc_rising_en
451What: /sys/.../iio:deviceX/events/in_voltageY_supply_roc_falling_en
452What: /sys/.../iio:deviceX/events/in_voltageY_roc_rising_en
453What: /sys/.../iio:deviceX/events/in_voltageY_roc_falling_en
454What: /sys/.../iio:deviceX/events/in_tempY_roc_rising_en
455What: /sys/.../iio:deviceX/events/in_tempY_roc_falling_en
456KernelVersion: 2.6.37
457Contact: linux-iio@vger.kernel.org
458Description:
459 Event generated when channel passes a threshold on the rate of
460 change (1st differential) in the specified (_rising|_falling)
461 direction. If the direction is not specified, then either the
462 device will report an event which ever direction a single
463 threshold value is passed in (e.g.
464 <type>[Y][_name]_<raw|input>_roc_value) or
465 <type>[Y][_name]_<raw|input>_roc_rising_value and
466 <type>[Y][_name]_<raw|input>_roc_falling_value may take
467 different values, but the device can only enable both rate of
468 change thresholds or neither.
469 Note the driver will assume the last p events requested are
470 to be enabled where p is however many it supports (which may
471 vary depending on the exact set requested. So if you want to be
472 sure you have set what you think you have, check the contents of
473 these attributes after everything is configured. Drivers may
474 have to buffer any parameters so that they are consistent when
475 a given event type is enabled a future point (and not those for
476 whatever event was previously enabled).
477
478What: /sys/.../events/in_accel_x_raw_thresh_rising_value
479What: /sys/.../events/in_accel_x_raw_thresh_falling_value
480What: /sys/.../events/in_accel_y_raw_thresh_rising_value
481What: /sys/.../events/in_accel_y_raw_thresh_falling_value
482What: /sys/.../events/in_accel_z_raw_thresh_rising_value
483What: /sys/.../events/in_accel_z_raw_thresh_falling_value
484What: /sys/.../events/in_anglvel_x_raw_thresh_rising_value
485What: /sys/.../events/in_anglvel_x_raw_thresh_falling_value
486What: /sys/.../events/in_anglvel_y_raw_thresh_rising_value
487What: /sys/.../events/in_anglvel_y_raw_thresh_falling_value
488What: /sys/.../events/in_anglvel_z_raw_thresh_rising_value
489What: /sys/.../events/in_anglvel_z_raw_thresh_falling_value
490What: /sys/.../events/in_magn_x_raw_thresh_rising_value
491What: /sys/.../events/in_magn_x_raw_thresh_falling_value
492What: /sys/.../events/in_magn_y_raw_thresh_rising_value
493What: /sys/.../events/in_magn_y_raw_thresh_falling_value
494What: /sys/.../events/in_magn_z_raw_thresh_rising_value
495What: /sys/.../events/in_magn_z_raw_thresh_falling_value
496What: /sys/.../events/in_voltageY_supply_raw_thresh_rising_value
497What: /sys/.../events/in_voltageY_supply_raw_thresh_falling_value
498What: /sys/.../events/in_voltageY_raw_thresh_rising_value
499What: /sys/.../events/in_voltageY_raw_thresh_falling_value
500What: /sys/.../events/in_tempY_raw_thresh_rising_value
501What: /sys/.../events/in_tempY_raw_thresh_falling_value
502What: /sys/.../events/in_illuminance0_thresh_falling_value
503what: /sys/.../events/in_illuminance0_thresh_rising_value
504what: /sys/.../events/in_proximity0_thresh_falling_value
505what: /sys/.../events/in_proximity0_thresh_rising_value
506KernelVersion: 2.6.37
507Contact: linux-iio@vger.kernel.org
508Description:
509 Specifies the value of threshold that the device is comparing
510 against for the events enabled by
511 <type>Y[_name]_thresh[_rising|falling]_en.
512 If separate attributes exist for the two directions, but
513 direction is not specified for this attribute, then a single
514 threshold value applies to both directions.
515 The raw or input element of the name indicates whether the
516 value is in raw device units or in processed units (as _raw
517 and _input do on sysfs direct channel read attributes).
518
519What: /sys/.../events/in_accel_x_raw_roc_rising_value
520What: /sys/.../events/in_accel_x_raw_roc_falling_value
521What: /sys/.../events/in_accel_y_raw_roc_rising_value
522What: /sys/.../events/in_accel_y_raw_roc_falling_value
523What: /sys/.../events/in_accel_z_raw_roc_rising_value
524What: /sys/.../events/in_accel_z_raw_roc_falling_value
525What: /sys/.../events/in_anglvel_x_raw_roc_rising_value
526What: /sys/.../events/in_anglvel_x_raw_roc_falling_value
527What: /sys/.../events/in_anglvel_y_raw_roc_rising_value
528What: /sys/.../events/in_anglvel_y_raw_roc_falling_value
529What: /sys/.../events/in_anglvel_z_raw_roc_rising_value
530What: /sys/.../events/in_anglvel_z_raw_roc_falling_value
531What: /sys/.../events/in_magn_x_raw_roc_rising_value
532What: /sys/.../events/in_magn_x_raw_roc_falling_value
533What: /sys/.../events/in_magn_y_raw_roc_rising_value
534What: /sys/.../events/in_magn_y_raw_roc_falling_value
535What: /sys/.../events/in_magn_z_raw_roc_rising_value
536What: /sys/.../events/in_magn_z_raw_roc_falling_value
537What: /sys/.../events/in_voltageY_supply_raw_roc_rising_value
538What: /sys/.../events/in_voltageY_supply_raw_roc_falling_value
539What: /sys/.../events/in_voltageY_raw_roc_rising_value
540What: /sys/.../events/in_voltageY_raw_roc_falling_value
541What: /sys/.../events/in_tempY_raw_roc_rising_value
542What: /sys/.../events/in_tempY_raw_roc_falling_value
543KernelVersion: 2.6.37
544Contact: linux-iio@vger.kernel.org
545Description:
546 Specifies the value of rate of change threshold that the
547 device is comparing against for the events enabled by
548 <type>[Y][_name]_roc[_rising|falling]_en.
549 If separate attributes exist for the two directions,
550 but direction is not specified for this attribute,
551 then a single threshold value applies to both directions.
552 The raw or input element of the name indicates whether the
553 value is in raw device units or in processed units (as _raw
554 and _input do on sysfs direct channel read attributes).
555
556What: /sys/.../events/in_accel_x_thresh_rising_period
557What: /sys/.../events/in_accel_x_thresh_falling_period
558hat: /sys/.../events/in_accel_x_roc_rising_period
559What: /sys/.../events/in_accel_x_roc_falling_period
560What: /sys/.../events/in_accel_y_thresh_rising_period
561What: /sys/.../events/in_accel_y_thresh_falling_period
562What: /sys/.../events/in_accel_y_roc_rising_period
563What: /sys/.../events/in_accel_y_roc_falling_period
564What: /sys/.../events/in_accel_z_thresh_rising_period
565What: /sys/.../events/in_accel_z_thresh_falling_period
566What: /sys/.../events/in_accel_z_roc_rising_period
567What: /sys/.../events/in_accel_z_roc_falling_period
568What: /sys/.../events/in_anglvel_x_thresh_rising_period
569What: /sys/.../events/in_anglvel_x_thresh_falling_period
570What: /sys/.../events/in_anglvel_x_roc_rising_period
571What: /sys/.../events/in_anglvel_x_roc_falling_period
572What: /sys/.../events/in_anglvel_y_thresh_rising_period
573What: /sys/.../events/in_anglvel_y_thresh_falling_period
574What: /sys/.../events/in_anglvel_y_roc_rising_period
575What: /sys/.../events/in_anglvel_y_roc_falling_period
576What: /sys/.../events/in_anglvel_z_thresh_rising_period
577What: /sys/.../events/in_anglvel_z_thresh_falling_period
578What: /sys/.../events/in_anglvel_z_roc_rising_period
579What: /sys/.../events/in_anglvel_z_roc_falling_period
580What: /sys/.../events/in_magn_x_thresh_rising_period
581What: /sys/.../events/in_magn_x_thresh_falling_period
582What: /sys/.../events/in_magn_x_roc_rising_period
583What: /sys/.../events/in_magn_x_roc_falling_period
584What: /sys/.../events/in_magn_y_thresh_rising_period
585What: /sys/.../events/in_magn_y_thresh_falling_period
586What: /sys/.../events/in_magn_y_roc_rising_period
587What: /sys/.../events/in_magn_y_roc_falling_period
588What: /sys/.../events/in_magn_z_thresh_rising_period
589What: /sys/.../events/in_magn_z_thresh_falling_period
590What: /sys/.../events/in_magn_z_roc_rising_period
591What: /sys/.../events/in_magn_z_roc_falling_period
592What: /sys/.../events/in_voltageY_supply_thresh_rising_period
593What: /sys/.../events/in_voltageY_supply_thresh_falling_period
594What: /sys/.../events/in_voltageY_supply_roc_rising_period
595What: /sys/.../events/in_voltageY_supply_roc_falling_period
596What: /sys/.../events/in_voltageY_thresh_rising_period
597What: /sys/.../events/in_voltageY_thresh_falling_period
598What: /sys/.../events/in_voltageY_roc_rising_period
599What: /sys/.../events/in_voltageY_roc_falling_period
600What: /sys/.../events/in_tempY_thresh_rising_period
601What: /sys/.../events/in_tempY_thresh_falling_period
602What: /sys/.../events/in_tempY_roc_rising_period
603What: /sys/.../events/in_tempY_roc_falling_period
604What: /sys/.../events/in_accel_x&y&z_mag_falling_period
605What: /sys/.../events/in_intensity0_thresh_period
606What: /sys/.../events/in_proximity0_thresh_period
607KernelVersion: 2.6.37
608Contact: linux-iio@vger.kernel.org
609Description:
610 Period of time (in seconds) for which the condition must be
611 met before an event is generated. If direction is not
612 specified then this period applies to both directions.
613
614What: /sys/.../iio:deviceX/events/in_accel_mag_en
615What: /sys/.../iio:deviceX/events/in_accel_mag_rising_en
616What: /sys/.../iio:deviceX/events/in_accel_mag_falling_en
617What: /sys/.../iio:deviceX/events/in_accel_x_mag_en
618What: /sys/.../iio:deviceX/events/in_accel_x_mag_rising_en
619What: /sys/.../iio:deviceX/events/in_accel_x_mag_falling_en
620What: /sys/.../iio:deviceX/events/in_accel_y_mag_en
621What: /sys/.../iio:deviceX/events/in_accel_y_mag_rising_en
622What: /sys/.../iio:deviceX/events/in_accel_y_mag_falling_en
623What: /sys/.../iio:deviceX/events/in_accel_z_mag_en
624What: /sys/.../iio:deviceX/events/in_accel_z_mag_rising_en
625What: /sys/.../iio:deviceX/events/in_accel_z_mag_falling_en
626What: /sys/.../iio:deviceX/events/in_accel_x&y&z_mag_rising_en
627What: /sys/.../iio:deviceX/events/in_accel_x&y&z_mag_falling_en
628KernelVersion: 2.6.37
629Contact: linux-iio@vger.kernel.org
630Description:
631 Similar to in_accel_x_thresh[_rising|_falling]_en, but here the
632 magnitude of the channel is compared to the threshold, not its
633 signed value.
634
635What: /sys/.../events/in_accel_raw_mag_value
636What: /sys/.../events/in_accel_x_raw_mag_rising_value
637What: /sys/.../events/in_accel_y_raw_mag_rising_value
638What: /sys/.../events/in_accel_z_raw_mag_rising_value
639KernelVersion: 2.6.37
640Contact: linux-iio@vger.kernel.org
641Description:
642 The value to which the magnitude of the channel is compared. If
643 number or direction is not specified, applies to all channels of
644 this type.
645
646What: /sys/bus/iio/devices/iio:deviceX/trigger/current_trigger
647KernelVersion: 2.6.35
648Contact: linux-iio@vger.kernel.org
649Description:
650 The name of the trigger source being used, as per string given
651 in /sys/class/iio/triggerY/name.
652
653What: /sys/bus/iio/devices/iio:deviceX/buffer/length
654KernelVersion: 2.6.35
655Contact: linux-iio@vger.kernel.org
656Description:
657 Number of scans contained by the buffer.
658
659What: /sys/bus/iio/devices/iio:deviceX/buffer/bytes_per_datum
660KernelVersion: 2.6.37
661Contact: linux-iio@vger.kernel.org
662Description:
663 Bytes per scan. Due to alignment fun, the scan may be larger
664 than implied directly by the scan_element parameters.
665
666What: /sys/bus/iio/devices/iio:deviceX/buffer/enable
667KernelVersion: 2.6.35
668Contact: linux-iio@vger.kernel.org
669Description:
670 Actually start the buffer capture up. Will start trigger
671 if first device and appropriate.
672
673What: /sys/bus/iio/devices/iio:deviceX/buffer/scan_elements
674KernelVersion: 2.6.37
675Contact: linux-iio@vger.kernel.org
676Description:
677 Directory containing interfaces for elements that will be
678 captured for a single triggered sample set in the buffer.
679
680What: /sys/.../buffer/scan_elements/in_accel_x_en
681What: /sys/.../buffer/scan_elements/in_accel_y_en
682What: /sys/.../buffer/scan_elements/in_accel_z_en
683What: /sys/.../buffer/scan_elements/in_anglvel_x_en
684What: /sys/.../buffer/scan_elements/in_anglvel_y_en
685What: /sys/.../buffer/scan_elements/in_anglvel_z_en
686What: /sys/.../buffer/scan_elements/in_magn_x_en
687What: /sys/.../buffer/scan_elements/in_magn_y_en
688What: /sys/.../buffer/scan_elements/in_magn_z_en
689What: /sys/.../buffer/scan_elements/in_timestamp_en
690What: /sys/.../buffer/scan_elements/in_voltageY_supply_en
691What: /sys/.../buffer/scan_elements/in_voltageY_en
692What: /sys/.../buffer/scan_elements/in_voltageY-voltageZ_en
693What: /sys/.../buffer/scan_elements/in_incli_x_en
694What: /sys/.../buffer/scan_elements/in_incli_y_en
695KernelVersion: 2.6.37
696Contact: linux-iio@vger.kernel.org
697Description:
698 Scan element control for triggered data capture.
699
700What: /sys/.../buffer/scan_elements/in_accel_type
701What: /sys/.../buffer/scan_elements/in_anglvel_type
702What: /sys/.../buffer/scan_elements/in_magn_type
703What: /sys/.../buffer/scan_elements/in_incli_type
704What: /sys/.../buffer/scan_elements/in_voltageY_type
705What: /sys/.../buffer/scan_elements/in_voltage-in_type
706What: /sys/.../buffer/scan_elements/in_voltageY_supply_type
707What: /sys/.../buffer/scan_elements/in_timestamp_type
708KernelVersion: 2.6.37
709Contact: linux-iio@vger.kernel.org
710Description:
711 Description of the scan element data storage within the buffer
712 and hence the form in which it is read from user-space.
713 Form is [be|le]:[s|u]bits/storagebits[>>shift].
714 be or le specifies big or little endian. s or u specifies if
715 signed (2's complement) or unsigned. bits is the number of bits
716 of data and storagebits is the space (after padding) that it
717 occupies in the buffer. shift if specified, is the shift that
718 needs to be applied prior to masking out unused bits. Some
719 devices put their data in the middle of the transferred elements
720 with additional information on both sides. Note that some
721 devices will have additional information in the unused bits
722 so to get a clean value, the bits value must be used to mask
723 the buffer output value appropriately. The storagebits value
724 also specifies the data alignment. So s48/64>>2 will be a
725 signed 48 bit integer stored in a 64 bit location aligned to
726 a a64 bit boundary. To obtain the clean value, shift right 2
727 and apply a mask to zero the top 16 bits of the result.
728 For other storage combinations this attribute will be extended
729 appropriately.
730
731What: /sys/.../buffer/scan_elements/in_accel_type_available
732KernelVersion: 2.6.37
733Contact: linux-iio@vger.kernel.org
734Description:
735 If the type parameter can take one of a small set of values,
736 this attribute lists them.
737
738What: /sys/.../buffer/scan_elements/in_voltageY_index
739What: /sys/.../buffer/scan_elements/in_voltageY_supply_index
740What: /sys/.../buffer/scan_elements/in_accel_x_index
741What: /sys/.../buffer/scan_elements/in_accel_y_index
742What: /sys/.../buffer/scan_elements/in_accel_z_index
743What: /sys/.../buffer/scan_elements/in_anglvel_x_index
744What: /sys/.../buffer/scan_elements/in_anglvel_y_index
745What: /sys/.../buffer/scan_elements/in_anglvel_z_index
746What: /sys/.../buffer/scan_elements/in_magn_x_index
747What: /sys/.../buffer/scan_elements/in_magn_y_index
748What: /sys/.../buffer/scan_elements/in_magn_z_index
749What: /sys/.../buffer/scan_elements/in_incli_x_index
750What: /sys/.../buffer/scan_elements/in_incli_y_index
751What: /sys/.../buffer/scan_elements/in_timestamp_index
752KernelVersion: 2.6.37
753Contact: linux-iio@vger.kernel.org
754Description:
755 A single positive integer specifying the position of this
756 scan element in the buffer. Note these are not dependent on
757 what is enabled and may not be contiguous. Thus for user-space
758 to establish the full layout these must be used in conjunction
759 with all _en attributes to establish which channels are present,
760 and the relevant _type attributes to establish the data storage
761 format.
762
763What: /sys/.../iio:deviceX/in_anglvel_z_quadrature_correction_raw
764KernelVersion: 2.6.38
765Contact: linux-iio@vger.kernel.org
766Description:
767 This attribute is used to read the amount of quadrature error
768 present in the device at a given time.
diff --git a/Documentation/ABI/testing/sysfs-bus-rbd b/Documentation/ABI/testing/sysfs-bus-rbd
index dbedafb095e2..bcd88eb7ebcd 100644
--- a/Documentation/ABI/testing/sysfs-bus-rbd
+++ b/Documentation/ABI/testing/sysfs-bus-rbd
@@ -65,11 +65,11 @@ snap_*
65Entries under /sys/bus/rbd/devices/<dev-id>/snap_<snap-name> 65Entries under /sys/bus/rbd/devices/<dev-id>/snap_<snap-name>
66------------------------------------------------------------- 66-------------------------------------------------------------
67 67
68id 68snap_id
69 69
70 The rados internal snapshot id assigned for this snapshot 70 The rados internal snapshot id assigned for this snapshot
71 71
72size 72snap_size
73 73
74 The size of the image when this snapshot was taken. 74 The size of the image when this snapshot was taken.
75 75
diff --git a/Documentation/ABI/testing/sysfs-bus-usb b/Documentation/ABI/testing/sysfs-bus-usb
index 7c22a532fdfb..6df4e6f57560 100644
--- a/Documentation/ABI/testing/sysfs-bus-usb
+++ b/Documentation/ABI/testing/sysfs-bus-usb
@@ -135,6 +135,17 @@ Description:
135 for the device and attempt to bind to it. For example: 135 for the device and attempt to bind to it. For example:
136 # echo "8086 10f5" > /sys/bus/usb/drivers/foo/new_id 136 # echo "8086 10f5" > /sys/bus/usb/drivers/foo/new_id
137 137
138 Reading from this file will list all dynamically added
139 device IDs in the same format, with one entry per
140 line. For example:
141 # cat /sys/bus/usb/drivers/foo/new_id
142 8086 10f5
143 dead beef 06
144 f00d cafe
145
146 The list will be truncated at PAGE_SIZE bytes due to
147 sysfs restrictions.
148
138What: /sys/bus/usb-serial/drivers/.../new_id 149What: /sys/bus/usb-serial/drivers/.../new_id
139Date: October 2011 150Date: October 2011
140Contact: linux-usb@vger.kernel.org 151Contact: linux-usb@vger.kernel.org
@@ -157,6 +168,10 @@ Description:
157 match the driver to the device. For example: 168 match the driver to the device. For example:
158 # echo "046d c315" > /sys/bus/usb/drivers/foo/remove_id 169 # echo "046d c315" > /sys/bus/usb/drivers/foo/remove_id
159 170
171 Reading from this file will list the dynamically added
172 device IDs, exactly like reading from the entry
173 "/sys/bus/usb/drivers/.../new_id"
174
160What: /sys/bus/usb/device/.../avoid_reset_quirk 175What: /sys/bus/usb/device/.../avoid_reset_quirk
161Date: December 2009 176Date: December 2009
162Contact: Oliver Neukum <oliver@neukum.org> 177Contact: Oliver Neukum <oliver@neukum.org>
@@ -189,7 +204,7 @@ Contact: Matthew Garrett <mjg@redhat.com>
189Description: 204Description:
190 Some information about whether a given USB device is 205 Some information about whether a given USB device is
191 physically fixed to the platform can be inferred from a 206 physically fixed to the platform can be inferred from a
192 combination of hub decriptor bits and platform-specific data 207 combination of hub descriptor bits and platform-specific data
193 such as ACPI. This file will read either "removable" or 208 such as ACPI. This file will read either "removable" or
194 "fixed" if the information is available, and "unknown" 209 "fixed" if the information is available, and "unknown"
195 otherwise. \ No newline at end of file 210 otherwise.
diff --git a/Documentation/ABI/testing/sysfs-class-backlight-driver-lm3533 b/Documentation/ABI/testing/sysfs-class-backlight-driver-lm3533
new file mode 100644
index 000000000000..77cf7ac949af
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-class-backlight-driver-lm3533
@@ -0,0 +1,48 @@
1What: /sys/class/backlight/<backlight>/als_channel
2Date: May 2012
3KernelVersion: 3.5
4Contact: Johan Hovold <jhovold@gmail.com>
5Description:
6 Get the ALS output channel used as input in
7 ALS-current-control mode (0, 1), where
8
9 0 - out_current0 (backlight 0)
10 1 - out_current1 (backlight 1)
11
12What: /sys/class/backlight/<backlight>/als_en
13Date: May 2012
14KernelVersion: 3.5
15Contact: Johan Hovold <jhovold@gmail.com>
16Description:
17 Enable ALS-current-control mode (0, 1).
18
19What: /sys/class/backlight/<backlight>/id
20Date: April 2012
21KernelVersion: 3.5
22Contact: Johan Hovold <jhovold@gmail.com>
23Description:
24 Get the id of this backlight (0, 1).
25
26What: /sys/class/backlight/<backlight>/linear
27Date: April 2012
28KernelVersion: 3.5
29Contact: Johan Hovold <jhovold@gmail.com>
30Description:
31 Set the brightness-mapping mode (0, 1), where
32
33 0 - exponential mode
34 1 - linear mode
35
36What: /sys/class/backlight/<backlight>/pwm
37Date: April 2012
38KernelVersion: 3.5
39Contact: Johan Hovold <jhovold@gmail.com>
40Description:
41 Set the PWM-input control mask (5 bits), where
42
43 bit 5 - PWM-input enabled in Zone 4
44 bit 4 - PWM-input enabled in Zone 3
45 bit 3 - PWM-input enabled in Zone 2
46 bit 2 - PWM-input enabled in Zone 1
47 bit 1 - PWM-input enabled in Zone 0
48 bit 0 - PWM-input enabled
diff --git a/Documentation/ABI/testing/sysfs-class-extcon b/Documentation/ABI/testing/sysfs-class-extcon
new file mode 100644
index 000000000000..20ab361bd8c6
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-class-extcon
@@ -0,0 +1,97 @@
1What: /sys/class/extcon/.../
2Date: February 2012
3Contact: MyungJoo Ham <myungjoo.ham@samsung.com>
4Description:
5 Provide a place in sysfs for the extcon objects.
6 This allows accessing extcon specific variables.
7 The name of extcon object denoted as ... is the name given
8 with extcon_dev_register.
9
10 One extcon device denotes a single external connector
11 port. An external connector may have multiple cables
12 attached simultaneously. Many of docks, cradles, and
13 accessory cables have such capability. For example,
14 the 30-pin port of Nuri board (/arch/arm/mach-exynos)
15 may have both HDMI and Charger attached, or analog audio,
16 video, and USB cables attached simulteneously.
17
18 If there are cables mutually exclusive with each other,
19 such binary relations may be expressed with extcon_dev's
20 mutually_exclusive array.
21
22What: /sys/class/extcon/.../name
23Date: February 2012
24Contact: MyungJoo Ham <myungjoo.ham@samsung.com>
25Description:
26 The /sys/class/extcon/.../name shows the name of the extcon
27 object. If the extcon object has an optional callback
28 "show_name" defined, the callback will provide the name with
29 this sysfs node.
30
31What: /sys/class/extcon/.../state
32Date: February 2012
33Contact: MyungJoo Ham <myungjoo.ham@samsung.com>
34Description:
35 The /sys/class/extcon/.../state shows and stores the cable
36 attach/detach information of the corresponding extcon object.
37 If the extcon object has an optional callback "show_state"
38 defined, the showing function is overriden with the optional
39 callback.
40
41 If the default callback for showing function is used, the
42 format is like this:
43 # cat state
44 USB_OTG=1
45 HDMI=0
46 TA=1
47 EAR_JACK=0
48 #
49 In this example, the extcon device have USB_OTG and TA
50 cables attached and HDMI and EAR_JACK cables detached.
51
52 In order to update the state of an extcon device, enter a hex
53 state number starting with 0x.
54 echo 0xHEX > state
55
56 This updates the whole state of the extcon dev.
57 Inputs of all the methods are required to meet the
58 mutually_exclusive contidions if they exist.
59
60 It is recommended to use this "global" state interface if
61 you need to enter the value atomically. The later state
62 interface associated with each cable cannot update
63 multiple cable states of an extcon device simultaneously.
64
65What: /sys/class/extcon/.../cable.x/name
66Date: February 2012
67Contact: MyungJoo Ham <myungjoo.ham@samsung.com>
68Description:
69 The /sys/class/extcon/.../cable.x/name shows the name of cable
70 "x" (integer between 0 and 31) of an extcon device.
71
72What: /sys/class/extcon/.../cable.x/state
73Date: February 2012
74Contact: MyungJoo Ham <myungjoo.ham@samsung.com>
75Description:
76 The /sys/class/extcon/.../cable.x/name shows and stores the
77 state of cable "x" (integer between 0 and 31) of an extcon
78 device. The state value is either 0 (detached) or 1
79 (attached).
80
81What: /sys/class/extcon/.../mutually_exclusive/...
82Date: December 2011
83Contact: MyungJoo Ham <myungjoo.ham@samsung.com>
84Description:
85 Shows the relations of mutually exclusiveness. For example,
86 if the mutually_exclusive array of extcon_dev is
87 {0x3, 0x5, 0xC, 0x0}, the, the output is:
88 # ls mutually_exclusive/
89 0x3
90 0x5
91 0xc
92 #
93
94 Note that mutually_exclusive is a sub-directory of the extcon
95 device and the file names under the mutually_exclusive
96 directory show the mutually-exclusive sets, not the contents
97 of the files.
diff --git a/Documentation/ABI/testing/sysfs-class-led-driver-lm3533 b/Documentation/ABI/testing/sysfs-class-led-driver-lm3533
new file mode 100644
index 000000000000..620ebb3b9baa
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-class-led-driver-lm3533
@@ -0,0 +1,65 @@
1What: /sys/class/leds/<led>/als_channel
2Date: May 2012
3KernelVersion: 3.5
4Contact: Johan Hovold <jhovold@gmail.com>
5Description:
6 Set the ALS output channel to use as input in
7 ALS-current-control mode (1, 2), where
8
9 1 - out_current1
10 2 - out_current2
11
12What: /sys/class/leds/<led>/als_en
13Date: May 2012
14KernelVersion: 3.5
15Contact: Johan Hovold <jhovold@gmail.com>
16Description:
17 Enable ALS-current-control mode (0, 1).
18
19What: /sys/class/leds/<led>/falltime
20What: /sys/class/leds/<led>/risetime
21Date: April 2012
22KernelVersion: 3.5
23Contact: Johan Hovold <jhovold@gmail.com>
24Description:
25 Set the pattern generator fall and rise times (0..7), where
26
27 0 - 2048 us
28 1 - 262 ms
29 2 - 524 ms
30 3 - 1.049 s
31 4 - 2.097 s
32 5 - 4.194 s
33 6 - 8.389 s
34 7 - 16.78 s
35
36What: /sys/class/leds/<led>/id
37Date: April 2012
38KernelVersion: 3.5
39Contact: Johan Hovold <jhovold@gmail.com>
40Description:
41 Get the id of this led (0..3).
42
43What: /sys/class/leds/<led>/linear
44Date: April 2012
45KernelVersion: 3.5
46Contact: Johan Hovold <jhovold@gmail.com>
47Description:
48 Set the brightness-mapping mode (0, 1), where
49
50 0 - exponential mode
51 1 - linear mode
52
53What: /sys/class/leds/<led>/pwm
54Date: April 2012
55KernelVersion: 3.5
56Contact: Johan Hovold <jhovold@gmail.com>
57Description:
58 Set the PWM-input control mask (5 bits), where
59
60 bit 5 - PWM-input enabled in Zone 4
61 bit 4 - PWM-input enabled in Zone 3
62 bit 3 - PWM-input enabled in Zone 2
63 bit 2 - PWM-input enabled in Zone 1
64 bit 1 - PWM-input enabled in Zone 0
65 bit 0 - PWM-input enabled
diff --git a/Documentation/ABI/testing/sysfs-class-mtd b/Documentation/ABI/testing/sysfs-class-mtd
index 4d55a1888981..938ef71e2035 100644
--- a/Documentation/ABI/testing/sysfs-class-mtd
+++ b/Documentation/ABI/testing/sysfs-class-mtd
@@ -123,3 +123,55 @@ Description:
123 half page, or a quarter page). 123 half page, or a quarter page).
124 124
125 In the case of ECC NOR, it is the ECC block size. 125 In the case of ECC NOR, it is the ECC block size.
126
127What: /sys/class/mtd/mtdX/ecc_strength
128Date: April 2012
129KernelVersion: 3.4
130Contact: linux-mtd@lists.infradead.org
131Description:
132 Maximum number of bit errors that the device is capable of
133 correcting within each region covering an ecc step. This will
134 always be a non-negative integer. Note that some devices will
135 have multiple ecc steps within each writesize region.
136
137 In the case of devices lacking any ECC capability, it is 0.
138
139What: /sys/class/mtd/mtdX/bitflip_threshold
140Date: April 2012
141KernelVersion: 3.4
142Contact: linux-mtd@lists.infradead.org
143Description:
144 This allows the user to examine and adjust the criteria by which
145 mtd returns -EUCLEAN from mtd_read() and mtd_read_oob(). If the
146 maximum number of bit errors that were corrected on any single
147 region comprising an ecc step (as reported by the driver) equals
148 or exceeds this value, -EUCLEAN is returned. Otherwise, absent
149 an error, 0 is returned. Higher layers (e.g., UBI) use this
150 return code as an indication that an erase block may be
151 degrading and should be scrutinized as a candidate for being
152 marked as bad.
153
154 The initial value may be specified by the flash device driver.
155 If not, then the default value is ecc_strength.
156
157 The introduction of this feature brings a subtle change to the
158 meaning of the -EUCLEAN return code. Previously, it was
159 interpreted to mean simply "one or more bit errors were
160 corrected". Its new interpretation can be phrased as "a
161 dangerously high number of bit errors were corrected on one or
162 more regions comprising an ecc step". The precise definition of
163 "dangerously high" can be adjusted by the user with
164 bitflip_threshold. Users are discouraged from doing this,
165 however, unless they know what they are doing and have intimate
166 knowledge of the properties of their device. Broadly speaking,
167 bitflip_threshold should be low enough to detect genuine erase
168 block degradation, but high enough to avoid the consequences of
169 a persistent return value of -EUCLEAN on devices where sticky
170 bitflips occur. Note that if bitflip_threshold exceeds
171 ecc_strength, -EUCLEAN is never returned by the read operations.
172 Conversely, if bitflip_threshold is zero, -EUCLEAN is always
173 returned, absent a hard error.
174
175 This is generally applicable only to NAND flash devices with ECC
176 capability. It is ignored on devices lacking ECC capability;
177 i.e., devices for which ecc_strength is zero.
diff --git a/Documentation/ABI/testing/sysfs-class-net-mesh b/Documentation/ABI/testing/sysfs-class-net-mesh
index b218e0f8bdb3..c81fe89c4c46 100644
--- a/Documentation/ABI/testing/sysfs-class-net-mesh
+++ b/Documentation/ABI/testing/sysfs-class-net-mesh
@@ -14,6 +14,15 @@ Description:
14 mesh will be sent using multiple interfaces at the 14 mesh will be sent using multiple interfaces at the
15 same time (if available). 15 same time (if available).
16 16
17What: /sys/class/net/<mesh_iface>/mesh/bridge_loop_avoidance
18Date: November 2011
19Contact: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
20Description:
21 Indicates whether the bridge loop avoidance feature
22 is enabled. This feature detects and avoids loops
23 between the mesh and devices bridged with the soft
24 interface <mesh_iface>.
25
17What: /sys/class/net/<mesh_iface>/mesh/fragmentation 26What: /sys/class/net/<mesh_iface>/mesh/fragmentation
18Date: October 2010 27Date: October 2010
19Contact: Andreas Langer <an.langer@gmx.de> 28Contact: Andreas Langer <an.langer@gmx.de>
diff --git a/Documentation/ABI/testing/sysfs-devices-power b/Documentation/ABI/testing/sysfs-devices-power
index 840f7d64d483..45000f0db4d4 100644
--- a/Documentation/ABI/testing/sysfs-devices-power
+++ b/Documentation/ABI/testing/sysfs-devices-power
@@ -96,16 +96,26 @@ Description:
96 is read-only. If the device is not enabled to wake up the 96 is read-only. If the device is not enabled to wake up the
97 system from sleep states, this attribute is not present. 97 system from sleep states, this attribute is not present.
98 98
99What: /sys/devices/.../power/wakeup_hit_count 99What: /sys/devices/.../power/wakeup_abort_count
100Date: September 2010 100Date: February 2012
101Contact: Rafael J. Wysocki <rjw@sisk.pl> 101Contact: Rafael J. Wysocki <rjw@sisk.pl>
102Description: 102Description:
103 The /sys/devices/.../wakeup_hit_count attribute contains the 103 The /sys/devices/.../wakeup_abort_count attribute contains the
104 number of times the processing of a wakeup event associated with 104 number of times the processing of a wakeup event associated with
105 the device might prevent the system from entering a sleep state. 105 the device might have aborted system transition into a sleep
106 This attribute is read-only. If the device is not enabled to 106 state in progress. This attribute is read-only. If the device
107 wake up the system from sleep states, this attribute is not 107 is not enabled to wake up the system from sleep states, this
108 present. 108 attribute is not present.
109
110What: /sys/devices/.../power/wakeup_expire_count
111Date: February 2012
112Contact: Rafael J. Wysocki <rjw@sisk.pl>
113Description:
114 The /sys/devices/.../wakeup_expire_count attribute contains the
115 number of times a wakeup event associated with the device has
116 been reported with a timeout that expired. This attribute is
117 read-only. If the device is not enabled to wake up the system
118 from sleep states, this attribute is not present.
109 119
110What: /sys/devices/.../power/wakeup_active 120What: /sys/devices/.../power/wakeup_active
111Date: September 2010 121Date: September 2010
@@ -148,6 +158,17 @@ Description:
148 not enabled to wake up the system from sleep states, this 158 not enabled to wake up the system from sleep states, this
149 attribute is not present. 159 attribute is not present.
150 160
161What: /sys/devices/.../power/wakeup_prevent_sleep_time_ms
162Date: February 2012
163Contact: Rafael J. Wysocki <rjw@sisk.pl>
164Description:
165 The /sys/devices/.../wakeup_prevent_sleep_time_ms attribute
166 contains the total time the device has been preventing
167 opportunistic transitions to sleep states from occuring.
168 This attribute is read-only. If the device is not enabled to
169 wake up the system from sleep states, this attribute is not
170 present.
171
151What: /sys/devices/.../power/autosuspend_delay_ms 172What: /sys/devices/.../power/autosuspend_delay_ms
152Date: September 2010 173Date: September 2010
153Contact: Alan Stern <stern@rowland.harvard.edu> 174Contact: Alan Stern <stern@rowland.harvard.edu>
diff --git a/Documentation/ABI/testing/sysfs-devices-system-cpu b/Documentation/ABI/testing/sysfs-devices-system-cpu
index e7be75b96e4b..5dab36448b44 100644
--- a/Documentation/ABI/testing/sysfs-devices-system-cpu
+++ b/Documentation/ABI/testing/sysfs-devices-system-cpu
@@ -9,31 +9,6 @@ Description:
9 9
10 /sys/devices/system/cpu/cpu#/ 10 /sys/devices/system/cpu/cpu#/
11 11
12What: /sys/devices/system/cpu/sched_mc_power_savings
13 /sys/devices/system/cpu/sched_smt_power_savings
14Date: June 2006
15Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
16Description: Discover and adjust the kernel's multi-core scheduler support.
17
18 Possible values are:
19
20 0 - No power saving load balance (default value)
21 1 - Fill one thread/core/package first for long running threads
22 2 - Also bias task wakeups to semi-idle cpu package for power
23 savings
24
25 sched_mc_power_savings is dependent upon SCHED_MC, which is
26 itself architecture dependent.
27
28 sched_smt_power_savings is dependent upon SCHED_SMT, which
29 is itself architecture dependent.
30
31 The two files are independent of each other. It is possible
32 that one file may be present without the other.
33
34 Introduced by git commit 5c45bf27.
35
36
37What: /sys/devices/system/cpu/kernel_max 12What: /sys/devices/system/cpu/kernel_max
38 /sys/devices/system/cpu/offline 13 /sys/devices/system/cpu/offline
39 /sys/devices/system/cpu/online 14 /sys/devices/system/cpu/online
diff --git a/Documentation/ABI/testing/sysfs-driver-wacom b/Documentation/ABI/testing/sysfs-driver-wacom
index 0130d6683c14..8d55a83d6921 100644
--- a/Documentation/ABI/testing/sysfs-driver-wacom
+++ b/Documentation/ABI/testing/sysfs-driver-wacom
@@ -9,15 +9,24 @@ Description:
9 or 0 otherwise. Writing to this file one of these values 9 or 0 otherwise. Writing to this file one of these values
10 switches reporting speed. 10 switches reporting speed.
11 11
12What: /sys/class/leds/0005\:056A\:00BD.0001\:selector\:*/
13Date: May 2012
14Kernel Version: 3.5
15Contact: linux-bluetooth@vger.kernel.org
16Description:
17 LED selector for Intuos4 WL. There are 4 leds, but only one LED
18 can be lit at a time. Max brightness is 127.
19
12What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/led 20What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/led
13Date: August 2011 21Date: August 2011
14Contact: linux-input@vger.kernel.org 22Contact: linux-input@vger.kernel.org
15Description: 23Description:
16 Attribute group for control of the status LEDs and the OLEDs. 24 Attribute group for control of the status LEDs and the OLEDs.
17 This attribute group is only available for Intuos 4 M, L, 25 This attribute group is only available for Intuos 4 M, L,
18 and XL (with LEDs and OLEDs) and Cintiq 21UX2 and Cintiq 24HD 26 and XL (with LEDs and OLEDs), Intuos 5 (LEDs only), and Cintiq
19 (LEDs only). Therefore its presence implicitly signifies the 27 21UX2 and Cintiq 24HD (LEDs only). Therefore its presence
20 presence of said LEDs and OLEDs on the tablet device. 28 implicitly signifies the presence of said LEDs and OLEDs on the
29 tablet device.
21 30
22What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status0_luminance 31What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status0_luminance
23Date: August 2011 32Date: August 2011
@@ -40,10 +49,10 @@ What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status_led0
40Date: August 2011 49Date: August 2011
41Contact: linux-input@vger.kernel.org 50Contact: linux-input@vger.kernel.org
42Description: 51Description:
43 Writing to this file sets which one of the four (for Intuos 4) 52 Writing to this file sets which one of the four (for Intuos 4
44 or of the right four (for Cintiq 21UX2 and Cintiq 24HD) status 53 and Intuos 5) or of the right four (for Cintiq 21UX2 and Cintiq
45 LEDs is active (0..3). The other three LEDs on the same side are 54 24HD) status LEDs is active (0..3). The other three LEDs on the
46 always inactive. 55 same side are always inactive.
47 56
48What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status_led1_select 57What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status_led1_select
49Date: September 2011 58Date: September 2011
diff --git a/Documentation/ABI/testing/sysfs-power b/Documentation/ABI/testing/sysfs-power
index b464d12761ba..31725ffeeb3a 100644
--- a/Documentation/ABI/testing/sysfs-power
+++ b/Documentation/ABI/testing/sysfs-power
@@ -172,3 +172,62 @@ Description:
172 172
173 Reading from this file will display the current value, which is 173 Reading from this file will display the current value, which is
174 set to 1 MB by default. 174 set to 1 MB by default.
175
176What: /sys/power/autosleep
177Date: April 2012
178Contact: Rafael J. Wysocki <rjw@sisk.pl>
179Description:
180 The /sys/power/autosleep file can be written one of the strings
181 returned by reads from /sys/power/state. If that happens, a
182 work item attempting to trigger a transition of the system to
183 the sleep state represented by that string is queued up. This
184 attempt will only succeed if there are no active wakeup sources
185 in the system at that time. After every execution, regardless
186 of whether or not the attempt to put the system to sleep has
187 succeeded, the work item requeues itself until user space
188 writes "off" to /sys/power/autosleep.
189
190 Reading from this file causes the last string successfully
191 written to it to be returned.
192
193What: /sys/power/wake_lock
194Date: February 2012
195Contact: Rafael J. Wysocki <rjw@sisk.pl>
196Description:
197 The /sys/power/wake_lock file allows user space to create
198 wakeup source objects and activate them on demand (if one of
199 those wakeup sources is active, reads from the
200 /sys/power/wakeup_count file block or return false). When a
201 string without white space is written to /sys/power/wake_lock,
202 it will be assumed to represent a wakeup source name. If there
203 is a wakeup source object with that name, it will be activated
204 (unless active already). Otherwise, a new wakeup source object
205 will be registered, assigned the given name and activated.
206 If a string written to /sys/power/wake_lock contains white
207 space, the part of the string preceding the white space will be
208 regarded as a wakeup source name and handled as descrived above.
209 The other part of the string will be regarded as a timeout (in
210 nanoseconds) such that the wakeup source will be automatically
211 deactivated after it has expired. The timeout, if present, is
212 set regardless of the current state of the wakeup source object
213 in question.
214
215 Reads from this file return a string consisting of the names of
216 wakeup sources created with the help of it that are active at
217 the moment, separated with spaces.
218
219
220What: /sys/power/wake_unlock
221Date: February 2012
222Contact: Rafael J. Wysocki <rjw@sisk.pl>
223Description:
224 The /sys/power/wake_unlock file allows user space to deactivate
225 wakeup sources created with the help of /sys/power/wake_lock.
226 When a string is written to /sys/power/wake_unlock, it will be
227 assumed to represent the name of a wakeup source to deactivate.
228 If a wakeup source object of that name exists and is active at
229 the moment, it will be deactivated.
230
231 Reads from this file return a string consisting of the names of
232 wakeup sources created with the help of /sys/power/wake_lock
233 that are inactive at the moment, separated with spaces.
diff --git a/Documentation/CodingStyle b/Documentation/CodingStyle
index c58b236bbe04..cb9258b8fd35 100644
--- a/Documentation/CodingStyle
+++ b/Documentation/CodingStyle
@@ -671,8 +671,9 @@ ones already enabled by DEBUG.
671 Chapter 14: Allocating memory 671 Chapter 14: Allocating memory
672 672
673The kernel provides the following general purpose memory allocators: 673The kernel provides the following general purpose memory allocators:
674kmalloc(), kzalloc(), kcalloc(), vmalloc(), and vzalloc(). Please refer to 674kmalloc(), kzalloc(), kmalloc_array(), kcalloc(), vmalloc(), and
675the API documentation for further information about them. 675vzalloc(). Please refer to the API documentation for further information
676about them.
676 677
677The preferred form for passing a size of a struct is the following: 678The preferred form for passing a size of a struct is the following:
678 679
@@ -686,6 +687,17 @@ Casting the return value which is a void pointer is redundant. The conversion
686from void pointer to any other pointer type is guaranteed by the C programming 687from void pointer to any other pointer type is guaranteed by the C programming
687language. 688language.
688 689
690The preferred form for allocating an array is the following:
691
692 p = kmalloc_array(n, sizeof(...), ...);
693
694The preferred form for allocating a zeroed array is the following:
695
696 p = kcalloc(n, sizeof(...), ...);
697
698Both forms check for overflow on the allocation size n * sizeof(...),
699and return NULL if that occurred.
700
689 701
690 Chapter 15: The inline disease 702 Chapter 15: The inline disease
691 703
diff --git a/Documentation/DocBook/80211.tmpl b/Documentation/DocBook/80211.tmpl
index c5ac6929c41c..f3e214f9e256 100644
--- a/Documentation/DocBook/80211.tmpl
+++ b/Documentation/DocBook/80211.tmpl
@@ -516,7 +516,7 @@
516!Finclude/net/mac80211.h ieee80211_start_tx_ba_cb_irqsafe 516!Finclude/net/mac80211.h ieee80211_start_tx_ba_cb_irqsafe
517!Finclude/net/mac80211.h ieee80211_stop_tx_ba_session 517!Finclude/net/mac80211.h ieee80211_stop_tx_ba_session
518!Finclude/net/mac80211.h ieee80211_stop_tx_ba_cb_irqsafe 518!Finclude/net/mac80211.h ieee80211_stop_tx_ba_cb_irqsafe
519!Finclude/net/mac80211.h rate_control_changed 519!Finclude/net/mac80211.h ieee80211_rate_control_changed
520!Finclude/net/mac80211.h ieee80211_tx_rate_control 520!Finclude/net/mac80211.h ieee80211_tx_rate_control
521!Finclude/net/mac80211.h rate_control_send_low 521!Finclude/net/mac80211.h rate_control_send_low
522 </chapter> 522 </chapter>
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
index 66725a3d30dc..bc3d9f8c0a90 100644
--- a/Documentation/DocBook/Makefile
+++ b/Documentation/DocBook/Makefile
@@ -6,7 +6,7 @@
6# To add a new book the only step required is to add the book to the 6# To add a new book the only step required is to add the book to the
7# list of DOCBOOKS. 7# list of DOCBOOKS.
8 8
9DOCBOOKS := z8530book.xml mcabook.xml device-drivers.xml \ 9DOCBOOKS := z8530book.xml device-drivers.xml \
10 kernel-hacking.xml kernel-locking.xml deviceiobook.xml \ 10 kernel-hacking.xml kernel-locking.xml deviceiobook.xml \
11 writing_usb_driver.xml networking.xml \ 11 writing_usb_driver.xml networking.xml \
12 kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \ 12 kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl
index 7160652a8736..00687ee9d363 100644
--- a/Documentation/DocBook/kernel-api.tmpl
+++ b/Documentation/DocBook/kernel-api.tmpl
@@ -212,19 +212,6 @@ X!Edrivers/pci/hotplug.c
212 <sect1><title>PCI Hotplug Support Library</title> 212 <sect1><title>PCI Hotplug Support Library</title>
213!Edrivers/pci/hotplug/pci_hotplug_core.c 213!Edrivers/pci/hotplug/pci_hotplug_core.c
214 </sect1> 214 </sect1>
215 <sect1><title>MCA Architecture</title>
216 <sect2><title>MCA Device Functions</title>
217 <para>
218 Refer to the file arch/x86/kernel/mca_32.c for more information.
219 </para>
220<!-- FIXME: Removed for now since no structured comments in source
221X!Earch/x86/kernel/mca_32.c
222-->
223 </sect2>
224 <sect2><title>MCA Bus DMA</title>
225!Iarch/x86/include/asm/mca_dma.h
226 </sect2>
227 </sect1>
228 </chapter> 215 </chapter>
229 216
230 <chapter id="firmware"> 217 <chapter id="firmware">
diff --git a/Documentation/DocBook/kernel-hacking.tmpl b/Documentation/DocBook/kernel-hacking.tmpl
index 07a9c48de5a2..eee71426ecb8 100644
--- a/Documentation/DocBook/kernel-hacking.tmpl
+++ b/Documentation/DocBook/kernel-hacking.tmpl
@@ -1289,7 +1289,7 @@ static struct block_device_operations opt_fops = {
1289 * Sparc assembly will do this to ya. 1289 * Sparc assembly will do this to ya.
1290 */ 1290 */
1291C_LABEL(cputypvar): 1291C_LABEL(cputypvar):
1292 .asciz "compatability" 1292 .asciz "compatibility"
1293 1293
1294/* Tested on SS-5, SS-10. Probably someone at Sun applied a spell-checker. */ 1294/* Tested on SS-5, SS-10. Probably someone at Sun applied a spell-checker. */
1295 .align 4 1295 .align 4
diff --git a/Documentation/DocBook/libata.tmpl b/Documentation/DocBook/libata.tmpl
index 31df1aa00710..deb71baed328 100644
--- a/Documentation/DocBook/libata.tmpl
+++ b/Documentation/DocBook/libata.tmpl
@@ -918,7 +918,7 @@ and other resources, etc.
918 <title>HSM violation</title> 918 <title>HSM violation</title>
919 <para> 919 <para>
920 This error is indicated when STATUS value doesn't match HSM 920 This error is indicated when STATUS value doesn't match HSM
921 requirement during issuing or excution any ATA/ATAPI command. 921 requirement during issuing or execution any ATA/ATAPI command.
922 </para> 922 </para>
923 923
924 <itemizedlist> 924 <itemizedlist>
diff --git a/Documentation/DocBook/mcabook.tmpl b/Documentation/DocBook/mcabook.tmpl
deleted file mode 100644
index 467ccac6ec50..000000000000
--- a/Documentation/DocBook/mcabook.tmpl
+++ /dev/null
@@ -1,107 +0,0 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
4
5<book id="MCAGuide">
6 <bookinfo>
7 <title>MCA Driver Programming Interface</title>
8
9 <authorgroup>
10 <author>
11 <firstname>Alan</firstname>
12 <surname>Cox</surname>
13 <affiliation>
14 <address>
15 <email>alan@lxorguk.ukuu.org.uk</email>
16 </address>
17 </affiliation>
18 </author>
19 <author>
20 <firstname>David</firstname>
21 <surname>Weinehall</surname>
22 </author>
23 <author>
24 <firstname>Chris</firstname>
25 <surname>Beauregard</surname>
26 </author>
27 </authorgroup>
28
29 <copyright>
30 <year>2000</year>
31 <holder>Alan Cox</holder>
32 <holder>David Weinehall</holder>
33 <holder>Chris Beauregard</holder>
34 </copyright>
35
36 <legalnotice>
37 <para>
38 This documentation is free software; you can redistribute
39 it and/or modify it under the terms of the GNU General Public
40 License as published by the Free Software Foundation; either
41 version 2 of the License, or (at your option) any later
42 version.
43 </para>
44
45 <para>
46 This program is distributed in the hope that it will be
47 useful, but WITHOUT ANY WARRANTY; without even the implied
48 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
49 See the GNU General Public License for more details.
50 </para>
51
52 <para>
53 You should have received a copy of the GNU General Public
54 License along with this program; if not, write to the Free
55 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
56 MA 02111-1307 USA
57 </para>
58
59 <para>
60 For more details see the file COPYING in the source
61 distribution of Linux.
62 </para>
63 </legalnotice>
64 </bookinfo>
65
66<toc></toc>
67
68 <chapter id="intro">
69 <title>Introduction</title>
70 <para>
71 The MCA bus functions provide a generalised interface to find MCA
72 bus cards, to claim them for a driver, and to read and manipulate POS
73 registers without being aware of the motherboard internals or
74 certain deep magic specific to onboard devices.
75 </para>
76 <para>
77 The basic interface to the MCA bus devices is the slot. Each slot
78 is numbered and virtual slot numbers are assigned to the internal
79 devices. Using a pci_dev as other busses do does not really make
80 sense in the MCA context as the MCA bus resources require card
81 specific interpretation.
82 </para>
83 <para>
84 Finally the MCA bus functions provide a parallel set of DMA
85 functions mimicing the ISA bus DMA functions as closely as possible,
86 although also supporting the additional DMA functionality on the
87 MCA bus controllers.
88 </para>
89 </chapter>
90 <chapter id="bugs">
91 <title>Known Bugs And Assumptions</title>
92 <para>
93 None.
94 </para>
95 </chapter>
96
97 <chapter id="pubfunctions">
98 <title>Public Functions Provided</title>
99!Edrivers/mca/mca-legacy.c
100 </chapter>
101
102 <chapter id="dmafunctions">
103 <title>DMA Functions Provided</title>
104!Iarch/x86/include/asm/mca_dma.h
105 </chapter>
106
107</book>
diff --git a/Documentation/DocBook/media/Makefile b/Documentation/DocBook/media/Makefile
index 6628b4b9cac4..362520992ced 100644
--- a/Documentation/DocBook/media/Makefile
+++ b/Documentation/DocBook/media/Makefile
@@ -70,6 +70,8 @@ IOCTLS = \
70 VIDIOC_SUBDEV_ENUM_MBUS_CODE \ 70 VIDIOC_SUBDEV_ENUM_MBUS_CODE \
71 VIDIOC_SUBDEV_ENUM_FRAME_SIZE \ 71 VIDIOC_SUBDEV_ENUM_FRAME_SIZE \
72 VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL \ 72 VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL \
73 VIDIOC_SUBDEV_G_SELECTION \
74 VIDIOC_SUBDEV_S_SELECTION \
73 75
74TYPES = \ 76TYPES = \
75 $(shell perl -ne 'print "$$1 " if /^typedef\s+[^\s]+\s+([^\s]+)\;/' $(srctree)/include/linux/videodev2.h) \ 77 $(shell perl -ne 'print "$$1 " if /^typedef\s+[^\s]+\s+([^\s]+)\;/' $(srctree)/include/linux/videodev2.h) \
@@ -193,7 +195,7 @@ DVB_DOCUMENTED = \
193# 195#
194 196
195install_media_images = \ 197install_media_images = \
196 $(Q)cp $(OBJIMGFILES) $(MEDIA_OBJ_DIR)/media_api 198 $(Q)cp $(OBJIMGFILES) $(MEDIA_SRC_DIR)/v4l/*.svg $(MEDIA_OBJ_DIR)/media_api
197 199
198$(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%.b64 200$(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%.b64
199 $(Q)base64 -d $< >$@ 201 $(Q)base64 -d $< >$@
diff --git a/Documentation/DocBook/media/dvb/dvbproperty.xml b/Documentation/DocBook/media/dvb/dvbproperty.xml
index c7a4ca517859..e633c097a8d1 100644
--- a/Documentation/DocBook/media/dvb/dvbproperty.xml
+++ b/Documentation/DocBook/media/dvb/dvbproperty.xml
@@ -531,6 +531,139 @@ typedef enum fe_delivery_system {
531 here are referring to what can be found in the TMCC-structure - 531 here are referring to what can be found in the TMCC-structure -
532 independent of the mode.</para> 532 independent of the mode.</para>
533 </section> 533 </section>
534 <section id="DTV-ATSCMH-FIC-VER">
535 <title><constant>DTV_ATSCMH_FIC_VER</constant></title>
536 <para>Version number of the FIC (Fast Information Channel) signaling data.</para>
537 <para>FIC is used for relaying information to allow rapid service acquisition by the receiver.</para>
538 <para>Possible values: 0, 1, 2, 3, ..., 30, 31</para>
539 </section>
540 <section id="DTV-ATSCMH-PARADE-ID">
541 <title><constant>DTV_ATSCMH_PARADE_ID</constant></title>
542 <para>Parade identification number</para>
543 <para>A parade is a collection of up to eight MH groups, conveying one or two ensembles.</para>
544 <para>Possible values: 0, 1, 2, 3, ..., 126, 127</para>
545 </section>
546 <section id="DTV-ATSCMH-NOG">
547 <title><constant>DTV_ATSCMH_NOG</constant></title>
548 <para>Number of MH groups per MH subframe for a designated parade.</para>
549 <para>Possible values: 1, 2, 3, 4, 5, 6, 7, 8</para>
550 </section>
551 <section id="DTV-ATSCMH-TNOG">
552 <title><constant>DTV_ATSCMH_TNOG</constant></title>
553 <para>Total number of MH groups including all MH groups belonging to all MH parades in one MH subframe.</para>
554 <para>Possible values: 0, 1, 2, 3, ..., 30, 31</para>
555 </section>
556 <section id="DTV-ATSCMH-SGN">
557 <title><constant>DTV_ATSCMH_SGN</constant></title>
558 <para>Start group number.</para>
559 <para>Possible values: 0, 1, 2, 3, ..., 14, 15</para>
560 </section>
561 <section id="DTV-ATSCMH-PRC">
562 <title><constant>DTV_ATSCMH_PRC</constant></title>
563 <para>Parade repetition cycle.</para>
564 <para>Possible values: 1, 2, 3, 4, 5, 6, 7, 8</para>
565 </section>
566 <section id="DTV-ATSCMH-RS-FRAME-MODE">
567 <title><constant>DTV_ATSCMH_RS_FRAME_MODE</constant></title>
568 <para>RS frame mode.</para>
569 <para>Possible values are:</para>
570<programlisting>
571typedef enum atscmh_rs_frame_mode {
572 ATSCMH_RSFRAME_PRI_ONLY = 0,
573 ATSCMH_RSFRAME_PRI_SEC = 1,
574} atscmh_rs_frame_mode_t;
575</programlisting>
576 </section>
577 <section id="DTV-ATSCMH-RS-FRAME-ENSEMBLE">
578 <title><constant>DTV_ATSCMH_RS_FRAME_ENSEMBLE</constant></title>
579 <para>RS frame ensemble.</para>
580 <para>Possible values are:</para>
581<programlisting>
582typedef enum atscmh_rs_frame_ensemble {
583 ATSCMH_RSFRAME_ENS_PRI = 0,
584 ATSCMH_RSFRAME_ENS_SEC = 1,
585} atscmh_rs_frame_ensemble_t;
586</programlisting>
587 </section>
588 <section id="DTV-ATSCMH-RS-CODE-MODE-PRI">
589 <title><constant>DTV_ATSCMH_RS_CODE_MODE_PRI</constant></title>
590 <para>RS code mode (primary).</para>
591 <para>Possible values are:</para>
592<programlisting>
593typedef enum atscmh_rs_code_mode {
594 ATSCMH_RSCODE_211_187 = 0,
595 ATSCMH_RSCODE_223_187 = 1,
596 ATSCMH_RSCODE_235_187 = 2,
597} atscmh_rs_code_mode_t;
598</programlisting>
599 </section>
600 <section id="DTV-ATSCMH-RS-CODE-MODE-SEC">
601 <title><constant>DTV_ATSCMH_RS_CODE_MODE_SEC</constant></title>
602 <para>RS code mode (secondary).</para>
603 <para>Possible values are:</para>
604<programlisting>
605typedef enum atscmh_rs_code_mode {
606 ATSCMH_RSCODE_211_187 = 0,
607 ATSCMH_RSCODE_223_187 = 1,
608 ATSCMH_RSCODE_235_187 = 2,
609} atscmh_rs_code_mode_t;
610</programlisting>
611 </section>
612 <section id="DTV-ATSCMH-SCCC-BLOCK-MODE">
613 <title><constant>DTV_ATSCMH_SCCC_BLOCK_MODE</constant></title>
614 <para>Series Concatenated Convolutional Code Block Mode.</para>
615 <para>Possible values are:</para>
616<programlisting>
617typedef enum atscmh_sccc_block_mode {
618 ATSCMH_SCCC_BLK_SEP = 0,
619 ATSCMH_SCCC_BLK_COMB = 1,
620} atscmh_sccc_block_mode_t;
621</programlisting>
622 </section>
623 <section id="DTV-ATSCMH-SCCC-CODE-MODE-A">
624 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_A</constant></title>
625 <para>Series Concatenated Convolutional Code Rate.</para>
626 <para>Possible values are:</para>
627<programlisting>
628typedef enum atscmh_sccc_code_mode {
629 ATSCMH_SCCC_CODE_HLF = 0,
630 ATSCMH_SCCC_CODE_QTR = 1,
631} atscmh_sccc_code_mode_t;
632</programlisting>
633 </section>
634 <section id="DTV-ATSCMH-SCCC-CODE-MODE-B">
635 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_B</constant></title>
636 <para>Series Concatenated Convolutional Code Rate.</para>
637 <para>Possible values are:</para>
638<programlisting>
639typedef enum atscmh_sccc_code_mode {
640 ATSCMH_SCCC_CODE_HLF = 0,
641 ATSCMH_SCCC_CODE_QTR = 1,
642} atscmh_sccc_code_mode_t;
643</programlisting>
644 </section>
645 <section id="DTV-ATSCMH-SCCC-CODE-MODE-C">
646 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_C</constant></title>
647 <para>Series Concatenated Convolutional Code Rate.</para>
648 <para>Possible values are:</para>
649<programlisting>
650typedef enum atscmh_sccc_code_mode {
651 ATSCMH_SCCC_CODE_HLF = 0,
652 ATSCMH_SCCC_CODE_QTR = 1,
653} atscmh_sccc_code_mode_t;
654</programlisting>
655 </section>
656 <section id="DTV-ATSCMH-SCCC-CODE-MODE-D">
657 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_D</constant></title>
658 <para>Series Concatenated Convolutional Code Rate.</para>
659 <para>Possible values are:</para>
660<programlisting>
661typedef enum atscmh_sccc_code_mode {
662 ATSCMH_SCCC_CODE_HLF = 0,
663 ATSCMH_SCCC_CODE_QTR = 1,
664} atscmh_sccc_code_mode_t;
665</programlisting>
666 </section>
534 </section> 667 </section>
535 <section id="DTV-API-VERSION"> 668 <section id="DTV-API-VERSION">
536 <title><constant>DTV_API_VERSION</constant></title> 669 <title><constant>DTV_API_VERSION</constant></title>
@@ -774,6 +907,33 @@ typedef enum fe_hierarchy {
774 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem> 907 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
775 </itemizedlist> 908 </itemizedlist>
776 </section> 909 </section>
910 <section id="atscmh-params">
911 <title>ATSC-MH delivery system</title>
912 <para>The following parameters are valid for ATSC-MH:</para>
913 <itemizedlist mark='opencircle'>
914 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
915 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
916 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
917 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
918 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
919 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
920 <listitem><para><link linkend="DTV-ATSCMH-FIC-VER"><constant>DTV_ATSCMH_FIC_VER</constant></link></para></listitem>
921 <listitem><para><link linkend="DTV-ATSCMH-PARADE-ID"><constant>DTV_ATSCMH_PARADE_ID</constant></link></para></listitem>
922 <listitem><para><link linkend="DTV-ATSCMH-NOG"><constant>DTV_ATSCMH_NOG</constant></link></para></listitem>
923 <listitem><para><link linkend="DTV-ATSCMH-TNOG"><constant>DTV_ATSCMH_TNOG</constant></link></para></listitem>
924 <listitem><para><link linkend="DTV-ATSCMH-SGN"><constant>DTV_ATSCMH_SGN</constant></link></para></listitem>
925 <listitem><para><link linkend="DTV-ATSCMH-PRC"><constant>DTV_ATSCMH_PRC</constant></link></para></listitem>
926 <listitem><para><link linkend="DTV-ATSCMH-RS-FRAME-MODE"><constant>DTV_ATSCMH_RS_FRAME_MODE</constant></link></para></listitem>
927 <listitem><para><link linkend="DTV-ATSCMH-RS-FRAME-ENSEMBLE"><constant>DTV_ATSCMH_RS_FRAME_ENSEMBLE</constant></link></para></listitem>
928 <listitem><para><link linkend="DTV-ATSCMH-CODE-MODE-PRI"><constant>DTV_ATSCMH_CODE_MODE_PRI</constant></link></para></listitem>
929 <listitem><para><link linkend="DTV-ATSCMH-CODE-MODE-SEC"><constant>DTV_ATSCMH_CODE_MODE_SEC</constant></link></para></listitem>
930 <listitem><para><link linkend="DTV-ATSCMH-SCCC-BLOCK-MODE"><constant>DTV_ATSCMH_SCCC_BLOCK_MODE</constant></link></para></listitem>
931 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE_MODE-A"><constant>DTV_ATSCMH_SCCC_CODE_MODE_A</constant></link></para></listitem>
932 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE_MODE-B"><constant>DTV_ATSCMH_SCCC_CODE_MODE_B</constant></link></para></listitem>
933 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE_MODE-C"><constant>DTV_ATSCMH_SCCC_CODE_MODE_C</constant></link></para></listitem>
934 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE_MODE-D"><constant>DTV_ATSCMH_SCCC_CODE_MODE_D</constant></link></para></listitem>
935 </itemizedlist>
936 </section>
777 </section> 937 </section>
778 <section id="frontend-property-cable-systems"> 938 <section id="frontend-property-cable-systems">
779 <title>Properties used on cable delivery systems</title> 939 <title>Properties used on cable delivery systems</title>
diff --git a/Documentation/DocBook/media/v4l/biblio.xml b/Documentation/DocBook/media/v4l/biblio.xml
index 7dc65c592a87..7c49facecd25 100644
--- a/Documentation/DocBook/media/v4l/biblio.xml
+++ b/Documentation/DocBook/media/v4l/biblio.xml
@@ -197,4 +197,33 @@ in the frequency range from 87,5 to 108,0 MHz</title>
197 <title>NTSC-4: United States RBDS Standard</title> 197 <title>NTSC-4: United States RBDS Standard</title>
198 </biblioentry> 198 </biblioentry>
199 199
200 <biblioentry id="iso12232">
201 <abbrev>ISO&nbsp;12232:2006</abbrev>
202 <authorgroup>
203 <corpauthor>International Organization for Standardization
204(<ulink url="http://www.iso.org">http://www.iso.org</ulink>)</corpauthor>
205 </authorgroup>
206 <title>Photography &mdash; Digital still cameras &mdash; Determination
207 of exposure index, ISO speed ratings, standard output sensitivity, and
208 recommended exposure index</title>
209 </biblioentry>
210
211 <biblioentry id="cea861">
212 <abbrev>CEA-861-E</abbrev>
213 <authorgroup>
214 <corpauthor>Consumer Electronics Association
215(<ulink url="http://www.ce.org">http://www.ce.org</ulink>)</corpauthor>
216 </authorgroup>
217 <title>A DTV Profile for Uncompressed High Speed Digital Interfaces</title>
218 </biblioentry>
219
220 <biblioentry id="vesadmt">
221 <abbrev>VESA&nbsp;DMT</abbrev>
222 <authorgroup>
223 <corpauthor>Video Electronics Standards Association
224(<ulink url="http://www.vesa.org">http://www.vesa.org</ulink>)</corpauthor>
225 </authorgroup>
226 <title>VESA and Industry Standards and Guidelines for Computer Display Monitor Timing (DMT)</title>
227 </biblioentry>
228
200 </bibliography> 229 </bibliography>
diff --git a/Documentation/DocBook/media/v4l/common.xml b/Documentation/DocBook/media/v4l/common.xml
index c79278acfb0e..4101aeb56540 100644
--- a/Documentation/DocBook/media/v4l/common.xml
+++ b/Documentation/DocBook/media/v4l/common.xml
@@ -724,41 +724,49 @@ if (-1 == ioctl (fd, &VIDIOC-S-STD;, &amp;std_id)) {
724} 724}
725 </programlisting> 725 </programlisting>
726 </example> 726 </example>
727 </section>
727 <section id="dv-timings"> 728 <section id="dv-timings">
728 <title>Digital Video (DV) Timings</title> 729 <title>Digital Video (DV) Timings</title>
729 <para> 730 <para>
730 The video standards discussed so far has been dealing with Analog TV and the 731 The video standards discussed so far have been dealing with Analog TV and the
731corresponding video timings. Today there are many more different hardware interfaces 732corresponding video timings. Today there are many more different hardware interfaces
732such as High Definition TV interfaces (HDMI), VGA, DVI connectors etc., that carry 733such as High Definition TV interfaces (HDMI), VGA, DVI connectors etc., that carry
733video signals and there is a need to extend the API to select the video timings 734video signals and there is a need to extend the API to select the video timings
734for these interfaces. Since it is not possible to extend the &v4l2-std-id; due to 735for these interfaces. Since it is not possible to extend the &v4l2-std-id; due to
735the limited bits available, a new set of IOCTLs is added to set/get video timings at 736the limited bits available, a new set of IOCTLs was added to set/get video timings at
736the input and output: </para><itemizedlist> 737the input and output: </para><itemizedlist>
737 <listitem> 738 <listitem>
738 <para>DV Presets: Digital Video (DV) presets. These are IDs representing a 739 <para>DV Timings: This will allow applications to define detailed
740video timings for the interface. This includes parameters such as width, height,
741polarities, frontporch, backporch etc. The <filename>linux/v4l2-dv-timings.h</filename>
742header can be used to get the timings of the formats in the <xref linkend="cea861" /> and
743<xref linkend="vesadmt" /> standards.
744 </para>
745 </listitem>
746 <listitem>
747 <para>DV Presets: Digital Video (DV) presets (<emphasis role="bold">deprecated</emphasis>).
748 These are IDs representing a
739video timing at the input/output. Presets are pre-defined timings implemented 749video timing at the input/output. Presets are pre-defined timings implemented
740by the hardware according to video standards. A __u32 data type is used to represent 750by the hardware according to video standards. A __u32 data type is used to represent
741a preset unlike the bit mask that is used in &v4l2-std-id; allowing future extensions 751a preset unlike the bit mask that is used in &v4l2-std-id; allowing future extensions
742to support as many different presets as needed.</para> 752to support as many different presets as needed. This API is deprecated in favor of the DV Timings
743 </listitem> 753API.</para>
744 <listitem>
745 <para>Custom DV Timings: This will allow applications to define more detailed
746custom video timings for the interface. This includes parameters such as width, height,
747polarities, frontporch, backporch etc.
748 </para>
749 </listitem> 754 </listitem>
750 </itemizedlist> 755 </itemizedlist>
756 <para>To enumerate and query the attributes of the DV timings supported by a device,
757 applications use the &VIDIOC-ENUM-DV-TIMINGS; and &VIDIOC-DV-TIMINGS-CAP; ioctls.
758 To set DV timings for the device, applications use the
759&VIDIOC-S-DV-TIMINGS; ioctl and to get current DV timings they use the
760&VIDIOC-G-DV-TIMINGS; ioctl. To detect the DV timings as seen by the video receiver applications
761use the &VIDIOC-QUERY-DV-TIMINGS; ioctl.</para>
751 <para>To enumerate and query the attributes of DV presets supported by a device, 762 <para>To enumerate and query the attributes of DV presets supported by a device,
752applications use the &VIDIOC-ENUM-DV-PRESETS; ioctl. To get the current DV preset, 763applications use the &VIDIOC-ENUM-DV-PRESETS; ioctl. To get the current DV preset,
753applications use the &VIDIOC-G-DV-PRESET; ioctl and to set a preset they use the 764applications use the &VIDIOC-G-DV-PRESET; ioctl and to set a preset they use the
754&VIDIOC-S-DV-PRESET; ioctl.</para> 765&VIDIOC-S-DV-PRESET; ioctl. To detect the preset as seen by the video receiver applications
755 <para>To set custom DV timings for the device, applications use the 766use the &VIDIOC-QUERY-DV-PRESET; ioctl.</para>
756&VIDIOC-S-DV-TIMINGS; ioctl and to get current custom DV timings they use the
757&VIDIOC-G-DV-TIMINGS; ioctl.</para>
758 <para>Applications can make use of the <xref linkend="input-capabilities" /> and 767 <para>Applications can make use of the <xref linkend="input-capabilities" /> and
759<xref linkend="output-capabilities"/> flags to decide what ioctls are available to set the 768<xref linkend="output-capabilities"/> flags to decide what ioctls are available to set the
760video timings for the device.</para> 769video timings for the device.</para>
761 </section>
762 </section> 770 </section>
763 771
764 &sub-controls; 772 &sub-controls;
diff --git a/Documentation/DocBook/media/v4l/compat.xml b/Documentation/DocBook/media/v4l/compat.xml
index bce97c50391b..ea42ef824948 100644
--- a/Documentation/DocBook/media/v4l/compat.xml
+++ b/Documentation/DocBook/media/v4l/compat.xml
@@ -2407,6 +2407,54 @@ details.</para>
2407 <para>Added <link linkend="jpeg-controls">JPEG compression control 2407 <para>Added <link linkend="jpeg-controls">JPEG compression control
2408 class</link>.</para> 2408 class</link>.</para>
2409 </listitem> 2409 </listitem>
2410 <listitem>
2411 <para>Extended the DV Timings API:
2412 &VIDIOC-ENUM-DV-TIMINGS;, &VIDIOC-QUERY-DV-TIMINGS; and
2413 &VIDIOC-DV-TIMINGS-CAP;.</para>
2414 </listitem>
2415 </orderedlist>
2416 </section>
2417
2418 <section>
2419 <title>V4L2 in Linux 3.5</title>
2420 <orderedlist>
2421 <listitem>
2422 <para>Added integer menus, the new type will be
2423 V4L2_CTRL_TYPE_INTEGER_MENU.</para>
2424 </listitem>
2425 <listitem>
2426 <para>Added selection API for V4L2 subdev interface:
2427 &VIDIOC-SUBDEV-G-SELECTION; and
2428 &VIDIOC-SUBDEV-S-SELECTION;.</para>
2429 </listitem>
2430 <listitem>
2431 <para> Added <constant>V4L2_COLORFX_ANTIQUE</constant>,
2432 <constant>V4L2_COLORFX_ART_FREEZE</constant>,
2433 <constant>V4L2_COLORFX_AQUA</constant>,
2434 <constant>V4L2_COLORFX_SILHOUETTE</constant>,
2435 <constant>V4L2_COLORFX_SOLARIZATION</constant>,
2436 <constant>V4L2_COLORFX_VIVID</constant> and
2437 <constant>V4L2_COLORFX_ARBITRARY_CBCR</constant> menu items
2438 to the <constant>V4L2_CID_COLORFX</constant> control.</para>
2439 </listitem>
2440 <listitem>
2441 <para> Added <constant>V4L2_CID_COLORFX_CBCR</constant> control.</para>
2442 </listitem>
2443 <listitem>
2444 <para> Added camera controls <constant>V4L2_CID_AUTO_EXPOSURE_BIAS</constant>,
2445 <constant>V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE</constant>,
2446 <constant>V4L2_CID_IMAGE_STABILIZATION</constant>,
2447 <constant>V4L2_CID_ISO_SENSITIVITY</constant>,
2448 <constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>,
2449 <constant>V4L2_CID_EXPOSURE_METERING</constant>,
2450 <constant>V4L2_CID_SCENE_MODE</constant>,
2451 <constant>V4L2_CID_3A_LOCK</constant>,
2452 <constant>V4L2_CID_AUTO_FOCUS_START</constant>,
2453 <constant>V4L2_CID_AUTO_FOCUS_STOP</constant>,
2454 <constant>V4L2_CID_AUTO_FOCUS_STATUS</constant> and
2455 <constant>V4L2_CID_AUTO_FOCUS_RANGE</constant>.
2456 </para>
2457 </listitem>
2410 </orderedlist> 2458 </orderedlist>
2411 </section> 2459 </section>
2412 2460
@@ -2508,6 +2556,10 @@ and may change in the future.</para>
2508ioctls.</para> 2556ioctls.</para>
2509 </listitem> 2557 </listitem>
2510 <listitem> 2558 <listitem>
2559 <para>&VIDIOC-DECODER-CMD; and &VIDIOC-TRY-DECODER-CMD;
2560ioctls.</para>
2561 </listitem>
2562 <listitem>
2511 <para>&VIDIOC-DBG-G-REGISTER; and &VIDIOC-DBG-S-REGISTER; 2563 <para>&VIDIOC-DBG-G-REGISTER; and &VIDIOC-DBG-S-REGISTER;
2512ioctls.</para> 2564ioctls.</para>
2513 </listitem> 2565 </listitem>
@@ -2515,6 +2567,10 @@ ioctls.</para>
2515 <para>&VIDIOC-DBG-G-CHIP-IDENT; ioctl.</para> 2567 <para>&VIDIOC-DBG-G-CHIP-IDENT; ioctl.</para>
2516 </listitem> 2568 </listitem>
2517 <listitem> 2569 <listitem>
2570 <para>&VIDIOC-ENUM-DV-TIMINGS;, &VIDIOC-QUERY-DV-TIMINGS; and
2571 &VIDIOC-DV-TIMINGS-CAP; ioctls.</para>
2572 </listitem>
2573 <listitem>
2518 <para>Flash API. <xref linkend="flash-controls" /></para> 2574 <para>Flash API. <xref linkend="flash-controls" /></para>
2519 </listitem> 2575 </listitem>
2520 <listitem> 2576 <listitem>
@@ -2523,6 +2579,14 @@ ioctls.</para>
2523 <listitem> 2579 <listitem>
2524 <para>Selection API. <xref linkend="selection-api" /></para> 2580 <para>Selection API. <xref linkend="selection-api" /></para>
2525 </listitem> 2581 </listitem>
2582 <listitem>
2583 <para>Sub-device selection API: &VIDIOC-SUBDEV-G-SELECTION;
2584 and &VIDIOC-SUBDEV-S-SELECTION; ioctls.</para>
2585 </listitem>
2586 <listitem>
2587 <para><link linkend="v4l2-auto-focus-area"><constant>
2588 V4L2_CID_AUTO_FOCUS_AREA</constant></link> control.</para>
2589 </listitem>
2526 </itemizedlist> 2590 </itemizedlist>
2527 </section> 2591 </section>
2528 2592
@@ -2538,6 +2602,17 @@ interfaces and should not be implemented in new drivers.</para>
2538<constant>VIDIOC_S_MPEGCOMP</constant> ioctls. Use Extended Controls, 2602<constant>VIDIOC_S_MPEGCOMP</constant> ioctls. Use Extended Controls,
2539<xref linkend="extended-controls" />.</para> 2603<xref linkend="extended-controls" />.</para>
2540 </listitem> 2604 </listitem>
2605 <listitem>
2606 <para>&VIDIOC-G-DV-PRESET;, &VIDIOC-S-DV-PRESET;, &VIDIOC-ENUM-DV-PRESETS; and
2607 &VIDIOC-QUERY-DV-PRESET; ioctls. Use the DV Timings API (<xref linkend="dv-timings" />).</para>
2608 </listitem>
2609 <listitem>
2610 <para><constant>VIDIOC_SUBDEV_G_CROP</constant> and
2611 <constant>VIDIOC_SUBDEV_S_CROP</constant> ioctls. Use
2612 <constant>VIDIOC_SUBDEV_G_SELECTION</constant> and
2613 <constant>VIDIOC_SUBDEV_S_SELECTION</constant>, <xref
2614 linkend="vidioc-subdev-g-selection" />.</para>
2615 </listitem>
2541 </itemizedlist> 2616 </itemizedlist>
2542 </section> 2617 </section>
2543 </section> 2618 </section>
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml
index b84f25e9cc87..cda0dfb6769a 100644
--- a/Documentation/DocBook/media/v4l/controls.xml
+++ b/Documentation/DocBook/media/v4l/controls.xml
@@ -285,18 +285,92 @@ minimum value disables backlight compensation.</entry>
285 <row id="v4l2-colorfx"> 285 <row id="v4l2-colorfx">
286 <entry><constant>V4L2_CID_COLORFX</constant></entry> 286 <entry><constant>V4L2_CID_COLORFX</constant></entry>
287 <entry>enum</entry> 287 <entry>enum</entry>
288 <entry>Selects a color effect. Possible values for 288 <entry>Selects a color effect. The following values are defined:
289<constant>enum v4l2_colorfx</constant> are: 289 </entry>
290<constant>V4L2_COLORFX_NONE</constant> (0), 290 </row><row>
291<constant>V4L2_COLORFX_BW</constant> (1), 291 <entry></entry>
292<constant>V4L2_COLORFX_SEPIA</constant> (2), 292 <entry></entry>
293<constant>V4L2_COLORFX_NEGATIVE</constant> (3), 293 <entrytbl spanname="descr" cols="2">
294<constant>V4L2_COLORFX_EMBOSS</constant> (4), 294 <tbody valign="top">
295<constant>V4L2_COLORFX_SKETCH</constant> (5), 295 <row>
296<constant>V4L2_COLORFX_SKY_BLUE</constant> (6), 296 <entry><constant>V4L2_COLORFX_NONE</constant>&nbsp;</entry>
297<constant>V4L2_COLORFX_GRASS_GREEN</constant> (7), 297 <entry>Color effect is disabled.</entry>
298<constant>V4L2_COLORFX_SKIN_WHITEN</constant> (8) and 298 </row>
299<constant>V4L2_COLORFX_VIVID</constant> (9).</entry> 299 <row>
300 <entry><constant>V4L2_COLORFX_ANTIQUE</constant>&nbsp;</entry>
301 <entry>An aging (old photo) effect.</entry>
302 </row>
303 <row>
304 <entry><constant>V4L2_COLORFX_ART_FREEZE</constant>&nbsp;</entry>
305 <entry>Frost color effect.</entry>
306 </row>
307 <row>
308 <entry><constant>V4L2_COLORFX_AQUA</constant>&nbsp;</entry>
309 <entry>Water color, cool tone.</entry>
310 </row>
311 <row>
312 <entry><constant>V4L2_COLORFX_BW</constant>&nbsp;</entry>
313 <entry>Black and white.</entry>
314 </row>
315 <row>
316 <entry><constant>V4L2_COLORFX_EMBOSS</constant>&nbsp;</entry>
317 <entry>Emboss, the highlights and shadows replace light/dark boundaries
318 and low contrast areas are set to a gray background.</entry>
319 </row>
320 <row>
321 <entry><constant>V4L2_COLORFX_GRASS_GREEN</constant>&nbsp;</entry>
322 <entry>Grass green.</entry>
323 </row>
324 <row>
325 <entry><constant>V4L2_COLORFX_NEGATIVE</constant>&nbsp;</entry>
326 <entry>Negative.</entry>
327 </row>
328 <row>
329 <entry><constant>V4L2_COLORFX_SEPIA</constant>&nbsp;</entry>
330 <entry>Sepia tone.</entry>
331 </row>
332 <row>
333 <entry><constant>V4L2_COLORFX_SKETCH</constant>&nbsp;</entry>
334 <entry>Sketch.</entry>
335 </row>
336 <row>
337 <entry><constant>V4L2_COLORFX_SKIN_WHITEN</constant>&nbsp;</entry>
338 <entry>Skin whiten.</entry>
339 </row>
340 <row>
341 <entry><constant>V4L2_COLORFX_SKY_BLUE</constant>&nbsp;</entry>
342 <entry>Sky blue.</entry>
343 </row>
344 <row>
345 <entry><constant>V4L2_COLORFX_SOLARIZATION</constant>&nbsp;</entry>
346 <entry>Solarization, the image is partially reversed in tone,
347 only color values above or below a certain threshold are inverted.
348 </entry>
349 </row>
350 <row>
351 <entry><constant>V4L2_COLORFX_SILHOUETTE</constant>&nbsp;</entry>
352 <entry>Silhouette (outline).</entry>
353 </row>
354 <row>
355 <entry><constant>V4L2_COLORFX_VIVID</constant>&nbsp;</entry>
356 <entry>Vivid colors.</entry>
357 </row>
358 <row>
359 <entry><constant>V4L2_COLORFX_SET_CBCR</constant>&nbsp;</entry>
360 <entry>The Cb and Cr chroma components are replaced by fixed
361 coefficients determined by <constant>V4L2_CID_COLORFX_CBCR</constant>
362 control.</entry>
363 </row>
364 </tbody>
365 </entrytbl>
366 </row>
367 <row>
368 <entry><constant>V4L2_CID_COLORFX_CBCR</constant></entry>
369 <entry>integer</entry>
370 <entry>Determines the Cb and Cr coefficients for <constant>V4L2_COLORFX_SET_CBCR</constant>
371 color effect. Bits [7:0] of the supplied 32 bit value are interpreted as
372 Cr component, bits [15:8] as Cb component and bits [31:16] must be zero.
373 </entry>
300 </row> 374 </row>
301 <row> 375 <row>
302 <entry><constant>V4L2_CID_ROTATE</constant></entry> 376 <entry><constant>V4L2_CID_ROTATE</constant></entry>
@@ -2023,7 +2097,7 @@ Possible values are:</entry>
2023 <entry>integer</entry> 2097 <entry>integer</entry>
2024 </row> 2098 </row>
2025 <row><entry spanname="descr">Cyclic intra macroblock refresh. This is the number of continuous macroblocks 2099 <row><entry spanname="descr">Cyclic intra macroblock refresh. This is the number of continuous macroblocks
2026refreshed every frame. Each frame a succesive set of macroblocks is refreshed until the cycle completes and starts from the 2100refreshed every frame. Each frame a successive set of macroblocks is refreshed until the cycle completes and starts from the
2027top of the frame. Applicable to H264, H263 and MPEG4 encoder.</entry> 2101top of the frame. Applicable to H264, H263 and MPEG4 encoder.</entry>
2028 </row> 2102 </row>
2029 2103
@@ -2183,7 +2257,7 @@ Applicable to the MPEG4 and H264 encoders.</entry>
2183 <entry>integer</entry> 2257 <entry>integer</entry>
2184 </row> 2258 </row>
2185 <row><entry spanname="descr">The Video Buffer Verifier size in kilobytes, it is used as a limitation of frame skip. 2259 <row><entry spanname="descr">The Video Buffer Verifier size in kilobytes, it is used as a limitation of frame skip.
2186The VBV is defined in the standard as a mean to verify that the produced stream will be succesfully decoded. 2260The VBV is defined in the standard as a mean to verify that the produced stream will be successfully decoded.
2187The standard describes it as "Part of a hypothetical decoder that is conceptually connected to the 2261The standard describes it as "Part of a hypothetical decoder that is conceptually connected to the
2188output of the encoder. Its purpose is to provide a constraint on the variability of the data rate that an 2262output of the encoder. Its purpose is to provide a constraint on the variability of the data rate that an
2189encoder or editing process may produce.". 2263encoder or editing process may produce.".
@@ -2196,7 +2270,7 @@ Applicable to the MPEG1, MPEG2, MPEG4 encoders.</entry>
2196 <entry>integer</entry> 2270 <entry>integer</entry>
2197 </row> 2271 </row>
2198 <row><entry spanname="descr">The Coded Picture Buffer size in kilobytes, it is used as a limitation of frame skip. 2272 <row><entry spanname="descr">The Coded Picture Buffer size in kilobytes, it is used as a limitation of frame skip.
2199The CPB is defined in the H264 standard as a mean to verify that the produced stream will be succesfully decoded. 2273The CPB is defined in the H264 standard as a mean to verify that the produced stream will be successfully decoded.
2200Applicable to the H264 encoder.</entry> 2274Applicable to the H264 encoder.</entry>
2201 </row> 2275 </row>
2202 2276
@@ -2775,6 +2849,51 @@ remain constant.</entry>
2775 <row><entry></entry></row> 2849 <row><entry></entry></row>
2776 2850
2777 <row> 2851 <row>
2852 <entry spanname="id"><constant>V4L2_CID_EXPOSURE_BIAS</constant>&nbsp;</entry>
2853 <entry>integer menu</entry>
2854 </row><row><entry spanname="descr"> Determines the automatic
2855exposure compensation, it is effective only when <constant>V4L2_CID_EXPOSURE_AUTO</constant>
2856control is set to <constant>AUTO</constant>, <constant>SHUTTER_PRIORITY </constant>
2857or <constant>APERTURE_PRIORITY</constant>.
2858It is expressed in terms of EV, drivers should interpret the values as 0.001 EV
2859units, where the value 1000 stands for +1 EV.
2860<para>Increasing the exposure compensation value is equivalent to decreasing
2861the exposure value (EV) and will increase the amount of light at the image
2862sensor. The camera performs the exposure compensation by adjusting absolute
2863exposure time and/or aperture.</para></entry>
2864 </row>
2865 <row><entry></entry></row>
2866
2867 <row id="v4l2-exposure-metering">
2868 <entry spanname="id"><constant>V4L2_CID_EXPOSURE_METERING</constant>&nbsp;</entry>
2869 <entry>enum&nbsp;v4l2_exposure_metering</entry>
2870 </row><row><entry spanname="descr">Determines how the camera measures
2871the amount of light available for the frame exposure. Possible values are:</entry>
2872 </row>
2873 <row>
2874 <entrytbl spanname="descr" cols="2">
2875 <tbody valign="top">
2876 <row>
2877 <entry><constant>V4L2_EXPOSURE_METERING_AVERAGE</constant>&nbsp;</entry>
2878 <entry>Use the light information coming from the entire frame
2879and average giving no weighting to any particular portion of the metered area.
2880 </entry>
2881 </row>
2882 <row>
2883 <entry><constant>V4L2_EXPOSURE_METERING_CENTER_WEIGHTED</constant>&nbsp;</entry>
2884 <entry>Average the light information coming from the entire frame
2885giving priority to the center of the metered area.</entry>
2886 </row>
2887 <row>
2888 <entry><constant>V4L2_EXPOSURE_METERING_SPOT</constant>&nbsp;</entry>
2889 <entry>Measure only very small area at the center of the frame.</entry>
2890 </row>
2891 </tbody>
2892 </entrytbl>
2893 </row>
2894 <row><entry></entry></row>
2895
2896 <row>
2778 <entry spanname="id"><constant>V4L2_CID_PAN_RELATIVE</constant>&nbsp;</entry> 2897 <entry spanname="id"><constant>V4L2_CID_PAN_RELATIVE</constant>&nbsp;</entry>
2779 <entry>integer</entry> 2898 <entry>integer</entry>
2780 </row><row><entry spanname="descr">This control turns the 2899 </row><row><entry spanname="descr">This control turns the
@@ -2857,13 +2976,107 @@ negative values towards infinity. This is a write-only control.</entry>
2857 <row> 2976 <row>
2858 <entry spanname="id"><constant>V4L2_CID_FOCUS_AUTO</constant>&nbsp;</entry> 2977 <entry spanname="id"><constant>V4L2_CID_FOCUS_AUTO</constant>&nbsp;</entry>
2859 <entry>boolean</entry> 2978 <entry>boolean</entry>
2860 </row><row><entry spanname="descr">Enables automatic focus 2979 </row><row><entry spanname="descr">Enables continuous automatic
2861adjustments. The effect of manual focus adjustments while this feature 2980focus adjustments. The effect of manual focus adjustments while this feature
2862is enabled is undefined, drivers should ignore such requests.</entry> 2981is enabled is undefined, drivers should ignore such requests.</entry>
2863 </row> 2982 </row>
2864 <row><entry></entry></row> 2983 <row><entry></entry></row>
2865 2984
2866 <row> 2985 <row>
2986 <entry spanname="id"><constant>V4L2_CID_AUTO_FOCUS_START</constant>&nbsp;</entry>
2987 <entry>button</entry>
2988 </row><row><entry spanname="descr">Starts single auto focus process.
2989The effect of setting this control when <constant>V4L2_CID_FOCUS_AUTO</constant>
2990is set to <constant>TRUE</constant> (1) is undefined, drivers should ignore
2991such requests.</entry>
2992 </row>
2993 <row><entry></entry></row>
2994
2995 <row>
2996 <entry spanname="id"><constant>V4L2_CID_AUTO_FOCUS_STOP</constant>&nbsp;</entry>
2997 <entry>button</entry>
2998 </row><row><entry spanname="descr">Aborts automatic focusing
2999started with <constant>V4L2_CID_AUTO_FOCUS_START</constant> control. It is
3000effective only when the continuous autofocus is disabled, that is when
3001<constant>V4L2_CID_FOCUS_AUTO</constant> control is set to <constant>FALSE
3002</constant> (0).</entry>
3003 </row>
3004 <row><entry></entry></row>
3005
3006 <row id="v4l2-auto-focus-status">
3007 <entry spanname="id">
3008 <constant>V4L2_CID_AUTO_FOCUS_STATUS</constant>&nbsp;</entry>
3009 <entry>bitmask</entry>
3010 </row>
3011 <row><entry spanname="descr">The automatic focus status. This is a read-only
3012 control.</entry>
3013 </row>
3014 <row>
3015 <entrytbl spanname="descr" cols="2">
3016 <tbody valign="top">
3017 <row>
3018 <entry><constant>V4L2_AUTO_FOCUS_STATUS_IDLE</constant>&nbsp;</entry>
3019 <entry>Automatic focus is not active.</entry>
3020 </row>
3021 <row>
3022 <entry><constant>V4L2_AUTO_FOCUS_STATUS_BUSY</constant>&nbsp;</entry>
3023 <entry>Automatic focusing is in progress.</entry>
3024 </row>
3025 <row>
3026 <entry><constant>V4L2_AUTO_FOCUS_STATUS_REACHED</constant>&nbsp;</entry>
3027 <entry>Focus has been reached.</entry>
3028 </row>
3029 <row>
3030 <entry><constant>V4L2_AUTO_FOCUS_STATUS_FAILED</constant>&nbsp;</entry>
3031 <entry>Automatic focus has failed, the driver will not
3032 transition from this state until another action is
3033 performed by an application.</entry>
3034 </row>
3035 </tbody>
3036 </entrytbl>
3037 </row>
3038 <row><entry spanname="descr">
3039Setting <constant>V4L2_LOCK_FOCUS</constant> lock bit of the <constant>V4L2_CID_3A_LOCK
3040</constant> control may stop updates of the <constant>V4L2_CID_AUTO_FOCUS_STATUS</constant>
3041control value.</entry>
3042 </row>
3043 <row><entry></entry></row>
3044
3045 <row id="v4l2-auto-focus-range">
3046 <entry spanname="id">
3047 <constant>V4L2_CID_AUTO_FOCUS_RANGE</constant>&nbsp;</entry>
3048 <entry>enum&nbsp;v4l2_auto_focus_range</entry>
3049 </row>
3050 <row><entry spanname="descr">Determines auto focus distance range
3051for which lens may be adjusted. </entry>
3052 </row>
3053 <row>
3054 <entrytbl spanname="descr" cols="2">
3055 <tbody valign="top">
3056 <row>
3057 <entry><constant>V4L2_AUTO_FOCUS_RANGE_AUTO</constant>&nbsp;</entry>
3058 <entry>The camera automatically selects the focus range.</entry>
3059 </row>
3060 <row>
3061 <entry><constant>V4L2_AUTO_FOCUS_RANGE_NORMAL</constant>&nbsp;</entry>
3062 <entry>Normal distance range, limited for best automatic focus
3063performance.</entry>
3064 </row>
3065 <row>
3066 <entry><constant>V4L2_AUTO_FOCUS_RANGE_MACRO</constant>&nbsp;</entry>
3067 <entry>Macro (close-up) auto focus. The camera will
3068use its minimum possible distance for auto focus.</entry>
3069 </row>
3070 <row>
3071 <entry><constant>V4L2_AUTO_FOCUS_RANGE_INFINITY</constant>&nbsp;</entry>
3072 <entry>The lens is set to focus on an object at infinite distance.</entry>
3073 </row>
3074 </tbody>
3075 </entrytbl>
3076 </row>
3077 <row><entry></entry></row>
3078
3079 <row>
2867 <entry spanname="id"><constant>V4L2_CID_ZOOM_ABSOLUTE</constant>&nbsp;</entry> 3080 <entry spanname="id"><constant>V4L2_CID_ZOOM_ABSOLUTE</constant>&nbsp;</entry>
2868 <entry>integer</entry> 3081 <entry>integer</entry>
2869 </row><row><entry spanname="descr">Specify the objective lens 3082 </row><row><entry spanname="descr">Specify the objective lens
@@ -2932,6 +3145,295 @@ camera sensor on or off, or specify its strength. Such band-stop filters can
2932be used, for example, to filter out the fluorescent light component.</entry> 3145be used, for example, to filter out the fluorescent light component.</entry>
2933 </row> 3146 </row>
2934 <row><entry></entry></row> 3147 <row><entry></entry></row>
3148
3149 <row id="v4l2-auto-n-preset-white-balance">
3150 <entry spanname="id"><constant>V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE</constant>&nbsp;</entry>
3151 <entry>enum&nbsp;v4l2_auto_n_preset_white_balance</entry>
3152 </row><row><entry spanname="descr">Sets white balance to automatic,
3153manual or a preset. The presets determine color temperature of the light as
3154a hint to the camera for white balance adjustments resulting in most accurate
3155color representation. The following white balance presets are listed in order
3156of increasing color temperature.</entry>
3157 </row>
3158 <row>
3159 <entrytbl spanname="descr" cols="2">
3160 <tbody valign="top">
3161 <row>
3162 <entry><constant>V4L2_WHITE_BALANCE_MANUAL</constant>&nbsp;</entry>
3163 <entry>Manual white balance.</entry>
3164 </row>
3165 <row>
3166 <entry><constant>V4L2_WHITE_BALANCE_AUTO</constant>&nbsp;</entry>
3167 <entry>Automatic white balance adjustments.</entry>
3168 </row>
3169 <row>
3170 <entry><constant>V4L2_WHITE_BALANCE_INCANDESCENT</constant>&nbsp;</entry>
3171 <entry>White balance setting for incandescent (tungsten) lighting.
3172It generally cools down the colors and corresponds approximately to 2500...3500 K
3173color temperature range.</entry>
3174 </row>
3175 <row>
3176 <entry><constant>V4L2_WHITE_BALANCE_FLUORESCENT</constant>&nbsp;</entry>
3177 <entry>White balance preset for fluorescent lighting.
3178It corresponds approximately to 4000...5000 K color temperature.</entry>
3179 </row>
3180 <row>
3181 <entry><constant>V4L2_WHITE_BALANCE_FLUORESCENT_H</constant>&nbsp;</entry>
3182 <entry>With this setting the camera will compensate for
3183fluorescent H lighting.</entry>
3184 </row>
3185 <row>
3186 <entry><constant>V4L2_WHITE_BALANCE_HORIZON</constant>&nbsp;</entry>
3187 <entry>White balance setting for horizon daylight.
3188It corresponds approximately to 5000 K color temperature.</entry>
3189 </row>
3190 <row>
3191 <entry><constant>V4L2_WHITE_BALANCE_DAYLIGHT</constant>&nbsp;</entry>
3192 <entry>White balance preset for daylight (with clear sky).
3193It corresponds approximately to 5000...6500 K color temperature.</entry>
3194 </row>
3195 <row>
3196 <entry><constant>V4L2_WHITE_BALANCE_FLASH</constant>&nbsp;</entry>
3197 <entry>With this setting the camera will compensate for the flash
3198light. It slightly warms up the colors and corresponds roughly to 5000...5500 K
3199color temperature.</entry>
3200 </row>
3201 <row>
3202 <entry><constant>V4L2_WHITE_BALANCE_CLOUDY</constant>&nbsp;</entry>
3203 <entry>White balance preset for moderately overcast sky.
3204This option corresponds approximately to 6500...8000 K color temperature
3205range.</entry>
3206 </row>
3207 <row>
3208 <entry><constant>V4L2_WHITE_BALANCE_SHADE</constant>&nbsp;</entry>
3209 <entry>White balance preset for shade or heavily overcast
3210sky. It corresponds approximately to 9000...10000 K color temperature.
3211</entry>
3212 </row>
3213 </tbody>
3214 </entrytbl>
3215 </row>
3216 <row><entry></entry></row>
3217
3218 <row id="v4l2-wide-dynamic-range">
3219 <entry spanname="id"><constant>V4L2_CID_WIDE_DYNAMIC_RANGE</constant></entry>
3220 <entry>boolean</entry>
3221 </row>
3222 <row>
3223 <entry spanname="descr">Enables or disables the camera's wide dynamic
3224range feature. This feature allows to obtain clear images in situations where
3225intensity of the illumination varies significantly throughout the scene, i.e.
3226there are simultaneously very dark and very bright areas. It is most commonly
3227realized in cameras by combining two subsequent frames with different exposure
3228times. <footnote id="ctypeconv"><para> This control may be changed to a menu
3229control in the future, if more options are required.</para></footnote></entry>
3230 </row>
3231 <row><entry></entry></row>
3232
3233 <row id="v4l2-image-stabilization">
3234 <entry spanname="id"><constant>V4L2_CID_IMAGE_STABILIZATION</constant></entry>
3235 <entry>boolean</entry>
3236 </row>
3237 <row>
3238 <entry spanname="descr">Enables or disables image stabilization.
3239 <footnoteref linkend="ctypeconv"/></entry>
3240 </row>
3241 <row><entry></entry></row>
3242
3243 <row>
3244 <entry spanname="id"><constant>V4L2_CID_ISO_SENSITIVITY</constant>&nbsp;</entry>
3245 <entry>integer menu</entry>
3246 </row><row><entry spanname="descr">Determines ISO equivalent of an
3247image sensor indicating the sensor's sensitivity to light. The numbers are
3248expressed in arithmetic scale, as per <xref linkend="iso12232" /> standard,
3249where doubling the sensor sensitivity is represented by doubling the numerical
3250ISO value. Applications should interpret the values as standard ISO values
3251multiplied by 1000, e.g. control value 800 stands for ISO 0.8. Drivers will
3252usually support only a subset of standard ISO values. The effect of setting
3253this control while the <constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>
3254control is set to a value other than <constant>V4L2_CID_ISO_SENSITIVITY_MANUAL
3255</constant> is undefined, drivers should ignore such requests.</entry>
3256 </row>
3257 <row><entry></entry></row>
3258
3259 <row id="v4l2-iso-sensitivity-auto-type">
3260 <entry spanname="id"><constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>&nbsp;</entry>
3261 <entry>enum&nbsp;v4l2_iso_sensitivity_type</entry>
3262 </row><row><entry spanname="descr">Enables or disables automatic ISO
3263sensitivity adjustments.</entry>
3264 </row>
3265 <row>
3266 <entrytbl spanname="descr" cols="2">
3267 <tbody valign="top">
3268 <row>
3269 <entry><constant>V4L2_CID_ISO_SENSITIVITY_MANUAL</constant>&nbsp;</entry>
3270 <entry>Manual ISO sensitivity.</entry>
3271 </row>
3272 <row>
3273 <entry><constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>&nbsp;</entry>
3274 <entry>Automatic ISO sensitivity adjustments.</entry>
3275 </row>
3276 </tbody>
3277 </entrytbl>
3278 </row>
3279 <row><entry></entry></row>
3280
3281 <row id="v4l2-scene-mode">
3282 <entry spanname="id"><constant>V4L2_CID_SCENE_MODE</constant>&nbsp;</entry>
3283 <entry>enum&nbsp;v4l2_scene_mode</entry>
3284 </row><row><entry spanname="descr">This control allows to select
3285scene programs as the camera automatic modes optimized for common shooting
3286scenes. Within these modes the camera determines best exposure, aperture,
3287focusing, light metering, white balance and equivalent sensitivity. The
3288controls of those parameters are influenced by the scene mode control.
3289An exact behavior in each mode is subject to the camera specification.
3290
3291<para>When the scene mode feature is not used, this control should be set to
3292<constant>V4L2_SCENE_MODE_NONE</constant> to make sure the other possibly
3293related controls are accessible. The following scene programs are defined:
3294</para>
3295</entry>
3296 </row>
3297 <row>
3298 <entrytbl spanname="descr" cols="2">
3299 <tbody valign="top">
3300 <row>
3301 <entry><constant>V4L2_SCENE_MODE_NONE</constant>&nbsp;</entry>
3302 <entry>The scene mode feature is disabled.</entry>
3303 </row>
3304 <row>
3305 <entry><constant>V4L2_SCENE_MODE_BACKLIGHT</constant>&nbsp;</entry>
3306 <entry>Backlight. Compensates for dark shadows when light is
3307 coming from behind a subject, also by automatically turning
3308 on the flash.</entry>
3309 </row>
3310 <row>
3311 <entry><constant>V4L2_SCENE_MODE_BEACH_SNOW</constant>&nbsp;</entry>
3312 <entry>Beach and snow. This mode compensates for all-white or
3313bright scenes, which tend to look gray and low contrast, when camera's automatic
3314exposure is based on an average scene brightness. To compensate, this mode
3315automatically slightly overexposes the frames. The white balance may also be
3316adjusted to compensate for the fact that reflected snow looks bluish rather
3317than white.</entry>
3318 </row>
3319 <row>
3320 <entry><constant>V4L2_SCENE_MODE_CANDLELIGHT</constant>&nbsp;</entry>
3321 <entry>Candle light. The camera generally raises the ISO
3322sensitivity and lowers the shutter speed. This mode compensates for relatively
3323close subject in the scene. The flash is disabled in order to preserve the
3324ambiance of the light.</entry>
3325 </row>
3326 <row>
3327 <entry><constant>V4L2_SCENE_MODE_DAWN_DUSK</constant>&nbsp;</entry>
3328 <entry>Dawn and dusk. Preserves the colors seen in low
3329natural light before dusk and after down. The camera may turn off the flash,
3330and automatically focus at infinity. It will usually boost saturation and
3331lower the shutter speed.</entry>
3332 </row>
3333 <row>
3334 <entry><constant>V4L2_SCENE_MODE_FALL_COLORS</constant>&nbsp;</entry>
3335 <entry>Fall colors. Increases saturation and adjusts white
3336balance for color enhancement. Pictures of autumn leaves get saturated reds
3337and yellows.</entry>
3338 </row>
3339 <row>
3340 <entry><constant>V4L2_SCENE_MODE_FIREWORKS</constant>&nbsp;</entry>
3341 <entry>Fireworks. Long exposure times are used to capture
3342the expanding burst of light from a firework. The camera may invoke image
3343stabilization.</entry>
3344 </row>
3345 <row>
3346 <entry><constant>V4L2_SCENE_MODE_LANDSCAPE</constant>&nbsp;</entry>
3347 <entry>Landscape. The camera may choose a small aperture to
3348provide deep depth of field and long exposure duration to help capture detail
3349in dim light conditions. The focus is fixed at infinity. Suitable for distant
3350and wide scenery.</entry>
3351 </row>
3352 <row>
3353 <entry><constant>V4L2_SCENE_MODE_NIGHT</constant>&nbsp;</entry>
3354 <entry>Night, also known as Night Landscape. Designed for low
3355light conditions, it preserves detail in the dark areas without blowing out bright
3356objects. The camera generally sets itself to a medium-to-high ISO sensitivity,
3357with a relatively long exposure time, and turns flash off. As such, there will be
3358increased image noise and the possibility of blurred image.</entry>
3359 </row>
3360 <row>
3361 <entry><constant>V4L2_SCENE_MODE_PARTY_INDOOR</constant>&nbsp;</entry>
3362 <entry>Party and indoor. Designed to capture indoor scenes
3363that are lit by indoor background lighting as well as the flash. The camera
3364usually increases ISO sensitivity, and adjusts exposure for the low light
3365conditions.</entry>
3366 </row>
3367 <row>
3368 <entry><constant>V4L2_SCENE_MODE_PORTRAIT</constant>&nbsp;</entry>
3369 <entry>Portrait. The camera adjusts the aperture so that the
3370depth of field is reduced, which helps to isolate the subject against a smooth
3371background. Most cameras recognize the presence of faces in the scene and focus
3372on them. The color hue is adjusted to enhance skin tones. The intensity of the
3373flash is often reduced.</entry>
3374 </row>
3375 <row>
3376 <entry><constant>V4L2_SCENE_MODE_SPORTS</constant>&nbsp;</entry>
3377 <entry>Sports. Significantly increases ISO and uses a fast
3378shutter speed to freeze motion of rapidly-moving subjects. Increased image
3379noise may be seen in this mode.</entry>
3380 </row>
3381 <row>
3382 <entry><constant>V4L2_SCENE_MODE_SUNSET</constant>&nbsp;</entry>
3383 <entry>Sunset. Preserves deep hues seen in sunsets and
3384sunrises. It bumps up the saturation.</entry>
3385 </row>
3386 <row>
3387 <entry><constant>V4L2_SCENE_MODE_TEXT</constant>&nbsp;</entry>
3388 <entry>Text. It applies extra contrast and sharpness, it is
3389typically a black-and-white mode optimized for readability. Automatic focus
3390may be switched to close-up mode and this setting may also involve some
3391lens-distortion correction.</entry>
3392 </row>
3393 </tbody>
3394 </entrytbl>
3395 </row>
3396 <row><entry></entry></row>
3397
3398 <row>
3399 <entry spanname="id"><constant>V4L2_CID_3A_LOCK</constant></entry>
3400 <entry>bitmask</entry>
3401 </row>
3402 <row>
3403 <entry spanname="descr">This control locks or unlocks the automatic
3404focus, exposure and white balance. The automatic adjustments can be paused
3405independently by setting the corresponding lock bit to 1. The camera then retains
3406the settings until the lock bit is cleared. The following lock bits are defined:
3407</entry>
3408 </row>
3409 <row>
3410 <entrytbl spanname="descr" cols="2">
3411 <tbody valign="top">
3412 <row>
3413 <entry><constant>V4L2_LOCK_EXPOSURE</constant></entry>
3414 <entry>Automatic exposure adjustments lock.</entry>
3415 </row>
3416 <row>
3417 <entry><constant>V4L2_LOCK_WHITE_BALANCE</constant></entry>
3418 <entry>Automatic white balance adjustments lock.</entry>
3419 </row>
3420 <row>
3421 <entry><constant>V4L2_LOCK_FOCUS</constant></entry>
3422 <entry>Automatic focus lock.</entry>
3423 </row>
3424 </tbody>
3425 </entrytbl>
3426 </row>
3427 <row><entry spanname="descr">
3428When a given algorithm is not enabled, drivers should ignore requests
3429to lock it and should return no error. An example might be an application
3430setting bit <constant>V4L2_LOCK_WHITE_BALANCE</constant> when the
3431<constant>V4L2_CID_AUTO_WHITE_BALANCE</constant> control is set to
3432<constant>FALSE</constant>. The value of this control may be changed
3433by exposure, white balance or focus controls.</entry>
3434 </row>
3435 <row><entry></entry></row>
3436
2935 </tbody> 3437 </tbody>
2936 </tgroup> 3438 </tgroup>
2937 </table> 3439 </table>
@@ -3476,7 +3978,7 @@ interface and may change in the future.</para>
3476 <entry spanname="id"><constant>V4L2_CID_JPEG_CHROMA_SUBSAMPLING</constant></entry> 3978 <entry spanname="id"><constant>V4L2_CID_JPEG_CHROMA_SUBSAMPLING</constant></entry>
3477 <entry>menu</entry> 3979 <entry>menu</entry>
3478 </row> 3980 </row>
3479 <row id="jpeg-chroma-subsampling-control"> 3981 <row id="v4l2-jpeg-chroma-subsampling">
3480 <entry spanname="descr">The chroma subsampling factors describe how 3982 <entry spanname="descr">The chroma subsampling factors describe how
3481 each component of an input image is sampled, in respect to maximum 3983 each component of an input image is sampled, in respect to maximum
3482 sample rate in each spatial dimension. See <xref linkend="itu-t81"/>, 3984 sample rate in each spatial dimension. See <xref linkend="itu-t81"/>,
@@ -3538,12 +4040,12 @@ interface and may change in the future.</para>
3538 </entry> 4040 </entry>
3539 </row> 4041 </row>
3540 <row id="jpeg-quality-control"> 4042 <row id="jpeg-quality-control">
3541 <entry spanname="id"><constant>V4L2_CID_JPEG_COMPRESION_QUALITY</constant></entry> 4043 <entry spanname="id"><constant>V4L2_CID_JPEG_COMPRESSION_QUALITY</constant></entry>
3542 <entry>integer</entry> 4044 <entry>integer</entry>
3543 </row> 4045 </row>
3544 <row> 4046 <row>
3545 <entry spanname="descr"> 4047 <entry spanname="descr">
3546 <constant>V4L2_CID_JPEG_COMPRESION_QUALITY</constant> control 4048 <constant>V4L2_CID_JPEG_COMPRESSION_QUALITY</constant> control
3547 determines trade-off between image quality and size. 4049 determines trade-off between image quality and size.
3548 It provides simpler method for applications to control image quality, 4050 It provides simpler method for applications to control image quality,
3549 without a need for direct reconfiguration of luminance and chrominance 4051 without a need for direct reconfiguration of luminance and chrominance
@@ -3551,7 +4053,7 @@ interface and may change in the future.</para>
3551 4053
3552 In cases where a driver uses quantization tables configured directly 4054 In cases where a driver uses quantization tables configured directly
3553 by an application, using interfaces defined elsewhere, <constant> 4055 by an application, using interfaces defined elsewhere, <constant>
3554 V4L2_CID_JPEG_COMPRESION_QUALITY</constant> control should be set 4056 V4L2_CID_JPEG_COMPRESSION_QUALITY</constant> control should be set
3555 by driver to 0. 4057 by driver to 0.
3556 4058
3557 <para>The value range of this control is driver-specific. Only 4059 <para>The value range of this control is driver-specific. Only
@@ -3599,4 +4101,172 @@ interface and may change in the future.</para>
3599 to <xref linkend="itu-t81"/>, <xref linkend="jfif"/>, 4101 to <xref linkend="itu-t81"/>, <xref linkend="jfif"/>,
3600 <xref linkend="w3c-jpeg-jfif"/>.</para> 4102 <xref linkend="w3c-jpeg-jfif"/>.</para>
3601 </section> 4103 </section>
4104
4105 <section id="image-source-controls">
4106 <title>Image Source Control Reference</title>
4107
4108 <note>
4109 <title>Experimental</title>
4110
4111 <para>This is an <link
4112 linkend="experimental">experimental</link> interface and may
4113 change in the future.</para>
4114 </note>
4115
4116 <para>
4117 The Image Source control class is intended for low-level
4118 control of image source devices such as image sensors. The
4119 devices feature an analogue to digital converter and a bus
4120 transmitter to transmit the image data out of the device.
4121 </para>
4122
4123 <table pgwide="1" frame="none" id="image-source-control-id">
4124 <title>Image Source Control IDs</title>
4125
4126 <tgroup cols="4">
4127 <colspec colname="c1" colwidth="1*" />
4128 <colspec colname="c2" colwidth="6*" />
4129 <colspec colname="c3" colwidth="2*" />
4130 <colspec colname="c4" colwidth="6*" />
4131 <spanspec namest="c1" nameend="c2" spanname="id" />
4132 <spanspec namest="c2" nameend="c4" spanname="descr" />
4133 <thead>
4134 <row>
4135 <entry spanname="id" align="left">ID</entry>
4136 <entry align="left">Type</entry>
4137 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
4138 </row>
4139 </thead>
4140 <tbody valign="top">
4141 <row><entry></entry></row>
4142 <row>
4143 <entry spanname="id"><constant>V4L2_CID_IMAGE_SOURCE_CLASS</constant></entry>
4144 <entry>class</entry>
4145 </row>
4146 <row>
4147 <entry spanname="descr">The IMAGE_SOURCE class descriptor.</entry>
4148 </row>
4149 <row>
4150 <entry spanname="id"><constant>V4L2_CID_VBLANK</constant></entry>
4151 <entry>integer</entry>
4152 </row>
4153 <row>
4154 <entry spanname="descr">Vertical blanking. The idle period
4155 after every frame during which no image data is produced.
4156 The unit of vertical blanking is a line. Every line has
4157 length of the image width plus horizontal blanking at the
4158 pixel rate defined by
4159 <constant>V4L2_CID_PIXEL_RATE</constant> control in the
4160 same sub-device.</entry>
4161 </row>
4162 <row>
4163 <entry spanname="id"><constant>V4L2_CID_HBLANK</constant></entry>
4164 <entry>integer</entry>
4165 </row>
4166 <row>
4167 <entry spanname="descr">Horizontal blanking. The idle
4168 period after every line of image data during which no
4169 image data is produced. The unit of horizontal blanking is
4170 pixels.</entry>
4171 </row>
4172 <row>
4173 <entry spanname="id"><constant>V4L2_CID_ANALOGUE_GAIN</constant></entry>
4174 <entry>integer</entry>
4175 </row>
4176 <row>
4177 <entry spanname="descr">Analogue gain is gain affecting
4178 all colour components in the pixel matrix. The gain
4179 operation is performed in the analogue domain before A/D
4180 conversion.
4181 </entry>
4182 </row>
4183 <row><entry></entry></row>
4184 </tbody>
4185 </tgroup>
4186 </table>
4187
4188 </section>
4189
4190 <section id="image-process-controls">
4191 <title>Image Process Control Reference</title>
4192
4193 <note>
4194 <title>Experimental</title>
4195
4196 <para>This is an <link
4197 linkend="experimental">experimental</link> interface and may
4198 change in the future.</para>
4199 </note>
4200
4201 <para>
4202 The Image Source control class is intended for low-level control of
4203 image processing functions. Unlike
4204 <constant>V4L2_CID_IMAGE_SOURCE_CLASS</constant>, the controls in
4205 this class affect processing the image, and do not control capturing
4206 of it.
4207 </para>
4208
4209 <table pgwide="1" frame="none" id="image-process-control-id">
4210 <title>Image Source Control IDs</title>
4211
4212 <tgroup cols="4">
4213 <colspec colname="c1" colwidth="1*" />
4214 <colspec colname="c2" colwidth="6*" />
4215 <colspec colname="c3" colwidth="2*" />
4216 <colspec colname="c4" colwidth="6*" />
4217 <spanspec namest="c1" nameend="c2" spanname="id" />
4218 <spanspec namest="c2" nameend="c4" spanname="descr" />
4219 <thead>
4220 <row>
4221 <entry spanname="id" align="left">ID</entry>
4222 <entry align="left">Type</entry>
4223 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
4224 </row>
4225 </thead>
4226 <tbody valign="top">
4227 <row><entry></entry></row>
4228 <row>
4229 <entry spanname="id"><constant>V4L2_CID_IMAGE_PROC_CLASS</constant></entry>
4230 <entry>class</entry>
4231 </row>
4232 <row>
4233 <entry spanname="descr">The IMAGE_PROC class descriptor.</entry>
4234 </row>
4235 <row>
4236 <entry spanname="id"><constant>V4L2_CID_LINK_FREQ</constant></entry>
4237 <entry>integer menu</entry>
4238 </row>
4239 <row>
4240 <entry spanname="descr">Data bus frequency. Together with the
4241 media bus pixel code, bus type (clock cycles per sample), the
4242 data bus frequency defines the pixel rate
4243 (<constant>V4L2_CID_PIXEL_RATE</constant>) in the
4244 pixel array (or possibly elsewhere, if the device is not an
4245 image sensor). The frame rate can be calculated from the pixel
4246 clock, image width and height and horizontal and vertical
4247 blanking. While the pixel rate control may be defined elsewhere
4248 than in the subdev containing the pixel array, the frame rate
4249 cannot be obtained from that information. This is because only
4250 on the pixel array it can be assumed that the vertical and
4251 horizontal blanking information is exact: no other blanking is
4252 allowed in the pixel array. The selection of frame rate is
4253 performed by selecting the desired horizontal and vertical
4254 blanking. The unit of this control is Hz. </entry>
4255 </row>
4256 <row>
4257 <entry spanname="id"><constant>V4L2_CID_PIXEL_RATE</constant></entry>
4258 <entry>64-bit integer</entry>
4259 </row>
4260 <row>
4261 <entry spanname="descr">Pixel rate in the source pads of
4262 the subdev. This control is read-only and its unit is
4263 pixels / second.
4264 </entry>
4265 </row>
4266 <row><entry></entry></row>
4267 </tbody>
4268 </tgroup>
4269 </table>
4270
4271 </section>
3602</section> 4272</section>
diff --git a/Documentation/DocBook/media/v4l/dev-subdev.xml b/Documentation/DocBook/media/v4l/dev-subdev.xml
index 0916a7343a16..4afcbbec5eda 100644
--- a/Documentation/DocBook/media/v4l/dev-subdev.xml
+++ b/Documentation/DocBook/media/v4l/dev-subdev.xml
@@ -76,11 +76,12 @@
76 <wordasword>format</wordasword> means the combination of media bus data 76 <wordasword>format</wordasword> means the combination of media bus data
77 format, frame width and frame height.</para></note> 77 format, frame width and frame height.</para></note>
78 78
79 <para>Image formats are typically negotiated on video capture and output 79 <para>Image formats are typically negotiated on video capture and
80 devices using the <link linkend="crop">cropping and scaling</link> ioctls. 80 output devices using the format and <link
81 The driver is responsible for configuring every block in the video pipeline 81 linkend="vidioc-subdev-g-selection">selection</link> ioctls. The
82 according to the requested format at the pipeline input and/or 82 driver is responsible for configuring every block in the video
83 output.</para> 83 pipeline according to the requested format at the pipeline input
84 and/or output.</para>
84 85
85 <para>For complex devices, such as often found in embedded systems, 86 <para>For complex devices, such as often found in embedded systems,
86 identical image sizes at the output of a pipeline can be achieved using 87 identical image sizes at the output of a pipeline can be achieved using
@@ -276,11 +277,11 @@
276 </section> 277 </section>
277 278
278 <section> 279 <section>
279 <title>Cropping and scaling</title> 280 <title>Selections: cropping, scaling and composition</title>
280 281
281 <para>Many sub-devices support cropping frames on their input or output 282 <para>Many sub-devices support cropping frames on their input or output
282 pads (or possible even on both). Cropping is used to select the area of 283 pads (or possible even on both). Cropping is used to select the area of
283 interest in an image, typically on a video sensor or video decoder. It can 284 interest in an image, typically on an image sensor or a video decoder. It can
284 also be used as part of digital zoom implementations to select the area of 285 also be used as part of digital zoom implementations to select the area of
285 the image that will be scaled up.</para> 286 the image that will be scaled up.</para>
286 287
@@ -288,26 +289,179 @@
288 &v4l2-rect; by the coordinates of the top left corner and the rectangle 289 &v4l2-rect; by the coordinates of the top left corner and the rectangle
289 size. Both the coordinates and sizes are expressed in pixels.</para> 290 size. Both the coordinates and sizes are expressed in pixels.</para>
290 291
291 <para>The crop rectangle is retrieved and set using the 292 <para>As for pad formats, drivers store try and active
292 &VIDIOC-SUBDEV-G-CROP; and &VIDIOC-SUBDEV-S-CROP; ioctls. Like for pad 293 rectangles for the selection targets of ACTUAL type <xref
293 formats, drivers store try and active crop rectangles. The format 294 linkend="v4l2-subdev-selection-targets">.</xref></para>
294 negotiation mechanism applies to crop settings as well.</para> 295
295 296 <para>On sink pads, cropping is applied relative to the
296 <para>On input pads, cropping is applied relatively to the current pad 297 current pad format. The pad format represents the image size as
297 format. The pad format represents the image size as received by the 298 received by the sub-device from the previous block in the
298 sub-device from the previous block in the pipeline, and the crop rectangle 299 pipeline, and the crop rectangle represents the sub-image that
299 represents the sub-image that will be transmitted further inside the 300 will be transmitted further inside the sub-device for
300 sub-device for processing. The crop rectangle be entirely containted 301 processing.</para>
301 inside the input image size.</para> 302
302 303 <para>The scaling operation changes the size of the image by
303 <para>Input crop rectangle are reset to their default value when the input 304 scaling it to new dimensions. The scaling ratio isn't specified
304 image format is modified. Drivers should use the input image size as the 305 explicitly, but is implied from the original and scaled image
305 crop rectangle default value, but hardware requirements may prevent this. 306 sizes. Both sizes are represented by &v4l2-rect;.</para>
306 </para> 307
308 <para>Scaling support is optional. When supported by a subdev,
309 the crop rectangle on the subdev's sink pad is scaled to the
310 size configured using the &VIDIOC-SUBDEV-S-SELECTION; IOCTL
311 using <constant>V4L2_SUBDEV_SEL_COMPOSE_ACTUAL</constant>
312 selection target on the same pad. If the subdev supports scaling
313 but not composing, the top and left values are not used and must
314 always be set to zero.</para>
315
316 <para>On source pads, cropping is similar to sink pads, with the
317 exception that the source size from which the cropping is
318 performed, is the COMPOSE rectangle on the sink pad. In both
319 sink and source pads, the crop rectangle must be entirely
320 contained inside the source image size for the crop
321 operation.</para>
322
323 <para>The drivers should always use the closest possible
324 rectangle the user requests on all selection targets, unless
325 specifically told otherwise.
326 <constant>V4L2_SUBDEV_SEL_FLAG_SIZE_GE</constant> and
327 <constant>V4L2_SUBDEV_SEL_FLAG_SIZE_LE</constant> flags may be
328 used to round the image size either up or down. <xref
329 linkend="v4l2-subdev-selection-flags"></xref></para>
330 </section>
331
332 <section>
333 <title>Types of selection targets</title>
334
335 <section>
336 <title>ACTUAL targets</title>
337
338 <para>ACTUAL targets reflect the actual hardware configuration
339 at any point of time. There is a BOUNDS target
340 corresponding to every ACTUAL.</para>
341 </section>
342
343 <section>
344 <title>BOUNDS targets</title>
345
346 <para>BOUNDS targets is the smallest rectangle that contains
347 all valid ACTUAL rectangles. It may not be possible to set the
348 ACTUAL rectangle as large as the BOUNDS rectangle, however.
349 This may be because e.g. a sensor's pixel array is not
350 rectangular but cross-shaped or round. The maximum size may
351 also be smaller than the BOUNDS rectangle.</para>
352 </section>
307 353
308 <para>Cropping behaviour on output pads is not defined.</para> 354 </section>
355
356 <section>
357 <title>Order of configuration and format propagation</title>
358
359 <para>Inside subdevs, the order of image processing steps will
360 always be from the sink pad towards the source pad. This is also
361 reflected in the order in which the configuration must be
362 performed by the user: the changes made will be propagated to
363 any subsequent stages. If this behaviour is not desired, the
364 user must set
365 <constant>V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG</constant> flag. This
366 flag causes no propagation of the changes are allowed in any
367 circumstances. This may also cause the accessed rectangle to be
368 adjusted by the driver, depending on the properties of the
369 underlying hardware.</para>
370
371 <para>The coordinates to a step always refer to the actual size
372 of the previous step. The exception to this rule is the source
373 compose rectangle, which refers to the sink compose bounds
374 rectangle --- if it is supported by the hardware.</para>
375
376 <orderedlist>
377 <listitem>Sink pad format. The user configures the sink pad
378 format. This format defines the parameters of the image the
379 entity receives through the pad for further processing.</listitem>
380
381 <listitem>Sink pad actual crop selection. The sink pad crop
382 defines the crop performed to the sink pad format.</listitem>
383
384 <listitem>Sink pad actual compose selection. The size of the
385 sink pad compose rectangle defines the scaling ratio compared
386 to the size of the sink pad crop rectangle. The location of
387 the compose rectangle specifies the location of the actual
388 sink compose rectangle in the sink compose bounds
389 rectangle.</listitem>
390
391 <listitem>Source pad actual crop selection. Crop on the source
392 pad defines crop performed to the image in the sink compose
393 bounds rectangle.</listitem>
394
395 <listitem>Source pad format. The source pad format defines the
396 output pixel format of the subdev, as well as the other
397 parameters with the exception of the image width and height.
398 Width and height are defined by the size of the source pad
399 actual crop selection.</listitem>
400 </orderedlist>
401
402 <para>Accessing any of the above rectangles not supported by the
403 subdev will return <constant>EINVAL</constant>. Any rectangle
404 referring to a previous unsupported rectangle coordinates will
405 instead refer to the previous supported rectangle. For example,
406 if sink crop is not supported, the compose selection will refer
407 to the sink pad format dimensions instead.</para>
408
409 <figure id="subdev-image-processing-crop">
410 <title>Image processing in subdevs: simple crop example</title>
411 <mediaobject>
412 <imageobject>
413 <imagedata fileref="subdev-image-processing-crop.svg"
414 format="SVG" scale="200" />
415 </imageobject>
416 </mediaobject>
417 </figure>
418
419 <para>In the above example, the subdev supports cropping on its
420 sink pad. To configure it, the user sets the media bus format on
421 the subdev's sink pad. Now the actual crop rectangle can be set
422 on the sink pad --- the location and size of this rectangle
423 reflect the location and size of a rectangle to be cropped from
424 the sink format. The size of the sink crop rectangle will also
425 be the size of the format of the subdev's source pad.</para>
426
427 <figure id="subdev-image-processing-scaling-multi-source">
428 <title>Image processing in subdevs: scaling with multiple sources</title>
429 <mediaobject>
430 <imageobject>
431 <imagedata fileref="subdev-image-processing-scaling-multi-source.svg"
432 format="SVG" scale="200" />
433 </imageobject>
434 </mediaobject>
435 </figure>
436
437 <para>In this example, the subdev is capable of first cropping,
438 then scaling and finally cropping for two source pads
439 individually from the resulting scaled image. The location of
440 the scaled image in the cropped image is ignored in sink compose
441 target. Both of the locations of the source crop rectangles
442 refer to the sink scaling rectangle, independently cropping an
443 area at location specified by the source crop rectangle from
444 it.</para>
445
446 <figure id="subdev-image-processing-full">
447 <title>Image processing in subdevs: scaling and composition
448 with multiple sinks and sources</title>
449 <mediaobject>
450 <imageobject>
451 <imagedata fileref="subdev-image-processing-full.svg"
452 format="SVG" scale="200" />
453 </imageobject>
454 </mediaobject>
455 </figure>
456
457 <para>The subdev driver supports two sink pads and two source
458 pads. The images from both of the sink pads are individually
459 cropped, then scaled and further composed on the composition
460 bounds rectangle. From that, two independent streams are cropped
461 and sent out of the subdev from the source pads.</para>
309 462
310 </section> 463 </section>
464
311 </section> 465 </section>
312 466
313 &sub-subdev-formats; 467 &sub-subdev-formats;
diff --git a/Documentation/DocBook/media/v4l/io.xml b/Documentation/DocBook/media/v4l/io.xml
index b815929b5bba..fd6aca2922b6 100644
--- a/Documentation/DocBook/media/v4l/io.xml
+++ b/Documentation/DocBook/media/v4l/io.xml
@@ -543,12 +543,13 @@ and can range from zero to the number of buffers allocated
543with the &VIDIOC-REQBUFS; ioctl (&v4l2-requestbuffers; <structfield>count</structfield>) minus one.</entry> 543with the &VIDIOC-REQBUFS; ioctl (&v4l2-requestbuffers; <structfield>count</structfield>) minus one.</entry>
544 </row> 544 </row>
545 <row> 545 <row>
546 <entry>&v4l2-buf-type;</entry> 546 <entry>__u32</entry>
547 <entry><structfield>type</structfield></entry> 547 <entry><structfield>type</structfield></entry>
548 <entry></entry> 548 <entry></entry>
549 <entry>Type of the buffer, same as &v4l2-format; 549 <entry>Type of the buffer, same as &v4l2-format;
550<structfield>type</structfield> or &v4l2-requestbuffers; 550<structfield>type</structfield> or &v4l2-requestbuffers;
551<structfield>type</structfield>, set by the application.</entry> 551<structfield>type</structfield>, set by the application. See <xref
552linkend="v4l2-buf-type" /></entry>
552 </row> 553 </row>
553 <row> 554 <row>
554 <entry>__u32</entry> 555 <entry>__u32</entry>
@@ -568,7 +569,7 @@ refers to an input stream, applications when an output stream.</entry>
568linkend="buffer-flags" />.</entry> 569linkend="buffer-flags" />.</entry>
569 </row> 570 </row>
570 <row> 571 <row>
571 <entry>&v4l2-field;</entry> 572 <entry>__u32</entry>
572 <entry><structfield>field</structfield></entry> 573 <entry><structfield>field</structfield></entry>
573 <entry></entry> 574 <entry></entry>
574 <entry>Indicates the field order of the image in the 575 <entry>Indicates the field order of the image in the
@@ -630,11 +631,12 @@ bandwidth. These devices identify by not enumerating any video
630standards, see <xref linkend="standard" />.</para></entry> 631standards, see <xref linkend="standard" />.</para></entry>
631 </row> 632 </row>
632 <row> 633 <row>
633 <entry>&v4l2-memory;</entry> 634 <entry>__u32</entry>
634 <entry><structfield>memory</structfield></entry> 635 <entry><structfield>memory</structfield></entry>
635 <entry></entry> 636 <entry></entry>
636 <entry>This field must be set by applications and/or drivers 637 <entry>This field must be set by applications and/or drivers
637in accordance with the selected I/O method.</entry> 638in accordance with the selected I/O method. See <xref linkend="v4l2-memory"
639 /></entry>
638 </row> 640 </row>
639 <row> 641 <row>
640 <entry>union</entry> 642 <entry>union</entry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml
index 7b274092e60c..c1c62a9acc2a 100644
--- a/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml
@@ -1,4 +1,4 @@
1 <refentry> 1 <refentry id="pixfmt-srggb10">
2 <refmeta> 2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_SRGGB10 ('RG10'), 3 <refentrytitle>V4L2_PIX_FMT_SRGGB10 ('RG10'),
4 V4L2_PIX_FMT_SGRBG10 ('BA10'), 4 V4L2_PIX_FMT_SGRBG10 ('BA10'),
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml
new file mode 100644
index 000000000000..8eace3e2e7d4
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml
@@ -0,0 +1,29 @@
1 <refentry id="pixfmt-srggb10dpcm8">
2 <refmeta>
3 <refentrytitle>
4 V4L2_PIX_FMT_SBGGR10DPCM8 ('bBA8'),
5 V4L2_PIX_FMT_SGBRG10DPCM8 ('bGA8'),
6 V4L2_PIX_FMT_SGRBG10DPCM8 ('BD10'),
7 V4L2_PIX_FMT_SRGGB10DPCM8 ('bRA8'),
8 </refentrytitle>
9 &manvol;
10 </refmeta>
11 <refnamediv>
12 <refname id="V4L2-PIX-FMT-SBGGR10DPCM8"><constant>V4L2_PIX_FMT_SBGGR10DPCM8</constant></refname>
13 <refname id="V4L2-PIX-FMT-SGBRG10DPCM8"><constant>V4L2_PIX_FMT_SGBRG10DPCM8</constant></refname>
14 <refname id="V4L2-PIX-FMT-SGRBG10DPCM8"><constant>V4L2_PIX_FMT_SGRBG10DPCM8</constant></refname>
15 <refname id="V4L2-PIX-FMT-SRGGB10DPCM8"><constant>V4L2_PIX_FMT_SRGGB10DPCM8</constant></refname>
16 <refpurpose>10-bit Bayer formats compressed to 8 bits</refpurpose>
17 </refnamediv>
18 <refsect1>
19 <title>Description</title>
20
21 <para>The following four pixel formats are raw sRGB / Bayer formats
22 with 10 bits per colour compressed to 8 bits each, using DPCM
23 compression. DPCM, differential pulse-code modulation, is lossy.
24 Each colour component consumes 8 bits of memory. In other respects
25 this format is similar to <xref
26 linkend="pixfmt-srggb10">.</xref></para>
27
28 </refsect1>
29 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml
index 31eaae2469f9..e58934c92895 100644
--- a/Documentation/DocBook/media/v4l/pixfmt.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt.xml
@@ -673,6 +673,7 @@ access the palette, this must be done with ioctls of the Linux framebuffer API.<
673 &sub-srggb8; 673 &sub-srggb8;
674 &sub-sbggr16; 674 &sub-sbggr16;
675 &sub-srggb10; 675 &sub-srggb10;
676 &sub-srggb10dpcm8;
676 &sub-srggb12; 677 &sub-srggb12;
677 </section> 678 </section>
678 679
@@ -876,11 +877,6 @@ kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.hm
876 <entry>'S561'</entry> 877 <entry>'S561'</entry>
877 <entry>Compressed GBRG Bayer format used by the gspca driver.</entry> 878 <entry>Compressed GBRG Bayer format used by the gspca driver.</entry>
878 </row> 879 </row>
879 <row id="V4L2-PIX-FMT-SGRBG10DPCM8">
880 <entry><constant>V4L2_PIX_FMT_SGRBG10DPCM8</constant></entry>
881 <entry>'DB10'</entry>
882 <entry>10 bit raw Bayer DPCM compressed to 8 bits.</entry>
883 </row>
884 <row id="V4L2-PIX-FMT-PAC207"> 880 <row id="V4L2-PIX-FMT-PAC207">
885 <entry><constant>V4L2_PIX_FMT_PAC207</constant></entry> 881 <entry><constant>V4L2_PIX_FMT_PAC207</constant></entry>
886 <entry>'P207'</entry> 882 <entry>'P207'</entry>
@@ -990,13 +986,13 @@ http://www.thedirks.org/winnov/</ulink></para></entry>
990 <row id="V4L2-PIX-FMT-Y4"> 986 <row id="V4L2-PIX-FMT-Y4">
991 <entry><constant>V4L2_PIX_FMT_Y4</constant></entry> 987 <entry><constant>V4L2_PIX_FMT_Y4</constant></entry>
992 <entry>'Y04 '</entry> 988 <entry>'Y04 '</entry>
993 <entry>Old 4-bit greyscale format. Only the least significant 4 bits of each byte are used, 989 <entry>Old 4-bit greyscale format. Only the most significant 4 bits of each byte are used,
994the other bits are set to 0.</entry> 990the other bits are set to 0.</entry>
995 </row> 991 </row>
996 <row id="V4L2-PIX-FMT-Y6"> 992 <row id="V4L2-PIX-FMT-Y6">
997 <entry><constant>V4L2_PIX_FMT_Y6</constant></entry> 993 <entry><constant>V4L2_PIX_FMT_Y6</constant></entry>
998 <entry>'Y06 '</entry> 994 <entry>'Y06 '</entry>
999 <entry>Old 6-bit greyscale format. Only the least significant 6 bits of each byte are used, 995 <entry>Old 6-bit greyscale format. Only the most significant 6 bits of each byte are used,
1000the other bits are set to 0.</entry> 996the other bits are set to 0.</entry>
1001 </row> 997 </row>
1002 </tbody> 998 </tbody>
diff --git a/Documentation/DocBook/media/v4l/subdev-image-processing-crop.dia b/Documentation/DocBook/media/v4l/subdev-image-processing-crop.dia
new file mode 100644
index 000000000000..e32ba5362e1d
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/subdev-image-processing-crop.dia
@@ -0,0 +1,614 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
3 <dia:diagramdata>
4 <dia:attribute name="background">
5 <dia:color val="#ffffff"/>
6 </dia:attribute>
7 <dia:attribute name="pagebreak">
8 <dia:color val="#000099"/>
9 </dia:attribute>
10 <dia:attribute name="paper">
11 <dia:composite type="paper">
12 <dia:attribute name="name">
13 <dia:string>#A4#</dia:string>
14 </dia:attribute>
15 <dia:attribute name="tmargin">
16 <dia:real val="2.8222000598907471"/>
17 </dia:attribute>
18 <dia:attribute name="bmargin">
19 <dia:real val="2.8222000598907471"/>
20 </dia:attribute>
21 <dia:attribute name="lmargin">
22 <dia:real val="2.8222000598907471"/>
23 </dia:attribute>
24 <dia:attribute name="rmargin">
25 <dia:real val="2.8222000598907471"/>
26 </dia:attribute>
27 <dia:attribute name="is_portrait">
28 <dia:boolean val="false"/>
29 </dia:attribute>
30 <dia:attribute name="scaling">
31 <dia:real val="0.49000000953674316"/>
32 </dia:attribute>
33 <dia:attribute name="fitto">
34 <dia:boolean val="false"/>
35 </dia:attribute>
36 </dia:composite>
37 </dia:attribute>
38 <dia:attribute name="grid">
39 <dia:composite type="grid">
40 <dia:attribute name="width_x">
41 <dia:real val="1"/>
42 </dia:attribute>
43 <dia:attribute name="width_y">
44 <dia:real val="1"/>
45 </dia:attribute>
46 <dia:attribute name="visible_x">
47 <dia:int val="1"/>
48 </dia:attribute>
49 <dia:attribute name="visible_y">
50 <dia:int val="1"/>
51 </dia:attribute>
52 <dia:composite type="color"/>
53 </dia:composite>
54 </dia:attribute>
55 <dia:attribute name="color">
56 <dia:color val="#d8e5e5"/>
57 </dia:attribute>
58 <dia:attribute name="guides">
59 <dia:composite type="guides">
60 <dia:attribute name="hguides"/>
61 <dia:attribute name="vguides"/>
62 </dia:composite>
63 </dia:attribute>
64 </dia:diagramdata>
65 <dia:layer name="Background" visible="true" active="true">
66 <dia:object type="Standard - Box" version="0" id="O0">
67 <dia:attribute name="obj_pos">
68 <dia:point val="-0.4,6.5"/>
69 </dia:attribute>
70 <dia:attribute name="obj_bb">
71 <dia:rectangle val="-0.45,6.45;23.1387,16.2"/>
72 </dia:attribute>
73 <dia:attribute name="elem_corner">
74 <dia:point val="-0.4,6.5"/>
75 </dia:attribute>
76 <dia:attribute name="elem_width">
77 <dia:real val="23.48871579904775"/>
78 </dia:attribute>
79 <dia:attribute name="elem_height">
80 <dia:real val="9.6500000000000004"/>
81 </dia:attribute>
82 <dia:attribute name="border_width">
83 <dia:real val="0.10000000149011612"/>
84 </dia:attribute>
85 <dia:attribute name="show_background">
86 <dia:boolean val="false"/>
87 </dia:attribute>
88 </dia:object>
89 <dia:object type="Standard - Box" version="0" id="O1">
90 <dia:attribute name="obj_pos">
91 <dia:point val="0.225,9.45"/>
92 </dia:attribute>
93 <dia:attribute name="obj_bb">
94 <dia:rectangle val="0.175,9.4;8.225,14.7"/>
95 </dia:attribute>
96 <dia:attribute name="elem_corner">
97 <dia:point val="0.225,9.45"/>
98 </dia:attribute>
99 <dia:attribute name="elem_width">
100 <dia:real val="7.9499999999999975"/>
101 </dia:attribute>
102 <dia:attribute name="elem_height">
103 <dia:real val="5.1999999999999975"/>
104 </dia:attribute>
105 <dia:attribute name="border_width">
106 <dia:real val="0.10000000149011612"/>
107 </dia:attribute>
108 <dia:attribute name="border_color">
109 <dia:color val="#a52a2a"/>
110 </dia:attribute>
111 <dia:attribute name="show_background">
112 <dia:boolean val="true"/>
113 </dia:attribute>
114 </dia:object>
115 <dia:object type="Standard - Box" version="0" id="O2">
116 <dia:attribute name="obj_pos">
117 <dia:point val="3.175,10.55"/>
118 </dia:attribute>
119 <dia:attribute name="obj_bb">
120 <dia:rectangle val="3.125,10.5;7.925,14.45"/>
121 </dia:attribute>
122 <dia:attribute name="elem_corner">
123 <dia:point val="3.175,10.55"/>
124 </dia:attribute>
125 <dia:attribute name="elem_width">
126 <dia:real val="4.6999999999999975"/>
127 </dia:attribute>
128 <dia:attribute name="elem_height">
129 <dia:real val="3.8499999999999979"/>
130 </dia:attribute>
131 <dia:attribute name="border_width">
132 <dia:real val="0.10000000149011612"/>
133 </dia:attribute>
134 <dia:attribute name="border_color">
135 <dia:color val="#0000ff"/>
136 </dia:attribute>
137 <dia:attribute name="show_background">
138 <dia:boolean val="true"/>
139 </dia:attribute>
140 </dia:object>
141 <dia:object type="Standard - Text" version="1" id="O3">
142 <dia:attribute name="obj_pos">
143 <dia:point val="3.725,11.3875"/>
144 </dia:attribute>
145 <dia:attribute name="obj_bb">
146 <dia:rectangle val="3.725,10.7925;6.6025,13.14"/>
147 </dia:attribute>
148 <dia:attribute name="text">
149 <dia:composite type="text">
150 <dia:attribute name="string">
151 <dia:string>#sink
152crop
153selection#</dia:string>
154 </dia:attribute>
155 <dia:attribute name="font">
156 <dia:font family="sans" style="0" name="Helvetica"/>
157 </dia:attribute>
158 <dia:attribute name="height">
159 <dia:real val="0.80000000000000004"/>
160 </dia:attribute>
161 <dia:attribute name="pos">
162 <dia:point val="3.725,11.3875"/>
163 </dia:attribute>
164 <dia:attribute name="color">
165 <dia:color val="#0000ff"/>
166 </dia:attribute>
167 <dia:attribute name="alignment">
168 <dia:enum val="0"/>
169 </dia:attribute>
170 </dia:composite>
171 </dia:attribute>
172 <dia:attribute name="valign">
173 <dia:enum val="3"/>
174 </dia:attribute>
175 </dia:object>
176 <dia:object type="Standard - Text" version="1" id="O4">
177 <dia:attribute name="obj_pos">
178 <dia:point val="1.475,7.9"/>
179 </dia:attribute>
180 <dia:attribute name="obj_bb">
181 <dia:rectangle val="1.475,7.305;1.475,8.0525"/>
182 </dia:attribute>
183 <dia:attribute name="text">
184 <dia:composite type="text">
185 <dia:attribute name="string">
186 <dia:string>##</dia:string>
187 </dia:attribute>
188 <dia:attribute name="font">
189 <dia:font family="sans" style="0" name="Helvetica"/>
190 </dia:attribute>
191 <dia:attribute name="height">
192 <dia:real val="0.80000000000000004"/>
193 </dia:attribute>
194 <dia:attribute name="pos">
195 <dia:point val="1.475,7.9"/>
196 </dia:attribute>
197 <dia:attribute name="color">
198 <dia:color val="#000000"/>
199 </dia:attribute>
200 <dia:attribute name="alignment">
201 <dia:enum val="0"/>
202 </dia:attribute>
203 </dia:composite>
204 </dia:attribute>
205 <dia:attribute name="valign">
206 <dia:enum val="3"/>
207 </dia:attribute>
208 </dia:object>
209 <dia:object type="Standard - Text" version="1" id="O5">
210 <dia:attribute name="obj_pos">
211 <dia:point val="0.426918,7.89569"/>
212 </dia:attribute>
213 <dia:attribute name="obj_bb">
214 <dia:rectangle val="0.426918,7.30069;3.90942,8.84819"/>
215 </dia:attribute>
216 <dia:attribute name="text">
217 <dia:composite type="text">
218 <dia:attribute name="string">
219 <dia:string>#sink media
220bus format#</dia:string>
221 </dia:attribute>
222 <dia:attribute name="font">
223 <dia:font family="sans" style="0" name="Helvetica"/>
224 </dia:attribute>
225 <dia:attribute name="height">
226 <dia:real val="0.80000000000000004"/>
227 </dia:attribute>
228 <dia:attribute name="pos">
229 <dia:point val="0.426918,7.89569"/>
230 </dia:attribute>
231 <dia:attribute name="color">
232 <dia:color val="#a52a2a"/>
233 </dia:attribute>
234 <dia:attribute name="alignment">
235 <dia:enum val="0"/>
236 </dia:attribute>
237 </dia:composite>
238 </dia:attribute>
239 <dia:attribute name="valign">
240 <dia:enum val="3"/>
241 </dia:attribute>
242 </dia:object>
243 <dia:object type="Standard - Text" version="1" id="O6">
244 <dia:attribute name="obj_pos">
245 <dia:point val="17.4887,7.75"/>
246 </dia:attribute>
247 <dia:attribute name="obj_bb">
248 <dia:rectangle val="17.4887,7.155;21.8112,8.7025"/>
249 </dia:attribute>
250 <dia:attribute name="text">
251 <dia:composite type="text">
252 <dia:attribute name="string">
253 <dia:string>#source media
254bus format#</dia:string>
255 </dia:attribute>
256 <dia:attribute name="font">
257 <dia:font family="sans" style="0" name="Helvetica"/>
258 </dia:attribute>
259 <dia:attribute name="height">
260 <dia:real val="0.80000000000000004"/>
261 </dia:attribute>
262 <dia:attribute name="pos">
263 <dia:point val="17.4887,7.75"/>
264 </dia:attribute>
265 <dia:attribute name="color">
266 <dia:color val="#8b6914"/>
267 </dia:attribute>
268 <dia:attribute name="alignment">
269 <dia:enum val="0"/>
270 </dia:attribute>
271 </dia:composite>
272 </dia:attribute>
273 <dia:attribute name="valign">
274 <dia:enum val="3"/>
275 </dia:attribute>
276 </dia:object>
277 <dia:object type="Standard - Box" version="0" id="O7">
278 <dia:attribute name="obj_pos">
279 <dia:point val="17.5244,9.5417"/>
280 </dia:attribute>
281 <dia:attribute name="obj_bb">
282 <dia:rectangle val="17.4744,9.4917;22.2387,13.35"/>
283 </dia:attribute>
284 <dia:attribute name="elem_corner">
285 <dia:point val="17.5244,9.5417"/>
286 </dia:attribute>
287 <dia:attribute name="elem_width">
288 <dia:real val="4.6643157990477508"/>
289 </dia:attribute>
290 <dia:attribute name="elem_height">
291 <dia:real val="3.758300000000002"/>
292 </dia:attribute>
293 <dia:attribute name="border_width">
294 <dia:real val="0.10000000149011612"/>
295 </dia:attribute>
296 <dia:attribute name="border_color">
297 <dia:color val="#8b6914"/>
298 </dia:attribute>
299 <dia:attribute name="show_background">
300 <dia:boolean val="true"/>
301 </dia:attribute>
302 </dia:object>
303 <dia:object type="Standard - Line" version="0" id="O8">
304 <dia:attribute name="obj_pos">
305 <dia:point val="17.5244,13.3"/>
306 </dia:attribute>
307 <dia:attribute name="obj_bb">
308 <dia:rectangle val="3.12132,13.2463;17.5781,14.4537"/>
309 </dia:attribute>
310 <dia:attribute name="conn_endpoints">
311 <dia:point val="17.5244,13.3"/>
312 <dia:point val="3.175,14.4"/>
313 </dia:attribute>
314 <dia:attribute name="numcp">
315 <dia:int val="1"/>
316 </dia:attribute>
317 <dia:attribute name="line_color">
318 <dia:color val="#e60505"/>
319 </dia:attribute>
320 <dia:attribute name="line_style">
321 <dia:enum val="4"/>
322 </dia:attribute>
323 <dia:connections>
324 <dia:connection handle="0" to="O7" connection="5"/>
325 <dia:connection handle="1" to="O2" connection="5"/>
326 </dia:connections>
327 </dia:object>
328 <dia:object type="Standard - Line" version="0" id="O9">
329 <dia:attribute name="obj_pos">
330 <dia:point val="17.5244,9.5417"/>
331 </dia:attribute>
332 <dia:attribute name="obj_bb">
333 <dia:rectangle val="3.12162,9.48832;17.5778,10.6034"/>
334 </dia:attribute>
335 <dia:attribute name="conn_endpoints">
336 <dia:point val="17.5244,9.5417"/>
337 <dia:point val="3.175,10.55"/>
338 </dia:attribute>
339 <dia:attribute name="numcp">
340 <dia:int val="1"/>
341 </dia:attribute>
342 <dia:attribute name="line_color">
343 <dia:color val="#e60505"/>
344 </dia:attribute>
345 <dia:attribute name="line_style">
346 <dia:enum val="4"/>
347 </dia:attribute>
348 <dia:connections>
349 <dia:connection handle="0" to="O7" connection="0"/>
350 <dia:connection handle="1" to="O2" connection="0"/>
351 </dia:connections>
352 </dia:object>
353 <dia:object type="Standard - Line" version="0" id="O10">
354 <dia:attribute name="obj_pos">
355 <dia:point val="22.1887,13.3"/>
356 </dia:attribute>
357 <dia:attribute name="obj_bb">
358 <dia:rectangle val="7.82132,13.2463;22.2424,14.4537"/>
359 </dia:attribute>
360 <dia:attribute name="conn_endpoints">
361 <dia:point val="22.1887,13.3"/>
362 <dia:point val="7.875,14.4"/>
363 </dia:attribute>
364 <dia:attribute name="numcp">
365 <dia:int val="1"/>
366 </dia:attribute>
367 <dia:attribute name="line_color">
368 <dia:color val="#e60505"/>
369 </dia:attribute>
370 <dia:attribute name="line_style">
371 <dia:enum val="4"/>
372 </dia:attribute>
373 <dia:connections>
374 <dia:connection handle="0" to="O7" connection="7"/>
375 <dia:connection handle="1" to="O2" connection="7"/>
376 </dia:connections>
377 </dia:object>
378 <dia:object type="Standard - Line" version="0" id="O11">
379 <dia:attribute name="obj_pos">
380 <dia:point val="22.1887,9.5417"/>
381 </dia:attribute>
382 <dia:attribute name="obj_bb">
383 <dia:rectangle val="7.82161,9.48831;22.2421,10.6034"/>
384 </dia:attribute>
385 <dia:attribute name="conn_endpoints">
386 <dia:point val="22.1887,9.5417"/>
387 <dia:point val="7.875,10.55"/>
388 </dia:attribute>
389 <dia:attribute name="numcp">
390 <dia:int val="1"/>
391 </dia:attribute>
392 <dia:attribute name="line_color">
393 <dia:color val="#e60505"/>
394 </dia:attribute>
395 <dia:attribute name="line_style">
396 <dia:enum val="4"/>
397 </dia:attribute>
398 <dia:connections>
399 <dia:connection handle="0" to="O7" connection="2"/>
400 <dia:connection handle="1" to="O2" connection="2"/>
401 </dia:connections>
402 </dia:object>
403 <dia:object type="Geometric - Perfect Circle" version="1" id="O12">
404 <dia:attribute name="obj_pos">
405 <dia:point val="23.23,10.5742"/>
406 </dia:attribute>
407 <dia:attribute name="obj_bb">
408 <dia:rectangle val="23.18,10.5242;24.13,11.4742"/>
409 </dia:attribute>
410 <dia:attribute name="meta">
411 <dia:composite type="dict"/>
412 </dia:attribute>
413 <dia:attribute name="elem_corner">
414 <dia:point val="23.23,10.5742"/>
415 </dia:attribute>
416 <dia:attribute name="elem_width">
417 <dia:real val="0.84999999999999787"/>
418 </dia:attribute>
419 <dia:attribute name="elem_height">
420 <dia:real val="0.84999999999999787"/>
421 </dia:attribute>
422 <dia:attribute name="line_width">
423 <dia:real val="0.10000000000000001"/>
424 </dia:attribute>
425 <dia:attribute name="line_colour">
426 <dia:color val="#000000"/>
427 </dia:attribute>
428 <dia:attribute name="fill_colour">
429 <dia:color val="#ffffff"/>
430 </dia:attribute>
431 <dia:attribute name="show_background">
432 <dia:boolean val="true"/>
433 </dia:attribute>
434 <dia:attribute name="line_style">
435 <dia:enum val="0"/>
436 <dia:real val="1"/>
437 </dia:attribute>
438 <dia:attribute name="flip_horizontal">
439 <dia:boolean val="false"/>
440 </dia:attribute>
441 <dia:attribute name="flip_vertical">
442 <dia:boolean val="false"/>
443 </dia:attribute>
444 <dia:attribute name="subscale">
445 <dia:real val="1"/>
446 </dia:attribute>
447 </dia:object>
448 <dia:object type="Standard - Line" version="0" id="O13">
449 <dia:attribute name="obj_pos">
450 <dia:point val="24.08,10.9992"/>
451 </dia:attribute>
452 <dia:attribute name="obj_bb">
453 <dia:rectangle val="24.03,10.6388;32.4953,11.3624"/>
454 </dia:attribute>
455 <dia:attribute name="conn_endpoints">
456 <dia:point val="24.08,10.9992"/>
457 <dia:point val="32.3835,11.0007"/>
458 </dia:attribute>
459 <dia:attribute name="numcp">
460 <dia:int val="1"/>
461 </dia:attribute>
462 <dia:attribute name="end_arrow">
463 <dia:enum val="22"/>
464 </dia:attribute>
465 <dia:attribute name="end_arrow_length">
466 <dia:real val="0.5"/>
467 </dia:attribute>
468 <dia:attribute name="end_arrow_width">
469 <dia:real val="0.5"/>
470 </dia:attribute>
471 <dia:connections>
472 <dia:connection handle="0" to="O12" connection="3"/>
473 </dia:connections>
474 </dia:object>
475 <dia:object type="Standard - Text" version="1" id="O14">
476 <dia:attribute name="obj_pos">
477 <dia:point val="25.3454,10.49"/>
478 </dia:attribute>
479 <dia:attribute name="obj_bb">
480 <dia:rectangle val="25.3454,9.895;29.9904,10.6425"/>
481 </dia:attribute>
482 <dia:attribute name="text">
483 <dia:composite type="text">
484 <dia:attribute name="string">
485 <dia:string>#pad 1 (source)#</dia:string>
486 </dia:attribute>
487 <dia:attribute name="font">
488 <dia:font family="sans" style="0" name="Helvetica"/>
489 </dia:attribute>
490 <dia:attribute name="height">
491 <dia:real val="0.80000000000000004"/>
492 </dia:attribute>
493 <dia:attribute name="pos">
494 <dia:point val="25.3454,10.49"/>
495 </dia:attribute>
496 <dia:attribute name="color">
497 <dia:color val="#000000"/>
498 </dia:attribute>
499 <dia:attribute name="alignment">
500 <dia:enum val="0"/>
501 </dia:attribute>
502 </dia:composite>
503 </dia:attribute>
504 <dia:attribute name="valign">
505 <dia:enum val="3"/>
506 </dia:attribute>
507 </dia:object>
508 <dia:object type="Geometric - Perfect Circle" version="1" id="O15">
509 <dia:attribute name="obj_pos">
510 <dia:point val="-1.44491,11.6506"/>
511 </dia:attribute>
512 <dia:attribute name="obj_bb">
513 <dia:rectangle val="-1.49491,11.6006;-0.54491,12.5506"/>
514 </dia:attribute>
515 <dia:attribute name="meta">
516 <dia:composite type="dict"/>
517 </dia:attribute>
518 <dia:attribute name="elem_corner">
519 <dia:point val="-1.44491,11.6506"/>
520 </dia:attribute>
521 <dia:attribute name="elem_width">
522 <dia:real val="0.84999999999999787"/>
523 </dia:attribute>
524 <dia:attribute name="elem_height">
525 <dia:real val="0.84999999999999787"/>
526 </dia:attribute>
527 <dia:attribute name="line_width">
528 <dia:real val="0.10000000000000001"/>
529 </dia:attribute>
530 <dia:attribute name="line_colour">
531 <dia:color val="#000000"/>
532 </dia:attribute>
533 <dia:attribute name="fill_colour">
534 <dia:color val="#ffffff"/>
535 </dia:attribute>
536 <dia:attribute name="show_background">
537 <dia:boolean val="true"/>
538 </dia:attribute>
539 <dia:attribute name="line_style">
540 <dia:enum val="0"/>
541 <dia:real val="1"/>
542 </dia:attribute>
543 <dia:attribute name="flip_horizontal">
544 <dia:boolean val="false"/>
545 </dia:attribute>
546 <dia:attribute name="flip_vertical">
547 <dia:boolean val="false"/>
548 </dia:attribute>
549 <dia:attribute name="subscale">
550 <dia:real val="1"/>
551 </dia:attribute>
552 </dia:object>
553 <dia:object type="Standard - Line" version="0" id="O16">
554 <dia:attribute name="obj_pos">
555 <dia:point val="-9.61991,12.09"/>
556 </dia:attribute>
557 <dia:attribute name="obj_bb">
558 <dia:rectangle val="-9.67,11.7149;-1.33311,12.4385"/>
559 </dia:attribute>
560 <dia:attribute name="conn_endpoints">
561 <dia:point val="-9.61991,12.09"/>
562 <dia:point val="-1.44491,12.0756"/>
563 </dia:attribute>
564 <dia:attribute name="numcp">
565 <dia:int val="1"/>
566 </dia:attribute>
567 <dia:attribute name="end_arrow">
568 <dia:enum val="22"/>
569 </dia:attribute>
570 <dia:attribute name="end_arrow_length">
571 <dia:real val="0.5"/>
572 </dia:attribute>
573 <dia:attribute name="end_arrow_width">
574 <dia:real val="0.5"/>
575 </dia:attribute>
576 <dia:connections>
577 <dia:connection handle="1" to="O15" connection="2"/>
578 </dia:connections>
579 </dia:object>
580 <dia:object type="Standard - Text" version="1" id="O17">
581 <dia:attribute name="obj_pos">
582 <dia:point val="-7.39291,11.49"/>
583 </dia:attribute>
584 <dia:attribute name="obj_bb">
585 <dia:rectangle val="-7.39291,10.895;-3.58791,11.6425"/>
586 </dia:attribute>
587 <dia:attribute name="text">
588 <dia:composite type="text">
589 <dia:attribute name="string">
590 <dia:string>#pad 0 (sink)#</dia:string>
591 </dia:attribute>
592 <dia:attribute name="font">
593 <dia:font family="sans" style="0" name="Helvetica"/>
594 </dia:attribute>
595 <dia:attribute name="height">
596 <dia:real val="0.80000000000000004"/>
597 </dia:attribute>
598 <dia:attribute name="pos">
599 <dia:point val="-7.39291,11.49"/>
600 </dia:attribute>
601 <dia:attribute name="color">
602 <dia:color val="#000000"/>
603 </dia:attribute>
604 <dia:attribute name="alignment">
605 <dia:enum val="0"/>
606 </dia:attribute>
607 </dia:composite>
608 </dia:attribute>
609 <dia:attribute name="valign">
610 <dia:enum val="3"/>
611 </dia:attribute>
612 </dia:object>
613 </dia:layer>
614</dia:diagram>
diff --git a/Documentation/DocBook/media/v4l/subdev-image-processing-crop.svg b/Documentation/DocBook/media/v4l/subdev-image-processing-crop.svg
new file mode 100644
index 000000000000..18b0f5de9ed2
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/subdev-image-processing-crop.svg
@@ -0,0 +1,63 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
3<svg width="43cm" height="10cm" viewBox="-194 128 844 196" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
4 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="-8" y="130" width="469.774" height="193"/>
5 <g>
6 <rect style="fill: #ffffff" x="4.5" y="189" width="159" height="104"/>
7 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a52a2a" x="4.5" y="189" width="159" height="104"/>
8 </g>
9 <g>
10 <rect style="fill: #ffffff" x="63.5" y="211" width="94" height="77"/>
11 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x="63.5" y="211" width="94" height="77"/>
12 </g>
13 <text style="fill: #0000ff;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="74.5" y="227.75">
14 <tspan x="74.5" y="227.75">sink</tspan>
15 <tspan x="74.5" y="243.75">crop</tspan>
16 <tspan x="74.5" y="259.75">selection</tspan>
17 </text>
18 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="29.5" y="158">
19 <tspan x="29.5" y="158"></tspan>
20 </text>
21 <text style="fill: #a52a2a;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="8.53836" y="157.914">
22 <tspan x="8.53836" y="157.914">sink media</tspan>
23 <tspan x="8.53836" y="173.914">bus format</tspan>
24 </text>
25 <text style="fill: #8b6914;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="349.774" y="155">
26 <tspan x="349.774" y="155">source media</tspan>
27 <tspan x="349.774" y="171">bus format</tspan>
28 </text>
29 <g>
30 <rect style="fill: #ffffff" x="350.488" y="190.834" width="93.2863" height="75.166"/>
31 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="350.488" y="190.834" width="93.2863" height="75.166"/>
32 </g>
33 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="350.488" y1="266" x2="63.5" y2="288"/>
34 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="350.488" y1="190.834" x2="63.5" y2="211"/>
35 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="443.774" y1="266" x2="157.5" y2="288"/>
36 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="443.774" y1="190.834" x2="157.5" y2="211"/>
37 <g>
38 <ellipse style="fill: #ffffff" cx="473.1" cy="219.984" rx="8.5" ry="8.5"/>
39 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="473.1" cy="219.984" rx="8.5" ry="8.5"/>
40 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="473.1" cy="219.984" rx="8.5" ry="8.5"/>
41 </g>
42 <g>
43 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="481.6" y1="219.984" x2="637.934" y2="220.012"/>
44 <polygon style="fill: #000000" points="645.434,220.014 635.433,225.012 637.934,220.012 635.435,215.012 "/>
45 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="645.434,220.014 635.433,225.012 637.934,220.012 635.435,215.012 "/>
46 </g>
47 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="506.908" y="209.8">
48 <tspan x="506.908" y="209.8">pad 1 (source)</tspan>
49 </text>
50 <g>
51 <ellipse style="fill: #ffffff" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/>
52 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/>
53 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/>
54 </g>
55 <g>
56 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="-192.398" y1="241.8" x2="-38.6343" y2="241.529"/>
57 <polygon style="fill: #000000" points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 "/>
58 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 "/>
59 </g>
60 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="-147.858" y="229.8">
61 <tspan x="-147.858" y="229.8">pad 0 (sink)</tspan>
62 </text>
63</svg>
diff --git a/Documentation/DocBook/media/v4l/subdev-image-processing-full.dia b/Documentation/DocBook/media/v4l/subdev-image-processing-full.dia
new file mode 100644
index 000000000000..a0d782927840
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/subdev-image-processing-full.dia
@@ -0,0 +1,1588 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
3 <dia:diagramdata>
4 <dia:attribute name="background">
5 <dia:color val="#ffffff"/>
6 </dia:attribute>
7 <dia:attribute name="pagebreak">
8 <dia:color val="#000099"/>
9 </dia:attribute>
10 <dia:attribute name="paper">
11 <dia:composite type="paper">
12 <dia:attribute name="name">
13 <dia:string>#A4#</dia:string>
14 </dia:attribute>
15 <dia:attribute name="tmargin">
16 <dia:real val="2.8222000598907471"/>
17 </dia:attribute>
18 <dia:attribute name="bmargin">
19 <dia:real val="2.8222000598907471"/>
20 </dia:attribute>
21 <dia:attribute name="lmargin">
22 <dia:real val="2.8222000598907471"/>
23 </dia:attribute>
24 <dia:attribute name="rmargin">
25 <dia:real val="2.8222000598907471"/>
26 </dia:attribute>
27 <dia:attribute name="is_portrait">
28 <dia:boolean val="false"/>
29 </dia:attribute>
30 <dia:attribute name="scaling">
31 <dia:real val="0.49000000953674316"/>
32 </dia:attribute>
33 <dia:attribute name="fitto">
34 <dia:boolean val="false"/>
35 </dia:attribute>
36 </dia:composite>
37 </dia:attribute>
38 <dia:attribute name="grid">
39 <dia:composite type="grid">
40 <dia:attribute name="width_x">
41 <dia:real val="1"/>
42 </dia:attribute>
43 <dia:attribute name="width_y">
44 <dia:real val="1"/>
45 </dia:attribute>
46 <dia:attribute name="visible_x">
47 <dia:int val="1"/>
48 </dia:attribute>
49 <dia:attribute name="visible_y">
50 <dia:int val="1"/>
51 </dia:attribute>
52 <dia:composite type="color"/>
53 </dia:composite>
54 </dia:attribute>
55 <dia:attribute name="color">
56 <dia:color val="#d8e5e5"/>
57 </dia:attribute>
58 <dia:attribute name="guides">
59 <dia:composite type="guides">
60 <dia:attribute name="hguides"/>
61 <dia:attribute name="vguides"/>
62 </dia:composite>
63 </dia:attribute>
64 </dia:diagramdata>
65 <dia:layer name="Background" visible="true" active="true">
66 <dia:object type="Standard - Box" version="0" id="O0">
67 <dia:attribute name="obj_pos">
68 <dia:point val="15.945,6.45"/>
69 </dia:attribute>
70 <dia:attribute name="obj_bb">
71 <dia:rectangle val="15.895,6.4;26.4,18.95"/>
72 </dia:attribute>
73 <dia:attribute name="elem_corner">
74 <dia:point val="15.945,6.45"/>
75 </dia:attribute>
76 <dia:attribute name="elem_width">
77 <dia:real val="10.404999999254942"/>
78 </dia:attribute>
79 <dia:attribute name="elem_height">
80 <dia:real val="12.449999999999992"/>
81 </dia:attribute>
82 <dia:attribute name="border_width">
83 <dia:real val="0.10000000149011612"/>
84 </dia:attribute>
85 <dia:attribute name="border_color">
86 <dia:color val="#ff765a"/>
87 </dia:attribute>
88 <dia:attribute name="show_background">
89 <dia:boolean val="true"/>
90 </dia:attribute>
91 </dia:object>
92 <dia:object type="Standard - Box" version="0" id="O1">
93 <dia:attribute name="obj_pos">
94 <dia:point val="-0.1,3.65"/>
95 </dia:attribute>
96 <dia:attribute name="obj_bb">
97 <dia:rectangle val="-0.15,3.6;40.25,20.85"/>
98 </dia:attribute>
99 <dia:attribute name="elem_corner">
100 <dia:point val="-0.1,3.65"/>
101 </dia:attribute>
102 <dia:attribute name="elem_width">
103 <dia:real val="40.300000000000004"/>
104 </dia:attribute>
105 <dia:attribute name="elem_height">
106 <dia:real val="17.149999999999999"/>
107 </dia:attribute>
108 <dia:attribute name="border_width">
109 <dia:real val="0.10000000149011612"/>
110 </dia:attribute>
111 <dia:attribute name="show_background">
112 <dia:boolean val="false"/>
113 </dia:attribute>
114 </dia:object>
115 <dia:object type="Geometric - Perfect Circle" version="1" id="O2">
116 <dia:attribute name="obj_pos">
117 <dia:point val="-1.05,7.9106"/>
118 </dia:attribute>
119 <dia:attribute name="obj_bb">
120 <dia:rectangle val="-1.1,7.8606;-0.15,8.8106"/>
121 </dia:attribute>
122 <dia:attribute name="meta">
123 <dia:composite type="dict"/>
124 </dia:attribute>
125 <dia:attribute name="elem_corner">
126 <dia:point val="-1.05,7.9106"/>
127 </dia:attribute>
128 <dia:attribute name="elem_width">
129 <dia:real val="0.84999999999999787"/>
130 </dia:attribute>
131 <dia:attribute name="elem_height">
132 <dia:real val="0.84999999999999787"/>
133 </dia:attribute>
134 <dia:attribute name="line_width">
135 <dia:real val="0.10000000000000001"/>
136 </dia:attribute>
137 <dia:attribute name="line_colour">
138 <dia:color val="#000000"/>
139 </dia:attribute>
140 <dia:attribute name="fill_colour">
141 <dia:color val="#ffffff"/>
142 </dia:attribute>
143 <dia:attribute name="show_background">
144 <dia:boolean val="true"/>
145 </dia:attribute>
146 <dia:attribute name="line_style">
147 <dia:enum val="0"/>
148 <dia:real val="1"/>
149 </dia:attribute>
150 <dia:attribute name="flip_horizontal">
151 <dia:boolean val="false"/>
152 </dia:attribute>
153 <dia:attribute name="flip_vertical">
154 <dia:boolean val="false"/>
155 </dia:attribute>
156 <dia:attribute name="subscale">
157 <dia:real val="1"/>
158 </dia:attribute>
159 </dia:object>
160 <dia:object type="Geometric - Perfect Circle" version="1" id="O3">
161 <dia:attribute name="obj_pos">
162 <dia:point val="40.3366,9.8342"/>
163 </dia:attribute>
164 <dia:attribute name="obj_bb">
165 <dia:rectangle val="40.2866,9.7842;41.2366,10.7342"/>
166 </dia:attribute>
167 <dia:attribute name="meta">
168 <dia:composite type="dict"/>
169 </dia:attribute>
170 <dia:attribute name="elem_corner">
171 <dia:point val="40.3366,9.8342"/>
172 </dia:attribute>
173 <dia:attribute name="elem_width">
174 <dia:real val="0.84999999999999787"/>
175 </dia:attribute>
176 <dia:attribute name="elem_height">
177 <dia:real val="0.84999999999999787"/>
178 </dia:attribute>
179 <dia:attribute name="line_width">
180 <dia:real val="0.10000000000000001"/>
181 </dia:attribute>
182 <dia:attribute name="line_colour">
183 <dia:color val="#000000"/>
184 </dia:attribute>
185 <dia:attribute name="fill_colour">
186 <dia:color val="#ffffff"/>
187 </dia:attribute>
188 <dia:attribute name="show_background">
189 <dia:boolean val="true"/>
190 </dia:attribute>
191 <dia:attribute name="line_style">
192 <dia:enum val="0"/>
193 <dia:real val="1"/>
194 </dia:attribute>
195 <dia:attribute name="flip_horizontal">
196 <dia:boolean val="false"/>
197 </dia:attribute>
198 <dia:attribute name="flip_vertical">
199 <dia:boolean val="false"/>
200 </dia:attribute>
201 <dia:attribute name="subscale">
202 <dia:real val="1"/>
203 </dia:attribute>
204 </dia:object>
205 <dia:object type="Standard - Line" version="0" id="O4">
206 <dia:attribute name="obj_pos">
207 <dia:point val="-9.225,8.35"/>
208 </dia:attribute>
209 <dia:attribute name="obj_bb">
210 <dia:rectangle val="-9.27509,7.97487;-0.938197,8.69848"/>
211 </dia:attribute>
212 <dia:attribute name="conn_endpoints">
213 <dia:point val="-9.225,8.35"/>
214 <dia:point val="-1.05,8.3356"/>
215 </dia:attribute>
216 <dia:attribute name="numcp">
217 <dia:int val="1"/>
218 </dia:attribute>
219 <dia:attribute name="end_arrow">
220 <dia:enum val="22"/>
221 </dia:attribute>
222 <dia:attribute name="end_arrow_length">
223 <dia:real val="0.5"/>
224 </dia:attribute>
225 <dia:attribute name="end_arrow_width">
226 <dia:real val="0.5"/>
227 </dia:attribute>
228 <dia:connections>
229 <dia:connection handle="1" to="O2" connection="2"/>
230 </dia:connections>
231 </dia:object>
232 <dia:object type="Standard - Line" version="0" id="O5">
233 <dia:attribute name="obj_pos">
234 <dia:point val="41.1866,10.2592"/>
235 </dia:attribute>
236 <dia:attribute name="obj_bb">
237 <dia:rectangle val="41.1366,9.89879;49.6019,10.6224"/>
238 </dia:attribute>
239 <dia:attribute name="conn_endpoints">
240 <dia:point val="41.1866,10.2592"/>
241 <dia:point val="49.4901,10.2607"/>
242 </dia:attribute>
243 <dia:attribute name="numcp">
244 <dia:int val="1"/>
245 </dia:attribute>
246 <dia:attribute name="end_arrow">
247 <dia:enum val="22"/>
248 </dia:attribute>
249 <dia:attribute name="end_arrow_length">
250 <dia:real val="0.5"/>
251 </dia:attribute>
252 <dia:attribute name="end_arrow_width">
253 <dia:real val="0.5"/>
254 </dia:attribute>
255 <dia:connections>
256 <dia:connection handle="0" to="O3" connection="3"/>
257 </dia:connections>
258 </dia:object>
259 <dia:object type="Standard - Text" version="1" id="O6">
260 <dia:attribute name="obj_pos">
261 <dia:point val="-6.998,7.75"/>
262 </dia:attribute>
263 <dia:attribute name="obj_bb">
264 <dia:rectangle val="-6.998,7.155;-3.193,7.9025"/>
265 </dia:attribute>
266 <dia:attribute name="text">
267 <dia:composite type="text">
268 <dia:attribute name="string">
269 <dia:string>#pad 0 (sink)#</dia:string>
270 </dia:attribute>
271 <dia:attribute name="font">
272 <dia:font family="sans" style="0" name="Helvetica"/>
273 </dia:attribute>
274 <dia:attribute name="height">
275 <dia:real val="0.80000000000000004"/>
276 </dia:attribute>
277 <dia:attribute name="pos">
278 <dia:point val="-6.998,7.75"/>
279 </dia:attribute>
280 <dia:attribute name="color">
281 <dia:color val="#000000"/>
282 </dia:attribute>
283 <dia:attribute name="alignment">
284 <dia:enum val="0"/>
285 </dia:attribute>
286 </dia:composite>
287 </dia:attribute>
288 <dia:attribute name="valign">
289 <dia:enum val="3"/>
290 </dia:attribute>
291 </dia:object>
292 <dia:object type="Standard - Text" version="1" id="O7">
293 <dia:attribute name="obj_pos">
294 <dia:point val="42.452,9.75"/>
295 </dia:attribute>
296 <dia:attribute name="obj_bb">
297 <dia:rectangle val="42.452,9.155;47.097,9.9025"/>
298 </dia:attribute>
299 <dia:attribute name="text">
300 <dia:composite type="text">
301 <dia:attribute name="string">
302 <dia:string>#pad 2 (source)#</dia:string>
303 </dia:attribute>
304 <dia:attribute name="font">
305 <dia:font family="sans" style="0" name="Helvetica"/>
306 </dia:attribute>
307 <dia:attribute name="height">
308 <dia:real val="0.80000000000000004"/>
309 </dia:attribute>
310 <dia:attribute name="pos">
311 <dia:point val="42.452,9.75"/>
312 </dia:attribute>
313 <dia:attribute name="color">
314 <dia:color val="#000000"/>
315 </dia:attribute>
316 <dia:attribute name="alignment">
317 <dia:enum val="0"/>
318 </dia:attribute>
319 </dia:composite>
320 </dia:attribute>
321 <dia:attribute name="valign">
322 <dia:enum val="3"/>
323 </dia:attribute>
324 </dia:object>
325 <dia:object type="Standard - Box" version="0" id="O8">
326 <dia:attribute name="obj_pos">
327 <dia:point val="0.275,6"/>
328 </dia:attribute>
329 <dia:attribute name="obj_bb">
330 <dia:rectangle val="0.225,5.95;8.275,11.25"/>
331 </dia:attribute>
332 <dia:attribute name="elem_corner">
333 <dia:point val="0.275,6"/>
334 </dia:attribute>
335 <dia:attribute name="elem_width">
336 <dia:real val="7.9499999999999975"/>
337 </dia:attribute>
338 <dia:attribute name="elem_height">
339 <dia:real val="5.1999999999999975"/>
340 </dia:attribute>
341 <dia:attribute name="border_width">
342 <dia:real val="0.10000000149011612"/>
343 </dia:attribute>
344 <dia:attribute name="border_color">
345 <dia:color val="#a52a2a"/>
346 </dia:attribute>
347 <dia:attribute name="show_background">
348 <dia:boolean val="true"/>
349 </dia:attribute>
350 </dia:object>
351 <dia:object type="Standard - Box" version="0" id="O9">
352 <dia:attribute name="obj_pos">
353 <dia:point val="3.125,6.8"/>
354 </dia:attribute>
355 <dia:attribute name="obj_bb">
356 <dia:rectangle val="3.075,6.75;7.875,10.7"/>
357 </dia:attribute>
358 <dia:attribute name="elem_corner">
359 <dia:point val="3.125,6.8"/>
360 </dia:attribute>
361 <dia:attribute name="elem_width">
362 <dia:real val="4.6999999999999975"/>
363 </dia:attribute>
364 <dia:attribute name="elem_height">
365 <dia:real val="3.8499999999999979"/>
366 </dia:attribute>
367 <dia:attribute name="border_width">
368 <dia:real val="0.10000000149011612"/>
369 </dia:attribute>
370 <dia:attribute name="border_color">
371 <dia:color val="#0000ff"/>
372 </dia:attribute>
373 <dia:attribute name="show_background">
374 <dia:boolean val="true"/>
375 </dia:attribute>
376 </dia:object>
377 <dia:object type="Standard - Text" version="1" id="O10">
378 <dia:attribute name="obj_pos">
379 <dia:point val="1.525,4.45"/>
380 </dia:attribute>
381 <dia:attribute name="obj_bb">
382 <dia:rectangle val="1.525,3.855;1.525,4.6025"/>
383 </dia:attribute>
384 <dia:attribute name="text">
385 <dia:composite type="text">
386 <dia:attribute name="string">
387 <dia:string>##</dia:string>
388 </dia:attribute>
389 <dia:attribute name="font">
390 <dia:font family="sans" style="0" name="Helvetica"/>
391 </dia:attribute>
392 <dia:attribute name="height">
393 <dia:real val="0.80000000000000004"/>
394 </dia:attribute>
395 <dia:attribute name="pos">
396 <dia:point val="1.525,4.45"/>
397 </dia:attribute>
398 <dia:attribute name="color">
399 <dia:color val="#000000"/>
400 </dia:attribute>
401 <dia:attribute name="alignment">
402 <dia:enum val="0"/>
403 </dia:attribute>
404 </dia:composite>
405 </dia:attribute>
406 <dia:attribute name="valign">
407 <dia:enum val="3"/>
408 </dia:attribute>
409 </dia:object>
410 <dia:object type="Standard - Text" version="1" id="O11">
411 <dia:attribute name="obj_pos">
412 <dia:point val="0.476918,4.44569"/>
413 </dia:attribute>
414 <dia:attribute name="obj_bb">
415 <dia:rectangle val="0.476918,3.85069;3.95942,5.39819"/>
416 </dia:attribute>
417 <dia:attribute name="text">
418 <dia:composite type="text">
419 <dia:attribute name="string">
420 <dia:string>#sink media
421bus format#</dia:string>
422 </dia:attribute>
423 <dia:attribute name="font">
424 <dia:font family="sans" style="0" name="Helvetica"/>
425 </dia:attribute>
426 <dia:attribute name="height">
427 <dia:real val="0.80000000000000004"/>
428 </dia:attribute>
429 <dia:attribute name="pos">
430 <dia:point val="0.476918,4.44569"/>
431 </dia:attribute>
432 <dia:attribute name="color">
433 <dia:color val="#a52a2a"/>
434 </dia:attribute>
435 <dia:attribute name="alignment">
436 <dia:enum val="0"/>
437 </dia:attribute>
438 </dia:composite>
439 </dia:attribute>
440 <dia:attribute name="valign">
441 <dia:enum val="3"/>
442 </dia:attribute>
443 </dia:object>
444 <dia:object type="Standard - Box" version="0" id="O12">
445 <dia:attribute name="obj_pos">
446 <dia:point val="16.6822,9.28251"/>
447 </dia:attribute>
448 <dia:attribute name="obj_bb">
449 <dia:rectangle val="16.6322,9.23251;24.9922,17.9564"/>
450 </dia:attribute>
451 <dia:attribute name="elem_corner">
452 <dia:point val="16.6822,9.28251"/>
453 </dia:attribute>
454 <dia:attribute name="elem_width">
455 <dia:real val="8.2600228398861297"/>
456 </dia:attribute>
457 <dia:attribute name="elem_height">
458 <dia:real val="8.6238900617957164"/>
459 </dia:attribute>
460 <dia:attribute name="border_width">
461 <dia:real val="0.10000000149011612"/>
462 </dia:attribute>
463 <dia:attribute name="border_color">
464 <dia:color val="#00ff00"/>
465 </dia:attribute>
466 <dia:attribute name="show_background">
467 <dia:boolean val="true"/>
468 </dia:attribute>
469 </dia:object>
470 <dia:object type="Standard - Line" version="0" id="O13">
471 <dia:attribute name="obj_pos">
472 <dia:point val="16.6822,17.9064"/>
473 </dia:attribute>
474 <dia:attribute name="obj_bb">
475 <dia:rectangle val="3.05732,10.5823;16.7499,17.9741"/>
476 </dia:attribute>
477 <dia:attribute name="conn_endpoints">
478 <dia:point val="16.6822,17.9064"/>
479 <dia:point val="3.125,10.65"/>
480 </dia:attribute>
481 <dia:attribute name="numcp">
482 <dia:int val="1"/>
483 </dia:attribute>
484 <dia:attribute name="line_color">
485 <dia:color val="#e60505"/>
486 </dia:attribute>
487 <dia:attribute name="line_style">
488 <dia:enum val="4"/>
489 </dia:attribute>
490 <dia:connections>
491 <dia:connection handle="0" to="O12" connection="5"/>
492 <dia:connection handle="1" to="O9" connection="5"/>
493 </dia:connections>
494 </dia:object>
495 <dia:object type="Standard - Line" version="0" id="O14">
496 <dia:attribute name="obj_pos">
497 <dia:point val="16.6822,9.28251"/>
498 </dia:attribute>
499 <dia:attribute name="obj_bb">
500 <dia:rectangle val="3.06681,6.74181;16.7404,9.3407"/>
501 </dia:attribute>
502 <dia:attribute name="conn_endpoints">
503 <dia:point val="16.6822,9.28251"/>
504 <dia:point val="3.125,6.8"/>
505 </dia:attribute>
506 <dia:attribute name="numcp">
507 <dia:int val="1"/>
508 </dia:attribute>
509 <dia:attribute name="line_color">
510 <dia:color val="#e60505"/>
511 </dia:attribute>
512 <dia:attribute name="line_style">
513 <dia:enum val="4"/>
514 </dia:attribute>
515 <dia:connections>
516 <dia:connection handle="0" to="O12" connection="0"/>
517 <dia:connection handle="1" to="O9" connection="0"/>
518 </dia:connections>
519 </dia:object>
520 <dia:object type="Standard - Line" version="0" id="O15">
521 <dia:attribute name="obj_pos">
522 <dia:point val="24.9422,17.9064"/>
523 </dia:attribute>
524 <dia:attribute name="obj_bb">
525 <dia:rectangle val="7.75945,10.5845;25.0077,17.9719"/>
526 </dia:attribute>
527 <dia:attribute name="conn_endpoints">
528 <dia:point val="24.9422,17.9064"/>
529 <dia:point val="7.825,10.65"/>
530 </dia:attribute>
531 <dia:attribute name="numcp">
532 <dia:int val="1"/>
533 </dia:attribute>
534 <dia:attribute name="line_color">
535 <dia:color val="#e60505"/>
536 </dia:attribute>
537 <dia:attribute name="line_style">
538 <dia:enum val="4"/>
539 </dia:attribute>
540 <dia:connections>
541 <dia:connection handle="0" to="O12" connection="7"/>
542 <dia:connection handle="1" to="O9" connection="7"/>
543 </dia:connections>
544 </dia:object>
545 <dia:object type="Standard - Line" version="0" id="O16">
546 <dia:attribute name="obj_pos">
547 <dia:point val="24.9422,9.28251"/>
548 </dia:attribute>
549 <dia:attribute name="obj_bb">
550 <dia:rectangle val="7.76834,6.74334;24.9989,9.33917"/>
551 </dia:attribute>
552 <dia:attribute name="conn_endpoints">
553 <dia:point val="24.9422,9.28251"/>
554 <dia:point val="7.825,6.8"/>
555 </dia:attribute>
556 <dia:attribute name="numcp">
557 <dia:int val="1"/>
558 </dia:attribute>
559 <dia:attribute name="line_color">
560 <dia:color val="#e60505"/>
561 </dia:attribute>
562 <dia:attribute name="line_style">
563 <dia:enum val="4"/>
564 </dia:attribute>
565 <dia:connections>
566 <dia:connection handle="0" to="O12" connection="2"/>
567 <dia:connection handle="1" to="O9" connection="2"/>
568 </dia:connections>
569 </dia:object>
570 <dia:object type="Standard - Text" version="1" id="O17">
571 <dia:attribute name="obj_pos">
572 <dia:point val="16.7352,7.47209"/>
573 </dia:attribute>
574 <dia:attribute name="obj_bb">
575 <dia:rectangle val="16.7352,6.87709;22.5602,8.42459"/>
576 </dia:attribute>
577 <dia:attribute name="text">
578 <dia:composite type="text">
579 <dia:attribute name="string">
580 <dia:string>#sink compose
581selection (scaling)#</dia:string>
582 </dia:attribute>
583 <dia:attribute name="font">
584 <dia:font family="sans" style="0" name="Helvetica"/>
585 </dia:attribute>
586 <dia:attribute name="height">
587 <dia:real val="0.80000000000000004"/>
588 </dia:attribute>
589 <dia:attribute name="pos">
590 <dia:point val="16.7352,7.47209"/>
591 </dia:attribute>
592 <dia:attribute name="color">
593 <dia:color val="#00ff00"/>
594 </dia:attribute>
595 <dia:attribute name="alignment">
596 <dia:enum val="0"/>
597 </dia:attribute>
598 </dia:composite>
599 </dia:attribute>
600 <dia:attribute name="valign">
601 <dia:enum val="3"/>
602 </dia:attribute>
603 </dia:object>
604 <dia:object type="Standard - Box" version="0" id="O18">
605 <dia:attribute name="obj_pos">
606 <dia:point val="20.4661,9.72825"/>
607 </dia:attribute>
608 <dia:attribute name="obj_bb">
609 <dia:rectangle val="20.4161,9.67825;25.5254,13.3509"/>
610 </dia:attribute>
611 <dia:attribute name="elem_corner">
612 <dia:point val="20.4661,9.72825"/>
613 </dia:attribute>
614 <dia:attribute name="elem_width">
615 <dia:real val="5.009308462554376"/>
616 </dia:attribute>
617 <dia:attribute name="elem_height">
618 <dia:real val="3.5726155970598077"/>
619 </dia:attribute>
620 <dia:attribute name="border_width">
621 <dia:real val="0.10000000149011612"/>
622 </dia:attribute>
623 <dia:attribute name="border_color">
624 <dia:color val="#a020f0"/>
625 </dia:attribute>
626 <dia:attribute name="show_background">
627 <dia:boolean val="true"/>
628 </dia:attribute>
629 </dia:object>
630 <dia:object type="Standard - Text" version="1" id="O19">
631 <dia:attribute name="obj_pos">
632 <dia:point val="34.475,5.2564"/>
633 </dia:attribute>
634 <dia:attribute name="obj_bb">
635 <dia:rectangle val="34.475,4.6614;38.7975,6.2089"/>
636 </dia:attribute>
637 <dia:attribute name="text">
638 <dia:composite type="text">
639 <dia:attribute name="string">
640 <dia:string>#source media
641bus format#</dia:string>
642 </dia:attribute>
643 <dia:attribute name="font">
644 <dia:font family="sans" style="0" name="Helvetica"/>
645 </dia:attribute>
646 <dia:attribute name="height">
647 <dia:real val="0.80000000000000004"/>
648 </dia:attribute>
649 <dia:attribute name="pos">
650 <dia:point val="34.475,5.2564"/>
651 </dia:attribute>
652 <dia:attribute name="color">
653 <dia:color val="#8b6914"/>
654 </dia:attribute>
655 <dia:attribute name="alignment">
656 <dia:enum val="0"/>
657 </dia:attribute>
658 </dia:composite>
659 </dia:attribute>
660 <dia:attribute name="valign">
661 <dia:enum val="3"/>
662 </dia:attribute>
663 </dia:object>
664 <dia:object type="Standard - Box" version="0" id="O20">
665 <dia:attribute name="obj_pos">
666 <dia:point val="34.4244,8.6917"/>
667 </dia:attribute>
668 <dia:attribute name="obj_bb">
669 <dia:rectangle val="34.3744,8.6417;39.4837,12.3143"/>
670 </dia:attribute>
671 <dia:attribute name="elem_corner">
672 <dia:point val="34.4244,8.6917"/>
673 </dia:attribute>
674 <dia:attribute name="elem_width">
675 <dia:real val="5.009308462554376"/>
676 </dia:attribute>
677 <dia:attribute name="elem_height">
678 <dia:real val="3.5726155970598077"/>
679 </dia:attribute>
680 <dia:attribute name="border_width">
681 <dia:real val="0.10000000149011612"/>
682 </dia:attribute>
683 <dia:attribute name="border_color">
684 <dia:color val="#8b6914"/>
685 </dia:attribute>
686 <dia:attribute name="show_background">
687 <dia:boolean val="true"/>
688 </dia:attribute>
689 </dia:object>
690 <dia:object type="Standard - Line" version="0" id="O21">
691 <dia:attribute name="obj_pos">
692 <dia:point val="34.4244,12.2643"/>
693 </dia:attribute>
694 <dia:attribute name="obj_bb">
695 <dia:rectangle val="20.4125,12.2107;34.478,13.3545"/>
696 </dia:attribute>
697 <dia:attribute name="conn_endpoints">
698 <dia:point val="34.4244,12.2643"/>
699 <dia:point val="20.4661,13.3009"/>
700 </dia:attribute>
701 <dia:attribute name="numcp">
702 <dia:int val="1"/>
703 </dia:attribute>
704 <dia:attribute name="line_color">
705 <dia:color val="#e60505"/>
706 </dia:attribute>
707 <dia:attribute name="line_style">
708 <dia:enum val="4"/>
709 </dia:attribute>
710 <dia:connections>
711 <dia:connection handle="0" to="O20" connection="5"/>
712 <dia:connection handle="1" to="O18" connection="5"/>
713 </dia:connections>
714 </dia:object>
715 <dia:object type="Standard - Line" version="0" id="O22">
716 <dia:attribute name="obj_pos">
717 <dia:point val="34.4244,8.6917"/>
718 </dia:attribute>
719 <dia:attribute name="obj_bb">
720 <dia:rectangle val="20.4125,8.63813;34.478,9.78182"/>
721 </dia:attribute>
722 <dia:attribute name="conn_endpoints">
723 <dia:point val="34.4244,8.6917"/>
724 <dia:point val="20.4661,9.72825"/>
725 </dia:attribute>
726 <dia:attribute name="numcp">
727 <dia:int val="1"/>
728 </dia:attribute>
729 <dia:attribute name="line_color">
730 <dia:color val="#e60505"/>
731 </dia:attribute>
732 <dia:attribute name="line_style">
733 <dia:enum val="4"/>
734 </dia:attribute>
735 <dia:connections>
736 <dia:connection handle="0" to="O20" connection="0"/>
737 <dia:connection handle="1" to="O18" connection="0"/>
738 </dia:connections>
739 </dia:object>
740 <dia:object type="Standard - Line" version="0" id="O23">
741 <dia:attribute name="obj_pos">
742 <dia:point val="39.4337,12.2643"/>
743 </dia:attribute>
744 <dia:attribute name="obj_bb">
745 <dia:rectangle val="25.4218,12.2107;39.4873,13.3545"/>
746 </dia:attribute>
747 <dia:attribute name="conn_endpoints">
748 <dia:point val="39.4337,12.2643"/>
749 <dia:point val="25.4754,13.3009"/>
750 </dia:attribute>
751 <dia:attribute name="numcp">
752 <dia:int val="1"/>
753 </dia:attribute>
754 <dia:attribute name="line_color">
755 <dia:color val="#e60505"/>
756 </dia:attribute>
757 <dia:attribute name="line_style">
758 <dia:enum val="4"/>
759 </dia:attribute>
760 <dia:connections>
761 <dia:connection handle="0" to="O20" connection="7"/>
762 <dia:connection handle="1" to="O18" connection="7"/>
763 </dia:connections>
764 </dia:object>
765 <dia:object type="Standard - Line" version="0" id="O24">
766 <dia:attribute name="obj_pos">
767 <dia:point val="39.4337,8.6917"/>
768 </dia:attribute>
769 <dia:attribute name="obj_bb">
770 <dia:rectangle val="25.4218,8.63813;39.4873,9.78182"/>
771 </dia:attribute>
772 <dia:attribute name="conn_endpoints">
773 <dia:point val="39.4337,8.6917"/>
774 <dia:point val="25.4754,9.72825"/>
775 </dia:attribute>
776 <dia:attribute name="numcp">
777 <dia:int val="1"/>
778 </dia:attribute>
779 <dia:attribute name="line_color">
780 <dia:color val="#e60505"/>
781 </dia:attribute>
782 <dia:attribute name="line_style">
783 <dia:enum val="4"/>
784 </dia:attribute>
785 <dia:connections>
786 <dia:connection handle="0" to="O20" connection="2"/>
787 <dia:connection handle="1" to="O18" connection="2"/>
788 </dia:connections>
789 </dia:object>
790 <dia:object type="Standard - Text" version="1" id="O25">
791 <dia:attribute name="obj_pos">
792 <dia:point val="16.25,5.15"/>
793 </dia:attribute>
794 <dia:attribute name="obj_bb">
795 <dia:rectangle val="16.25,4.555;21.68,6.1025"/>
796 </dia:attribute>
797 <dia:attribute name="text">
798 <dia:composite type="text">
799 <dia:attribute name="string">
800 <dia:string>#sink compose
801bounds selection#</dia:string>
802 </dia:attribute>
803 <dia:attribute name="font">
804 <dia:font family="sans" style="0" name="Helvetica"/>
805 </dia:attribute>
806 <dia:attribute name="height">
807 <dia:real val="0.80000000000000004"/>
808 </dia:attribute>
809 <dia:attribute name="pos">
810 <dia:point val="16.25,5.15"/>
811 </dia:attribute>
812 <dia:attribute name="color">
813 <dia:color val="#ff765a"/>
814 </dia:attribute>
815 <dia:attribute name="alignment">
816 <dia:enum val="0"/>
817 </dia:attribute>
818 </dia:composite>
819 </dia:attribute>
820 <dia:attribute name="valign">
821 <dia:enum val="3"/>
822 </dia:attribute>
823 </dia:object>
824 <dia:object type="Geometric - Perfect Circle" version="1" id="O26">
825 <dia:attribute name="obj_pos">
826 <dia:point val="-1.02991,16.6506"/>
827 </dia:attribute>
828 <dia:attribute name="obj_bb">
829 <dia:rectangle val="-1.07991,16.6006;-0.12991,17.5506"/>
830 </dia:attribute>
831 <dia:attribute name="meta">
832 <dia:composite type="dict"/>
833 </dia:attribute>
834 <dia:attribute name="elem_corner">
835 <dia:point val="-1.02991,16.6506"/>
836 </dia:attribute>
837 <dia:attribute name="elem_width">
838 <dia:real val="0.84999999999999787"/>
839 </dia:attribute>
840 <dia:attribute name="elem_height">
841 <dia:real val="0.84999999999999787"/>
842 </dia:attribute>
843 <dia:attribute name="line_width">
844 <dia:real val="0.10000000000000001"/>
845 </dia:attribute>
846 <dia:attribute name="line_colour">
847 <dia:color val="#000000"/>
848 </dia:attribute>
849 <dia:attribute name="fill_colour">
850 <dia:color val="#ffffff"/>
851 </dia:attribute>
852 <dia:attribute name="show_background">
853 <dia:boolean val="true"/>
854 </dia:attribute>
855 <dia:attribute name="line_style">
856 <dia:enum val="0"/>
857 <dia:real val="1"/>
858 </dia:attribute>
859 <dia:attribute name="flip_horizontal">
860 <dia:boolean val="false"/>
861 </dia:attribute>
862 <dia:attribute name="flip_vertical">
863 <dia:boolean val="false"/>
864 </dia:attribute>
865 <dia:attribute name="subscale">
866 <dia:real val="1"/>
867 </dia:attribute>
868 </dia:object>
869 <dia:object type="Standard - Line" version="0" id="O27">
870 <dia:attribute name="obj_pos">
871 <dia:point val="-9.20491,17.09"/>
872 </dia:attribute>
873 <dia:attribute name="obj_bb">
874 <dia:rectangle val="-9.255,16.7149;-0.918107,17.4385"/>
875 </dia:attribute>
876 <dia:attribute name="conn_endpoints">
877 <dia:point val="-9.20491,17.09"/>
878 <dia:point val="-1.02991,17.0756"/>
879 </dia:attribute>
880 <dia:attribute name="numcp">
881 <dia:int val="1"/>
882 </dia:attribute>
883 <dia:attribute name="end_arrow">
884 <dia:enum val="22"/>
885 </dia:attribute>
886 <dia:attribute name="end_arrow_length">
887 <dia:real val="0.5"/>
888 </dia:attribute>
889 <dia:attribute name="end_arrow_width">
890 <dia:real val="0.5"/>
891 </dia:attribute>
892 <dia:connections>
893 <dia:connection handle="1" to="O26" connection="2"/>
894 </dia:connections>
895 </dia:object>
896 <dia:object type="Standard - Text" version="1" id="O28">
897 <dia:attribute name="obj_pos">
898 <dia:point val="-6.95,16.45"/>
899 </dia:attribute>
900 <dia:attribute name="obj_bb">
901 <dia:rectangle val="-6.95,15.855;-3.145,16.6025"/>
902 </dia:attribute>
903 <dia:attribute name="text">
904 <dia:composite type="text">
905 <dia:attribute name="string">
906 <dia:string>#pad 1 (sink)#</dia:string>
907 </dia:attribute>
908 <dia:attribute name="font">
909 <dia:font family="sans" style="0" name="Helvetica"/>
910 </dia:attribute>
911 <dia:attribute name="height">
912 <dia:real val="0.80000000000000004"/>
913 </dia:attribute>
914 <dia:attribute name="pos">
915 <dia:point val="-6.95,16.45"/>
916 </dia:attribute>
917 <dia:attribute name="color">
918 <dia:color val="#000000"/>
919 </dia:attribute>
920 <dia:attribute name="alignment">
921 <dia:enum val="0"/>
922 </dia:attribute>
923 </dia:composite>
924 </dia:attribute>
925 <dia:attribute name="valign">
926 <dia:enum val="3"/>
927 </dia:attribute>
928 </dia:object>
929 <dia:object type="Standard - Box" version="0" id="O29">
930 <dia:attribute name="obj_pos">
931 <dia:point val="0.390412,14.64"/>
932 </dia:attribute>
933 <dia:attribute name="obj_bb">
934 <dia:rectangle val="0.340412,14.59;6.045,18.8"/>
935 </dia:attribute>
936 <dia:attribute name="elem_corner">
937 <dia:point val="0.390412,14.64"/>
938 </dia:attribute>
939 <dia:attribute name="elem_width">
940 <dia:real val="5.604587512785236"/>
941 </dia:attribute>
942 <dia:attribute name="elem_height">
943 <dia:real val="4.1099999999999994"/>
944 </dia:attribute>
945 <dia:attribute name="border_width">
946 <dia:real val="0.10000000149011612"/>
947 </dia:attribute>
948 <dia:attribute name="border_color">
949 <dia:color val="#a52a2a"/>
950 </dia:attribute>
951 <dia:attribute name="show_background">
952 <dia:boolean val="true"/>
953 </dia:attribute>
954 </dia:object>
955 <dia:object type="Standard - Box" version="0" id="O30">
956 <dia:attribute name="obj_pos">
957 <dia:point val="2.645,15.74"/>
958 </dia:attribute>
959 <dia:attribute name="obj_bb">
960 <dia:rectangle val="2.595,15.69;5.6,18.3"/>
961 </dia:attribute>
962 <dia:attribute name="elem_corner">
963 <dia:point val="2.645,15.74"/>
964 </dia:attribute>
965 <dia:attribute name="elem_width">
966 <dia:real val="2.904999999254942"/>
967 </dia:attribute>
968 <dia:attribute name="elem_height">
969 <dia:real val="2.5100000000000016"/>
970 </dia:attribute>
971 <dia:attribute name="border_width">
972 <dia:real val="0.10000000149011612"/>
973 </dia:attribute>
974 <dia:attribute name="border_color">
975 <dia:color val="#0000ff"/>
976 </dia:attribute>
977 <dia:attribute name="show_background">
978 <dia:boolean val="true"/>
979 </dia:attribute>
980 </dia:object>
981 <dia:object type="Standard - Text" version="1" id="O31">
982 <dia:attribute name="obj_pos">
983 <dia:point val="1.595,12.99"/>
984 </dia:attribute>
985 <dia:attribute name="obj_bb">
986 <dia:rectangle val="1.595,12.395;1.595,13.1425"/>
987 </dia:attribute>
988 <dia:attribute name="text">
989 <dia:composite type="text">
990 <dia:attribute name="string">
991 <dia:string>##</dia:string>
992 </dia:attribute>
993 <dia:attribute name="font">
994 <dia:font family="sans" style="0" name="Helvetica"/>
995 </dia:attribute>
996 <dia:attribute name="height">
997 <dia:real val="0.80000000000000004"/>
998 </dia:attribute>
999 <dia:attribute name="pos">
1000 <dia:point val="1.595,12.99"/>
1001 </dia:attribute>
1002 <dia:attribute name="color">
1003 <dia:color val="#000000"/>
1004 </dia:attribute>
1005 <dia:attribute name="alignment">
1006 <dia:enum val="0"/>
1007 </dia:attribute>
1008 </dia:composite>
1009 </dia:attribute>
1010 <dia:attribute name="valign">
1011 <dia:enum val="3"/>
1012 </dia:attribute>
1013 </dia:object>
1014 <dia:object type="Standard - Line" version="0" id="O32">
1015 <dia:attribute name="obj_pos">
1016 <dia:point val="17.945,12.595"/>
1017 </dia:attribute>
1018 <dia:attribute name="obj_bb">
1019 <dia:rectangle val="2.58596,12.536;18.004,15.799"/>
1020 </dia:attribute>
1021 <dia:attribute name="conn_endpoints">
1022 <dia:point val="17.945,12.595"/>
1023 <dia:point val="2.645,15.74"/>
1024 </dia:attribute>
1025 <dia:attribute name="numcp">
1026 <dia:int val="1"/>
1027 </dia:attribute>
1028 <dia:attribute name="line_color">
1029 <dia:color val="#e60505"/>
1030 </dia:attribute>
1031 <dia:attribute name="line_style">
1032 <dia:enum val="4"/>
1033 </dia:attribute>
1034 <dia:connections>
1035 <dia:connection handle="0" to="O36" connection="0"/>
1036 <dia:connection handle="1" to="O30" connection="0"/>
1037 </dia:connections>
1038 </dia:object>
1039 <dia:object type="Standard - Line" version="0" id="O33">
1040 <dia:attribute name="obj_pos">
1041 <dia:point val="17.945,15.8"/>
1042 </dia:attribute>
1043 <dia:attribute name="obj_bb">
1044 <dia:rectangle val="2.58772,15.7427;18.0023,18.3073"/>
1045 </dia:attribute>
1046 <dia:attribute name="conn_endpoints">
1047 <dia:point val="17.945,15.8"/>
1048 <dia:point val="2.645,18.25"/>
1049 </dia:attribute>
1050 <dia:attribute name="numcp">
1051 <dia:int val="1"/>
1052 </dia:attribute>
1053 <dia:attribute name="line_color">
1054 <dia:color val="#e60505"/>
1055 </dia:attribute>
1056 <dia:attribute name="line_style">
1057 <dia:enum val="4"/>
1058 </dia:attribute>
1059 <dia:connections>
1060 <dia:connection handle="0" to="O36" connection="5"/>
1061 <dia:connection handle="1" to="O30" connection="5"/>
1062 </dia:connections>
1063 </dia:object>
1064 <dia:object type="Standard - Line" version="0" id="O34">
1065 <dia:attribute name="obj_pos">
1066 <dia:point val="21.7,15.8"/>
1067 </dia:attribute>
1068 <dia:attribute name="obj_bb">
1069 <dia:rectangle val="5.49307,15.7431;21.7569,18.3069"/>
1070 </dia:attribute>
1071 <dia:attribute name="conn_endpoints">
1072 <dia:point val="21.7,15.8"/>
1073 <dia:point val="5.55,18.25"/>
1074 </dia:attribute>
1075 <dia:attribute name="numcp">
1076 <dia:int val="1"/>
1077 </dia:attribute>
1078 <dia:attribute name="line_color">
1079 <dia:color val="#e60505"/>
1080 </dia:attribute>
1081 <dia:attribute name="line_style">
1082 <dia:enum val="4"/>
1083 </dia:attribute>
1084 <dia:connections>
1085 <dia:connection handle="0" to="O36" connection="7"/>
1086 <dia:connection handle="1" to="O30" connection="7"/>
1087 </dia:connections>
1088 </dia:object>
1089 <dia:object type="Standard - Line" version="0" id="O35">
1090 <dia:attribute name="obj_pos">
1091 <dia:point val="21.7,12.595"/>
1092 </dia:attribute>
1093 <dia:attribute name="obj_bb">
1094 <dia:rectangle val="5.49136,12.5364;21.7586,15.7986"/>
1095 </dia:attribute>
1096 <dia:attribute name="conn_endpoints">
1097 <dia:point val="21.7,12.595"/>
1098 <dia:point val="5.55,15.74"/>
1099 </dia:attribute>
1100 <dia:attribute name="numcp">
1101 <dia:int val="1"/>
1102 </dia:attribute>
1103 <dia:attribute name="line_color">
1104 <dia:color val="#e60505"/>
1105 </dia:attribute>
1106 <dia:attribute name="line_style">
1107 <dia:enum val="4"/>
1108 </dia:attribute>
1109 <dia:connections>
1110 <dia:connection handle="0" to="O36" connection="2"/>
1111 <dia:connection handle="1" to="O30" connection="2"/>
1112 </dia:connections>
1113 </dia:object>
1114 <dia:object type="Standard - Box" version="0" id="O36">
1115 <dia:attribute name="obj_pos">
1116 <dia:point val="17.945,12.595"/>
1117 </dia:attribute>
1118 <dia:attribute name="obj_bb">
1119 <dia:rectangle val="17.895,12.545;21.75,15.85"/>
1120 </dia:attribute>
1121 <dia:attribute name="elem_corner">
1122 <dia:point val="17.945,12.595"/>
1123 </dia:attribute>
1124 <dia:attribute name="elem_width">
1125 <dia:real val="3.7549999992549452"/>
1126 </dia:attribute>
1127 <dia:attribute name="elem_height">
1128 <dia:real val="3.2049999992549427"/>
1129 </dia:attribute>
1130 <dia:attribute name="border_width">
1131 <dia:real val="0.10000000149011612"/>
1132 </dia:attribute>
1133 <dia:attribute name="border_color">
1134 <dia:color val="#00ff00"/>
1135 </dia:attribute>
1136 <dia:attribute name="show_background">
1137 <dia:boolean val="false"/>
1138 </dia:attribute>
1139 </dia:object>
1140 <dia:object type="Standard - Box" version="0" id="O37">
1141 <dia:attribute name="obj_pos">
1142 <dia:point val="22.1631,14.2233"/>
1143 </dia:attribute>
1144 <dia:attribute name="obj_bb">
1145 <dia:rectangle val="22.1131,14.1733;25.45,16.7"/>
1146 </dia:attribute>
1147 <dia:attribute name="elem_corner">
1148 <dia:point val="22.1631,14.2233"/>
1149 </dia:attribute>
1150 <dia:attribute name="elem_width">
1151 <dia:real val="3.2369000000000021"/>
1152 </dia:attribute>
1153 <dia:attribute name="elem_height">
1154 <dia:real val="2.4267000000000003"/>
1155 </dia:attribute>
1156 <dia:attribute name="border_width">
1157 <dia:real val="0.10000000149011612"/>
1158 </dia:attribute>
1159 <dia:attribute name="border_color">
1160 <dia:color val="#a020f0"/>
1161 </dia:attribute>
1162 <dia:attribute name="show_background">
1163 <dia:boolean val="false"/>
1164 </dia:attribute>
1165 </dia:object>
1166 <dia:object type="Standard - Box" version="0" id="O38">
1167 <dia:attribute name="obj_pos">
1168 <dia:point val="34.6714,16.2367"/>
1169 </dia:attribute>
1170 <dia:attribute name="obj_bb">
1171 <dia:rectangle val="34.6214,16.1867;37.9,18.75"/>
1172 </dia:attribute>
1173 <dia:attribute name="elem_corner">
1174 <dia:point val="34.6714,16.2367"/>
1175 </dia:attribute>
1176 <dia:attribute name="elem_width">
1177 <dia:real val="3.178600000000003"/>
1178 </dia:attribute>
1179 <dia:attribute name="elem_height">
1180 <dia:real val="2.4632999999999967"/>
1181 </dia:attribute>
1182 <dia:attribute name="border_width">
1183 <dia:real val="0.10000000149011612"/>
1184 </dia:attribute>
1185 <dia:attribute name="border_color">
1186 <dia:color val="#8b6914"/>
1187 </dia:attribute>
1188 <dia:attribute name="show_background">
1189 <dia:boolean val="true"/>
1190 </dia:attribute>
1191 </dia:object>
1192 <dia:object type="Standard - Line" version="0" id="O39">
1193 <dia:attribute name="obj_pos">
1194 <dia:point val="34.6714,18.7"/>
1195 </dia:attribute>
1196 <dia:attribute name="obj_bb">
1197 <dia:rectangle val="22.1057,16.5926;34.7288,18.7574"/>
1198 </dia:attribute>
1199 <dia:attribute name="conn_endpoints">
1200 <dia:point val="34.6714,18.7"/>
1201 <dia:point val="22.1631,16.65"/>
1202 </dia:attribute>
1203 <dia:attribute name="numcp">
1204 <dia:int val="1"/>
1205 </dia:attribute>
1206 <dia:attribute name="line_color">
1207 <dia:color val="#e60505"/>
1208 </dia:attribute>
1209 <dia:attribute name="line_style">
1210 <dia:enum val="4"/>
1211 </dia:attribute>
1212 <dia:connections>
1213 <dia:connection handle="0" to="O38" connection="5"/>
1214 <dia:connection handle="1" to="O37" connection="5"/>
1215 </dia:connections>
1216 </dia:object>
1217 <dia:object type="Standard - Line" version="0" id="O40">
1218 <dia:attribute name="obj_pos">
1219 <dia:point val="34.6714,16.2367"/>
1220 </dia:attribute>
1221 <dia:attribute name="obj_bb">
1222 <dia:rectangle val="22.1058,14.166;34.7287,16.294"/>
1223 </dia:attribute>
1224 <dia:attribute name="conn_endpoints">
1225 <dia:point val="34.6714,16.2367"/>
1226 <dia:point val="22.1631,14.2233"/>
1227 </dia:attribute>
1228 <dia:attribute name="numcp">
1229 <dia:int val="1"/>
1230 </dia:attribute>
1231 <dia:attribute name="line_color">
1232 <dia:color val="#e60505"/>
1233 </dia:attribute>
1234 <dia:attribute name="line_style">
1235 <dia:enum val="4"/>
1236 </dia:attribute>
1237 <dia:connections>
1238 <dia:connection handle="0" to="O38" connection="0"/>
1239 <dia:connection handle="1" to="O37" connection="0"/>
1240 </dia:connections>
1241 </dia:object>
1242 <dia:object type="Standard - Line" version="0" id="O41">
1243 <dia:attribute name="obj_pos">
1244 <dia:point val="37.85,18.7"/>
1245 </dia:attribute>
1246 <dia:attribute name="obj_bb">
1247 <dia:rectangle val="25.3425,16.5925;37.9075,18.7575"/>
1248 </dia:attribute>
1249 <dia:attribute name="conn_endpoints">
1250 <dia:point val="37.85,18.7"/>
1251 <dia:point val="25.4,16.65"/>
1252 </dia:attribute>
1253 <dia:attribute name="numcp">
1254 <dia:int val="1"/>
1255 </dia:attribute>
1256 <dia:attribute name="line_color">
1257 <dia:color val="#e60505"/>
1258 </dia:attribute>
1259 <dia:attribute name="line_style">
1260 <dia:enum val="4"/>
1261 </dia:attribute>
1262 <dia:connections>
1263 <dia:connection handle="0" to="O38" connection="7"/>
1264 <dia:connection handle="1" to="O37" connection="7"/>
1265 </dia:connections>
1266 </dia:object>
1267 <dia:object type="Standard - Line" version="0" id="O42">
1268 <dia:attribute name="obj_pos">
1269 <dia:point val="37.85,16.2367"/>
1270 </dia:attribute>
1271 <dia:attribute name="obj_bb">
1272 <dia:rectangle val="25.3427,14.166;37.9073,16.294"/>
1273 </dia:attribute>
1274 <dia:attribute name="conn_endpoints">
1275 <dia:point val="37.85,16.2367"/>
1276 <dia:point val="25.4,14.2233"/>
1277 </dia:attribute>
1278 <dia:attribute name="numcp">
1279 <dia:int val="1"/>
1280 </dia:attribute>
1281 <dia:attribute name="line_color">
1282 <dia:color val="#e60505"/>
1283 </dia:attribute>
1284 <dia:attribute name="line_style">
1285 <dia:enum val="4"/>
1286 </dia:attribute>
1287 <dia:connections>
1288 <dia:connection handle="0" to="O38" connection="2"/>
1289 <dia:connection handle="1" to="O37" connection="2"/>
1290 </dia:connections>
1291 </dia:object>
1292 <dia:object type="Geometric - Perfect Circle" version="1" id="O43">
1293 <dia:attribute name="obj_pos">
1294 <dia:point val="40.347,16.7742"/>
1295 </dia:attribute>
1296 <dia:attribute name="obj_bb">
1297 <dia:rectangle val="40.297,16.7242;41.247,17.6742"/>
1298 </dia:attribute>
1299 <dia:attribute name="meta">
1300 <dia:composite type="dict"/>
1301 </dia:attribute>
1302 <dia:attribute name="elem_corner">
1303 <dia:point val="40.347,16.7742"/>
1304 </dia:attribute>
1305 <dia:attribute name="elem_width">
1306 <dia:real val="0.84999999999999787"/>
1307 </dia:attribute>
1308 <dia:attribute name="elem_height">
1309 <dia:real val="0.84999999999999787"/>
1310 </dia:attribute>
1311 <dia:attribute name="line_width">
1312 <dia:real val="0.10000000000000001"/>
1313 </dia:attribute>
1314 <dia:attribute name="line_colour">
1315 <dia:color val="#000000"/>
1316 </dia:attribute>
1317 <dia:attribute name="fill_colour">
1318 <dia:color val="#ffffff"/>
1319 </dia:attribute>
1320 <dia:attribute name="show_background">
1321 <dia:boolean val="true"/>
1322 </dia:attribute>
1323 <dia:attribute name="line_style">
1324 <dia:enum val="0"/>
1325 <dia:real val="1"/>
1326 </dia:attribute>
1327 <dia:attribute name="flip_horizontal">
1328 <dia:boolean val="false"/>
1329 </dia:attribute>
1330 <dia:attribute name="flip_vertical">
1331 <dia:boolean val="false"/>
1332 </dia:attribute>
1333 <dia:attribute name="subscale">
1334 <dia:real val="1"/>
1335 </dia:attribute>
1336 </dia:object>
1337 <dia:object type="Standard - Line" version="0" id="O44">
1338 <dia:attribute name="obj_pos">
1339 <dia:point val="41.197,17.1992"/>
1340 </dia:attribute>
1341 <dia:attribute name="obj_bb">
1342 <dia:rectangle val="41.147,16.8388;49.6123,17.5624"/>
1343 </dia:attribute>
1344 <dia:attribute name="conn_endpoints">
1345 <dia:point val="41.197,17.1992"/>
1346 <dia:point val="49.5005,17.2007"/>
1347 </dia:attribute>
1348 <dia:attribute name="numcp">
1349 <dia:int val="1"/>
1350 </dia:attribute>
1351 <dia:attribute name="end_arrow">
1352 <dia:enum val="22"/>
1353 </dia:attribute>
1354 <dia:attribute name="end_arrow_length">
1355 <dia:real val="0.5"/>
1356 </dia:attribute>
1357 <dia:attribute name="end_arrow_width">
1358 <dia:real val="0.5"/>
1359 </dia:attribute>
1360 <dia:connections>
1361 <dia:connection handle="0" to="O43" connection="3"/>
1362 </dia:connections>
1363 </dia:object>
1364 <dia:object type="Standard - Text" version="1" id="O45">
1365 <dia:attribute name="obj_pos">
1366 <dia:point val="42.4624,16.69"/>
1367 </dia:attribute>
1368 <dia:attribute name="obj_bb">
1369 <dia:rectangle val="42.4624,16.095;47.1074,16.8425"/>
1370 </dia:attribute>
1371 <dia:attribute name="text">
1372 <dia:composite type="text">
1373 <dia:attribute name="string">
1374 <dia:string>#pad 3 (source)#</dia:string>
1375 </dia:attribute>
1376 <dia:attribute name="font">
1377 <dia:font family="sans" style="0" name="Helvetica"/>
1378 </dia:attribute>
1379 <dia:attribute name="height">
1380 <dia:real val="0.80000000000000004"/>
1381 </dia:attribute>
1382 <dia:attribute name="pos">
1383 <dia:point val="42.4624,16.69"/>
1384 </dia:attribute>
1385 <dia:attribute name="color">
1386 <dia:color val="#000000"/>
1387 </dia:attribute>
1388 <dia:attribute name="alignment">
1389 <dia:enum val="0"/>
1390 </dia:attribute>
1391 </dia:composite>
1392 </dia:attribute>
1393 <dia:attribute name="valign">
1394 <dia:enum val="3"/>
1395 </dia:attribute>
1396 </dia:object>
1397 <dia:object type="Standard - Text" version="1" id="O46">
1398 <dia:attribute name="obj_pos">
1399 <dia:point val="9.85,4.55"/>
1400 </dia:attribute>
1401 <dia:attribute name="obj_bb">
1402 <dia:rectangle val="9.85,3.955;12.7275,6.3025"/>
1403 </dia:attribute>
1404 <dia:attribute name="text">
1405 <dia:composite type="text">
1406 <dia:attribute name="string">
1407 <dia:string>#sink
1408crop
1409selection#</dia:string>
1410 </dia:attribute>
1411 <dia:attribute name="font">
1412 <dia:font family="sans" style="0" name="Helvetica"/>
1413 </dia:attribute>
1414 <dia:attribute name="height">
1415 <dia:real val="0.80000000000000004"/>
1416 </dia:attribute>
1417 <dia:attribute name="pos">
1418 <dia:point val="9.85,4.55"/>
1419 </dia:attribute>
1420 <dia:attribute name="color">
1421 <dia:color val="#0000ff"/>
1422 </dia:attribute>
1423 <dia:attribute name="alignment">
1424 <dia:enum val="0"/>
1425 </dia:attribute>
1426 </dia:composite>
1427 </dia:attribute>
1428 <dia:attribute name="valign">
1429 <dia:enum val="3"/>
1430 </dia:attribute>
1431 </dia:object>
1432 <dia:object type="Standard - Text" version="1" id="O47">
1433 <dia:attribute name="obj_pos">
1434 <dia:point val="27.65,4.75"/>
1435 </dia:attribute>
1436 <dia:attribute name="obj_bb">
1437 <dia:rectangle val="27.65,4.155;30.5275,6.5025"/>
1438 </dia:attribute>
1439 <dia:attribute name="text">
1440 <dia:composite type="text">
1441 <dia:attribute name="string">
1442 <dia:string>#source
1443crop
1444selection#</dia:string>
1445 </dia:attribute>
1446 <dia:attribute name="font">
1447 <dia:font family="sans" style="0" name="Helvetica"/>
1448 </dia:attribute>
1449 <dia:attribute name="height">
1450 <dia:real val="0.80000000000000004"/>
1451 </dia:attribute>
1452 <dia:attribute name="pos">
1453 <dia:point val="27.65,4.75"/>
1454 </dia:attribute>
1455 <dia:attribute name="color">
1456 <dia:color val="#a020f0"/>
1457 </dia:attribute>
1458 <dia:attribute name="alignment">
1459 <dia:enum val="0"/>
1460 </dia:attribute>
1461 </dia:composite>
1462 </dia:attribute>
1463 <dia:attribute name="valign">
1464 <dia:enum val="3"/>
1465 </dia:attribute>
1466 </dia:object>
1467 <dia:object type="Standard - Line" version="0" id="O48">
1468 <dia:attribute name="obj_pos">
1469 <dia:point val="10.55,6.6"/>
1470 </dia:attribute>
1471 <dia:attribute name="obj_bb">
1472 <dia:rectangle val="7.7135,6.39438;10.6035,7.11605"/>
1473 </dia:attribute>
1474 <dia:attribute name="conn_endpoints">
1475 <dia:point val="10.55,6.6"/>
1476 <dia:point val="7.825,6.8"/>
1477 </dia:attribute>
1478 <dia:attribute name="numcp">
1479 <dia:int val="1"/>
1480 </dia:attribute>
1481 <dia:attribute name="line_color">
1482 <dia:color val="#0000ff"/>
1483 </dia:attribute>
1484 <dia:attribute name="end_arrow">
1485 <dia:enum val="22"/>
1486 </dia:attribute>
1487 <dia:attribute name="end_arrow_length">
1488 <dia:real val="0.5"/>
1489 </dia:attribute>
1490 <dia:attribute name="end_arrow_width">
1491 <dia:real val="0.5"/>
1492 </dia:attribute>
1493 <dia:connections>
1494 <dia:connection handle="1" to="O9" connection="2"/>
1495 </dia:connections>
1496 </dia:object>
1497 <dia:object type="Standard - Line" version="0" id="O49">
1498 <dia:attribute name="obj_pos">
1499 <dia:point val="10.45,6.55"/>
1500 </dia:attribute>
1501 <dia:attribute name="obj_bb">
1502 <dia:rectangle val="5.48029,6.48236;10.5176,15.8387"/>
1503 </dia:attribute>
1504 <dia:attribute name="conn_endpoints">
1505 <dia:point val="10.45,6.55"/>
1506 <dia:point val="5.55,15.74"/>
1507 </dia:attribute>
1508 <dia:attribute name="numcp">
1509 <dia:int val="1"/>
1510 </dia:attribute>
1511 <dia:attribute name="line_color">
1512 <dia:color val="#0000ff"/>
1513 </dia:attribute>
1514 <dia:attribute name="end_arrow">
1515 <dia:enum val="22"/>
1516 </dia:attribute>
1517 <dia:attribute name="end_arrow_length">
1518 <dia:real val="0.5"/>
1519 </dia:attribute>
1520 <dia:attribute name="end_arrow_width">
1521 <dia:real val="0.5"/>
1522 </dia:attribute>
1523 <dia:connections>
1524 <dia:connection handle="1" to="O30" connection="2"/>
1525 </dia:connections>
1526 </dia:object>
1527 <dia:object type="Standard - Line" version="0" id="O50">
1528 <dia:attribute name="obj_pos">
1529 <dia:point val="27.5246,6.66071"/>
1530 </dia:attribute>
1531 <dia:attribute name="obj_bb">
1532 <dia:rectangle val="25.406,6.59136;27.594,9.82122"/>
1533 </dia:attribute>
1534 <dia:attribute name="conn_endpoints">
1535 <dia:point val="27.5246,6.66071"/>
1536 <dia:point val="25.4754,9.72825"/>
1537 </dia:attribute>
1538 <dia:attribute name="numcp">
1539 <dia:int val="1"/>
1540 </dia:attribute>
1541 <dia:attribute name="line_color">
1542 <dia:color val="#a020f0"/>
1543 </dia:attribute>
1544 <dia:attribute name="end_arrow">
1545 <dia:enum val="22"/>
1546 </dia:attribute>
1547 <dia:attribute name="end_arrow_length">
1548 <dia:real val="0.5"/>
1549 </dia:attribute>
1550 <dia:attribute name="end_arrow_width">
1551 <dia:real val="0.5"/>
1552 </dia:attribute>
1553 <dia:connections>
1554 <dia:connection handle="1" to="O18" connection="2"/>
1555 </dia:connections>
1556 </dia:object>
1557 <dia:object type="Standard - Line" version="0" id="O51">
1558 <dia:attribute name="obj_pos">
1559 <dia:point val="27.5036,6.68935"/>
1560 </dia:attribute>
1561 <dia:attribute name="obj_bb">
1562 <dia:rectangle val="25.2161,6.62775;27.5652,14.331"/>
1563 </dia:attribute>
1564 <dia:attribute name="conn_endpoints">
1565 <dia:point val="27.5036,6.68935"/>
1566 <dia:point val="25.4,14.2233"/>
1567 </dia:attribute>
1568 <dia:attribute name="numcp">
1569 <dia:int val="1"/>
1570 </dia:attribute>
1571 <dia:attribute name="line_color">
1572 <dia:color val="#a020f0"/>
1573 </dia:attribute>
1574 <dia:attribute name="end_arrow">
1575 <dia:enum val="22"/>
1576 </dia:attribute>
1577 <dia:attribute name="end_arrow_length">
1578 <dia:real val="0.5"/>
1579 </dia:attribute>
1580 <dia:attribute name="end_arrow_width">
1581 <dia:real val="0.5"/>
1582 </dia:attribute>
1583 <dia:connections>
1584 <dia:connection handle="1" to="O37" connection="2"/>
1585 </dia:connections>
1586 </dia:object>
1587 </dia:layer>
1588</dia:diagram>
diff --git a/Documentation/DocBook/media/v4l/subdev-image-processing-full.svg b/Documentation/DocBook/media/v4l/subdev-image-processing-full.svg
new file mode 100644
index 000000000000..3322cf4c0093
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/subdev-image-processing-full.svg
@@ -0,0 +1,163 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
3<svg width="59cm" height="18cm" viewBox="-186 71 1178 346" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
4 <g>
5 <rect style="fill: #ffffff" x="318.9" y="129" width="208.1" height="249"/>
6 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff765a" x="318.9" y="129" width="208.1" height="249"/>
7 </g>
8 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="-2" y="73" width="806" height="343"/>
9 <g>
10 <ellipse style="fill: #ffffff" cx="-12.5" cy="166.712" rx="8.5" ry="8.5"/>
11 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-12.5" cy="166.712" rx="8.5" ry="8.5"/>
12 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-12.5" cy="166.712" rx="8.5" ry="8.5"/>
13 </g>
14 <g>
15 <ellipse style="fill: #ffffff" cx="815.232" cy="205.184" rx="8.5" ry="8.5"/>
16 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="815.232" cy="205.184" rx="8.5" ry="8.5"/>
17 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="815.232" cy="205.184" rx="8.5" ry="8.5"/>
18 </g>
19 <g>
20 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="-184.5" y1="167" x2="-30.7361" y2="166.729"/>
21 <polygon style="fill: #000000" points="-23.2361,166.716 -33.2272,171.734 -30.7361,166.729 -33.2449,161.734 "/>
22 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-23.2361,166.716 -33.2272,171.734 -30.7361,166.729 -33.2449,161.734 "/>
23 </g>
24 <g>
25 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="823.732" y1="205.184" x2="980.066" y2="205.212"/>
26 <polygon style="fill: #000000" points="987.566,205.214 977.565,210.212 980.066,205.212 977.567,200.212 "/>
27 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="987.566,205.214 977.565,210.212 980.066,205.212 977.567,200.212 "/>
28 </g>
29 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="-139.96" y="155">
30 <tspan x="-139.96" y="155">pad 0 (sink)</tspan>
31 </text>
32 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="849.04" y="195">
33 <tspan x="849.04" y="195">pad 2 (source)</tspan>
34 </text>
35 <g>
36 <rect style="fill: #ffffff" x="5.5" y="120" width="159" height="104"/>
37 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a52a2a" x="5.5" y="120" width="159" height="104"/>
38 </g>
39 <g>
40 <rect style="fill: #ffffff" x="62.5" y="136" width="94" height="77"/>
41 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x="62.5" y="136" width="94" height="77"/>
42 </g>
43 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="30.5" y="89">
44 <tspan x="30.5" y="89"></tspan>
45 </text>
46 <text style="fill: #a52a2a;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="9.53836" y="88.9138">
47 <tspan x="9.53836" y="88.9138">sink media</tspan>
48 <tspan x="9.53836" y="104.914">bus format</tspan>
49 </text>
50 <g>
51 <rect style="fill: #ffffff" x="333.644" y="185.65" width="165.2" height="172.478"/>
52 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #00ff00" x="333.644" y="185.65" width="165.2" height="172.478"/>
53 </g>
54 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="333.644" y1="358.128" x2="62.5" y2="213"/>
55 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="333.644" y1="185.65" x2="62.5" y2="136"/>
56 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="498.844" y1="358.128" x2="156.5" y2="213"/>
57 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="498.844" y1="185.65" x2="156.5" y2="136"/>
58 <text style="fill: #00ff00;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="334.704" y="149.442">
59 <tspan x="334.704" y="149.442">sink compose</tspan>
60 <tspan x="334.704" y="165.442">selection (scaling)</tspan>
61 </text>
62 <g>
63 <rect style="fill: #ffffff" x="409.322" y="194.565" width="100.186" height="71.4523"/>
64 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x="409.322" y="194.565" width="100.186" height="71.4523"/>
65 </g>
66 <text style="fill: #8b6914;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="689.5" y="105.128">
67 <tspan x="689.5" y="105.128">source media</tspan>
68 <tspan x="689.5" y="121.128">bus format</tspan>
69 </text>
70 <g>
71 <rect style="fill: #ffffff" x="688.488" y="173.834" width="100.186" height="71.4523"/>
72 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="688.488" y="173.834" width="100.186" height="71.4523"/>
73 </g>
74 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="688.488" y1="245.286" x2="409.322" y2="266.018"/>
75 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="688.488" y1="173.834" x2="409.322" y2="194.565"/>
76 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="788.674" y1="245.286" x2="509.508" y2="266.018"/>
77 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="788.674" y1="173.834" x2="509.508" y2="194.565"/>
78 <text style="fill: #ff765a;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="325" y="103">
79 <tspan x="325" y="103">sink compose</tspan>
80 <tspan x="325" y="119">bounds selection</tspan>
81 </text>
82 <g>
83 <ellipse style="fill: #ffffff" cx="-12.0982" cy="341.512" rx="8.5" ry="8.5"/>
84 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-12.0982" cy="341.512" rx="8.5" ry="8.5"/>
85 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-12.0982" cy="341.512" rx="8.5" ry="8.5"/>
86 </g>
87 <g>
88 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="-184.098" y1="341.8" x2="-30.3343" y2="341.529"/>
89 <polygon style="fill: #000000" points="-22.8343,341.516 -32.8254,346.534 -30.3343,341.529 -32.8431,336.534 "/>
90 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-22.8343,341.516 -32.8254,346.534 -30.3343,341.529 -32.8431,336.534 "/>
91 </g>
92 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="-139" y="329">
93 <tspan x="-139" y="329">pad 1 (sink)</tspan>
94 </text>
95 <g>
96 <rect style="fill: #ffffff" x="7.80824" y="292.8" width="112.092" height="82.2"/>
97 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a52a2a" x="7.80824" y="292.8" width="112.092" height="82.2"/>
98 </g>
99 <g>
100 <rect style="fill: #ffffff" x="52.9" y="314.8" width="58.1" height="50.2"/>
101 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x="52.9" y="314.8" width="58.1" height="50.2"/>
102 </g>
103 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="31.9" y="259.8">
104 <tspan x="31.9" y="259.8"></tspan>
105 </text>
106 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="358.9" y1="251.9" x2="52.9" y2="314.8"/>
107 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="358.9" y1="316" x2="52.9" y2="365"/>
108 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="434" y1="316" x2="111" y2="365"/>
109 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="434" y1="251.9" x2="111" y2="314.8"/>
110 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #00ff00" x="358.9" y="251.9" width="75.1" height="64.1"/>
111 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x="443.262" y="284.466" width="64.738" height="48.534"/>
112 <g>
113 <rect style="fill: #ffffff" x="693.428" y="324.734" width="63.572" height="49.266"/>
114 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="693.428" y="324.734" width="63.572" height="49.266"/>
115 </g>
116 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="693.428" y1="374" x2="443.262" y2="333"/>
117 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="693.428" y1="324.734" x2="443.262" y2="284.466"/>
118 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="757" y1="374" x2="508" y2="333"/>
119 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="757" y1="324.734" x2="508" y2="284.466"/>
120 <g>
121 <ellipse style="fill: #ffffff" cx="815.44" cy="343.984" rx="8.5" ry="8.5"/>
122 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="815.44" cy="343.984" rx="8.5" ry="8.5"/>
123 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="815.44" cy="343.984" rx="8.5" ry="8.5"/>
124 </g>
125 <g>
126 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="823.94" y1="343.984" x2="980.274" y2="344.012"/>
127 <polygon style="fill: #000000" points="987.774,344.014 977.773,349.012 980.274,344.012 977.775,339.012 "/>
128 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="987.774,344.014 977.773,349.012 980.274,344.012 977.775,339.012 "/>
129 </g>
130 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="849.248" y="333.8">
131 <tspan x="849.248" y="333.8">pad 3 (source)</tspan>
132 </text>
133 <text style="fill: #0000ff;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="197" y="91">
134 <tspan x="197" y="91">sink</tspan>
135 <tspan x="197" y="107">crop</tspan>
136 <tspan x="197" y="123">selection</tspan>
137 </text>
138 <text style="fill: #a020f0;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="553" y="95">
139 <tspan x="553" y="95">source</tspan>
140 <tspan x="553" y="111">crop</tspan>
141 <tspan x="553" y="127">selection</tspan>
142 </text>
143 <g>
144 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x1="211" y1="132" x2="166.21" y2="135.287"/>
145 <polygon style="fill: #0000ff" points="158.73,135.836 168.337,130.118 166.21,135.287 169.069,140.091 "/>
146 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" points="158.73,135.836 168.337,130.118 166.21,135.287 169.069,140.091 "/>
147 </g>
148 <g>
149 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x1="209" y1="131" x2="115.581" y2="306.209"/>
150 <polygon style="fill: #0000ff" points="112.052,312.827 112.345,301.65 115.581,306.209 121.169,306.355 "/>
151 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" points="112.052,312.827 112.345,301.65 115.581,306.209 121.169,306.355 "/>
152 </g>
153 <g>
154 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x1="550.492" y1="133.214" x2="514.916" y2="186.469"/>
155 <polygon style="fill: #a020f0" points="510.75,192.706 512.147,181.613 514.916,186.469 520.463,187.168 "/>
156 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" points="510.75,192.706 512.147,181.613 514.916,186.469 520.463,187.168 "/>
157 </g>
158 <g>
159 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x1="550.072" y1="133.787" x2="510.618" y2="275.089"/>
160 <polygon style="fill: #a020f0" points="508.601,282.312 506.475,271.336 510.618,275.089 516.106,274.025 "/>
161 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" points="508.601,282.312 506.475,271.336 510.618,275.089 516.106,274.025 "/>
162 </g>
163</svg>
diff --git a/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.dia b/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.dia
new file mode 100644
index 000000000000..0cd50a7bda80
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.dia
@@ -0,0 +1,1152 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
3 <dia:diagramdata>
4 <dia:attribute name="background">
5 <dia:color val="#ffffff"/>
6 </dia:attribute>
7 <dia:attribute name="pagebreak">
8 <dia:color val="#000099"/>
9 </dia:attribute>
10 <dia:attribute name="paper">
11 <dia:composite type="paper">
12 <dia:attribute name="name">
13 <dia:string>#A4#</dia:string>
14 </dia:attribute>
15 <dia:attribute name="tmargin">
16 <dia:real val="2.8222000598907471"/>
17 </dia:attribute>
18 <dia:attribute name="bmargin">
19 <dia:real val="2.8222000598907471"/>
20 </dia:attribute>
21 <dia:attribute name="lmargin">
22 <dia:real val="2.8222000598907471"/>
23 </dia:attribute>
24 <dia:attribute name="rmargin">
25 <dia:real val="2.8222000598907471"/>
26 </dia:attribute>
27 <dia:attribute name="is_portrait">
28 <dia:boolean val="false"/>
29 </dia:attribute>
30 <dia:attribute name="scaling">
31 <dia:real val="0.49000000953674316"/>
32 </dia:attribute>
33 <dia:attribute name="fitto">
34 <dia:boolean val="false"/>
35 </dia:attribute>
36 </dia:composite>
37 </dia:attribute>
38 <dia:attribute name="grid">
39 <dia:composite type="grid">
40 <dia:attribute name="width_x">
41 <dia:real val="1"/>
42 </dia:attribute>
43 <dia:attribute name="width_y">
44 <dia:real val="1"/>
45 </dia:attribute>
46 <dia:attribute name="visible_x">
47 <dia:int val="1"/>
48 </dia:attribute>
49 <dia:attribute name="visible_y">
50 <dia:int val="1"/>
51 </dia:attribute>
52 <dia:composite type="color"/>
53 </dia:composite>
54 </dia:attribute>
55 <dia:attribute name="color">
56 <dia:color val="#d8e5e5"/>
57 </dia:attribute>
58 <dia:attribute name="guides">
59 <dia:composite type="guides">
60 <dia:attribute name="hguides"/>
61 <dia:attribute name="vguides"/>
62 </dia:composite>
63 </dia:attribute>
64 </dia:diagramdata>
65 <dia:layer name="Background" visible="true" active="true">
66 <dia:object type="Standard - Box" version="0" id="O0">
67 <dia:attribute name="obj_pos">
68 <dia:point val="-0.4,6.5"/>
69 </dia:attribute>
70 <dia:attribute name="obj_bb">
71 <dia:rectangle val="-0.45,6.45;39.95,22.9"/>
72 </dia:attribute>
73 <dia:attribute name="elem_corner">
74 <dia:point val="-0.4,6.5"/>
75 </dia:attribute>
76 <dia:attribute name="elem_width">
77 <dia:real val="40.299999999999997"/>
78 </dia:attribute>
79 <dia:attribute name="elem_height">
80 <dia:real val="16.349999999999998"/>
81 </dia:attribute>
82 <dia:attribute name="border_width">
83 <dia:real val="0.10000000149011612"/>
84 </dia:attribute>
85 <dia:attribute name="show_background">
86 <dia:boolean val="false"/>
87 </dia:attribute>
88 </dia:object>
89 <dia:object type="Standard - Box" version="0" id="O1">
90 <dia:attribute name="obj_pos">
91 <dia:point val="0.225,9.45"/>
92 </dia:attribute>
93 <dia:attribute name="obj_bb">
94 <dia:rectangle val="0.175,9.4;8.225,14.7"/>
95 </dia:attribute>
96 <dia:attribute name="elem_corner">
97 <dia:point val="0.225,9.45"/>
98 </dia:attribute>
99 <dia:attribute name="elem_width">
100 <dia:real val="7.9499999999999975"/>
101 </dia:attribute>
102 <dia:attribute name="elem_height">
103 <dia:real val="5.1999999999999975"/>
104 </dia:attribute>
105 <dia:attribute name="border_width">
106 <dia:real val="0.10000000149011612"/>
107 </dia:attribute>
108 <dia:attribute name="border_color">
109 <dia:color val="#a52a2a"/>
110 </dia:attribute>
111 <dia:attribute name="show_background">
112 <dia:boolean val="true"/>
113 </dia:attribute>
114 </dia:object>
115 <dia:object type="Standard - Box" version="0" id="O2">
116 <dia:attribute name="obj_pos">
117 <dia:point val="2.475,10.2"/>
118 </dia:attribute>
119 <dia:attribute name="obj_bb">
120 <dia:rectangle val="2.425,10.15;7.225,14.1"/>
121 </dia:attribute>
122 <dia:attribute name="elem_corner">
123 <dia:point val="2.475,10.2"/>
124 </dia:attribute>
125 <dia:attribute name="elem_width">
126 <dia:real val="4.6999999999999975"/>
127 </dia:attribute>
128 <dia:attribute name="elem_height">
129 <dia:real val="3.8499999999999979"/>
130 </dia:attribute>
131 <dia:attribute name="border_width">
132 <dia:real val="0.10000000149011612"/>
133 </dia:attribute>
134 <dia:attribute name="border_color">
135 <dia:color val="#0000ff"/>
136 </dia:attribute>
137 <dia:attribute name="show_background">
138 <dia:boolean val="true"/>
139 </dia:attribute>
140 </dia:object>
141 <dia:object type="Standard - Text" version="1" id="O3">
142 <dia:attribute name="obj_pos">
143 <dia:point val="3,11.2"/>
144 </dia:attribute>
145 <dia:attribute name="obj_bb">
146 <dia:rectangle val="3,10.605;5.8775,12.9525"/>
147 </dia:attribute>
148 <dia:attribute name="text">
149 <dia:composite type="text">
150 <dia:attribute name="string">
151 <dia:string>#sink
152crop
153selection#</dia:string>
154 </dia:attribute>
155 <dia:attribute name="font">
156 <dia:font family="sans" style="0" name="Helvetica"/>
157 </dia:attribute>
158 <dia:attribute name="height">
159 <dia:real val="0.80000000000000004"/>
160 </dia:attribute>
161 <dia:attribute name="pos">
162 <dia:point val="3,11.2"/>
163 </dia:attribute>
164 <dia:attribute name="color">
165 <dia:color val="#0000ff"/>
166 </dia:attribute>
167 <dia:attribute name="alignment">
168 <dia:enum val="0"/>
169 </dia:attribute>
170 </dia:composite>
171 </dia:attribute>
172 <dia:attribute name="valign">
173 <dia:enum val="3"/>
174 </dia:attribute>
175 </dia:object>
176 <dia:object type="Standard - Text" version="1" id="O4">
177 <dia:attribute name="obj_pos">
178 <dia:point val="1.475,7.9"/>
179 </dia:attribute>
180 <dia:attribute name="obj_bb">
181 <dia:rectangle val="1.475,7.305;1.475,8.0525"/>
182 </dia:attribute>
183 <dia:attribute name="text">
184 <dia:composite type="text">
185 <dia:attribute name="string">
186 <dia:string>##</dia:string>
187 </dia:attribute>
188 <dia:attribute name="font">
189 <dia:font family="sans" style="0" name="Helvetica"/>
190 </dia:attribute>
191 <dia:attribute name="height">
192 <dia:real val="0.80000000000000004"/>
193 </dia:attribute>
194 <dia:attribute name="pos">
195 <dia:point val="1.475,7.9"/>
196 </dia:attribute>
197 <dia:attribute name="color">
198 <dia:color val="#000000"/>
199 </dia:attribute>
200 <dia:attribute name="alignment">
201 <dia:enum val="0"/>
202 </dia:attribute>
203 </dia:composite>
204 </dia:attribute>
205 <dia:attribute name="valign">
206 <dia:enum val="3"/>
207 </dia:attribute>
208 </dia:object>
209 <dia:object type="Standard - Text" version="1" id="O5">
210 <dia:attribute name="obj_pos">
211 <dia:point val="0.426918,7.89569"/>
212 </dia:attribute>
213 <dia:attribute name="obj_bb">
214 <dia:rectangle val="0.426918,7.30069;3.90942,8.84819"/>
215 </dia:attribute>
216 <dia:attribute name="text">
217 <dia:composite type="text">
218 <dia:attribute name="string">
219 <dia:string>#sink media
220bus format#</dia:string>
221 </dia:attribute>
222 <dia:attribute name="font">
223 <dia:font family="sans" style="0" name="Helvetica"/>
224 </dia:attribute>
225 <dia:attribute name="height">
226 <dia:real val="0.80000000000000004"/>
227 </dia:attribute>
228 <dia:attribute name="pos">
229 <dia:point val="0.426918,7.89569"/>
230 </dia:attribute>
231 <dia:attribute name="color">
232 <dia:color val="#a52a2a"/>
233 </dia:attribute>
234 <dia:attribute name="alignment">
235 <dia:enum val="0"/>
236 </dia:attribute>
237 </dia:composite>
238 </dia:attribute>
239 <dia:attribute name="valign">
240 <dia:enum val="3"/>
241 </dia:attribute>
242 </dia:object>
243 <dia:object type="Standard - Box" version="0" id="O6">
244 <dia:attribute name="obj_pos">
245 <dia:point val="16.6822,9.28251"/>
246 </dia:attribute>
247 <dia:attribute name="obj_bb">
248 <dia:rectangle val="16.6322,9.23251;24.9922,17.9564"/>
249 </dia:attribute>
250 <dia:attribute name="elem_corner">
251 <dia:point val="16.6822,9.28251"/>
252 </dia:attribute>
253 <dia:attribute name="elem_width">
254 <dia:real val="8.2600228398861297"/>
255 </dia:attribute>
256 <dia:attribute name="elem_height">
257 <dia:real val="8.6238900617957164"/>
258 </dia:attribute>
259 <dia:attribute name="border_width">
260 <dia:real val="0.10000000149011612"/>
261 </dia:attribute>
262 <dia:attribute name="border_color">
263 <dia:color val="#00ff00"/>
264 </dia:attribute>
265 <dia:attribute name="show_background">
266 <dia:boolean val="true"/>
267 </dia:attribute>
268 </dia:object>
269 <dia:object type="Standard - Line" version="0" id="O7">
270 <dia:attribute name="obj_pos">
271 <dia:point val="16.6822,17.9064"/>
272 </dia:attribute>
273 <dia:attribute name="obj_bb">
274 <dia:rectangle val="2.41365,13.9886;16.7436,17.9678"/>
275 </dia:attribute>
276 <dia:attribute name="conn_endpoints">
277 <dia:point val="16.6822,17.9064"/>
278 <dia:point val="2.475,14.05"/>
279 </dia:attribute>
280 <dia:attribute name="numcp">
281 <dia:int val="1"/>
282 </dia:attribute>
283 <dia:attribute name="line_color">
284 <dia:color val="#e60505"/>
285 </dia:attribute>
286 <dia:attribute name="line_style">
287 <dia:enum val="4"/>
288 </dia:attribute>
289 <dia:connections>
290 <dia:connection handle="0" to="O6" connection="5"/>
291 <dia:connection handle="1" to="O2" connection="5"/>
292 </dia:connections>
293 </dia:object>
294 <dia:object type="Standard - Line" version="0" id="O8">
295 <dia:attribute name="obj_pos">
296 <dia:point val="16.6822,9.28251"/>
297 </dia:attribute>
298 <dia:attribute name="obj_bb">
299 <dia:rectangle val="2.42188,9.22939;16.7353,10.2531"/>
300 </dia:attribute>
301 <dia:attribute name="conn_endpoints">
302 <dia:point val="16.6822,9.28251"/>
303 <dia:point val="2.475,10.2"/>
304 </dia:attribute>
305 <dia:attribute name="numcp">
306 <dia:int val="1"/>
307 </dia:attribute>
308 <dia:attribute name="line_color">
309 <dia:color val="#e60505"/>
310 </dia:attribute>
311 <dia:attribute name="line_style">
312 <dia:enum val="4"/>
313 </dia:attribute>
314 <dia:connections>
315 <dia:connection handle="0" to="O6" connection="0"/>
316 <dia:connection handle="1" to="O2" connection="0"/>
317 </dia:connections>
318 </dia:object>
319 <dia:object type="Standard - Line" version="0" id="O9">
320 <dia:attribute name="obj_pos">
321 <dia:point val="24.9422,17.9064"/>
322 </dia:attribute>
323 <dia:attribute name="obj_bb">
324 <dia:rectangle val="7.11553,13.9905;25.0017,17.9659"/>
325 </dia:attribute>
326 <dia:attribute name="conn_endpoints">
327 <dia:point val="24.9422,17.9064"/>
328 <dia:point val="7.175,14.05"/>
329 </dia:attribute>
330 <dia:attribute name="numcp">
331 <dia:int val="1"/>
332 </dia:attribute>
333 <dia:attribute name="line_color">
334 <dia:color val="#e60505"/>
335 </dia:attribute>
336 <dia:attribute name="line_style">
337 <dia:enum val="4"/>
338 </dia:attribute>
339 <dia:connections>
340 <dia:connection handle="0" to="O6" connection="7"/>
341 <dia:connection handle="1" to="O2" connection="7"/>
342 </dia:connections>
343 </dia:object>
344 <dia:object type="Standard - Line" version="0" id="O10">
345 <dia:attribute name="obj_pos">
346 <dia:point val="24.9422,9.28251"/>
347 </dia:attribute>
348 <dia:attribute name="obj_bb">
349 <dia:rectangle val="7.12249,9.23;24.9947,10.2525"/>
350 </dia:attribute>
351 <dia:attribute name="conn_endpoints">
352 <dia:point val="24.9422,9.28251"/>
353 <dia:point val="7.175,10.2"/>
354 </dia:attribute>
355 <dia:attribute name="numcp">
356 <dia:int val="1"/>
357 </dia:attribute>
358 <dia:attribute name="line_color">
359 <dia:color val="#e60505"/>
360 </dia:attribute>
361 <dia:attribute name="line_style">
362 <dia:enum val="4"/>
363 </dia:attribute>
364 <dia:connections>
365 <dia:connection handle="0" to="O6" connection="2"/>
366 <dia:connection handle="1" to="O2" connection="2"/>
367 </dia:connections>
368 </dia:object>
369 <dia:object type="Standard - Text" version="1" id="O11">
370 <dia:attribute name="obj_pos">
371 <dia:point val="16.7352,7.47209"/>
372 </dia:attribute>
373 <dia:attribute name="obj_bb">
374 <dia:rectangle val="16.7352,6.87709;22.5602,8.42459"/>
375 </dia:attribute>
376 <dia:attribute name="text">
377 <dia:composite type="text">
378 <dia:attribute name="string">
379 <dia:string>#sink compose
380selection (scaling)#</dia:string>
381 </dia:attribute>
382 <dia:attribute name="font">
383 <dia:font family="sans" style="0" name="Helvetica"/>
384 </dia:attribute>
385 <dia:attribute name="height">
386 <dia:real val="0.80000000000000004"/>
387 </dia:attribute>
388 <dia:attribute name="pos">
389 <dia:point val="16.7352,7.47209"/>
390 </dia:attribute>
391 <dia:attribute name="color">
392 <dia:color val="#00ff00"/>
393 </dia:attribute>
394 <dia:attribute name="alignment">
395 <dia:enum val="0"/>
396 </dia:attribute>
397 </dia:composite>
398 </dia:attribute>
399 <dia:attribute name="valign">
400 <dia:enum val="3"/>
401 </dia:attribute>
402 </dia:object>
403 <dia:object type="Standard - Box" version="0" id="O12">
404 <dia:attribute name="obj_pos">
405 <dia:point val="19.1161,9.97825"/>
406 </dia:attribute>
407 <dia:attribute name="obj_bb">
408 <dia:rectangle val="19.0661,9.92825;24.1754,13.6009"/>
409 </dia:attribute>
410 <dia:attribute name="elem_corner">
411 <dia:point val="19.1161,9.97825"/>
412 </dia:attribute>
413 <dia:attribute name="elem_width">
414 <dia:real val="5.009308462554376"/>
415 </dia:attribute>
416 <dia:attribute name="elem_height">
417 <dia:real val="3.5726155970598077"/>
418 </dia:attribute>
419 <dia:attribute name="border_width">
420 <dia:real val="0.10000000149011612"/>
421 </dia:attribute>
422 <dia:attribute name="border_color">
423 <dia:color val="#a020f0"/>
424 </dia:attribute>
425 <dia:attribute name="show_background">
426 <dia:boolean val="true"/>
427 </dia:attribute>
428 </dia:object>
429 <dia:object type="Standard - Text" version="1" id="O13">
430 <dia:attribute name="obj_pos">
431 <dia:point val="27.1661,7.47209"/>
432 </dia:attribute>
433 <dia:attribute name="obj_bb">
434 <dia:rectangle val="27.1661,6.87709;30.0436,9.22459"/>
435 </dia:attribute>
436 <dia:attribute name="text">
437 <dia:composite type="text">
438 <dia:attribute name="string">
439 <dia:string>#source
440crop
441selection#</dia:string>
442 </dia:attribute>
443 <dia:attribute name="font">
444 <dia:font family="sans" style="0" name="Helvetica"/>
445 </dia:attribute>
446 <dia:attribute name="height">
447 <dia:real val="0.80000000000000004"/>
448 </dia:attribute>
449 <dia:attribute name="pos">
450 <dia:point val="27.1661,7.47209"/>
451 </dia:attribute>
452 <dia:attribute name="color">
453 <dia:color val="#a020f0"/>
454 </dia:attribute>
455 <dia:attribute name="alignment">
456 <dia:enum val="0"/>
457 </dia:attribute>
458 </dia:composite>
459 </dia:attribute>
460 <dia:attribute name="valign">
461 <dia:enum val="3"/>
462 </dia:attribute>
463 </dia:object>
464 <dia:object type="Standard - Text" version="1" id="O14">
465 <dia:attribute name="obj_pos">
466 <dia:point val="34.575,7.8564"/>
467 </dia:attribute>
468 <dia:attribute name="obj_bb">
469 <dia:rectangle val="34.575,7.2614;38.8975,8.8089"/>
470 </dia:attribute>
471 <dia:attribute name="text">
472 <dia:composite type="text">
473 <dia:attribute name="string">
474 <dia:string>#source media
475bus format#</dia:string>
476 </dia:attribute>
477 <dia:attribute name="font">
478 <dia:font family="sans" style="0" name="Helvetica"/>
479 </dia:attribute>
480 <dia:attribute name="height">
481 <dia:real val="0.80000000000000004"/>
482 </dia:attribute>
483 <dia:attribute name="pos">
484 <dia:point val="34.575,7.8564"/>
485 </dia:attribute>
486 <dia:attribute name="color">
487 <dia:color val="#8b6914"/>
488 </dia:attribute>
489 <dia:attribute name="alignment">
490 <dia:enum val="0"/>
491 </dia:attribute>
492 </dia:composite>
493 </dia:attribute>
494 <dia:attribute name="valign">
495 <dia:enum val="3"/>
496 </dia:attribute>
497 </dia:object>
498 <dia:object type="Standard - Box" version="0" id="O15">
499 <dia:attribute name="obj_pos">
500 <dia:point val="34.5244,11.2917"/>
501 </dia:attribute>
502 <dia:attribute name="obj_bb">
503 <dia:rectangle val="34.4744,11.2417;39.5837,14.9143"/>
504 </dia:attribute>
505 <dia:attribute name="elem_corner">
506 <dia:point val="34.5244,11.2917"/>
507 </dia:attribute>
508 <dia:attribute name="elem_width">
509 <dia:real val="5.009308462554376"/>
510 </dia:attribute>
511 <dia:attribute name="elem_height">
512 <dia:real val="3.5726155970598077"/>
513 </dia:attribute>
514 <dia:attribute name="border_width">
515 <dia:real val="0.10000000149011612"/>
516 </dia:attribute>
517 <dia:attribute name="border_color">
518 <dia:color val="#8b6914"/>
519 </dia:attribute>
520 <dia:attribute name="show_background">
521 <dia:boolean val="true"/>
522 </dia:attribute>
523 </dia:object>
524 <dia:object type="Standard - Line" version="0" id="O16">
525 <dia:attribute name="obj_pos">
526 <dia:point val="34.5244,14.8643"/>
527 </dia:attribute>
528 <dia:attribute name="obj_bb">
529 <dia:rectangle val="19.062,13.4968;34.5785,14.9184"/>
530 </dia:attribute>
531 <dia:attribute name="conn_endpoints">
532 <dia:point val="34.5244,14.8643"/>
533 <dia:point val="19.1161,13.5509"/>
534 </dia:attribute>
535 <dia:attribute name="numcp">
536 <dia:int val="1"/>
537 </dia:attribute>
538 <dia:attribute name="line_color">
539 <dia:color val="#e60505"/>
540 </dia:attribute>
541 <dia:attribute name="line_style">
542 <dia:enum val="4"/>
543 </dia:attribute>
544 <dia:connections>
545 <dia:connection handle="0" to="O15" connection="5"/>
546 <dia:connection handle="1" to="O12" connection="5"/>
547 </dia:connections>
548 </dia:object>
549 <dia:object type="Standard - Line" version="0" id="O17">
550 <dia:attribute name="obj_pos">
551 <dia:point val="34.5244,11.2917"/>
552 </dia:attribute>
553 <dia:attribute name="obj_bb">
554 <dia:rectangle val="19.062,9.92418;34.5785,11.3458"/>
555 </dia:attribute>
556 <dia:attribute name="conn_endpoints">
557 <dia:point val="34.5244,11.2917"/>
558 <dia:point val="19.1161,9.97825"/>
559 </dia:attribute>
560 <dia:attribute name="numcp">
561 <dia:int val="1"/>
562 </dia:attribute>
563 <dia:attribute name="line_color">
564 <dia:color val="#e60505"/>
565 </dia:attribute>
566 <dia:attribute name="line_style">
567 <dia:enum val="4"/>
568 </dia:attribute>
569 <dia:connections>
570 <dia:connection handle="0" to="O15" connection="0"/>
571 <dia:connection handle="1" to="O12" connection="0"/>
572 </dia:connections>
573 </dia:object>
574 <dia:object type="Standard - Line" version="0" id="O18">
575 <dia:attribute name="obj_pos">
576 <dia:point val="39.5337,14.8643"/>
577 </dia:attribute>
578 <dia:attribute name="obj_bb">
579 <dia:rectangle val="24.0713,13.4968;39.5878,14.9184"/>
580 </dia:attribute>
581 <dia:attribute name="conn_endpoints">
582 <dia:point val="39.5337,14.8643"/>
583 <dia:point val="24.1254,13.5509"/>
584 </dia:attribute>
585 <dia:attribute name="numcp">
586 <dia:int val="1"/>
587 </dia:attribute>
588 <dia:attribute name="line_color">
589 <dia:color val="#e60505"/>
590 </dia:attribute>
591 <dia:attribute name="line_style">
592 <dia:enum val="4"/>
593 </dia:attribute>
594 <dia:connections>
595 <dia:connection handle="0" to="O15" connection="7"/>
596 <dia:connection handle="1" to="O12" connection="7"/>
597 </dia:connections>
598 </dia:object>
599 <dia:object type="Standard - Line" version="0" id="O19">
600 <dia:attribute name="obj_pos">
601 <dia:point val="39.5337,11.2917"/>
602 </dia:attribute>
603 <dia:attribute name="obj_bb">
604 <dia:rectangle val="24.0713,9.92418;39.5878,11.3458"/>
605 </dia:attribute>
606 <dia:attribute name="conn_endpoints">
607 <dia:point val="39.5337,11.2917"/>
608 <dia:point val="24.1254,9.97825"/>
609 </dia:attribute>
610 <dia:attribute name="numcp">
611 <dia:int val="1"/>
612 </dia:attribute>
613 <dia:attribute name="line_color">
614 <dia:color val="#e60505"/>
615 </dia:attribute>
616 <dia:attribute name="line_style">
617 <dia:enum val="4"/>
618 </dia:attribute>
619 <dia:connections>
620 <dia:connection handle="0" to="O15" connection="2"/>
621 <dia:connection handle="1" to="O12" connection="2"/>
622 </dia:connections>
623 </dia:object>
624 <dia:object type="Geometric - Perfect Circle" version="1" id="O20">
625 <dia:attribute name="obj_pos">
626 <dia:point val="39.98,12.0742"/>
627 </dia:attribute>
628 <dia:attribute name="obj_bb">
629 <dia:rectangle val="39.93,12.0242;40.88,12.9742"/>
630 </dia:attribute>
631 <dia:attribute name="meta">
632 <dia:composite type="dict"/>
633 </dia:attribute>
634 <dia:attribute name="elem_corner">
635 <dia:point val="39.98,12.0742"/>
636 </dia:attribute>
637 <dia:attribute name="elem_width">
638 <dia:real val="0.84999999999999787"/>
639 </dia:attribute>
640 <dia:attribute name="elem_height">
641 <dia:real val="0.84999999999999787"/>
642 </dia:attribute>
643 <dia:attribute name="line_width">
644 <dia:real val="0.10000000000000001"/>
645 </dia:attribute>
646 <dia:attribute name="line_colour">
647 <dia:color val="#000000"/>
648 </dia:attribute>
649 <dia:attribute name="fill_colour">
650 <dia:color val="#ffffff"/>
651 </dia:attribute>
652 <dia:attribute name="show_background">
653 <dia:boolean val="true"/>
654 </dia:attribute>
655 <dia:attribute name="line_style">
656 <dia:enum val="0"/>
657 <dia:real val="1"/>
658 </dia:attribute>
659 <dia:attribute name="flip_horizontal">
660 <dia:boolean val="false"/>
661 </dia:attribute>
662 <dia:attribute name="flip_vertical">
663 <dia:boolean val="false"/>
664 </dia:attribute>
665 <dia:attribute name="subscale">
666 <dia:real val="1"/>
667 </dia:attribute>
668 </dia:object>
669 <dia:object type="Standard - Line" version="0" id="O21">
670 <dia:attribute name="obj_pos">
671 <dia:point val="40.83,12.4992"/>
672 </dia:attribute>
673 <dia:attribute name="obj_bb">
674 <dia:rectangle val="40.78,12.1388;49.2453,12.8624"/>
675 </dia:attribute>
676 <dia:attribute name="conn_endpoints">
677 <dia:point val="40.83,12.4992"/>
678 <dia:point val="49.1335,12.5007"/>
679 </dia:attribute>
680 <dia:attribute name="numcp">
681 <dia:int val="1"/>
682 </dia:attribute>
683 <dia:attribute name="end_arrow">
684 <dia:enum val="22"/>
685 </dia:attribute>
686 <dia:attribute name="end_arrow_length">
687 <dia:real val="0.5"/>
688 </dia:attribute>
689 <dia:attribute name="end_arrow_width">
690 <dia:real val="0.5"/>
691 </dia:attribute>
692 <dia:connections>
693 <dia:connection handle="0" to="O20" connection="3"/>
694 </dia:connections>
695 </dia:object>
696 <dia:object type="Standard - Text" version="1" id="O22">
697 <dia:attribute name="obj_pos">
698 <dia:point val="42.0954,11.99"/>
699 </dia:attribute>
700 <dia:attribute name="obj_bb">
701 <dia:rectangle val="42.0954,11.395;46.7404,12.1425"/>
702 </dia:attribute>
703 <dia:attribute name="text">
704 <dia:composite type="text">
705 <dia:attribute name="string">
706 <dia:string>#pad 1 (source)#</dia:string>
707 </dia:attribute>
708 <dia:attribute name="font">
709 <dia:font family="sans" style="0" name="Helvetica"/>
710 </dia:attribute>
711 <dia:attribute name="height">
712 <dia:real val="0.80000000000000004"/>
713 </dia:attribute>
714 <dia:attribute name="pos">
715 <dia:point val="42.0954,11.99"/>
716 </dia:attribute>
717 <dia:attribute name="color">
718 <dia:color val="#000000"/>
719 </dia:attribute>
720 <dia:attribute name="alignment">
721 <dia:enum val="0"/>
722 </dia:attribute>
723 </dia:composite>
724 </dia:attribute>
725 <dia:attribute name="valign">
726 <dia:enum val="3"/>
727 </dia:attribute>
728 </dia:object>
729 <dia:object type="Geometric - Perfect Circle" version="1" id="O23">
730 <dia:attribute name="obj_pos">
731 <dia:point val="-1.44491,11.6506"/>
732 </dia:attribute>
733 <dia:attribute name="obj_bb">
734 <dia:rectangle val="-1.49491,11.6006;-0.54491,12.5506"/>
735 </dia:attribute>
736 <dia:attribute name="meta">
737 <dia:composite type="dict"/>
738 </dia:attribute>
739 <dia:attribute name="elem_corner">
740 <dia:point val="-1.44491,11.6506"/>
741 </dia:attribute>
742 <dia:attribute name="elem_width">
743 <dia:real val="0.84999999999999787"/>
744 </dia:attribute>
745 <dia:attribute name="elem_height">
746 <dia:real val="0.84999999999999787"/>
747 </dia:attribute>
748 <dia:attribute name="line_width">
749 <dia:real val="0.10000000000000001"/>
750 </dia:attribute>
751 <dia:attribute name="line_colour">
752 <dia:color val="#000000"/>
753 </dia:attribute>
754 <dia:attribute name="fill_colour">
755 <dia:color val="#ffffff"/>
756 </dia:attribute>
757 <dia:attribute name="show_background">
758 <dia:boolean val="true"/>
759 </dia:attribute>
760 <dia:attribute name="line_style">
761 <dia:enum val="0"/>
762 <dia:real val="1"/>
763 </dia:attribute>
764 <dia:attribute name="flip_horizontal">
765 <dia:boolean val="false"/>
766 </dia:attribute>
767 <dia:attribute name="flip_vertical">
768 <dia:boolean val="false"/>
769 </dia:attribute>
770 <dia:attribute name="subscale">
771 <dia:real val="1"/>
772 </dia:attribute>
773 </dia:object>
774 <dia:object type="Standard - Line" version="0" id="O24">
775 <dia:attribute name="obj_pos">
776 <dia:point val="-9.61991,12.09"/>
777 </dia:attribute>
778 <dia:attribute name="obj_bb">
779 <dia:rectangle val="-9.67,11.7149;-1.33311,12.4385"/>
780 </dia:attribute>
781 <dia:attribute name="conn_endpoints">
782 <dia:point val="-9.61991,12.09"/>
783 <dia:point val="-1.44491,12.0756"/>
784 </dia:attribute>
785 <dia:attribute name="numcp">
786 <dia:int val="1"/>
787 </dia:attribute>
788 <dia:attribute name="end_arrow">
789 <dia:enum val="22"/>
790 </dia:attribute>
791 <dia:attribute name="end_arrow_length">
792 <dia:real val="0.5"/>
793 </dia:attribute>
794 <dia:attribute name="end_arrow_width">
795 <dia:real val="0.5"/>
796 </dia:attribute>
797 <dia:connections>
798 <dia:connection handle="1" to="O23" connection="2"/>
799 </dia:connections>
800 </dia:object>
801 <dia:object type="Standard - Text" version="1" id="O25">
802 <dia:attribute name="obj_pos">
803 <dia:point val="-7.39291,11.49"/>
804 </dia:attribute>
805 <dia:attribute name="obj_bb">
806 <dia:rectangle val="-7.39291,10.895;-3.58791,11.6425"/>
807 </dia:attribute>
808 <dia:attribute name="text">
809 <dia:composite type="text">
810 <dia:attribute name="string">
811 <dia:string>#pad 0 (sink)#</dia:string>
812 </dia:attribute>
813 <dia:attribute name="font">
814 <dia:font family="sans" style="0" name="Helvetica"/>
815 </dia:attribute>
816 <dia:attribute name="height">
817 <dia:real val="0.80000000000000004"/>
818 </dia:attribute>
819 <dia:attribute name="pos">
820 <dia:point val="-7.39291,11.49"/>
821 </dia:attribute>
822 <dia:attribute name="color">
823 <dia:color val="#000000"/>
824 </dia:attribute>
825 <dia:attribute name="alignment">
826 <dia:enum val="0"/>
827 </dia:attribute>
828 </dia:composite>
829 </dia:attribute>
830 <dia:attribute name="valign">
831 <dia:enum val="3"/>
832 </dia:attribute>
833 </dia:object>
834 <dia:object type="Standard - Box" version="0" id="O26">
835 <dia:attribute name="obj_pos">
836 <dia:point val="19.4911,13.8333"/>
837 </dia:attribute>
838 <dia:attribute name="obj_bb">
839 <dia:rectangle val="19.4411,13.7833;24.5504,17.4559"/>
840 </dia:attribute>
841 <dia:attribute name="elem_corner">
842 <dia:point val="19.4911,13.8333"/>
843 </dia:attribute>
844 <dia:attribute name="elem_width">
845 <dia:real val="5.009308462554376"/>
846 </dia:attribute>
847 <dia:attribute name="elem_height">
848 <dia:real val="3.5726155970598077"/>
849 </dia:attribute>
850 <dia:attribute name="border_width">
851 <dia:real val="0.10000000149011612"/>
852 </dia:attribute>
853 <dia:attribute name="border_color">
854 <dia:color val="#a020f0"/>
855 </dia:attribute>
856 <dia:attribute name="show_background">
857 <dia:boolean val="false"/>
858 </dia:attribute>
859 </dia:object>
860 <dia:object type="Standard - Box" version="0" id="O27">
861 <dia:attribute name="obj_pos">
862 <dia:point val="34.4994,17.2967"/>
863 </dia:attribute>
864 <dia:attribute name="obj_bb">
865 <dia:rectangle val="34.4494,17.2467;39.5587,20.9193"/>
866 </dia:attribute>
867 <dia:attribute name="elem_corner">
868 <dia:point val="34.4994,17.2967"/>
869 </dia:attribute>
870 <dia:attribute name="elem_width">
871 <dia:real val="5.009308462554376"/>
872 </dia:attribute>
873 <dia:attribute name="elem_height">
874 <dia:real val="3.5726155970598077"/>
875 </dia:attribute>
876 <dia:attribute name="border_width">
877 <dia:real val="0.10000000149011612"/>
878 </dia:attribute>
879 <dia:attribute name="border_color">
880 <dia:color val="#8b6914"/>
881 </dia:attribute>
882 <dia:attribute name="show_background">
883 <dia:boolean val="true"/>
884 </dia:attribute>
885 </dia:object>
886 <dia:object type="Standard - Line" version="0" id="O28">
887 <dia:attribute name="obj_pos">
888 <dia:point val="34.4994,20.8693"/>
889 </dia:attribute>
890 <dia:attribute name="obj_bb">
891 <dia:rectangle val="19.4311,17.3459;34.5594,20.9293"/>
892 </dia:attribute>
893 <dia:attribute name="conn_endpoints">
894 <dia:point val="34.4994,20.8693"/>
895 <dia:point val="19.4911,17.4059"/>
896 </dia:attribute>
897 <dia:attribute name="numcp">
898 <dia:int val="1"/>
899 </dia:attribute>
900 <dia:attribute name="line_color">
901 <dia:color val="#e60505"/>
902 </dia:attribute>
903 <dia:attribute name="line_style">
904 <dia:enum val="4"/>
905 </dia:attribute>
906 <dia:connections>
907 <dia:connection handle="0" to="O27" connection="5"/>
908 <dia:connection handle="1" to="O26" connection="5"/>
909 </dia:connections>
910 </dia:object>
911 <dia:object type="Standard - Line" version="0" id="O29">
912 <dia:attribute name="obj_pos">
913 <dia:point val="34.4994,17.2967"/>
914 </dia:attribute>
915 <dia:attribute name="obj_bb">
916 <dia:rectangle val="19.4311,13.7733;34.5594,17.3567"/>
917 </dia:attribute>
918 <dia:attribute name="conn_endpoints">
919 <dia:point val="34.4994,17.2967"/>
920 <dia:point val="19.4911,13.8333"/>
921 </dia:attribute>
922 <dia:attribute name="numcp">
923 <dia:int val="1"/>
924 </dia:attribute>
925 <dia:attribute name="line_color">
926 <dia:color val="#e60505"/>
927 </dia:attribute>
928 <dia:attribute name="line_style">
929 <dia:enum val="4"/>
930 </dia:attribute>
931 <dia:connections>
932 <dia:connection handle="0" to="O27" connection="0"/>
933 <dia:connection handle="1" to="O26" connection="0"/>
934 </dia:connections>
935 </dia:object>
936 <dia:object type="Standard - Line" version="0" id="O30">
937 <dia:attribute name="obj_pos">
938 <dia:point val="39.5087,20.8693"/>
939 </dia:attribute>
940 <dia:attribute name="obj_bb">
941 <dia:rectangle val="24.4404,17.3459;39.5687,20.9293"/>
942 </dia:attribute>
943 <dia:attribute name="conn_endpoints">
944 <dia:point val="39.5087,20.8693"/>
945 <dia:point val="24.5004,17.4059"/>
946 </dia:attribute>
947 <dia:attribute name="numcp">
948 <dia:int val="1"/>
949 </dia:attribute>
950 <dia:attribute name="line_color">
951 <dia:color val="#e60505"/>
952 </dia:attribute>
953 <dia:attribute name="line_style">
954 <dia:enum val="4"/>
955 </dia:attribute>
956 <dia:connections>
957 <dia:connection handle="0" to="O27" connection="7"/>
958 <dia:connection handle="1" to="O26" connection="7"/>
959 </dia:connections>
960 </dia:object>
961 <dia:object type="Standard - Line" version="0" id="O31">
962 <dia:attribute name="obj_pos">
963 <dia:point val="39.5087,17.2967"/>
964 </dia:attribute>
965 <dia:attribute name="obj_bb">
966 <dia:rectangle val="24.4404,13.7733;39.5687,17.3567"/>
967 </dia:attribute>
968 <dia:attribute name="conn_endpoints">
969 <dia:point val="39.5087,17.2967"/>
970 <dia:point val="24.5004,13.8333"/>
971 </dia:attribute>
972 <dia:attribute name="numcp">
973 <dia:int val="1"/>
974 </dia:attribute>
975 <dia:attribute name="line_color">
976 <dia:color val="#e60505"/>
977 </dia:attribute>
978 <dia:attribute name="line_style">
979 <dia:enum val="4"/>
980 </dia:attribute>
981 <dia:connections>
982 <dia:connection handle="0" to="O27" connection="2"/>
983 <dia:connection handle="1" to="O26" connection="2"/>
984 </dia:connections>
985 </dia:object>
986 <dia:object type="Geometric - Perfect Circle" version="1" id="O32">
987 <dia:attribute name="obj_pos">
988 <dia:point val="39.855,18.7792"/>
989 </dia:attribute>
990 <dia:attribute name="obj_bb">
991 <dia:rectangle val="39.805,18.7292;40.755,19.6792"/>
992 </dia:attribute>
993 <dia:attribute name="meta">
994 <dia:composite type="dict"/>
995 </dia:attribute>
996 <dia:attribute name="elem_corner">
997 <dia:point val="39.855,18.7792"/>
998 </dia:attribute>
999 <dia:attribute name="elem_width">
1000 <dia:real val="0.84999999999999787"/>
1001 </dia:attribute>
1002 <dia:attribute name="elem_height">
1003 <dia:real val="0.84999999999999787"/>
1004 </dia:attribute>
1005 <dia:attribute name="line_width">
1006 <dia:real val="0.10000000000000001"/>
1007 </dia:attribute>
1008 <dia:attribute name="line_colour">
1009 <dia:color val="#000000"/>
1010 </dia:attribute>
1011 <dia:attribute name="fill_colour">
1012 <dia:color val="#ffffff"/>
1013 </dia:attribute>
1014 <dia:attribute name="show_background">
1015 <dia:boolean val="true"/>
1016 </dia:attribute>
1017 <dia:attribute name="line_style">
1018 <dia:enum val="0"/>
1019 <dia:real val="1"/>
1020 </dia:attribute>
1021 <dia:attribute name="flip_horizontal">
1022 <dia:boolean val="false"/>
1023 </dia:attribute>
1024 <dia:attribute name="flip_vertical">
1025 <dia:boolean val="false"/>
1026 </dia:attribute>
1027 <dia:attribute name="subscale">
1028 <dia:real val="1"/>
1029 </dia:attribute>
1030 </dia:object>
1031 <dia:object type="Standard - Line" version="0" id="O33">
1032 <dia:attribute name="obj_pos">
1033 <dia:point val="40.705,19.2042"/>
1034 </dia:attribute>
1035 <dia:attribute name="obj_bb">
1036 <dia:rectangle val="40.655,18.8438;49.1203,19.5674"/>
1037 </dia:attribute>
1038 <dia:attribute name="conn_endpoints">
1039 <dia:point val="40.705,19.2042"/>
1040 <dia:point val="49.0085,19.2057"/>
1041 </dia:attribute>
1042 <dia:attribute name="numcp">
1043 <dia:int val="1"/>
1044 </dia:attribute>
1045 <dia:attribute name="end_arrow">
1046 <dia:enum val="22"/>
1047 </dia:attribute>
1048 <dia:attribute name="end_arrow_length">
1049 <dia:real val="0.5"/>
1050 </dia:attribute>
1051 <dia:attribute name="end_arrow_width">
1052 <dia:real val="0.5"/>
1053 </dia:attribute>
1054 <dia:connections>
1055 <dia:connection handle="0" to="O32" connection="3"/>
1056 </dia:connections>
1057 </dia:object>
1058 <dia:object type="Standard - Text" version="1" id="O34">
1059 <dia:attribute name="obj_pos">
1060 <dia:point val="41.9704,18.695"/>
1061 </dia:attribute>
1062 <dia:attribute name="obj_bb">
1063 <dia:rectangle val="41.9704,18.1;46.6154,18.8475"/>
1064 </dia:attribute>
1065 <dia:attribute name="text">
1066 <dia:composite type="text">
1067 <dia:attribute name="string">
1068 <dia:string>#pad 2 (source)#</dia:string>
1069 </dia:attribute>
1070 <dia:attribute name="font">
1071 <dia:font family="sans" style="0" name="Helvetica"/>
1072 </dia:attribute>
1073 <dia:attribute name="height">
1074 <dia:real val="0.80000000000000004"/>
1075 </dia:attribute>
1076 <dia:attribute name="pos">
1077 <dia:point val="41.9704,18.695"/>
1078 </dia:attribute>
1079 <dia:attribute name="color">
1080 <dia:color val="#000000"/>
1081 </dia:attribute>
1082 <dia:attribute name="alignment">
1083 <dia:enum val="0"/>
1084 </dia:attribute>
1085 </dia:composite>
1086 </dia:attribute>
1087 <dia:attribute name="valign">
1088 <dia:enum val="3"/>
1089 </dia:attribute>
1090 </dia:object>
1091 <dia:object type="Standard - Line" version="0" id="O35">
1092 <dia:attribute name="obj_pos">
1093 <dia:point val="27.3,9.55"/>
1094 </dia:attribute>
1095 <dia:attribute name="obj_bb">
1096 <dia:rectangle val="24.0146,9.49376;27.3562,10.255"/>
1097 </dia:attribute>
1098 <dia:attribute name="conn_endpoints">
1099 <dia:point val="27.3,9.55"/>
1100 <dia:point val="24.1254,9.97825"/>
1101 </dia:attribute>
1102 <dia:attribute name="numcp">
1103 <dia:int val="1"/>
1104 </dia:attribute>
1105 <dia:attribute name="line_color">
1106 <dia:color val="#a020f0"/>
1107 </dia:attribute>
1108 <dia:attribute name="end_arrow">
1109 <dia:enum val="22"/>
1110 </dia:attribute>
1111 <dia:attribute name="end_arrow_length">
1112 <dia:real val="0.5"/>
1113 </dia:attribute>
1114 <dia:attribute name="end_arrow_width">
1115 <dia:real val="0.5"/>
1116 </dia:attribute>
1117 <dia:connections>
1118 <dia:connection handle="1" to="O12" connection="2"/>
1119 </dia:connections>
1120 </dia:object>
1121 <dia:object type="Standard - Line" version="0" id="O36">
1122 <dia:attribute name="obj_pos">
1123 <dia:point val="27.3454,9.53624"/>
1124 </dia:attribute>
1125 <dia:attribute name="obj_bb">
1126 <dia:rectangle val="24.4311,9.46695;27.4147,13.9265"/>
1127 </dia:attribute>
1128 <dia:attribute name="conn_endpoints">
1129 <dia:point val="27.3454,9.53624"/>
1130 <dia:point val="24.5004,13.8333"/>
1131 </dia:attribute>
1132 <dia:attribute name="numcp">
1133 <dia:int val="1"/>
1134 </dia:attribute>
1135 <dia:attribute name="line_color">
1136 <dia:color val="#a020f0"/>
1137 </dia:attribute>
1138 <dia:attribute name="end_arrow">
1139 <dia:enum val="22"/>
1140 </dia:attribute>
1141 <dia:attribute name="end_arrow_length">
1142 <dia:real val="0.5"/>
1143 </dia:attribute>
1144 <dia:attribute name="end_arrow_width">
1145 <dia:real val="0.5"/>
1146 </dia:attribute>
1147 <dia:connections>
1148 <dia:connection handle="1" to="O26" connection="2"/>
1149 </dia:connections>
1150 </dia:object>
1151 </dia:layer>
1152</dia:diagram>
diff --git a/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.svg b/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.svg
new file mode 100644
index 000000000000..2340c0f8bc92
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.svg
@@ -0,0 +1,116 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
3<svg width="59cm" height="17cm" viewBox="-194 128 1179 330" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
4 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="-8" y="130" width="806" height="327"/>
5 <g>
6 <rect style="fill: #ffffff" x="4.5" y="189" width="159" height="104"/>
7 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a52a2a" x="4.5" y="189" width="159" height="104"/>
8 </g>
9 <g>
10 <rect style="fill: #ffffff" x="49.5" y="204" width="94" height="77"/>
11 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x="49.5" y="204" width="94" height="77"/>
12 </g>
13 <text style="fill: #0000ff;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="60" y="224">
14 <tspan x="60" y="224">sink</tspan>
15 <tspan x="60" y="240">crop</tspan>
16 <tspan x="60" y="256">selection</tspan>
17 </text>
18 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="29.5" y="158">
19 <tspan x="29.5" y="158"></tspan>
20 </text>
21 <text style="fill: #a52a2a;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="8.53836" y="157.914">
22 <tspan x="8.53836" y="157.914">sink media</tspan>
23 <tspan x="8.53836" y="173.914">bus format</tspan>
24 </text>
25 <g>
26 <rect style="fill: #ffffff" x="333.644" y="185.65" width="165.2" height="172.478"/>
27 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #00ff00" x="333.644" y="185.65" width="165.2" height="172.478"/>
28 </g>
29 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="333.644" y1="358.128" x2="49.5" y2="281"/>
30 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="333.644" y1="185.65" x2="49.5" y2="204"/>
31 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="498.844" y1="358.128" x2="143.5" y2="281"/>
32 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="498.844" y1="185.65" x2="143.5" y2="204"/>
33 <text style="fill: #00ff00;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="334.704" y="149.442">
34 <tspan x="334.704" y="149.442">sink compose</tspan>
35 <tspan x="334.704" y="165.442">selection (scaling)</tspan>
36 </text>
37 <g>
38 <rect style="fill: #ffffff" x="382.322" y="199.565" width="100.186" height="71.4523"/>
39 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x="382.322" y="199.565" width="100.186" height="71.4523"/>
40 </g>
41 <text style="fill: #a020f0;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="543.322" y="149.442">
42 <tspan x="543.322" y="149.442">source</tspan>
43 <tspan x="543.322" y="165.442">crop</tspan>
44 <tspan x="543.322" y="181.442">selection</tspan>
45 </text>
46 <text style="fill: #8b6914;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="691.5" y="157.128">
47 <tspan x="691.5" y="157.128">source media</tspan>
48 <tspan x="691.5" y="173.128">bus format</tspan>
49 </text>
50 <g>
51 <rect style="fill: #ffffff" x="690.488" y="225.834" width="100.186" height="71.4523"/>
52 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="690.488" y="225.834" width="100.186" height="71.4523"/>
53 </g>
54 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="690.488" y1="297.286" x2="382.322" y2="271.018"/>
55 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="690.488" y1="225.834" x2="382.322" y2="199.565"/>
56 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="790.674" y1="297.286" x2="482.508" y2="271.018"/>
57 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="790.674" y1="225.834" x2="482.508" y2="199.565"/>
58 <g>
59 <ellipse style="fill: #ffffff" cx="808.1" cy="249.984" rx="8.5" ry="8.5"/>
60 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="808.1" cy="249.984" rx="8.5" ry="8.5"/>
61 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="808.1" cy="249.984" rx="8.5" ry="8.5"/>
62 </g>
63 <g>
64 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="816.6" y1="249.984" x2="972.934" y2="250.012"/>
65 <polygon style="fill: #000000" points="980.434,250.014 970.433,255.012 972.934,250.012 970.435,245.012 "/>
66 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="980.434,250.014 970.433,255.012 972.934,250.012 970.435,245.012 "/>
67 </g>
68 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="841.908" y="239.8">
69 <tspan x="841.908" y="239.8">pad 1 (source)</tspan>
70 </text>
71 <g>
72 <ellipse style="fill: #ffffff" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/>
73 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/>
74 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/>
75 </g>
76 <g>
77 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="-192.398" y1="241.8" x2="-38.6343" y2="241.529"/>
78 <polygon style="fill: #000000" points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 "/>
79 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 "/>
80 </g>
81 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="-147.858" y="229.8">
82 <tspan x="-147.858" y="229.8">pad 0 (sink)</tspan>
83 </text>
84 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x="389.822" y="276.666" width="100.186" height="71.4523"/>
85 <g>
86 <rect style="fill: #ffffff" x="689.988" y="345.934" width="100.186" height="71.4523"/>
87 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="689.988" y="345.934" width="100.186" height="71.4523"/>
88 </g>
89 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="689.988" y1="417.386" x2="389.822" y2="348.118"/>
90 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="689.988" y1="345.934" x2="389.822" y2="276.666"/>
91 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="790.174" y1="417.386" x2="490.008" y2="348.118"/>
92 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="790.174" y1="345.934" x2="490.008" y2="276.666"/>
93 <g>
94 <ellipse style="fill: #ffffff" cx="805.6" cy="384.084" rx="8.5" ry="8.5"/>
95 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="805.6" cy="384.084" rx="8.5" ry="8.5"/>
96 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="805.6" cy="384.084" rx="8.5" ry="8.5"/>
97 </g>
98 <g>
99 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="814.1" y1="384.084" x2="970.434" y2="384.112"/>
100 <polygon style="fill: #000000" points="977.934,384.114 967.933,389.112 970.434,384.112 967.935,379.112 "/>
101 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="977.934,384.114 967.933,389.112 970.434,384.112 967.935,379.112 "/>
102 </g>
103 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="839.408" y="373.9">
104 <tspan x="839.408" y="373.9">pad 2 (source)</tspan>
105 </text>
106 <g>
107 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x1="546" y1="191" x2="492.157" y2="198.263"/>
108 <polygon style="fill: #a020f0" points="484.724,199.266 493.966,192.974 492.157,198.263 495.303,202.884 "/>
109 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" points="484.724,199.266 493.966,192.974 492.157,198.263 495.303,202.884 "/>
110 </g>
111 <g>
112 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x1="546.908" y1="190.725" x2="495.383" y2="268.548"/>
113 <polygon style="fill: #a020f0" points="491.242,274.802 492.594,263.703 495.383,268.548 500.932,269.224 "/>
114 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" points="491.242,274.802 492.594,263.703 495.383,268.548 500.932,269.224 "/>
115 </g>
116</svg>
diff --git a/Documentation/DocBook/media/v4l/v4l2.xml b/Documentation/DocBook/media/v4l/v4l2.xml
index 8ae38876172e..008c2d73a484 100644
--- a/Documentation/DocBook/media/v4l/v4l2.xml
+++ b/Documentation/DocBook/media/v4l/v4l2.xml
@@ -28,8 +28,8 @@ documentation.</contrib>
28 <firstname>Hans</firstname> 28 <firstname>Hans</firstname>
29 <surname>Verkuil</surname> 29 <surname>Verkuil</surname>
30 <contrib>Designed and documented the VIDIOC_LOG_STATUS ioctl, 30 <contrib>Designed and documented the VIDIOC_LOG_STATUS ioctl,
31the extended control ioctls and major parts of the sliced VBI 31the extended control ioctls, major parts of the sliced VBI API, the
32API.</contrib> 32MPEG encoder and decoder APIs and the DV Timings API.</contrib>
33 <affiliation> 33 <affiliation>
34 <address> 34 <address>
35 <email>hverkuil@xs4all.nl</email> 35 <email>hverkuil@xs4all.nl</email>
@@ -96,6 +96,17 @@ Remote Controller chapter.</contrib>
96 </address> 96 </address>
97 </affiliation> 97 </affiliation>
98 </author> 98 </author>
99
100 <author>
101 <firstname>Sakari</firstname>
102 <surname>Ailus</surname>
103 <contrib>Subdev selections API.</contrib>
104 <affiliation>
105 <address>
106 <email>sakari.ailus@iki.fi</email>
107 </address>
108 </affiliation>
109 </author>
99 </authorgroup> 110 </authorgroup>
100 111
101 <copyright> 112 <copyright>
@@ -112,6 +123,7 @@ Remote Controller chapter.</contrib>
112 <year>2009</year> 123 <year>2009</year>
113 <year>2010</year> 124 <year>2010</year>
114 <year>2011</year> 125 <year>2011</year>
126 <year>2012</year>
115 <holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin 127 <holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin
116Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab, 128Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab,
117 Pawel Osciak</holder> 129 Pawel Osciak</holder>
@@ -128,6 +140,28 @@ structs, ioctls) must be noted in more detail in the history chapter
128applications. --> 140applications. -->
129 141
130 <revision> 142 <revision>
143 <revnumber>3.5</revnumber>
144 <date>2012-05-07</date>
145 <authorinitials>sa, sn</authorinitials>
146 <revremark>Added V4L2_CTRL_TYPE_INTEGER_MENU and V4L2 subdev
147 selections API. Improved the description of V4L2_CID_COLORFX
148 control, added V4L2_CID_COLORFX_CBCR control.
149 Added camera controls V4L2_CID_AUTO_EXPOSURE_BIAS,
150 V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE, V4L2_CID_IMAGE_STABILIZATION,
151 V4L2_CID_ISO_SENSITIVITY, V4L2_CID_ISO_SENSITIVITY_AUTO,
152 V4L2_CID_EXPOSURE_METERING, V4L2_CID_SCENE_MODE,
153 V4L2_CID_3A_LOCK, V4L2_CID_AUTO_FOCUS_START,
154 V4L2_CID_AUTO_FOCUS_STOP, V4L2_CID_AUTO_FOCUS_STATUS
155 and V4L2_CID_AUTO_FOCUS_RANGE.
156 </revremark>
157 <date>2012-05-01</date>
158 <authorinitials>hv</authorinitials>
159 <revremark>Added VIDIOC_ENUM_DV_TIMINGS, VIDIOC_QUERY_DV_TIMINGS and
160 VIDIOC_DV_TIMINGS_CAP.
161 </revremark>
162 </revision>
163
164 <revision>
131 <revnumber>3.4</revnumber> 165 <revnumber>3.4</revnumber>
132 <date>2012-01-25</date> 166 <date>2012-01-25</date>
133 <authorinitials>sn</authorinitials> 167 <authorinitials>sn</authorinitials>
@@ -433,7 +467,7 @@ and discussions on the V4L mailing list.</revremark>
433</partinfo> 467</partinfo>
434 468
435<title>Video for Linux Two API Specification</title> 469<title>Video for Linux Two API Specification</title>
436 <subtitle>Revision 3.3</subtitle> 470 <subtitle>Revision 3.5</subtitle>
437 471
438 <chapter id="common"> 472 <chapter id="common">
439 &sub-common; 473 &sub-common;
@@ -491,10 +525,12 @@ and discussions on the V4L mailing list.</revremark>
491 &sub-dbg-g-register; 525 &sub-dbg-g-register;
492 &sub-decoder-cmd; 526 &sub-decoder-cmd;
493 &sub-dqevent; 527 &sub-dqevent;
528 &sub-dv-timings-cap;
494 &sub-encoder-cmd; 529 &sub-encoder-cmd;
495 &sub-enumaudio; 530 &sub-enumaudio;
496 &sub-enumaudioout; 531 &sub-enumaudioout;
497 &sub-enum-dv-presets; 532 &sub-enum-dv-presets;
533 &sub-enum-dv-timings;
498 &sub-enum-fmt; 534 &sub-enum-fmt;
499 &sub-enum-framesizes; 535 &sub-enum-framesizes;
500 &sub-enum-frameintervals; 536 &sub-enum-frameintervals;
@@ -524,13 +560,14 @@ and discussions on the V4L mailing list.</revremark>
524 &sub-g-tuner; 560 &sub-g-tuner;
525 &sub-log-status; 561 &sub-log-status;
526 &sub-overlay; 562 &sub-overlay;
563 &sub-prepare-buf;
527 &sub-qbuf; 564 &sub-qbuf;
528 &sub-querybuf; 565 &sub-querybuf;
529 &sub-querycap; 566 &sub-querycap;
530 &sub-queryctrl; 567 &sub-queryctrl;
531 &sub-query-dv-preset; 568 &sub-query-dv-preset;
569 &sub-query-dv-timings;
532 &sub-querystd; 570 &sub-querystd;
533 &sub-prepare-buf;
534 &sub-reqbufs; 571 &sub-reqbufs;
535 &sub-s-hw-freq-seek; 572 &sub-s-hw-freq-seek;
536 &sub-streamon; 573 &sub-streamon;
@@ -540,6 +577,7 @@ and discussions on the V4L mailing list.</revremark>
540 &sub-subdev-g-crop; 577 &sub-subdev-g-crop;
541 &sub-subdev-g-fmt; 578 &sub-subdev-g-fmt;
542 &sub-subdev-g-frame-interval; 579 &sub-subdev-g-frame-interval;
580 &sub-subdev-g-selection;
543 &sub-subscribe-event; 581 &sub-subscribe-event;
544 <!-- End of ioctls. --> 582 <!-- End of ioctls. -->
545 &sub-mmap; 583 &sub-mmap;
diff --git a/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml b/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml
index 73ae8a6cd004..a2474ecb574a 100644
--- a/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml
@@ -48,6 +48,12 @@
48 <refsect1> 48 <refsect1>
49 <title>Description</title> 49 <title>Description</title>
50 50
51 <note>
52 <title>Experimental</title>
53 <para>This is an <link linkend="experimental"> experimental </link>
54 interface and may change in the future.</para>
55 </note>
56
51 <para>This ioctl is used to create buffers for <link linkend="mmap">memory 57 <para>This ioctl is used to create buffers for <link linkend="mmap">memory
52mapped</link> or <link linkend="userp">user pointer</link> 58mapped</link> or <link linkend="userp">user pointer</link>
53I/O. It can be used as an alternative or in addition to the 59I/O. It can be used as an alternative or in addition to the
@@ -94,14 +100,15 @@ information.</para>
94 <entry>The number of buffers requested or granted.</entry> 100 <entry>The number of buffers requested or granted.</entry>
95 </row> 101 </row>
96 <row> 102 <row>
97 <entry>&v4l2-memory;</entry> 103 <entry>__u32</entry>
98 <entry><structfield>memory</structfield></entry> 104 <entry><structfield>memory</structfield></entry>
99 <entry>Applications set this field to 105 <entry>Applications set this field to
100<constant>V4L2_MEMORY_MMAP</constant> or 106<constant>V4L2_MEMORY_MMAP</constant> or
101<constant>V4L2_MEMORY_USERPTR</constant>.</entry> 107<constant>V4L2_MEMORY_USERPTR</constant>. See <xref linkend="v4l2-memory"
108/></entry>
102 </row> 109 </row>
103 <row> 110 <row>
104 <entry>&v4l2-format;</entry> 111 <entry>struct&nbsp;v4l2_format</entry>
105 <entry><structfield>format</structfield></entry> 112 <entry><structfield>format</structfield></entry>
106 <entry>Filled in by the application, preserved by the driver.</entry> 113 <entry>Filled in by the application, preserved by the driver.</entry>
107 </row> 114 </row>
diff --git a/Documentation/DocBook/media/v4l/vidioc-cropcap.xml b/Documentation/DocBook/media/v4l/vidioc-cropcap.xml
index b4f2f255211e..f1bac2c6e978 100644
--- a/Documentation/DocBook/media/v4l/vidioc-cropcap.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-cropcap.xml
@@ -65,7 +65,7 @@ output.</para>
65 &cs-str; 65 &cs-str;
66 <tbody valign="top"> 66 <tbody valign="top">
67 <row> 67 <row>
68 <entry>&v4l2-buf-type;</entry> 68 <entry>__u32</entry>
69 <entry><structfield>type</structfield></entry> 69 <entry><structfield>type</structfield></entry>
70 <entry>Type of the data stream, set by the application. 70 <entry>Type of the data stream, set by the application.
71Only these types are valid here: 71Only these types are valid here:
@@ -73,7 +73,7 @@ Only these types are valid here:
73<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>, 73<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>,
74<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver 74<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver
75defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant> 75defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant>
76and higher.</entry> 76and higher. See <xref linkend="v4l2-buf-type" />.</entry>
77 </row> 77 </row>
78 <row> 78 <row>
79 <entry>struct <link linkend="v4l2-rect-crop">v4l2_rect</link></entry> 79 <entry>struct <link linkend="v4l2-rect-crop">v4l2_rect</link></entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-dqevent.xml b/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
index e8714aa16433..98a856f9ec30 100644
--- a/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
@@ -89,7 +89,7 @@
89 <row> 89 <row>
90 <entry></entry> 90 <entry></entry>
91 <entry>&v4l2-event-frame-sync;</entry> 91 <entry>&v4l2-event-frame-sync;</entry>
92 <entry><structfield>frame</structfield></entry> 92 <entry><structfield>frame_sync</structfield></entry>
93 <entry>Event data for event V4L2_EVENT_FRAME_SYNC.</entry> 93 <entry>Event data for event V4L2_EVENT_FRAME_SYNC.</entry>
94 </row> 94 </row>
95 <row> 95 <row>
diff --git a/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml b/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml
new file mode 100644
index 000000000000..6673ce582050
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml
@@ -0,0 +1,211 @@
1<refentry id="vidioc-dv-timings-cap">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_DV_TIMINGS_CAP</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_DV_TIMINGS_CAP</refname>
9 <refpurpose>The capabilities of the Digital Video receiver/transmitter</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>struct v4l2_dv_timings_cap *<parameter>argp</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25
26 <variablelist>
27 <varlistentry>
28 <term><parameter>fd</parameter></term>
29 <listitem>
30 <para>&fd;</para>
31 </listitem>
32 </varlistentry>
33 <varlistentry>
34 <term><parameter>request</parameter></term>
35 <listitem>
36 <para>VIDIOC_DV_TIMINGS_CAP</para>
37 </listitem>
38 </varlistentry>
39 <varlistentry>
40 <term><parameter>argp</parameter></term>
41 <listitem>
42 <para></para>
43 </listitem>
44 </varlistentry>
45 </variablelist>
46 </refsect1>
47
48 <refsect1>
49 <title>Description</title>
50
51 <note>
52 <title>Experimental</title>
53 <para>This is an <link linkend="experimental"> experimental </link>
54 interface and may change in the future.</para>
55 </note>
56
57 <para>To query the available timings, applications initialize the
58<structfield>index</structfield> field and zero the reserved array of &v4l2-dv-timings-cap;
59and call the <constant>VIDIOC_DV_TIMINGS_CAP</constant> ioctl with a pointer to this
60structure. Drivers fill the rest of the structure or return an
61&EINVAL; when the index is out of bounds. To enumerate all supported DV timings,
62applications shall begin at index zero, incrementing by one until the
63driver returns <errorcode>EINVAL</errorcode>. Note that drivers may enumerate a
64different set of DV timings after switching the video input or
65output.</para>
66
67 <table pgwide="1" frame="none" id="v4l2-bt-timings-cap">
68 <title>struct <structname>v4l2_bt_timings_cap</structname></title>
69 <tgroup cols="3">
70 &cs-str;
71 <tbody valign="top">
72 <row>
73 <entry>__u32</entry>
74 <entry><structfield>min_width</structfield></entry>
75 <entry>Minimum width of the active video in pixels.</entry>
76 </row>
77 <row>
78 <entry>__u32</entry>
79 <entry><structfield>max_width</structfield></entry>
80 <entry>Maximum width of the active video in pixels.</entry>
81 </row>
82 <row>
83 <entry>__u32</entry>
84 <entry><structfield>min_height</structfield></entry>
85 <entry>Minimum height of the active video in lines.</entry>
86 </row>
87 <row>
88 <entry>__u32</entry>
89 <entry><structfield>max_height</structfield></entry>
90 <entry>Maximum height of the active video in lines.</entry>
91 </row>
92 <row>
93 <entry>__u64</entry>
94 <entry><structfield>min_pixelclock</structfield></entry>
95 <entry>Minimum pixelclock frequency in Hz.</entry>
96 </row>
97 <row>
98 <entry>__u64</entry>
99 <entry><structfield>max_pixelclock</structfield></entry>
100 <entry>Maximum pixelclock frequency in Hz.</entry>
101 </row>
102 <row>
103 <entry>__u32</entry>
104 <entry><structfield>standards</structfield></entry>
105 <entry>The video standard(s) supported by the hardware.
106 See <xref linkend="dv-bt-standards"/> for a list of standards.</entry>
107 </row>
108 <row>
109 <entry>__u32</entry>
110 <entry><structfield>capabilities</structfield></entry>
111 <entry>Several flags giving more information about the capabilities.
112 See <xref linkend="dv-bt-cap-capabilities"/> for a description of the flags.
113 </entry>
114 </row>
115 <row>
116 <entry>__u32</entry>
117 <entry><structfield>reserved</structfield>[16]</entry>
118 <entry></entry>
119 </row>
120 </tbody>
121 </tgroup>
122 </table>
123
124 <table pgwide="1" frame="none" id="v4l2-dv-timings-cap">
125 <title>struct <structname>v4l2_dv_timings_cap</structname></title>
126 <tgroup cols="4">
127 &cs-str;
128 <tbody valign="top">
129 <row>
130 <entry>__u32</entry>
131 <entry><structfield>type</structfield></entry>
132 <entry>Type of DV timings as listed in <xref linkend="dv-timing-types"/>.</entry>
133 </row>
134 <row>
135 <entry>__u32</entry>
136 <entry><structfield>reserved</structfield>[3]</entry>
137 <entry>Reserved for future extensions. Drivers must set the array to zero.</entry>
138 </row>
139 <row>
140 <entry>union</entry>
141 <entry><structfield></structfield></entry>
142 <entry></entry>
143 </row>
144 <row>
145 <entry></entry>
146 <entry>&v4l2-bt-timings-cap;</entry>
147 <entry><structfield>bt</structfield></entry>
148 <entry>BT.656/1120 timings capabilities of the hardware.</entry>
149 </row>
150 <row>
151 <entry></entry>
152 <entry>__u32</entry>
153 <entry><structfield>raw_data</structfield>[32]</entry>
154 <entry></entry>
155 </row>
156 </tbody>
157 </tgroup>
158 </table>
159
160 <table pgwide="1" frame="none" id="dv-bt-cap-capabilities">
161 <title>DV BT Timing capabilities</title>
162 <tgroup cols="2">
163 &cs-str;
164 <tbody valign="top">
165 <row>
166 <entry>Flag</entry>
167 <entry>Description</entry>
168 </row>
169 <row>
170 <entry></entry>
171 <entry></entry>
172 </row>
173 <row>
174 <entry>V4L2_DV_BT_CAP_INTERLACED</entry>
175 <entry>Interlaced formats are supported.
176 </entry>
177 </row>
178 <row>
179 <entry>V4L2_DV_BT_CAP_PROGRESSIVE</entry>
180 <entry>Progressive formats are supported.
181 </entry>
182 </row>
183 <row>
184 <entry>V4L2_DV_BT_CAP_REDUCED_BLANKING</entry>
185 <entry>CVT/GTF specific: the timings can make use of reduced blanking (CVT)
186or the 'Secondary GTF' curve (GTF).
187 </entry>
188 </row>
189 <row>
190 <entry>V4L2_DV_BT_CAP_CUSTOM</entry>
191 <entry>Can support non-standard timings, i.e. timings not belonging to the
192standards set in the <structfield>standards</structfield> field.
193 </entry>
194 </row>
195 </tbody>
196 </tgroup>
197 </table>
198 </refsect1>
199
200 <refsect1>
201 &return-value;
202 </refsect1>
203</refentry>
204
205<!--
206Local Variables:
207mode: sgml
208sgml-parent-document: "v4l2.sgml"
209indent-tabs-mode: nil
210End:
211-->
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml b/Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml
index 0be17c232d3a..509f0012d2a6 100644
--- a/Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml
@@ -48,6 +48,10 @@
48 <refsect1> 48 <refsect1>
49 <title>Description</title> 49 <title>Description</title>
50 50
51 <para>This ioctl is <emphasis role="bold">deprecated</emphasis>.
52 New drivers and applications should use &VIDIOC-ENUM-DV-TIMINGS; instead.
53 </para>
54
51 <para>To query the attributes of a DV preset, applications initialize the 55 <para>To query the attributes of a DV preset, applications initialize the
52<structfield>index</structfield> field and zero the reserved array of &v4l2-dv-enum-preset; 56<structfield>index</structfield> field and zero the reserved array of &v4l2-dv-enum-preset;
53and call the <constant>VIDIOC_ENUM_DV_PRESETS</constant> ioctl with a pointer to this 57and call the <constant>VIDIOC_ENUM_DV_PRESETS</constant> ioctl with a pointer to this
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml
new file mode 100644
index 000000000000..24c3bf4fd29a
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml
@@ -0,0 +1,119 @@
1<refentry id="vidioc-enum-dv-timings">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_ENUM_DV_TIMINGS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_ENUM_DV_TIMINGS</refname>
9 <refpurpose>Enumerate supported Digital Video timings</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>struct v4l2_enum_dv_timings *<parameter>argp</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25
26 <variablelist>
27 <varlistentry>
28 <term><parameter>fd</parameter></term>
29 <listitem>
30 <para>&fd;</para>
31 </listitem>
32 </varlistentry>
33 <varlistentry>
34 <term><parameter>request</parameter></term>
35 <listitem>
36 <para>VIDIOC_ENUM_DV_TIMINGS</para>
37 </listitem>
38 </varlistentry>
39 <varlistentry>
40 <term><parameter>argp</parameter></term>
41 <listitem>
42 <para></para>
43 </listitem>
44 </varlistentry>
45 </variablelist>
46 </refsect1>
47
48 <refsect1>
49 <title>Description</title>
50
51 <note>
52 <title>Experimental</title>
53 <para>This is an <link linkend="experimental"> experimental </link>
54 interface and may change in the future.</para>
55 </note>
56
57 <para>While some DV receivers or transmitters support a wide range of timings, others
58support only a limited number of timings. With this ioctl applications can enumerate a list
59of known supported timings. Call &VIDIOC-DV-TIMINGS-CAP; to check if it also supports other
60standards or even custom timings that are not in this list.</para>
61
62 <para>To query the available timings, applications initialize the
63<structfield>index</structfield> field and zero the reserved array of &v4l2-enum-dv-timings;
64and call the <constant>VIDIOC_ENUM_DV_TIMINGS</constant> ioctl with a pointer to this
65structure. Drivers fill the rest of the structure or return an
66&EINVAL; when the index is out of bounds. To enumerate all supported DV timings,
67applications shall begin at index zero, incrementing by one until the
68driver returns <errorcode>EINVAL</errorcode>. Note that drivers may enumerate a
69different set of DV timings after switching the video input or
70output.</para>
71
72 <table pgwide="1" frame="none" id="v4l2-enum-dv-timings">
73 <title>struct <structname>v4l2_enum_dv_timings</structname></title>
74 <tgroup cols="3">
75 &cs-str;
76 <tbody valign="top">
77 <row>
78 <entry>__u32</entry>
79 <entry><structfield>index</structfield></entry>
80 <entry>Number of the DV timings, set by the
81application.</entry>
82 </row>
83 <row>
84 <entry>__u32</entry>
85 <entry><structfield>reserved</structfield>[3]</entry>
86 <entry>Reserved for future extensions. Drivers must set the array to zero.</entry>
87 </row>
88 <row>
89 <entry>&v4l2-dv-timings;</entry>
90 <entry><structfield>timings</structfield></entry>
91 <entry>The timings.</entry>
92 </row>
93 </tbody>
94 </tgroup>
95 </table>
96 </refsect1>
97
98 <refsect1>
99 &return-value;
100
101 <variablelist>
102 <varlistentry>
103 <term><errorcode>EINVAL</errorcode></term>
104 <listitem>
105 <para>The &v4l2-enum-dv-timings; <structfield>index</structfield>
106is out of bounds.</para>
107 </listitem>
108 </varlistentry>
109 </variablelist>
110 </refsect1>
111</refentry>
112
113<!--
114Local Variables:
115mode: sgml
116sgml-parent-document: "v4l2.sgml"
117indent-tabs-mode: nil
118End:
119-->
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml b/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
index 347d142e7431..81ebe48317fe 100644
--- a/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
@@ -71,7 +71,7 @@ the application. This is in no way related to the <structfield>
71pixelformat</structfield> field.</entry> 71pixelformat</structfield> field.</entry>
72 </row> 72 </row>
73 <row> 73 <row>
74 <entry>&v4l2-buf-type;</entry> 74 <entry>__u32</entry>
75 <entry><structfield>type</structfield></entry> 75 <entry><structfield>type</structfield></entry>
76 <entry>Type of the data stream, set by the application. 76 <entry>Type of the data stream, set by the application.
77Only these types are valid here: 77Only these types are valid here:
@@ -81,7 +81,7 @@ Only these types are valid here:
81<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>, 81<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>,
82<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver 82<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver
83defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant> 83defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant>
84and higher.</entry> 84and higher. See <xref linkend="v4l2-buf-type" />.</entry>
85 </row> 85 </row>
86 <row> 86 <row>
87 <entry>__u32</entry> 87 <entry>__u32</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-enuminput.xml b/Documentation/DocBook/media/v4l/vidioc-enuminput.xml
index 9b8efcd6e947..46d5a044a537 100644
--- a/Documentation/DocBook/media/v4l/vidioc-enuminput.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enuminput.xml
@@ -285,7 +285,7 @@ input/output interface to linux-media@vger.kernel.org on 19 Oct 2009.
285 <row> 285 <row>
286 <entry><constant>V4L2_IN_CAP_CUSTOM_TIMINGS</constant></entry> 286 <entry><constant>V4L2_IN_CAP_CUSTOM_TIMINGS</constant></entry>
287 <entry>0x00000002</entry> 287 <entry>0x00000002</entry>
288 <entry>This input supports setting custom video timings by using VIDIOC_S_DV_TIMINGS.</entry> 288 <entry>This input supports setting video timings by using VIDIOC_S_DV_TIMINGS.</entry>
289 </row> 289 </row>
290 <row> 290 <row>
291 <entry><constant>V4L2_IN_CAP_STD</constant></entry> 291 <entry><constant>V4L2_IN_CAP_STD</constant></entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml b/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml
index a64d5ef103fa..428020000ef0 100644
--- a/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml
@@ -170,7 +170,7 @@ input/output interface to linux-media@vger.kernel.org on 19 Oct 2009.
170 <row> 170 <row>
171 <entry><constant>V4L2_OUT_CAP_CUSTOM_TIMINGS</constant></entry> 171 <entry><constant>V4L2_OUT_CAP_CUSTOM_TIMINGS</constant></entry>
172 <entry>0x00000002</entry> 172 <entry>0x00000002</entry>
173 <entry>This output supports setting custom video timings by using VIDIOC_S_DV_TIMINGS.</entry> 173 <entry>This output supports setting video timings by using VIDIOC_S_DV_TIMINGS.</entry>
174 </row> 174 </row>
175 <row> 175 <row>
176 <entry><constant>V4L2_OUT_CAP_STD</constant></entry> 176 <entry><constant>V4L2_OUT_CAP_STD</constant></entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-crop.xml b/Documentation/DocBook/media/v4l/vidioc-g-crop.xml
index 01a50640dce0..c4ff3b1887fb 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-crop.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-crop.xml
@@ -100,14 +100,14 @@ changed and <constant>VIDIOC_S_CROP</constant> returns the
100 &cs-str; 100 &cs-str;
101 <tbody valign="top"> 101 <tbody valign="top">
102 <row> 102 <row>
103 <entry>&v4l2-buf-type;</entry> 103 <entry>__u32</entry>
104 <entry><structfield>type</structfield></entry> 104 <entry><structfield>type</structfield></entry>
105 <entry>Type of the data stream, set by the application. 105 <entry>Type of the data stream, set by the application.
106Only these types are valid here: <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>, 106Only these types are valid here: <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>,
107<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>, 107<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>,
108<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver 108<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver
109defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant> 109defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant>
110and higher.</entry> 110and higher. See <xref linkend="v4l2-buf-type" />.</entry>
111 </row> 111 </row>
112 <row> 112 <row>
113 <entry>&v4l2-rect;</entry> 113 <entry>&v4l2-rect;</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml b/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml
index 7940c1149393..61be9fa3803a 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml
@@ -48,6 +48,12 @@
48 48
49 <refsect1> 49 <refsect1>
50 <title>Description</title> 50 <title>Description</title>
51
52 <para>These ioctls are <emphasis role="bold">deprecated</emphasis>.
53 New drivers and applications should use &VIDIOC-G-DV-TIMINGS; and &VIDIOC-S-DV-TIMINGS;
54 instead.
55 </para>
56
51 <para>To query and select the current DV preset, applications 57 <para>To query and select the current DV preset, applications
52use the <constant>VIDIOC_G_DV_PRESET</constant> and <constant>VIDIOC_S_DV_PRESET</constant> 58use the <constant>VIDIOC_G_DV_PRESET</constant> and <constant>VIDIOC_S_DV_PRESET</constant>
53ioctls which take a pointer to a &v4l2-dv-preset; type as argument. 59ioctls which take a pointer to a &v4l2-dv-preset; type as argument.
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
index 4a8648ae9a63..eda1a2991bbe 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
@@ -7,7 +7,7 @@
7 <refnamediv> 7 <refnamediv>
8 <refname>VIDIOC_G_DV_TIMINGS</refname> 8 <refname>VIDIOC_G_DV_TIMINGS</refname>
9 <refname>VIDIOC_S_DV_TIMINGS</refname> 9 <refname>VIDIOC_S_DV_TIMINGS</refname>
10 <refpurpose>Get or set custom DV timings for input or output</refpurpose> 10 <refpurpose>Get or set DV timings for input or output</refpurpose>
11 </refnamediv> 11 </refnamediv>
12 12
13 <refsynopsisdiv> 13 <refsynopsisdiv>
@@ -48,12 +48,15 @@
48 48
49 <refsect1> 49 <refsect1>
50 <title>Description</title> 50 <title>Description</title>
51 <para>To set custom DV timings for the input or output, applications use the 51 <para>To set DV timings for the input or output, applications use the
52<constant>VIDIOC_S_DV_TIMINGS</constant> ioctl and to get the current custom timings, 52<constant>VIDIOC_S_DV_TIMINGS</constant> ioctl and to get the current timings,
53applications use the <constant>VIDIOC_G_DV_TIMINGS</constant> ioctl. The detailed timing 53applications use the <constant>VIDIOC_G_DV_TIMINGS</constant> ioctl. The detailed timing
54information is filled in using the structure &v4l2-dv-timings;. These ioctls take 54information is filled in using the structure &v4l2-dv-timings;. These ioctls take
55a pointer to the &v4l2-dv-timings; structure as argument. If the ioctl is not supported 55a pointer to the &v4l2-dv-timings; structure as argument. If the ioctl is not supported
56or the timing values are not correct, the driver returns &EINVAL;.</para> 56or the timing values are not correct, the driver returns &EINVAL;.</para>
57<para>The <filename>linux/v4l2-dv-timings.h</filename> header can be used to get the
58timings of the formats in the <xref linkend="cea861" /> and <xref linkend="vesadmt" />
59standards.</para>
57 </refsect1> 60 </refsect1>
58 61
59 <refsect1> 62 <refsect1>
@@ -83,12 +86,13 @@ or the timing values are not correct, the driver returns &EINVAL;.</para>
83 <row> 86 <row>
84 <entry>__u32</entry> 87 <entry>__u32</entry>
85 <entry><structfield>width</structfield></entry> 88 <entry><structfield>width</structfield></entry>
86 <entry>Width of the active video in pixels</entry> 89 <entry>Width of the active video in pixels.</entry>
87 </row> 90 </row>
88 <row> 91 <row>
89 <entry>__u32</entry> 92 <entry>__u32</entry>
90 <entry><structfield>height</structfield></entry> 93 <entry><structfield>height</structfield></entry>
91 <entry>Height of the active video in lines</entry> 94 <entry>Height of the active video frame in lines. So for interlaced formats the
95 height of the active video in each field is <structfield>height</structfield>/2.</entry>
92 </row> 96 </row>
93 <row> 97 <row>
94 <entry>__u32</entry> 98 <entry>__u32</entry>
@@ -125,32 +129,52 @@ bit 0 (V4L2_DV_VSYNC_POS_POL) is for vertical sync polarity and bit 1 (V4L2_DV_H
125 <row> 129 <row>
126 <entry>__u32</entry> 130 <entry>__u32</entry>
127 <entry><structfield>vfrontporch</structfield></entry> 131 <entry><structfield>vfrontporch</structfield></entry>
128 <entry>Vertical front porch in lines</entry> 132 <entry>Vertical front porch in lines. For interlaced formats this refers to the
133 odd field (aka field 1).</entry>
129 </row> 134 </row>
130 <row> 135 <row>
131 <entry>__u32</entry> 136 <entry>__u32</entry>
132 <entry><structfield>vsync</structfield></entry> 137 <entry><structfield>vsync</structfield></entry>
133 <entry>Vertical sync length in lines</entry> 138 <entry>Vertical sync length in lines. For interlaced formats this refers to the
139 odd field (aka field 1).</entry>
134 </row> 140 </row>
135 <row> 141 <row>
136 <entry>__u32</entry> 142 <entry>__u32</entry>
137 <entry><structfield>vbackporch</structfield></entry> 143 <entry><structfield>vbackporch</structfield></entry>
138 <entry>Vertical back porch in lines</entry> 144 <entry>Vertical back porch in lines. For interlaced formats this refers to the
145 odd field (aka field 1).</entry>
139 </row> 146 </row>
140 <row> 147 <row>
141 <entry>__u32</entry> 148 <entry>__u32</entry>
142 <entry><structfield>il_vfrontporch</structfield></entry> 149 <entry><structfield>il_vfrontporch</structfield></entry>
143 <entry>Vertical front porch in lines for bottom field of interlaced field formats</entry> 150 <entry>Vertical front porch in lines for the even field (aka field 2) of
151 interlaced field formats.</entry>
144 </row> 152 </row>
145 <row> 153 <row>
146 <entry>__u32</entry> 154 <entry>__u32</entry>
147 <entry><structfield>il_vsync</structfield></entry> 155 <entry><structfield>il_vsync</structfield></entry>
148 <entry>Vertical sync length in lines for bottom field of interlaced field formats</entry> 156 <entry>Vertical sync length in lines for the even field (aka field 2) of
157 interlaced field formats.</entry>
149 </row> 158 </row>
150 <row> 159 <row>
151 <entry>__u32</entry> 160 <entry>__u32</entry>
152 <entry><structfield>il_vbackporch</structfield></entry> 161 <entry><structfield>il_vbackporch</structfield></entry>
153 <entry>Vertical back porch in lines for bottom field of interlaced field formats</entry> 162 <entry>Vertical back porch in lines for the even field (aka field 2) of
163 interlaced field formats.</entry>
164 </row>
165 <row>
166 <entry>__u32</entry>
167 <entry><structfield>standards</structfield></entry>
168 <entry>The video standard(s) this format belongs to. This will be filled in by
169 the driver. Applications must set this to 0. See <xref linkend="dv-bt-standards"/>
170 for a list of standards.</entry>
171 </row>
172 <row>
173 <entry>__u32</entry>
174 <entry><structfield>flags</structfield></entry>
175 <entry>Several flags giving more information about the format.
176 See <xref linkend="dv-bt-flags"/> for a description of the flags.
177 </entry>
154 </row> 178 </row>
155 </tbody> 179 </tbody>
156 </tgroup> 180 </tgroup>
@@ -211,6 +235,90 @@ bit 0 (V4L2_DV_VSYNC_POS_POL) is for vertical sync polarity and bit 1 (V4L2_DV_H
211 </tbody> 235 </tbody>
212 </tgroup> 236 </tgroup>
213 </table> 237 </table>
238 <table pgwide="1" frame="none" id="dv-bt-standards">
239 <title>DV BT Timing standards</title>
240 <tgroup cols="2">
241 &cs-str;
242 <tbody valign="top">
243 <row>
244 <entry>Timing standard</entry>
245 <entry>Description</entry>
246 </row>
247 <row>
248 <entry></entry>
249 <entry></entry>
250 </row>
251 <row>
252 <entry>V4L2_DV_BT_STD_CEA861</entry>
253 <entry>The timings follow the CEA-861 Digital TV Profile standard</entry>
254 </row>
255 <row>
256 <entry>V4L2_DV_BT_STD_DMT</entry>
257 <entry>The timings follow the VESA Discrete Monitor Timings standard</entry>
258 </row>
259 <row>
260 <entry>V4L2_DV_BT_STD_CVT</entry>
261 <entry>The timings follow the VESA Coordinated Video Timings standard</entry>
262 </row>
263 <row>
264 <entry>V4L2_DV_BT_STD_GTF</entry>
265 <entry>The timings follow the VESA Generalized Timings Formula standard</entry>
266 </row>
267 </tbody>
268 </tgroup>
269 </table>
270 <table pgwide="1" frame="none" id="dv-bt-flags">
271 <title>DV BT Timing flags</title>
272 <tgroup cols="2">
273 &cs-str;
274 <tbody valign="top">
275 <row>
276 <entry>Flag</entry>
277 <entry>Description</entry>
278 </row>
279 <row>
280 <entry></entry>
281 <entry></entry>
282 </row>
283 <row>
284 <entry>V4L2_DV_FL_REDUCED_BLANKING</entry>
285 <entry>CVT/GTF specific: the timings use reduced blanking (CVT) or the 'Secondary
286GTF' curve (GTF). In both cases the horizontal and/or vertical blanking
287intervals are reduced, allowing a higher resolution over the same
288bandwidth. This is a read-only flag, applications must not set this.
289 </entry>
290 </row>
291 <row>
292 <entry>V4L2_DV_FL_CAN_REDUCE_FPS</entry>
293 <entry>CEA-861 specific: set for CEA-861 formats with a framerate that is a multiple
294of six. These formats can be optionally played at 1 / 1.001 speed to
295be compatible with 60 Hz based standards such as NTSC and PAL-M that use a framerate of
29629.97 frames per second. If the transmitter can't generate such frequencies, then the
297flag will also be cleared. This is a read-only flag, applications must not set this.
298 </entry>
299 </row>
300 <row>
301 <entry>V4L2_DV_FL_REDUCED_FPS</entry>
302 <entry>CEA-861 specific: only valid for video transmitters, the flag is cleared
303by receivers. It is also only valid for formats with the V4L2_DV_FL_CAN_REDUCE_FPS flag
304set, for other formats the flag will be cleared by the driver.
305
306If the application sets this flag, then the pixelclock used to set up the transmitter is
307divided by 1.001 to make it compatible with NTSC framerates. If the transmitter
308can't generate such frequencies, then the flag will also be cleared.
309 </entry>
310 </row>
311 <row>
312 <entry>V4L2_DV_FL_HALF_LINE</entry>
313 <entry>Specific to interlaced formats: if set, then field 1 (aka the odd field)
314is really one half-line longer and field 2 (aka the even field) is really one half-line
315shorter, so each field has exactly the same number of half-lines. Whether half-lines can be
316detected or used depends on the hardware.
317 </entry>
318 </row>
319 </tbody>
320 </tgroup>
321 </table>
214 </refsect1> 322 </refsect1>
215 <refsect1> 323 <refsect1>
216 &return-value; 324 &return-value;
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml b/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
index b17a7aac6997..0a4b90fcf2da 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
@@ -265,6 +265,25 @@ These controls are described in <xref
265These controls are described in <xref 265These controls are described in <xref
266 linkend="flash-controls" />.</entry> 266 linkend="flash-controls" />.</entry>
267 </row> 267 </row>
268 <row>
269 <entry><constant>V4L2_CTRL_CLASS_JPEG</constant></entry>
270 <entry>0x9d0000</entry>
271 <entry>The class containing JPEG compression controls.
272These controls are described in <xref
273 linkend="jpeg-controls" />.</entry>
274 </row>
275 <row>
276 <entry><constant>V4L2_CTRL_CLASS_IMAGE_SOURCE</constant></entry>
277 <entry>0x9e0000</entry> <entry>The class containing image
278 source controls. These controls are described in <xref
279 linkend="image-source-controls" />.</entry>
280 </row>
281 <row>
282 <entry><constant>V4L2_CTRL_CLASS_IMAGE_PROC</constant></entry>
283 <entry>0x9f0000</entry> <entry>The class containing image
284 processing controls. These controls are described in <xref
285 linkend="image-process-controls" />.</entry>
286 </row>
268 </tbody> 287 </tbody>
269 </tgroup> 288 </tgroup>
270 </table> 289 </table>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml b/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml
index 17fbda15137b..52acff193a6f 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml
@@ -116,7 +116,7 @@ this ioctl.</para>
116 <colspec colname="c4" /> 116 <colspec colname="c4" />
117 <tbody valign="top"> 117 <tbody valign="top">
118 <row> 118 <row>
119 <entry>&v4l2-buf-type;</entry> 119 <entry>__u32</entry>
120 <entry><structfield>type</structfield></entry> 120 <entry><structfield>type</structfield></entry>
121 <entry></entry> 121 <entry></entry>
122 <entry>Type of the data stream, see <xref 122 <entry>Type of the data stream, see <xref
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml b/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml
index 66e9a5257861..69c178a4d205 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml
@@ -95,14 +95,14 @@ the &v4l2-output; <structfield>modulator</structfield> field and the
95&v4l2-modulator; <structfield>index</structfield> field.</entry> 95&v4l2-modulator; <structfield>index</structfield> field.</entry>
96 </row> 96 </row>
97 <row> 97 <row>
98 <entry>&v4l2-tuner-type;</entry> 98 <entry>__u32</entry>
99 <entry><structfield>type</structfield></entry> 99 <entry><structfield>type</structfield></entry>
100 <entry>The tuner type. This is the same value as in the 100 <entry>The tuner type. This is the same value as in the
101&v4l2-tuner; <structfield>type</structfield> field. The type must be set 101&v4l2-tuner; <structfield>type</structfield> field. See The type must be set
102to <constant>V4L2_TUNER_RADIO</constant> for <filename>/dev/radioX</filename> 102to <constant>V4L2_TUNER_RADIO</constant> for <filename>/dev/radioX</filename>
103device nodes, and to <constant>V4L2_TUNER_ANALOG_TV</constant> 103device nodes, and to <constant>V4L2_TUNER_ANALOG_TV</constant>
104for all others. The field is not applicable to modulators, &ie; ignored 104for all others. The field is not applicable to modulators, &ie; ignored
105by drivers.</entry> 105by drivers. See <xref linkend="v4l2-tuner-type" /></entry>
106 </row> 106 </row>
107 <row> 107 <row>
108 <entry>__u32</entry> 108 <entry>__u32</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-parm.xml b/Documentation/DocBook/media/v4l/vidioc-g-parm.xml
index 19b1d85dd668..f83d2cdd1185 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-parm.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-parm.xml
@@ -75,11 +75,12 @@ devices.</para>
75 &cs-ustr; 75 &cs-ustr;
76 <tbody valign="top"> 76 <tbody valign="top">
77 <row> 77 <row>
78 <entry>&v4l2-buf-type;</entry> 78 <entry>__u32</entry>
79 <entry><structfield>type</structfield></entry> 79 <entry><structfield>type</structfield></entry>
80 <entry></entry> 80 <entry></entry>
81 <entry>The buffer (stream) type, same as &v4l2-format; 81 <entry>The buffer (stream) type, same as &v4l2-format;
82<structfield>type</structfield>, set by the application.</entry> 82<structfield>type</structfield>, set by the application. See <xref
83 linkend="v4l2-buf-type" /></entry>
83 </row> 84 </row>
84 <row> 85 <row>
85 <entry>union</entry> 86 <entry>union</entry>
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 71741daaf725..bd015d1563ff 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml
@@ -148,7 +148,7 @@ using the &VIDIOC-S-FMT; ioctl as described in <xref
148<structfield>service_lines</structfield>[1][0] to zero.</entry> 148<structfield>service_lines</structfield>[1][0] to zero.</entry>
149 </row> 149 </row>
150 <row> 150 <row>
151 <entry>&v4l2-buf-type;</entry> 151 <entry>__u32</entry>
152 <entry><structfield>type</structfield></entry> 152 <entry><structfield>type</structfield></entry>
153 <entry>Type of the data stream, see <xref 153 <entry>Type of the data stream, see <xref
154 linkend="v4l2-buf-type" />. Should be 154 linkend="v4l2-buf-type" />. Should be
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml b/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml
index 91ec2fb658f8..62a1aa200a36 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml
@@ -107,7 +107,7 @@ user.<!-- FIXME Video inputs already have a name, the purpose of this
107field is not quite clear.--></para></entry> 107field is not quite clear.--></para></entry>
108 </row> 108 </row>
109 <row> 109 <row>
110 <entry>&v4l2-tuner-type;</entry> 110 <entry>__u32</entry>
111 <entry><structfield>type</structfield></entry> 111 <entry><structfield>type</structfield></entry>
112 <entry spanname="hspan">Type of the tuner, see <xref 112 <entry spanname="hspan">Type of the tuner, see <xref
113 linkend="v4l2-tuner-type" />.</entry> 113 linkend="v4l2-tuner-type" />.</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml b/Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml
index 7bde698760e4..fa7ad7e33228 100644
--- a/Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml
@@ -48,6 +48,12 @@
48 <refsect1> 48 <refsect1>
49 <title>Description</title> 49 <title>Description</title>
50 50
51 <note>
52 <title>Experimental</title>
53 <para>This is an <link linkend="experimental"> experimental </link>
54 interface and may change in the future.</para>
55 </note>
56
51 <para>Applications can optionally call the 57 <para>Applications can optionally call the
52<constant>VIDIOC_PREPARE_BUF</constant> ioctl to pass ownership of the buffer 58<constant>VIDIOC_PREPARE_BUF</constant> ioctl to pass ownership of the buffer
53to the driver before actually enqueuing it, using the 59to the driver before actually enqueuing it, using the
diff --git a/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml b/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml
index 23b17f604211..1bc8aeb3ff1f 100644
--- a/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml
@@ -49,6 +49,10 @@ input</refpurpose>
49 <refsect1> 49 <refsect1>
50 <title>Description</title> 50 <title>Description</title>
51 51
52 <para>This ioctl is <emphasis role="bold">deprecated</emphasis>.
53 New drivers and applications should use &VIDIOC-QUERY-DV-TIMINGS; instead.
54 </para>
55
52 <para>The hardware may be able to detect the current DV preset 56 <para>The hardware may be able to detect the current DV preset
53automatically, similar to sensing the video standard. To do so, applications 57automatically, similar to sensing the video standard. To do so, applications
54call <constant> VIDIOC_QUERY_DV_PRESET</constant> with a pointer to a 58call <constant> VIDIOC_QUERY_DV_PRESET</constant> with a pointer to a
diff --git a/Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml
new file mode 100644
index 000000000000..44935a0ffcf0
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml
@@ -0,0 +1,104 @@
1<refentry id="vidioc-query-dv-timings">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_QUERY_DV_TIMINGS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_QUERY_DV_TIMINGS</refname>
9 <refpurpose>Sense the DV preset received by the current
10input</refpurpose>
11 </refnamediv>
12
13 <refsynopsisdiv>
14 <funcsynopsis>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>struct v4l2_dv_timings *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>VIDIOC_QUERY_DV_TIMINGS</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para></para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <note>
53 <title>Experimental</title>
54 <para>This is an <link linkend="experimental"> experimental </link>
55 interface and may change in the future.</para>
56 </note>
57
58 <para>The hardware may be able to detect the current DV timings
59automatically, similar to sensing the video standard. To do so, applications
60call <constant>VIDIOC_QUERY_DV_TIMINGS</constant> with a pointer to a
61&v4l2-dv-timings;. Once the hardware detects the timings, it will fill in the
62timings structure.
63
64If the timings could not be detected because there was no signal, then
65<errorcode>ENOLINK</errorcode> is returned. If a signal was detected, but
66it was unstable and the receiver could not lock to the signal, then
67<errorcode>ENOLCK</errorcode> is returned. If the receiver could lock to the signal,
68but the format is unsupported (e.g. because the pixelclock is out of range
69of the hardware capabilities), then the driver fills in whatever timings it
70could find and returns <errorcode>ERANGE</errorcode>. In that case the application
71can call &VIDIOC-DV-TIMINGS-CAP; to compare the found timings with the hardware's
72capabilities in order to give more precise feedback to the user.
73</para>
74 </refsect1>
75
76 <refsect1>
77 &return-value;
78
79 <variablelist>
80 <varlistentry>
81 <term><errorcode>ENOLINK</errorcode></term>
82 <listitem>
83 <para>No timings could be detected because no signal was found.
84</para>
85 </listitem>
86 </varlistentry>
87 <varlistentry>
88 <term><errorcode>ENOLCK</errorcode></term>
89 <listitem>
90 <para>The signal was unstable and the hardware could not lock on to it.
91</para>
92 </listitem>
93 </varlistentry>
94 <varlistentry>
95 <term><errorcode>ERANGE</errorcode></term>
96 <listitem>
97 <para>Timings were found, but they are out of range of the hardware
98capabilities.
99</para>
100 </listitem>
101 </varlistentry>
102 </variablelist>
103 </refsect1>
104</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml b/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml
index 36660d311b51..e6645b996558 100644
--- a/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml
@@ -127,7 +127,7 @@ the first control with a higher ID. Drivers which do not support this
127flag yet always return an &EINVAL;.</entry> 127flag yet always return an &EINVAL;.</entry>
128 </row> 128 </row>
129 <row> 129 <row>
130 <entry>&v4l2-ctrl-type;</entry> 130 <entry>__u32</entry>
131 <entry><structfield>type</structfield></entry> 131 <entry><structfield>type</structfield></entry>
132 <entry>Type of control, see <xref 132 <entry>Type of control, see <xref
133 linkend="v4l2-ctrl-type" />.</entry> 133 linkend="v4l2-ctrl-type" />.</entry>
@@ -215,11 +215,12 @@ the array to zero.</entry>
215 215
216 <table pgwide="1" frame="none" id="v4l2-querymenu"> 216 <table pgwide="1" frame="none" id="v4l2-querymenu">
217 <title>struct <structname>v4l2_querymenu</structname></title> 217 <title>struct <structname>v4l2_querymenu</structname></title>
218 <tgroup cols="3"> 218 <tgroup cols="4">
219 &cs-str; 219 &cs-str;
220 <tbody valign="top"> 220 <tbody valign="top">
221 <row> 221 <row>
222 <entry>__u32</entry> 222 <entry>__u32</entry>
223 <entry></entry>
223 <entry><structfield>id</structfield></entry> 224 <entry><structfield>id</structfield></entry>
224 <entry>Identifies the control, set by the application 225 <entry>Identifies the control, set by the application
225from the respective &v4l2-queryctrl; 226from the respective &v4l2-queryctrl;
@@ -227,18 +228,38 @@ from the respective &v4l2-queryctrl;
227 </row> 228 </row>
228 <row> 229 <row>
229 <entry>__u32</entry> 230 <entry>__u32</entry>
231 <entry></entry>
230 <entry><structfield>index</structfield></entry> 232 <entry><structfield>index</structfield></entry>
231 <entry>Index of the menu item, starting at zero, set by 233 <entry>Index of the menu item, starting at zero, set by
232 the application.</entry> 234 the application.</entry>
233 </row> 235 </row>
234 <row> 236 <row>
237 <entry>union</entry>
238 <entry></entry>
239 <entry></entry>
240 <entry></entry>
241 </row>
242 <row>
243 <entry></entry>
235 <entry>__u8</entry> 244 <entry>__u8</entry>
236 <entry><structfield>name</structfield>[32]</entry> 245 <entry><structfield>name</structfield>[32]</entry>
237 <entry>Name of the menu item, a NUL-terminated ASCII 246 <entry>Name of the menu item, a NUL-terminated ASCII
238string. This information is intended for the user.</entry> 247string. This information is intended for the user. This field is valid
248for <constant>V4L2_CTRL_FLAG_MENU</constant> type controls.</entry>
249 </row>
250 <row>
251 <entry></entry>
252 <entry>__s64</entry>
253 <entry><structfield>value</structfield></entry>
254 <entry>
255 Value of the integer menu item. This field is valid for
256 <constant>V4L2_CTRL_FLAG_INTEGER_MENU</constant> type
257 controls.
258 </entry>
239 </row> 259 </row>
240 <row> 260 <row>
241 <entry>__u32</entry> 261 <entry>__u32</entry>
262 <entry></entry>
242 <entry><structfield>reserved</structfield></entry> 263 <entry><structfield>reserved</structfield></entry>
243 <entry>Reserved for future extensions. Drivers must set 264 <entry>Reserved for future extensions. Drivers must set
244the array to zero.</entry> 265the array to zero.</entry>
@@ -292,6 +313,20 @@ the menu items can be enumerated with the
292<constant>VIDIOC_QUERYMENU</constant> ioctl.</entry> 313<constant>VIDIOC_QUERYMENU</constant> ioctl.</entry>
293 </row> 314 </row>
294 <row> 315 <row>
316 <entry><constant>V4L2_CTRL_TYPE_INTEGER_MENU</constant></entry>
317 <entry>&ge; 0</entry>
318 <entry>1</entry>
319 <entry>N-1</entry>
320 <entry>
321 The control has a menu of N choices. The values of the
322 menu items can be enumerated with the
323 <constant>VIDIOC_QUERYMENU</constant> ioctl. This is
324 similar to <constant>V4L2_CTRL_TYPE_MENU</constant>
325 except that instead of strings, the menu items are
326 signed 64-bit integers.
327 </entry>
328 </row>
329 <row>
295 <entry><constant>V4L2_CTRL_TYPE_BITMASK</constant></entry> 330 <entry><constant>V4L2_CTRL_TYPE_BITMASK</constant></entry>
296 <entry>0</entry> 331 <entry>0</entry>
297 <entry>n/a</entry> 332 <entry>n/a</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml b/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml
index 7be4b1d29b90..d7c95057bc51 100644
--- a/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml
@@ -92,18 +92,19 @@ streamoff.--></para>
92 <entry>The number of buffers requested or granted.</entry> 92 <entry>The number of buffers requested or granted.</entry>
93 </row> 93 </row>
94 <row> 94 <row>
95 <entry>&v4l2-buf-type;</entry> 95 <entry>__u32</entry>
96 <entry><structfield>type</structfield></entry> 96 <entry><structfield>type</structfield></entry>
97 <entry>Type of the stream or buffers, this is the same 97 <entry>Type of the stream or buffers, this is the same
98as the &v4l2-format; <structfield>type</structfield> field. See <xref 98as the &v4l2-format; <structfield>type</structfield> field. See <xref
99 linkend="v4l2-buf-type" /> for valid values.</entry> 99 linkend="v4l2-buf-type" /> for valid values.</entry>
100 </row> 100 </row>
101 <row> 101 <row>
102 <entry>&v4l2-memory;</entry> 102 <entry>__u32</entry>
103 <entry><structfield>memory</structfield></entry> 103 <entry><structfield>memory</structfield></entry>
104 <entry>Applications set this field to 104 <entry>Applications set this field to
105<constant>V4L2_MEMORY_MMAP</constant> or 105<constant>V4L2_MEMORY_MMAP</constant> or
106<constant>V4L2_MEMORY_USERPTR</constant>.</entry> 106<constant>V4L2_MEMORY_USERPTR</constant>. See <xref linkend="v4l2-memory"
107/>.</entry>
107 </row> 108 </row>
108 <row> 109 <row>
109 <entry>__u32</entry> 110 <entry>__u32</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml b/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml
index 18b1a8266f7c..407dfceb71f0 100644
--- a/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml
@@ -73,10 +73,11 @@ same value as in the &v4l2-input; <structfield>tuner</structfield>
73field and the &v4l2-tuner; <structfield>index</structfield> field.</entry> 73field and the &v4l2-tuner; <structfield>index</structfield> field.</entry>
74 </row> 74 </row>
75 <row> 75 <row>
76 <entry>&v4l2-tuner-type;</entry> 76 <entry>__u32</entry>
77 <entry><structfield>type</structfield></entry> 77 <entry><structfield>type</structfield></entry>
78 <entry>The tuner type. This is the same value as in the 78 <entry>The tuner type. This is the same value as in the
79&v4l2-tuner; <structfield>type</structfield> field.</entry> 79&v4l2-tuner; <structfield>type</structfield> field. See <xref
80 linkend="v4l2-tuner-type" /></entry>
80 </row> 81 </row>
81 <row> 82 <row>
82 <entry>__u32</entry> 83 <entry>__u32</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml
index 06197323a8cc..4cddd788c589 100644
--- a/Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml
@@ -58,9 +58,12 @@
58 <title>Description</title> 58 <title>Description</title>
59 59
60 <note> 60 <note>
61 <title>Experimental</title> 61 <title>Obsolete</title>
62 <para>This is an <link linkend="experimental">experimental</link> 62
63 interface and may change in the future.</para> 63 <para>This is an <link linkend="obsolete">obsolete</link>
64 interface and may be removed in the future. It is superseded by
65 <link linkend="vidioc-subdev-g-selection">the selection
66 API</link>.</para>
64 </note> 67 </note>
65 68
66 <para>To retrieve the current crop rectangle applications set the 69 <para>To retrieve the current crop rectangle applications set the
diff --git a/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml
new file mode 100644
index 000000000000..208e9f0da3f3
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml
@@ -0,0 +1,228 @@
1<refentry id="vidioc-subdev-g-selection">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_SUBDEV_G_SELECTION, VIDIOC_SUBDEV_S_SELECTION</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_SUBDEV_G_SELECTION</refname>
9 <refname>VIDIOC_SUBDEV_S_SELECTION</refname>
10 <refpurpose>Get or set selection rectangles on a subdev pad</refpurpose>
11 </refnamediv>
12
13 <refsynopsisdiv>
14 <funcsynopsis>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>struct v4l2_subdev_selection *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>VIDIOC_SUBDEV_G_SELECTION, VIDIOC_SUBDEV_S_SELECTION</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para></para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <note>
53 <title>Experimental</title>
54 <para>This is an <link linkend="experimental">experimental</link>
55 interface and may change in the future.</para>
56 </note>
57
58 <para>The selections are used to configure various image
59 processing functionality performed by the subdevs which affect the
60 image size. This currently includes cropping, scaling and
61 composition.</para>
62
63 <para>The selection API replaces <link
64 linkend="vidioc-subdev-g-crop">the old subdev crop API</link>. All
65 the function of the crop API, and more, are supported by the
66 selections API.</para>
67
68 <para>See <xref linkend="subdev"></xref> for
69 more information on how each selection target affects the image
70 processing pipeline inside the subdevice.</para>
71
72 <section>
73 <title>Types of selection targets</title>
74
75 <para>There are two types of selection targets: actual and bounds.
76 The ACTUAL targets are the targets which configure the hardware.
77 The BOUNDS target will return a rectangle that contain all
78 possible ACTUAL rectangles.</para>
79 </section>
80
81 <section>
82 <title>Discovering supported features</title>
83
84 <para>To discover which targets are supported, the user can
85 perform <constant>VIDIOC_SUBDEV_G_SELECTION</constant> on them.
86 Any unsupported target will return
87 <constant>EINVAL</constant>.</para>
88 </section>
89
90 <table pgwide="1" frame="none" id="v4l2-subdev-selection-targets">
91 <title>V4L2 subdev selection targets</title>
92 <tgroup cols="3">
93 &cs-def;
94 <tbody valign="top">
95 <row>
96 <entry><constant>V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL</constant></entry>
97 <entry>0x0000</entry>
98 <entry>Actual crop. Defines the cropping
99 performed by the processing step.</entry>
100 </row>
101 <row>
102 <entry><constant>V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS</constant></entry>
103 <entry>0x0002</entry>
104 <entry>Bounds of the crop rectangle.</entry>
105 </row>
106 <row>
107 <entry><constant>V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL</constant></entry>
108 <entry>0x0100</entry>
109 <entry>Actual compose rectangle. Used to configure scaling
110 on sink pads and composition on source pads.</entry>
111 </row>
112 <row>
113 <entry><constant>V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS</constant></entry>
114 <entry>0x0102</entry>
115 <entry>Bounds of the compose rectangle.</entry>
116 </row>
117 </tbody>
118 </tgroup>
119 </table>
120
121 <table pgwide="1" frame="none" id="v4l2-subdev-selection-flags">
122 <title>V4L2 subdev selection flags</title>
123 <tgroup cols="3">
124 &cs-def;
125 <tbody valign="top">
126 <row>
127 <entry><constant>V4L2_SUBDEV_SEL_FLAG_SIZE_GE</constant></entry>
128 <entry>(1 &lt;&lt; 0)</entry> <entry>Suggest the driver it
129 should choose greater or equal rectangle (in size) than
130 was requested. Albeit the driver may choose a lesser size,
131 it will only do so due to hardware limitations. Without
132 this flag (and
133 <constant>V4L2_SUBDEV_SEL_FLAG_SIZE_LE</constant>) the
134 behaviour is to choose the closest possible
135 rectangle.</entry>
136 </row>
137 <row>
138 <entry><constant>V4L2_SUBDEV_SEL_FLAG_SIZE_LE</constant></entry>
139 <entry>(1 &lt;&lt; 1)</entry> <entry>Suggest the driver it
140 should choose lesser or equal rectangle (in size) than was
141 requested. Albeit the driver may choose a greater size, it
142 will only do so due to hardware limitations.</entry>
143 </row>
144 <row>
145 <entry><constant>V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG</constant></entry>
146 <entry>(1 &lt;&lt; 2)</entry>
147 <entry>The configuration should not be propagated to any
148 further processing steps. If this flag is not given, the
149 configuration is propagated inside the subdevice to all
150 further processing steps.</entry>
151 </row>
152 </tbody>
153 </tgroup>
154 </table>
155
156 <table pgwide="1" frame="none" id="v4l2-subdev-selection">
157 <title>struct <structname>v4l2_subdev_selection</structname></title>
158 <tgroup cols="3">
159 &cs-str;
160 <tbody valign="top">
161 <row>
162 <entry>__u32</entry>
163 <entry><structfield>which</structfield></entry>
164 <entry>Active or try selection, from
165 &v4l2-subdev-format-whence;.</entry>
166 </row>
167 <row>
168 <entry>__u32</entry>
169 <entry><structfield>pad</structfield></entry>
170 <entry>Pad number as reported by the media framework.</entry>
171 </row>
172 <row>
173 <entry>__u32</entry>
174 <entry><structfield>target</structfield></entry>
175 <entry>Target selection rectangle. See
176 <xref linkend="v4l2-subdev-selection-targets">.</xref>.</entry>
177 </row>
178 <row>
179 <entry>__u32</entry>
180 <entry><structfield>flags</structfield></entry>
181 <entry>Flags. See
182 <xref linkend="v4l2-subdev-selection-flags">.</xref></entry>
183 </row>
184 <row>
185 <entry>&v4l2-rect;</entry>
186 <entry><structfield>rect</structfield></entry>
187 <entry>Selection rectangle, in pixels.</entry>
188 </row>
189 <row>
190 <entry>__u32</entry>
191 <entry><structfield>reserved</structfield>[8]</entry>
192 <entry>Reserved for future extensions. Applications and drivers must
193 set the array to zero.</entry>
194 </row>
195 </tbody>
196 </tgroup>
197 </table>
198
199 </refsect1>
200
201 <refsect1>
202 &return-value;
203
204 <variablelist>
205 <varlistentry>
206 <term><errorcode>EBUSY</errorcode></term>
207 <listitem>
208 <para>The selection rectangle can't be changed because the
209 pad is currently busy. This can be caused, for instance, by
210 an active video stream on the pad. The ioctl must not be
211 retried without performing another action to fix the problem
212 first. Only returned by
213 <constant>VIDIOC_SUBDEV_S_SELECTION</constant></para>
214 </listitem>
215 </varlistentry>
216 <varlistentry>
217 <term><errorcode>EINVAL</errorcode></term>
218 <listitem>
219 <para>The &v4l2-subdev-selection;
220 <structfield>pad</structfield> references a non-existing
221 pad, the <structfield>which</structfield> field references a
222 non-existing format, or the selection target is not
223 supported on the given subdev pad.</para>
224 </listitem>
225 </varlistentry>
226 </variablelist>
227 </refsect1>
228</refentry>
diff --git a/Documentation/DocBook/mtdnand.tmpl b/Documentation/DocBook/mtdnand.tmpl
index 0c674be0d3c6..e0aedb7a7827 100644
--- a/Documentation/DocBook/mtdnand.tmpl
+++ b/Documentation/DocBook/mtdnand.tmpl
@@ -1119,8 +1119,6 @@ in this page</entry>
1119 These constants are defined in nand.h. They are ored together to describe 1119 These constants are defined in nand.h. They are ored together to describe
1120 the chip functionality. 1120 the chip functionality.
1121 <programlisting> 1121 <programlisting>
1122/* Chip can not auto increment pages */
1123#define NAND_NO_AUTOINCR 0x00000001
1124/* Buswitdh is 16 bit */ 1122/* Buswitdh is 16 bit */
1125#define NAND_BUSWIDTH_16 0x00000002 1123#define NAND_BUSWIDTH_16 0x00000002
1126/* Device supports partial programming without padding */ 1124/* Device supports partial programming without padding */
diff --git a/Documentation/HOWTO b/Documentation/HOWTO
index f7ade3b3b40d..59c080f084ef 100644
--- a/Documentation/HOWTO
+++ b/Documentation/HOWTO
@@ -218,16 +218,16 @@ The development process
218Linux kernel development process currently consists of a few different 218Linux kernel development process currently consists of a few different
219main kernel "branches" and lots of different subsystem-specific kernel 219main kernel "branches" and lots of different subsystem-specific kernel
220branches. These different branches are: 220branches. These different branches are:
221 - main 2.6.x kernel tree 221 - main 3.x kernel tree
222 - 2.6.x.y -stable kernel tree 222 - 3.x.y -stable kernel tree
223 - 2.6.x -git kernel patches 223 - 3.x -git kernel patches
224 - subsystem specific kernel trees and patches 224 - subsystem specific kernel trees and patches
225 - the 2.6.x -next kernel tree for integration tests 225 - the 3.x -next kernel tree for integration tests
226 226
2272.6.x kernel tree 2273.x kernel tree
228----------------- 228-----------------
2292.6.x kernels are maintained by Linus Torvalds, and can be found on 2293.x kernels are maintained by Linus Torvalds, and can be found on
230kernel.org in the pub/linux/kernel/v2.6/ directory. Its development 230kernel.org in the pub/linux/kernel/v3.x/ directory. Its development
231process is as follows: 231process is as follows:
232 - As soon as a new kernel is released a two weeks window is open, 232 - As soon as a new kernel is released a two weeks window is open,
233 during this period of time maintainers can submit big diffs to 233 during this period of time maintainers can submit big diffs to
@@ -262,20 +262,20 @@ mailing list about kernel releases:
262 released according to perceived bug status, not according to a 262 released according to perceived bug status, not according to a
263 preconceived timeline." 263 preconceived timeline."
264 264
2652.6.x.y -stable kernel tree 2653.x.y -stable kernel tree
266--------------------------- 266---------------------------
267Kernels with 4-part versions are -stable kernels. They contain 267Kernels with 3-part versions are -stable kernels. They contain
268relatively small and critical fixes for security problems or significant 268relatively small and critical fixes for security problems or significant
269regressions discovered in a given 2.6.x kernel. 269regressions discovered in a given 3.x kernel.
270 270
271This is the recommended branch for users who want the most recent stable 271This is the recommended branch for users who want the most recent stable
272kernel and are not interested in helping test development/experimental 272kernel and are not interested in helping test development/experimental
273versions. 273versions.
274 274
275If no 2.6.x.y kernel is available, then the highest numbered 2.6.x 275If no 3.x.y kernel is available, then the highest numbered 3.x
276kernel is the current stable kernel. 276kernel is the current stable kernel.
277 277
2782.6.x.y are maintained by the "stable" team <stable@vger.kernel.org>, and 2783.x.y are maintained by the "stable" team <stable@vger.kernel.org>, and
279are released as needs dictate. The normal release period is approximately 279are released as needs dictate. The normal release period is approximately
280two weeks, but it can be longer if there are no pressing problems. A 280two weeks, but it can be longer if there are no pressing problems. A
281security-related problem, instead, can cause a release to happen almost 281security-related problem, instead, can cause a release to happen almost
@@ -285,7 +285,7 @@ The file Documentation/stable_kernel_rules.txt in the kernel tree
285documents what kinds of changes are acceptable for the -stable tree, and 285documents what kinds of changes are acceptable for the -stable tree, and
286how the release process works. 286how the release process works.
287 287
2882.6.x -git patches 2883.x -git patches
289------------------ 289------------------
290These are daily snapshots of Linus' kernel tree which are managed in a 290These are daily snapshots of Linus' kernel tree which are managed in a
291git repository (hence the name.) These patches are usually released 291git repository (hence the name.) These patches are usually released
@@ -317,13 +317,13 @@ revisions to it, and maintainers can mark patches as under review,
317accepted, or rejected. Most of these patchwork sites are listed at 317accepted, or rejected. Most of these patchwork sites are listed at
318http://patchwork.kernel.org/. 318http://patchwork.kernel.org/.
319 319
3202.6.x -next kernel tree for integration tests 3203.x -next kernel tree for integration tests
321--------------------------------------------- 321---------------------------------------------
322Before updates from subsystem trees are merged into the mainline 2.6.x 322Before updates from subsystem trees are merged into the mainline 3.x
323tree, they need to be integration-tested. For this purpose, a special 323tree, they need to be integration-tested. For this purpose, a special
324testing repository exists into which virtually all subsystem trees are 324testing repository exists into which virtually all subsystem trees are
325pulled on an almost daily basis: 325pulled on an almost daily basis:
326 http://git.kernel.org/?p=linux/kernel/git/sfr/linux-next.git 326 http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git
327 http://linux.f-seidel.de/linux-next/pmwiki/ 327 http://linux.f-seidel.de/linux-next/pmwiki/
328 328
329This way, the -next kernel gives a summary outlook onto what will be 329This way, the -next kernel gives a summary outlook onto what will be
diff --git a/Documentation/Makefile b/Documentation/Makefile
index 30b656ece7aa..31d302bc5863 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -1,3 +1,3 @@
1obj-m := DocBook/ accounting/ auxdisplay/ connector/ \ 1obj-m := DocBook/ accounting/ auxdisplay/ connector/ \
2 filesystems/ filesystems/configfs/ ia64/ laptops/ networking/ \ 2 filesystems/ filesystems/configfs/ ia64/ laptops/ networking/ \
3 pcmcia/ spi/ timers/ watchdog/src/ 3 pcmcia/ spi/ timers/ watchdog/src/ misc-devices/mei/
diff --git a/Documentation/RCU/torture.txt b/Documentation/RCU/torture.txt
index 375d3fb71437..4ddf3913fd8c 100644
--- a/Documentation/RCU/torture.txt
+++ b/Documentation/RCU/torture.txt
@@ -47,6 +47,16 @@ irqreader Says to invoke RCU readers from irq level. This is currently
47 permit this. (Or, more accurately, variants of RCU that do 47 permit this. (Or, more accurately, variants of RCU that do
48 -not- permit this know to ignore this variable.) 48 -not- permit this know to ignore this variable.)
49 49
50n_barrier_cbs If this is nonzero, RCU barrier testing will be conducted,
51 in which case n_barrier_cbs specifies the number of
52 RCU callbacks (and corresponding kthreads) to use for
53 this testing. The value cannot be negative. If you
54 specify this to be non-zero when torture_type indicates a
55 synchronous RCU implementation (one for which a member of
56 the synchronize_rcu() rather than the call_rcu() family is
57 used -- see the documentation for torture_type below), an
58 error will be reported and no testing will be carried out.
59
50nfakewriters This is the number of RCU fake writer threads to run. Fake 60nfakewriters This is the number of RCU fake writer threads to run. Fake
51 writer threads repeatedly use the synchronous "wait for 61 writer threads repeatedly use the synchronous "wait for
52 current readers" function of the interface selected by 62 current readers" function of the interface selected by
@@ -188,7 +198,7 @@ OUTPUT
188The statistics output is as follows: 198The statistics output is as follows:
189 199
190 rcu-torture:--- Start of test: nreaders=16 nfakewriters=4 stat_interval=30 verbose=0 test_no_idle_hz=1 shuffle_interval=3 stutter=5 irqreader=1 fqs_duration=0 fqs_holdoff=0 fqs_stutter=3 test_boost=1/0 test_boost_interval=7 test_boost_duration=4 200 rcu-torture:--- Start of test: nreaders=16 nfakewriters=4 stat_interval=30 verbose=0 test_no_idle_hz=1 shuffle_interval=3 stutter=5 irqreader=1 fqs_duration=0 fqs_holdoff=0 fqs_stutter=3 test_boost=1/0 test_boost_interval=7 test_boost_duration=4
191 rcu-torture: rtc: (null) ver: 155441 tfle: 0 rta: 155441 rtaf: 8884 rtf: 155440 rtmbe: 0 rtbke: 0 rtbre: 0 rtbf: 0 rtb: 0 nt: 3055767 201 rcu-torture: rtc: (null) ver: 155441 tfle: 0 rta: 155441 rtaf: 8884 rtf: 155440 rtmbe: 0 rtbe: 0 rtbke: 0 rtbre: 0 rtbf: 0 rtb: 0 nt: 3055767
192 rcu-torture: Reader Pipe: 727860534 34213 0 0 0 0 0 0 0 0 0 202 rcu-torture: Reader Pipe: 727860534 34213 0 0 0 0 0 0 0 0 0
193 rcu-torture: Reader Batch: 727877838 17003 0 0 0 0 0 0 0 0 0 203 rcu-torture: Reader Batch: 727877838 17003 0 0 0 0 0 0 0 0 0
194 rcu-torture: Free-Block Circulation: 155440 155440 155440 155440 155440 155440 155440 155440 155440 155440 0 204 rcu-torture: Free-Block Circulation: 155440 155440 155440 155440 155440 155440 155440 155440 155440 155440 0
@@ -230,6 +240,9 @@ o "rtmbe": A non-zero value indicates that rcutorture believes that
230 rcu_assign_pointer() and rcu_dereference() are not working 240 rcu_assign_pointer() and rcu_dereference() are not working
231 correctly. This value should be zero. 241 correctly. This value should be zero.
232 242
243o "rtbe": A non-zero value indicates that one of the rcu_barrier()
244 family of functions is not working correctly.
245
233o "rtbke": rcutorture was unable to create the real-time kthreads 246o "rtbke": rcutorture was unable to create the real-time kthreads
234 used to force RCU priority inversion. This value should be zero. 247 used to force RCU priority inversion. This value should be zero.
235 248
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index 4468ce24427c..c379a2a6949f 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -150,7 +150,8 @@ be able to justify all violations that remain in your patch.
150 150
151Look through the MAINTAINERS file and the source code, and determine 151Look through the MAINTAINERS file and the source code, and determine
152if your change applies to a specific subsystem of the kernel, with 152if your change applies to a specific subsystem of the kernel, with
153an assigned maintainer. If so, e-mail that person. 153an assigned maintainer. If so, e-mail that person. The script
154scripts/get_maintainer.pl can be very useful at this step.
154 155
155If no maintainer is listed, or the maintainer does not respond, send 156If no maintainer is listed, or the maintainer does not respond, send
156your patch to the primary Linux kernel developer's mailing list, 157your patch to the primary Linux kernel developer's mailing list,
diff --git a/Documentation/arm/00-INDEX b/Documentation/arm/00-INDEX
index 91c24a1e8a9e..36420e116c90 100644
--- a/Documentation/arm/00-INDEX
+++ b/Documentation/arm/00-INDEX
@@ -4,8 +4,6 @@ Booting
4 - requirements for booting 4 - requirements for booting
5Interrupts 5Interrupts
6 - ARM Interrupt subsystem documentation 6 - ARM Interrupt subsystem documentation
7IXP2000
8 - Release Notes for Linux on Intel's IXP2000 Network Processor
9msm 7msm
10 - MSM specific documentation 8 - MSM specific documentation
11Netwinder 9Netwinder
diff --git a/Documentation/arm/IXP2000 b/Documentation/arm/IXP2000
deleted file mode 100644
index 68d21d92a30b..000000000000
--- a/Documentation/arm/IXP2000
+++ /dev/null
@@ -1,69 +0,0 @@
1
2-------------------------------------------------------------------------
3Release Notes for Linux on Intel's IXP2000 Network Processor
4
5Maintained by Deepak Saxena <dsaxena@plexity.net>
6-------------------------------------------------------------------------
7
81. Overview
9
10Intel's IXP2000 family of NPUs (IXP2400, IXP2800, IXP2850) is designed
11for high-performance network applications such high-availability
12telecom systems. In addition to an XScale core, it contains up to 8
13"MicroEngines" that run special code, several high-end networking
14interfaces (UTOPIA, SPI, etc), a PCI host bridge, one serial port,
15flash interface, and some other odds and ends. For more information, see:
16
17http://developer.intel.com
18
192. Linux Support
20
21Linux currently supports the following features on the IXP2000 NPUs:
22
23- On-chip serial
24- PCI
25- Flash (MTD/JFFS2)
26- I2C through GPIO
27- Timers (watchdog, OS)
28
29That is about all we can support under Linux ATM b/c the core networking
30components of the chip are accessed via Intel's closed source SDK.
31Please contact Intel directly on issues with using those. There is
32also a mailing list run by some folks at Princeton University that might
33be of help: https://lists.cs.princeton.edu/mailman/listinfo/ixp2xxx
34
35WHATEVER YOU DO, DO NOT POST EMAIL TO THE LINUX-ARM OR LINUX-ARM-KERNEL
36MAILING LISTS REGARDING THE INTEL SDK.
37
383. Supported Platforms
39
40- Intel IXDP2400 Reference Platform
41- Intel IXDP2800 Reference Platform
42- Intel IXDP2401 Reference Platform
43- Intel IXDP2801 Reference Platform
44- RadiSys ENP-2611
45
464. Usage Notes
47
48- The IXP2000 platforms usually have rather complex PCI bus topologies
49 with large memory space requirements. In addition, b/c of the way the
50 Intel SDK is designed, devices are enumerated in a very specific
51 way. B/c of this this, we use "pci=firmware" option in the kernel
52 command line so that we do not re-enumerate the bus.
53
54- IXDP2x01 systems have variable clock tick rates that we cannot determine
55 via HW registers. The "ixdp2x01_clk=XXX" cmd line options allow you
56 to pass the clock rate to the board port.
57
585. Thanks
59
60The IXP2000 work has been funded by Intel Corp. and MontaVista Software, Inc.
61
62The following people have contributed patches/comments/etc:
63
64Naeem F. Afzal
65Lennert Buytenhek
66Jeffrey Daly
67
68-------------------------------------------------------------------------
69Last Update: 8/09/2004
diff --git a/Documentation/arm/OMAP/DSS b/Documentation/arm/OMAP/DSS
index 888ae7b83ae4..a564ceea9e98 100644
--- a/Documentation/arm/OMAP/DSS
+++ b/Documentation/arm/OMAP/DSS
@@ -47,6 +47,51 @@ flexible way to enable non-common multi-display configuration. In addition to
47modelling the hardware overlays, omapdss supports virtual overlays and overlay 47modelling the hardware overlays, omapdss supports virtual overlays and overlay
48managers. These can be used when updating a display with CPU or system DMA. 48managers. These can be used when updating a display with CPU or system DMA.
49 49
50omapdss driver support for audio
51--------------------------------
52There exist several display technologies and standards that support audio as
53well. Hence, it is relevant to update the DSS device driver to provide an audio
54interface that may be used by an audio driver or any other driver interested in
55the functionality.
56
57The audio_enable function is intended to prepare the relevant
58IP for playback (e.g., enabling an audio FIFO, taking in/out of reset
59some IP, enabling companion chips, etc). It is intended to be called before
60audio_start. The audio_disable function performs the reverse operation and is
61intended to be called after audio_stop.
62
63While a given DSS device driver may support audio, it is possible that for
64certain configurations audio is not supported (e.g., an HDMI display using a
65VESA video timing). The audio_supported function is intended to query whether
66the current configuration of the display supports audio.
67
68The audio_config function is intended to configure all the relevant audio
69parameters of the display. In order to make the function independent of any
70specific DSS device driver, a struct omap_dss_audio is defined. Its purpose
71is to contain all the required parameters for audio configuration. At the
72moment, such structure contains pointers to IEC-60958 channel status word
73and CEA-861 audio infoframe structures. This should be enough to support
74HDMI and DisplayPort, as both are based on CEA-861 and IEC-60958.
75
76The audio_enable/disable, audio_config and audio_supported functions could be
77implemented as functions that may sleep. Hence, they should not be called
78while holding a spinlock or a readlock.
79
80The audio_start/audio_stop function is intended to effectively start/stop audio
81playback after the configuration has taken place. These functions are designed
82to be used in an atomic context. Hence, audio_start should return quickly and be
83called only after all the needed resources for audio playback (audio FIFOs,
84DMA channels, companion chips, etc) have been enabled to begin data transfers.
85audio_stop is designed to only stop the audio transfers. The resources used
86for playback are released using audio_disable.
87
88The enum omap_dss_audio_state may be used to help the implementations of
89the interface to keep track of the audio state. The initial state is _DISABLED;
90then, the state transitions to _CONFIGURED, and then, when it is ready to
91play audio, to _ENABLED. The state _PLAYING is used when the audio is being
92rendered.
93
94
50Panel and controller drivers 95Panel and controller drivers
51---------------------------- 96----------------------------
52 97
@@ -156,6 +201,7 @@ timings Display timings (pixclock,xres/hfp/hbp/hsw,yres/vfp/vbp/vsw)
156 "pal" and "ntsc" 201 "pal" and "ntsc"
157panel_name 202panel_name
158tear_elim Tearing elimination 0=off, 1=on 203tear_elim Tearing elimination 0=off, 1=on
204output_type Output type (video encoder only): "composite" or "svideo"
159 205
160There are also some debugfs files at <debugfs>/omapdss/ which show information 206There are also some debugfs files at <debugfs>/omapdss/ which show information
161about clocks and registers. 207about clocks and registers.
diff --git a/Documentation/arm/SPEAr/overview.txt b/Documentation/arm/SPEAr/overview.txt
index 253a35c6f782..65610bf52ebf 100644
--- a/Documentation/arm/SPEAr/overview.txt
+++ b/Documentation/arm/SPEAr/overview.txt
@@ -8,53 +8,56 @@ Introduction
8 weblink : http://www.st.com/spear 8 weblink : http://www.st.com/spear
9 9
10 The ST Microelectronics SPEAr range of ARM9/CortexA9 System-on-Chip CPUs are 10 The ST Microelectronics SPEAr range of ARM9/CortexA9 System-on-Chip CPUs are
11 supported by the 'spear' platform of ARM Linux. Currently SPEAr300, 11 supported by the 'spear' platform of ARM Linux. Currently SPEAr1310,
12 SPEAr310, SPEAr320 and SPEAr600 SOCs are supported. Support for the SPEAr13XX 12 SPEAr1340, SPEAr300, SPEAr310, SPEAr320 and SPEAr600 SOCs are supported.
13 series is in progress.
14 13
15 Hierarchy in SPEAr is as follows: 14 Hierarchy in SPEAr is as follows:
16 15
17 SPEAr (Platform) 16 SPEAr (Platform)
18 - SPEAr3XX (3XX SOC series, based on ARM9) 17 - SPEAr3XX (3XX SOC series, based on ARM9)
19 - SPEAr300 (SOC) 18 - SPEAr300 (SOC)
20 - SPEAr300_EVB (Evaluation Board) 19 - SPEAr300 Evaluation Board
21 - SPEAr310 (SOC) 20 - SPEAr310 (SOC)
22 - SPEAr310_EVB (Evaluation Board) 21 - SPEAr310 Evaluation Board
23 - SPEAr320 (SOC) 22 - SPEAr320 (SOC)
24 - SPEAr320_EVB (Evaluation Board) 23 - SPEAr320 Evaluation Board
25 - SPEAr6XX (6XX SOC series, based on ARM9) 24 - SPEAr6XX (6XX SOC series, based on ARM9)
26 - SPEAr600 (SOC) 25 - SPEAr600 (SOC)
27 - SPEAr600_EVB (Evaluation Board) 26 - SPEAr600 Evaluation Board
28 - SPEAr13XX (13XX SOC series, based on ARM CORTEXA9) 27 - SPEAr13XX (13XX SOC series, based on ARM CORTEXA9)
29 - SPEAr1300 (SOC) 28 - SPEAr1310 (SOC)
29 - SPEAr1310 Evaluation Board
30 - SPEAr1340 (SOC)
31 - SPEAr1340 Evaluation Board
30 32
31 Configuration 33 Configuration
32 ------------- 34 -------------
33 35
34 A generic configuration is provided for each machine, and can be used as the 36 A generic configuration is provided for each machine, and can be used as the
35 default by 37 default by
36 make spear600_defconfig 38 make spear13xx_defconfig
37 make spear300_defconfig 39 make spear3xx_defconfig
38 make spear310_defconfig 40 make spear6xx_defconfig
39 make spear320_defconfig
40 41
41 Layout 42 Layout
42 ------ 43 ------
43 44
44 The common files for multiple machine families (SPEAr3XX, SPEAr6XX and 45 The common files for multiple machine families (SPEAr3xx, SPEAr6xx and
45 SPEAr13XX) are located in the platform code contained in arch/arm/plat-spear 46 SPEAr13xx) are located in the platform code contained in arch/arm/plat-spear
46 with headers in plat/. 47 with headers in plat/.
47 48
48 Each machine series have a directory with name arch/arm/mach-spear followed by 49 Each machine series have a directory with name arch/arm/mach-spear followed by
49 series name. Like mach-spear3xx, mach-spear6xx and mach-spear13xx. 50 series name. Like mach-spear3xx, mach-spear6xx and mach-spear13xx.
50 51
51 Common file for machines of spear3xx family is mach-spear3xx/spear3xx.c and for 52 Common file for machines of spear3xx family is mach-spear3xx/spear3xx.c, for
52 spear6xx is mach-spear6xx/spear6xx.c. mach-spear* also contain soc/machine 53 spear6xx is mach-spear6xx/spear6xx.c and for spear13xx family is
53 specific files, like spear300.c, spear310.c, spear320.c and spear600.c. 54 mach-spear13xx/spear13xx.c. mach-spear* also contain soc/machine specific
54 mach-spear* also contains board specific files for each machine type. 55 files, like spear1310.c, spear1340.c spear300.c, spear310.c, spear320.c and
56 spear600.c. mach-spear* doesn't contains board specific files as they fully
57 support Flattened Device Tree.
55 58
56 59
57 Document Author 60 Document Author
58 --------------- 61 ---------------
59 62
60 Viresh Kumar, (c) 2010 ST Microelectronics 63 Viresh Kumar <viresh.linux@gmail.com>, (c) 2010-2012 ST Microelectronics
diff --git a/Documentation/blackfin/bfin-gpio-notes.txt b/Documentation/blackfin/bfin-gpio-notes.txt
index d36b01f778b9..d245f39c3d01 100644
--- a/Documentation/blackfin/bfin-gpio-notes.txt
+++ b/Documentation/blackfin/bfin-gpio-notes.txt
@@ -53,7 +53,7 @@
53 53
543. But there are some exceptions 543. But there are some exceptions
55 - Kernel permit the identical GPIO be requested both as GPIO and GPIO 55 - Kernel permit the identical GPIO be requested both as GPIO and GPIO
56 interrut. 56 interrupt.
57 Some drivers, like gpio-keys, need this behavior. Kernel only print out 57 Some drivers, like gpio-keys, need this behavior. Kernel only print out
58 warning messages like, 58 warning messages like,
59 bfin-gpio: GPIO 24 is already reserved by gpio-keys: BTN0, and you are 59 bfin-gpio: GPIO 24 is already reserved by gpio-keys: BTN0, and you are
diff --git a/Documentation/cgroups/memory.txt b/Documentation/cgroups/memory.txt
index 9b1067afb224..dd88540bb995 100644
--- a/Documentation/cgroups/memory.txt
+++ b/Documentation/cgroups/memory.txt
@@ -184,12 +184,14 @@ behind this approach is that a cgroup that aggressively uses a shared
184page will eventually get charged for it (once it is uncharged from 184page will eventually get charged for it (once it is uncharged from
185the cgroup that brought it in -- this will happen on memory pressure). 185the cgroup that brought it in -- this will happen on memory pressure).
186 186
187But see section 8.2: when moving a task to another cgroup, its pages may
188be recharged to the new cgroup, if move_charge_at_immigrate has been chosen.
189
187Exception: If CONFIG_CGROUP_CGROUP_MEM_RES_CTLR_SWAP is not used. 190Exception: If CONFIG_CGROUP_CGROUP_MEM_RES_CTLR_SWAP is not used.
188When you do swapoff and make swapped-out pages of shmem(tmpfs) to 191When you do swapoff and make swapped-out pages of shmem(tmpfs) to
189be backed into memory in force, charges for pages are accounted against the 192be backed into memory in force, charges for pages are accounted against the
190caller of swapoff rather than the users of shmem. 193caller of swapoff rather than the users of shmem.
191 194
192
1932.4 Swap Extension (CONFIG_CGROUP_MEM_RES_CTLR_SWAP) 1952.4 Swap Extension (CONFIG_CGROUP_MEM_RES_CTLR_SWAP)
194 196
195Swap Extension allows you to record charge for swap. A swapped-in page is 197Swap Extension allows you to record charge for swap. A swapped-in page is
@@ -374,14 +376,15 @@ cgroup might have some charge associated with it, even though all
374tasks have migrated away from it. (because we charge against pages, not 376tasks have migrated away from it. (because we charge against pages, not
375against tasks.) 377against tasks.)
376 378
377Such charges are freed or moved to their parent. At moving, both of RSS 379We move the stats to root (if use_hierarchy==0) or parent (if
378and CACHES are moved to parent. 380use_hierarchy==1), and no change on the charge except uncharging
379rmdir() may return -EBUSY if freeing/moving fails. See 5.1 also. 381from the child.
380 382
381Charges recorded in swap information is not updated at removal of cgroup. 383Charges recorded in swap information is not updated at removal of cgroup.
382Recorded information is discarded and a cgroup which uses swap (swapcache) 384Recorded information is discarded and a cgroup which uses swap (swapcache)
383will be charged as a new owner of it. 385will be charged as a new owner of it.
384 386
387About use_hierarchy, see Section 6.
385 388
3865. Misc. interfaces. 3895. Misc. interfaces.
387 390
@@ -394,13 +397,15 @@ will be charged as a new owner of it.
394 397
395 Almost all pages tracked by this memory cgroup will be unmapped and freed. 398 Almost all pages tracked by this memory cgroup will be unmapped and freed.
396 Some pages cannot be freed because they are locked or in-use. Such pages are 399 Some pages cannot be freed because they are locked or in-use. Such pages are
397 moved to parent and this cgroup will be empty. This may return -EBUSY if 400 moved to parent(if use_hierarchy==1) or root (if use_hierarchy==0) and this
398 VM is too busy to free/move all pages immediately. 401 cgroup will be empty.
399 402
400 Typical use case of this interface is that calling this before rmdir(). 403 Typical use case of this interface is that calling this before rmdir().
401 Because rmdir() moves all pages to parent, some out-of-use page caches can be 404 Because rmdir() moves all pages to parent, some out-of-use page caches can be
402 moved to the parent. If you want to avoid that, force_empty will be useful. 405 moved to the parent. If you want to avoid that, force_empty will be useful.
403 406
407 About use_hierarchy, see Section 6.
408
4045.2 stat file 4095.2 stat file
405 410
406memory.stat file includes following statistics 411memory.stat file includes following statistics
@@ -430,17 +435,10 @@ hierarchical_memory_limit - # of bytes of memory limit with regard to hierarchy
430hierarchical_memsw_limit - # of bytes of memory+swap limit with regard to 435hierarchical_memsw_limit - # of bytes of memory+swap limit with regard to
431 hierarchy under which memory cgroup is. 436 hierarchy under which memory cgroup is.
432 437
433total_cache - sum of all children's "cache" 438total_<counter> - # hierarchical version of <counter>, which in
434total_rss - sum of all children's "rss" 439 addition to the cgroup's own value includes the
435total_mapped_file - sum of all children's "cache" 440 sum of all hierarchical children's values of
436total_pgpgin - sum of all children's "pgpgin" 441 <counter>, i.e. total_cache
437total_pgpgout - sum of all children's "pgpgout"
438total_swap - sum of all children's "swap"
439total_inactive_anon - sum of all children's "inactive_anon"
440total_active_anon - sum of all children's "active_anon"
441total_inactive_file - sum of all children's "inactive_file"
442total_active_file - sum of all children's "active_file"
443total_unevictable - sum of all children's "unevictable"
444 442
445# The following additional stats are dependent on CONFIG_DEBUG_VM. 443# The following additional stats are dependent on CONFIG_DEBUG_VM.
446 444
@@ -622,8 +620,7 @@ memory cgroup.
622 bit | what type of charges would be moved ? 620 bit | what type of charges would be moved ?
623 -----+------------------------------------------------------------------------ 621 -----+------------------------------------------------------------------------
624 0 | A charge of an anonymous page(or swap of it) used by the target task. 622 0 | A charge of an anonymous page(or swap of it) used by the target task.
625 | Those pages and swaps must be used only by the target task. You must 623 | You must enable Swap Extension(see 2.4) to enable move of swap charges.
626 | enable Swap Extension(see 2.4) to enable move of swap charges.
627 -----+------------------------------------------------------------------------ 624 -----+------------------------------------------------------------------------
628 1 | A charge of file pages(normal file, tmpfs file(e.g. ipc shared memory) 625 1 | A charge of file pages(normal file, tmpfs file(e.g. ipc shared memory)
629 | and swaps of tmpfs file) mmapped by the target task. Unlike the case of 626 | and swaps of tmpfs file) mmapped by the target task. Unlike the case of
@@ -636,8 +633,6 @@ memory cgroup.
636 633
6378.3 TODO 6348.3 TODO
638 635
639- Implement madvise(2) to let users decide the vma to be moved or not to be
640 moved.
641- All of moving charge operations are done under cgroup_mutex. It's not good 636- All of moving charge operations are done under cgroup_mutex. It's not good
642 behavior to hold the mutex too long, so we may need some trick. 637 behavior to hold the mutex too long, so we may need some trick.
643 638
diff --git a/Documentation/cgroups/resource_counter.txt b/Documentation/cgroups/resource_counter.txt
index 95b24d766eab..0c4a344e78fa 100644
--- a/Documentation/cgroups/resource_counter.txt
+++ b/Documentation/cgroups/resource_counter.txt
@@ -77,11 +77,11 @@ to work with it.
77 where the charging failed. 77 where the charging failed.
78 78
79 d. int res_counter_charge_locked 79 d. int res_counter_charge_locked
80 (struct res_counter *rc, unsigned long val) 80 (struct res_counter *rc, unsigned long val, bool force)
81 81
82 The same as res_counter_charge(), but it must not acquire/release the 82 The same as res_counter_charge(), but it must not acquire/release the
83 res_counter->lock internally (it must be called with res_counter->lock 83 res_counter->lock internally (it must be called with res_counter->lock
84 held). 84 held). The force parameter indicates whether we can bypass the limit.
85 85
86 e. void res_counter_uncharge[_locked] 86 e. void res_counter_uncharge[_locked]
87 (struct res_counter *rc, unsigned long val) 87 (struct res_counter *rc, unsigned long val)
@@ -92,6 +92,14 @@ to work with it.
92 92
93 The _locked routines imply that the res_counter->lock is taken. 93 The _locked routines imply that the res_counter->lock is taken.
94 94
95 f. void res_counter_uncharge_until
96 (struct res_counter *rc, struct res_counter *top,
97 unsinged long val)
98
99 Almost same as res_cunter_uncharge() but propagation of uncharge
100 stops when rc == top. This is useful when kill a res_coutner in
101 child cgroup.
102
95 2.1 Other accounting routines 103 2.1 Other accounting routines
96 104
97 There are more routines that may help you with common needs, like 105 There are more routines that may help you with common needs, like
diff --git a/Documentation/cris/README b/Documentation/cris/README
index d9b086869a60..8dbdb1a44429 100644
--- a/Documentation/cris/README
+++ b/Documentation/cris/README
@@ -1,38 +1,34 @@
1Linux 2.4 on the CRIS architecture 1Linux on the CRIS architecture
2================================== 2==============================
3$Id: README,v 1.7 2001/04/19 12:38:32 bjornw Exp $
4 3
5This is a port of Linux 2.4 to Axis Communications ETRAX 100LX embedded 4This is a port of Linux to Axis Communications ETRAX 100LX,
6network CPU. For more information about CRIS and ETRAX please see further 5ETRAX FS and ARTPEC-3 embedded network CPUs.
7below. 6
7For more information about CRIS and ETRAX please see further below.
8 8
9In order to compile this you need a version of gcc with support for the 9In order to compile this you need a version of gcc with support for the
10ETRAX chip family. Please see this link for more information on how to 10ETRAX chip family. Please see this link for more information on how to
11download the compiler and other tools useful when building and booting 11download the compiler and other tools useful when building and booting
12software for the ETRAX platform: 12software for the ETRAX platform:
13 13
14http://developer.axis.com/doc/software/devboard_lx/install-howto.html 14http://developer.axis.com/wiki/doku.php?id=axis:install-howto-2_20
15
16<more specific information should come in this document later>
17 15
18What is CRIS ? 16What is CRIS ?
19-------------- 17--------------
20 18
21CRIS is an acronym for 'Code Reduced Instruction Set'. It is the CPU 19CRIS is an acronym for 'Code Reduced Instruction Set'. It is the CPU
22architecture in Axis Communication AB's range of embedded network CPU's, 20architecture in Axis Communication AB's range of embedded network CPU's,
23called ETRAX. The latest CPU is called ETRAX 100LX, where LX stands for 21called ETRAX.
24'Linux' because the chip was designed to be a good host for the Linux
25operating system.
26 22
27The ETRAX 100LX chip 23The ETRAX 100LX chip
28-------------------- 24--------------------
29 25
30For reference, please see the press-release: 26For reference, please see the following link:
31 27
32http://www.axis.com/news/us/001101_etrax.htm 28http://www.axis.com/products/dev_etrax_100lx/index.htm
33 29
34The ETRAX 100LX is a 100 MIPS processor with 8kB cache, MMU, and a very broad 30The ETRAX 100LX is a 100 MIPS processor with 8kB cache, MMU, and a very broad
35range of built-in interfaces, all with modern scatter/gather DMA. 31range of built-in interfaces, all with modern scatter/gather DMA.
36 32
37Memory interfaces: 33Memory interfaces:
38 34
@@ -51,20 +47,28 @@ I/O interfaces:
51 * SCSI 47 * SCSI
52 * two parallel-ports 48 * two parallel-ports
53 * two generic 8-bit ports 49 * two generic 8-bit ports
54 50
55 (not all interfaces are available at the same time due to chip pin 51 (not all interfaces are available at the same time due to chip pin
56 multiplexing) 52 multiplexing)
57 53
58The previous version of the ETRAX, the ETRAX 100, sits in almost all of 54ETRAX 100LX is CRISv10 architecture.
59Axis shipping thin-servers like the Axis 2100 web camera or the ETRAX 100 55
60developer-board. It lacks an MMU so the Linux we run on that is a version 56
61of uClinux (Linux 2.0 without MM-support) ported to the CRIS architecture. 57The ETRAX FS and ARTPEC-3 chips
62The new Linux 2.4 port has full MM and needs a CPU with an MMU, so it will 58-------------------------------
63not run on the ETRAX 100.
64 59
65A version of the Axis developer-board with ETRAX 100LX (running Linux 60The ETRAX FS is a 200MHz 32-bit RISC processor with on-chip 16kB
662.4) is now available. For more information please see developer.axis.com. 61I-cache and 16kB D-cache and with a wide range of device interfaces
62including multiple high speed serial ports and an integrated USB 1.1 PHY.
67 63
64The ARTPEC-3 is a variant of the ETRAX FS with additional IO-units
65used by the Axis Communications network cameras.
66
67See below link for more information:
68
69http://www.axis.com/products/dev_etrax_fs/index.htm
70
71ETRAX FS and ARTPEC-3 are both CRISv32 architectures.
68 72
69Bootlog 73Bootlog
70------- 74-------
@@ -182,10 +186,6 @@ SwapFree: 0 kB
182-rwxr-xr-x 1 342 100 16252 Jan 01 00:00 telnetd 186-rwxr-xr-x 1 342 100 16252 Jan 01 00:00 telnetd
183 187
184 188
185(All programs are statically linked to the libc at this point - we have not ported the
186 shared libraries yet)
187
188
189 189
190 190
191 191
diff --git a/Documentation/device-mapper/thin-provisioning.txt b/Documentation/device-mapper/thin-provisioning.txt
index 3370bc4d7b98..f5cfc62b7ad3 100644
--- a/Documentation/device-mapper/thin-provisioning.txt
+++ b/Documentation/device-mapper/thin-provisioning.txt
@@ -287,6 +287,17 @@ iii) Messages
287 the current transaction id is when you change it with this 287 the current transaction id is when you change it with this
288 compare-and-swap message. 288 compare-and-swap message.
289 289
290 reserve_metadata_snap
291
292 Reserve a copy of the data mapping btree for use by userland.
293 This allows userland to inspect the mappings as they were when
294 this message was executed. Use the pool's status command to
295 get the root block associated with the metadata snapshot.
296
297 release_metadata_snap
298
299 Release a previously reserved copy of the data mapping btree.
300
290'thin' target 301'thin' target
291------------- 302-------------
292 303
diff --git a/Documentation/device-mapper/verity.txt b/Documentation/device-mapper/verity.txt
index 32e48797a14f..9884681535ee 100644
--- a/Documentation/device-mapper/verity.txt
+++ b/Documentation/device-mapper/verity.txt
@@ -7,39 +7,39 @@ This target is read-only.
7 7
8Construction Parameters 8Construction Parameters
9======================= 9=======================
10 <version> <dev> <hash_dev> <hash_start> 10 <version> <dev> <hash_dev>
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 14
15<version> 15<version>
16 This is the version number of the on-disk format. 16 This is the type of the on-disk hash format.
17 17
18 0 is the original format used in the Chromium OS. 18 0 is the original format used in the Chromium OS.
19 The salt is appended when hashing, digests are stored continuously and 19 The salt is appended when hashing, digests are stored continuously and
20 the rest of the block is padded with zeros. 20 the rest of the block is padded with zeros.
21 21
22 1 is the current format that should be used for new devices. 22 1 is the current format that should be used for new devices.
23 The salt is prepended when hashing and each digest is 23 The salt is prepended when hashing and each digest is
24 padded with zeros to the power of two. 24 padded with zeros to the power of two.
25 25
26<dev> 26<dev>
27 This is the device containing the data the integrity of which needs to be 27 This is the device containing data, the integrity of which needs to be
28 checked. It may be specified as a path, like /dev/sdaX, or a device number, 28 checked. It may be specified as a path, like /dev/sdaX, or a device number,
29 <major>:<minor>. 29 <major>:<minor>.
30 30
31<hash_dev> 31<hash_dev>
32 This is the device that that supplies the hash tree data. It may be 32 This is the device that supplies the hash tree data. It may be
33 specified similarly to the device path and may be the same device. If the 33 specified similarly to the device path and may be the same device. If the
34 same device is used, the hash_start should be outside of the dm-verity 34 same device is used, the hash_start should be outside the configured
35 configured device size. 35 dm-verity device.
36 36
37<data_block_size> 37<data_block_size>
38 The block size on a data device. Each block corresponds to one digest on 38 The block size on a data device in bytes.
39 the hash device. 39 Each block corresponds to one digest on the hash device.
40 40
41<hash_block_size> 41<hash_block_size>
42 The size of a hash block. 42 The size of a hash block in bytes.
43 43
44<num_data_blocks> 44<num_data_blocks>
45 The number of data blocks on the data device. Additional blocks are 45 The number of data blocks on the data device. Additional blocks are
@@ -65,7 +65,7 @@ Construction Parameters
65Theory of operation 65Theory of operation
66=================== 66===================
67 67
68dm-verity is meant to be setup as part of a verified boot path. This 68dm-verity is meant to be set up as part of a verified boot path. This
69may be anything ranging from a boot using tboot or trustedgrub to just 69may be anything ranging from a boot using tboot or trustedgrub to just
70booting from a known-good device (like a USB drive or CD). 70booting from a known-good device (like a USB drive or CD).
71 71
@@ -73,20 +73,20 @@ When a dm-verity device is configured, it is expected that the caller
73has been authenticated in some way (cryptographic signatures, etc). 73has been authenticated in some way (cryptographic signatures, etc).
74After instantiation, all hashes will be verified on-demand during 74After instantiation, all hashes will be verified on-demand during
75disk access. If they cannot be verified up to the root node of the 75disk access. If they cannot be verified up to the root node of the
76tree, the root hash, then the I/O will fail. This should identify 76tree, the root hash, then the I/O will fail. This should detect
77tampering with any data on the device and the hash data. 77tampering with any data on the device and the hash data.
78 78
79Cryptographic hashes are used to assert the integrity of the device on a 79Cryptographic hashes are used to assert the integrity of the device on a
80per-block basis. This allows for a lightweight hash computation on first read 80per-block basis. This allows for a lightweight hash computation on first read
81into the page cache. Block hashes are stored linearly-aligned to the nearest 81into the page cache. Block hashes are stored linearly, aligned to the nearest
82block the size of a page. 82block size.
83 83
84Hash Tree 84Hash Tree
85--------- 85---------
86 86
87Each node in the tree is a cryptographic hash. If it is a leaf node, the hash 87Each node in the tree is a cryptographic hash. If it is a leaf node, the hash
88is of some block data on disk. If it is an intermediary node, then the hash is 88of some data block on disk is calculated. If it is an intermediary node,
89of a number of child nodes. 89the hash of a number of child nodes is calculated.
90 90
91Each entry in the tree is a collection of neighboring nodes that fit in one 91Each entry in the tree is a collection of neighboring nodes that fit in one
92block. The number is determined based on block_size and the size of the 92block. The number is determined based on block_size and the size of the
@@ -110,63 +110,23 @@ alg = sha256, num_blocks = 32768, block_size = 4096
110On-disk format 110On-disk format
111============== 111==============
112 112
113Below is the recommended on-disk format. The verity kernel code does not 113The verity kernel code does not read the verity metadata on-disk header.
114read the on-disk header. It only reads the hash blocks which directly 114It only reads the hash blocks which directly follow the header.
115follow the header. It is expected that a user-space tool will verify the 115It is expected that a user-space tool will verify the integrity of the
116integrity of the verity_header and then call dmsetup with the correct 116verity header.
117parameters. Alternatively, the header can be omitted and the dmsetup
118parameters can be passed via the kernel command-line in a rooted chain
119of trust where the command-line is verified.
120 117
121The on-disk format is especially useful in cases where the hash blocks 118Alternatively, the header can be omitted and the dmsetup parameters can
122are on a separate partition. The magic number allows easy identification 119be passed via the kernel command-line in a rooted chain of trust where
123of the partition contents. Alternatively, the hash blocks can be stored 120the command-line is verified.
124in the same partition as the data to be verified. In such a configuration
125the filesystem on the partition would be sized a little smaller than
126the full-partition, leaving room for the hash blocks.
127
128struct superblock {
129 uint8_t signature[8]
130 "verity\0\0";
131
132 uint8_t version;
133 1 - current format
134
135 uint8_t data_block_bits;
136 log2(data block size)
137
138 uint8_t hash_block_bits;
139 log2(hash block size)
140
141 uint8_t pad1[1];
142 zero padding
143
144 uint16_t salt_size;
145 big-endian salt size
146
147 uint8_t pad2[2];
148 zero padding
149
150 uint32_t data_blocks_hi;
151 big-endian high 32 bits of the 64-bit number of data blocks
152
153 uint32_t data_blocks_lo;
154 big-endian low 32 bits of the 64-bit number of data blocks
155
156 uint8_t algorithm[16];
157 cryptographic algorithm
158
159 uint8_t salt[384];
160 salt (the salt size is specified above)
161
162 uint8_t pad3[88];
163 zero padding to 512-byte boundary
164}
165 121
166Directly following the header (and with sector number padded to the next hash 122Directly following the header (and with sector number padded to the next hash
167block boundary) are the hash blocks which are stored a depth at a time 123block boundary) are the hash blocks which are stored a depth at a time
168(starting from the root), sorted in order of increasing index. 124(starting from the root), sorted in order of increasing index.
169 125
126The full specification of kernel parameters and on-disk metadata format
127is available at the cryptsetup project's wiki page
128 http://code.google.com/p/cryptsetup/wiki/DMVerity
129
170Status 130Status
171====== 131======
172V (for Valid) is returned if every check performed so far was valid. 132V (for Valid) is returned if every check performed so far was valid.
@@ -174,21 +134,22 @@ If any check failed, C (for Corruption) is returned.
174 134
175Example 135Example
176======= 136=======
177 137Set up a device:
178Setup a device: 138 # dmsetup create vroot --readonly --table \
179 dmsetup create vroot --table \ 139 "0 2097152 verity 1 /dev/sda1 /dev/sda2 4096 4096 262144 1 sha256 "\
180 "0 2097152 "\
181 "verity 1 /dev/sda1 /dev/sda2 4096 4096 2097152 1 "\
182 "4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076 "\ 140 "4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076 "\
183 "1234000000000000000000000000000000000000000000000000000000000000" 141 "1234000000000000000000000000000000000000000000000000000000000000"
184 142
185A command line tool veritysetup is available to compute or verify 143A command line tool veritysetup is available to compute or verify
186the hash tree or activate the kernel driver. This is available from 144the hash tree or activate the kernel device. This is available from
187the LVM2 upstream repository and may be supplied as a package called 145the cryptsetup upstream repository http://code.google.com/p/cryptsetup/
188device-mapper-verity-tools: 146(as a libcryptsetup extension).
189 git://sources.redhat.com/git/lvm2 147
190 http://sourceware.org/git/?p=lvm2.git 148Create hash on the device:
191 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/verity?cvsroot=lvm2 149 # veritysetup format /dev/sda1 /dev/sda2
192 150 ...
193veritysetup -a vroot /dev/sda1 /dev/sda2 \ 151 Root hash: 4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076
194 4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076 152
153Activate the device:
154 # veritysetup create vroot /dev/sda1 /dev/sda2 \
155 4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076
diff --git a/Documentation/devices.txt b/Documentation/devices.txt
index 00383186d8fb..47a154f30290 100644
--- a/Documentation/devices.txt
+++ b/Documentation/devices.txt
@@ -98,7 +98,8 @@ Your cooperation is appreciated.
98 8 = /dev/random Nondeterministic random number gen. 98 8 = /dev/random Nondeterministic random number gen.
99 9 = /dev/urandom Faster, less secure random number gen. 99 9 = /dev/urandom Faster, less secure random number gen.
100 10 = /dev/aio Asynchronous I/O notification interface 100 10 = /dev/aio Asynchronous I/O notification interface
101 11 = /dev/kmsg Writes to this come out as printk's 101 11 = /dev/kmsg Writes to this come out as printk's, reads
102 export the buffered printk records.
102 12 = /dev/oldmem Used by crashdump kernels to access 103 12 = /dev/oldmem Used by crashdump kernels to access
103 the memory of the kernel that crashed. 104 the memory of the kernel that crashed.
104 105
@@ -846,13 +847,7 @@ Your cooperation is appreciated.
846 ... 847 ...
847 31 = /dev/tap15 16th Ethertap device 848 31 = /dev/tap15 16th Ethertap device
848 849
849 36 block MCA ESDI hard disk 850 36 block OBSOLETE (was MCA ESDI hard disk)
850 0 = /dev/eda First ESDI disk whole disk
851 64 = /dev/edb Second ESDI disk whole disk
852 ...
853
854 Partitions are handled in the same way as IDE disks
855 (see major number 3).
856 851
857 37 char IDE tape 852 37 char IDE tape
858 0 = /dev/ht0 First IDE tape 853 0 = /dev/ht0 First IDE tape
diff --git a/Documentation/devicetree/bindings/arm/arch_timer.txt b/Documentation/devicetree/bindings/arm/arch_timer.txt
new file mode 100644
index 000000000000..52478c83d0cc
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/arch_timer.txt
@@ -0,0 +1,27 @@
1* ARM architected timer
2
3ARM Cortex-A7 and Cortex-A15 have a per-core architected timer, which
4provides per-cpu timers.
5
6The timer is attached to a GIC to deliver its per-processor interrupts.
7
8** Timer node properties:
9
10- compatible : Should at least contain "arm,armv7-timer".
11
12- interrupts : Interrupt list for secure, non-secure, virtual and
13 hypervisor timers, in that order.
14
15- clock-frequency : The frequency of the main counter, in Hz. Optional.
16
17Example:
18
19 timer {
20 compatible = "arm,cortex-a15-timer",
21 "arm,armv7-timer";
22 interrupts = <1 13 0xf08>,
23 <1 14 0xf08>,
24 <1 11 0xf08>,
25 <1 10 0xf08>;
26 clock-frequency = <100000000>;
27 };
diff --git a/Documentation/devicetree/bindings/arm/atmel-adc.txt b/Documentation/devicetree/bindings/arm/atmel-adc.txt
new file mode 100644
index 000000000000..c63097d6afeb
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/atmel-adc.txt
@@ -0,0 +1,65 @@
1* AT91's Analog to Digital Converter (ADC)
2
3Required properties:
4 - compatible: Should be "atmel,at91sam9260-adc"
5 - reg: Should contain ADC registers location and length
6 - interrupts: Should contain the IRQ line for the ADC
7 - atmel,adc-channel-base: Offset of the first channel data register
8 - atmel,adc-channels-used: Bitmask of the channels muxed and enable for this
9 device
10 - atmel,adc-drdy-mask: Mask of the DRDY interruption in the ADC
11 - atmel,adc-num-channels: Number of channels available in the ADC
12 - atmel,adc-startup-time: Startup Time of the ADC in microseconds as
13 defined in the datasheet
14 - atmel,adc-status-register: Offset of the Interrupt Status Register
15 - atmel,adc-trigger-register: Offset of the Trigger Register
16 - atmel,adc-vref: Reference voltage in millivolts for the conversions
17
18Optional properties:
19 - atmel,adc-use-external: Boolean to enable of external triggers
20
21Optional trigger Nodes:
22 - Required properties:
23 * trigger-name: Name of the trigger exposed to the user
24 * trigger-value: Value to put in the Trigger register
25 to activate this trigger
26 - Optional properties:
27 * trigger-external: Is the trigger an external trigger?
28
29Examples:
30adc0: adc@fffb0000 {
31 compatible = "atmel,at91sam9260-adc";
32 reg = <0xfffb0000 0x100>;
33 interrupts = <20 4>;
34 atmel,adc-channel-base = <0x30>;
35 atmel,adc-channels-used = <0xff>;
36 atmel,adc-drdy-mask = <0x10000>;
37 atmel,adc-num-channels = <8>;
38 atmel,adc-startup-time = <40>;
39 atmel,adc-status-register = <0x1c>;
40 atmel,adc-trigger-register = <0x08>;
41 atmel,adc-use-external;
42 atmel,adc-vref = <3300>;
43
44 trigger@0 {
45 trigger-name = "external-rising";
46 trigger-value = <0x1>;
47 trigger-external;
48 };
49 trigger@1 {
50 trigger-name = "external-falling";
51 trigger-value = <0x2>;
52 trigger-external;
53 };
54
55 trigger@2 {
56 trigger-name = "external-any";
57 trigger-value = <0x3>;
58 trigger-external;
59 };
60
61 trigger@3 {
62 trigger-name = "continuous";
63 trigger-value = <0x6>;
64 };
65};
diff --git a/Documentation/devicetree/bindings/arm/fsl.txt b/Documentation/devicetree/bindings/arm/fsl.txt
index bfbc771a65f8..ac9e7516756e 100644
--- a/Documentation/devicetree/bindings/arm/fsl.txt
+++ b/Documentation/devicetree/bindings/arm/fsl.txt
@@ -1,6 +1,14 @@
1Freescale i.MX Platforms Device Tree Bindings 1Freescale i.MX Platforms Device Tree Bindings
2----------------------------------------------- 2-----------------------------------------------
3 3
4i.MX23 Evaluation Kit
5Required root node properties:
6 - compatible = "fsl,imx23-evk", "fsl,imx23";
7
8i.MX28 Evaluation Kit
9Required root node properties:
10 - compatible = "fsl,imx28-evk", "fsl,imx28";
11
4i.MX51 Babbage Board 12i.MX51 Babbage Board
5Required root node properties: 13Required root node properties:
6 - compatible = "fsl,imx51-babbage", "fsl,imx51"; 14 - compatible = "fsl,imx51-babbage", "fsl,imx51";
@@ -29,6 +37,10 @@ i.MX6 Quad SABRE Lite Board
29Required root node properties: 37Required root node properties:
30 - compatible = "fsl,imx6q-sabrelite", "fsl,imx6q"; 38 - compatible = "fsl,imx6q-sabrelite", "fsl,imx6q";
31 39
40i.MX6 Quad SABRE Smart Device Board
41Required root node properties:
42 - compatible = "fsl,imx6q-sabresd", "fsl,imx6q";
43
32Generic i.MX boards 44Generic i.MX boards
33------------------- 45-------------------
34 46
diff --git a/Documentation/devicetree/bindings/arm/gic.txt b/Documentation/devicetree/bindings/arm/gic.txt
index 9b4b82a721b6..62eb8df1e08d 100644
--- a/Documentation/devicetree/bindings/arm/gic.txt
+++ b/Documentation/devicetree/bindings/arm/gic.txt
@@ -11,7 +11,9 @@ have PPIs or SGIs.
11Main node required properties: 11Main node required properties:
12 12
13- compatible : should be one of: 13- compatible : should be one of:
14 "arm,cortex-a15-gic"
14 "arm,cortex-a9-gic" 15 "arm,cortex-a9-gic"
16 "arm,cortex-a7-gic"
15 "arm,arm11mp-gic" 17 "arm,arm11mp-gic"
16- interrupt-controller : Identifies the node as an interrupt controller 18- interrupt-controller : Identifies the node as an interrupt controller
17- #interrupt-cells : Specifies the number of cells needed to encode an 19- #interrupt-cells : Specifies the number of cells needed to encode an
@@ -39,8 +41,9 @@ Main node required properties:
39 the GIC cpu interface register base and size. 41 the GIC cpu interface register base and size.
40 42
41Optional 43Optional
42- interrupts : Interrupt source of the parent interrupt controller. Only 44- interrupts : Interrupt source of the parent interrupt controller on
43 present on secondary GICs. 45 secondary GICs, or VGIC maintainance interrupt on primary GIC (see
46 below).
44 47
45- cpu-offset : per-cpu offset within the distributor and cpu interface 48- cpu-offset : per-cpu offset within the distributor and cpu interface
46 regions, used when the GIC doesn't have banked registers. The offset is 49 regions, used when the GIC doesn't have banked registers. The offset is
@@ -57,3 +60,31 @@ Example:
57 <0xfff10100 0x100>; 60 <0xfff10100 0x100>;
58 }; 61 };
59 62
63
64* GIC virtualization extensions (VGIC)
65
66For ARM cores that support the virtualization extensions, additional
67properties must be described (they only exist if the GIC is the
68primary interrupt controller).
69
70Required properties:
71
72- reg : Additional regions specifying the base physical address and
73 size of the VGIC registers. The first additional region is the GIC
74 virtual interface control register base and size. The 2nd additional
75 region is the GIC virtual cpu interface register base and size.
76
77- interrupts : VGIC maintainance interrupt.
78
79Example:
80
81 interrupt-controller@2c001000 {
82 compatible = "arm,cortex-a15-gic";
83 #interrupt-cells = <3>;
84 interrupt-controller;
85 reg = <0x2c001000 0x1000>,
86 <0x2c002000 0x1000>,
87 <0x2c004000 0x2000>,
88 <0x2c006000 0x2000>;
89 interrupts = <1 9 0xf04>;
90 };
diff --git a/Documentation/devicetree/bindings/arm/lpc32xx-mic.txt b/Documentation/devicetree/bindings/arm/lpc32xx-mic.txt
new file mode 100644
index 000000000000..539adca19e8f
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/lpc32xx-mic.txt
@@ -0,0 +1,38 @@
1* NXP LPC32xx Main Interrupt Controller
2 (MIC, including SIC1 and SIC2 secondary controllers)
3
4Required properties:
5- compatible: Should be "nxp,lpc3220-mic"
6- interrupt-controller: Identifies the node as an interrupt controller.
7- interrupt-parent: Empty for the interrupt controller itself
8- #interrupt-cells: The number of cells to define the interrupts. Should be 2.
9 The first cell is the IRQ number
10 The second cell is used to specify mode:
11 1 = low-to-high edge triggered
12 2 = high-to-low edge triggered
13 4 = active high level-sensitive
14 8 = active low level-sensitive
15 Default for internal sources should be set to 4 (active high).
16- reg: Should contain MIC registers location and length
17
18Examples:
19 /*
20 * MIC
21 */
22 mic: interrupt-controller@40008000 {
23 compatible = "nxp,lpc3220-mic";
24 interrupt-controller;
25 interrupt-parent;
26 #interrupt-cells = <2>;
27 reg = <0x40008000 0xC000>;
28 };
29
30 /*
31 * ADC
32 */
33 adc@40048000 {
34 compatible = "nxp,lpc3220-adc";
35 reg = <0x40048000 0x1000>;
36 interrupt-parent = <&mic>;
37 interrupts = <39 4>;
38 };
diff --git a/Documentation/devicetree/bindings/arm/lpc32xx.txt b/Documentation/devicetree/bindings/arm/lpc32xx.txt
new file mode 100644
index 000000000000..56ec8ddc4a3b
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/lpc32xx.txt
@@ -0,0 +1,8 @@
1NXP LPC32xx Platforms Device Tree Bindings
2------------------------------------------
3
4Boards with the NXP LPC32xx SoC shall have the following properties:
5
6Required root node property:
7
8compatible: must be "nxp,lpc3220", "nxp,lpc3230", "nxp,lpc3240" or "nxp,lpc3250"
diff --git a/Documentation/devicetree/bindings/arm/mrvl/intc.txt b/Documentation/devicetree/bindings/arm/mrvl/intc.txt
new file mode 100644
index 000000000000..80b9a94d9a23
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/mrvl/intc.txt
@@ -0,0 +1,40 @@
1* Marvell MMP Interrupt controller
2
3Required properties:
4- compatible : Should be "mrvl,mmp-intc", "mrvl,mmp2-intc" or
5 "mrvl,mmp2-mux-intc"
6- reg : Address and length of the register set of the interrupt controller.
7 If the interrupt controller is intc, address and length means the range
8 of the whold interrupt controller. If the interrupt controller is mux-intc,
9 address and length means one register. Since address of mux-intc is in the
10 range of intc. mux-intc is secondary interrupt controller.
11- reg-names : Name of the register set of the interrupt controller. It's
12 only required in mux-intc interrupt controller.
13- interrupts : Should be the port interrupt shared by mux interrupts. It's
14 only required in mux-intc interrupt controller.
15- interrupt-controller : Identifies the node as an interrupt controller.
16- #interrupt-cells : Specifies the number of cells needed to encode an
17 interrupt source.
18- mrvl,intc-nr-irqs : Specifies the number of interrupts in the interrupt
19 controller.
20- mrvl,clr-mfp-irq : Specifies the interrupt that needs to clear MFP edge
21 detection first.
22
23Example:
24 intc: interrupt-controller@d4282000 {
25 compatible = "mrvl,mmp2-intc";
26 interrupt-controller;
27 #interrupt-cells = <1>;
28 reg = <0xd4282000 0x1000>;
29 mrvl,intc-nr-irqs = <64>;
30 };
31
32 intcmux4@d4282150 {
33 compatible = "mrvl,mmp2-mux-intc";
34 interrupts = <4>;
35 interrupt-controller;
36 #interrupt-cells = <1>;
37 reg = <0x150 0x4>, <0x168 0x4>;
38 reg-names = "mux status", "mux mask";
39 mrvl,intc-nr-irqs = <2>;
40 };
diff --git a/Documentation/devicetree/bindings/arm/mrvl.txt b/Documentation/devicetree/bindings/arm/mrvl/mrvl.txt
index d8de933e9d81..117d741a2e4f 100644
--- a/Documentation/devicetree/bindings/arm/mrvl.txt
+++ b/Documentation/devicetree/bindings/arm/mrvl/mrvl.txt
@@ -4,3 +4,11 @@ Marvell Platforms Device Tree Bindings
4PXA168 Aspenite Board 4PXA168 Aspenite Board
5Required root node properties: 5Required root node properties:
6 - compatible = "mrvl,pxa168-aspenite", "mrvl,pxa168"; 6 - compatible = "mrvl,pxa168-aspenite", "mrvl,pxa168";
7
8PXA910 DKB Board
9Required root node properties:
10 - compatible = "mrvl,pxa910-dkb";
11
12MMP2 Brownstone Board
13Required root node properties:
14 - compatible = "mrvl,mmp2-brownstone";
diff --git a/Documentation/devicetree/bindings/arm/mrvl/timer.txt b/Documentation/devicetree/bindings/arm/mrvl/timer.txt
new file mode 100644
index 000000000000..9a6e251462e7
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/mrvl/timer.txt
@@ -0,0 +1,13 @@
1* Marvell MMP Timer controller
2
3Required properties:
4- compatible : Should be "mrvl,mmp-timer".
5- reg : Address and length of the register set of timer controller.
6- interrupts : Should be the interrupt number.
7
8Example:
9 timer0: timer@d4014000 {
10 compatible = "mrvl,mmp-timer";
11 reg = <0xd4014000 0x100>;
12 interrupts = <13>;
13 };
diff --git a/Documentation/devicetree/bindings/arm/samsung/interrupt-combiner.txt b/Documentation/devicetree/bindings/arm/samsung/interrupt-combiner.txt
new file mode 100644
index 000000000000..f2f2171e530e
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/samsung/interrupt-combiner.txt
@@ -0,0 +1,52 @@
1* Samsung Exynos Interrupt Combiner Controller
2
3Samsung's Exynos4 architecture includes a interrupt combiner controller which
4can combine interrupt sources as a group and provide a single interrupt request
5for the group. The interrupt request from each group are connected to a parent
6interrupt controller, such as GIC in case of Exynos4210.
7
8The interrupt combiner controller consists of multiple combiners. Upto eight
9interrupt sources can be connected to a combiner. The combiner outputs one
10combined interrupt for its eight interrupt sources. The combined interrupt
11is usually connected to a parent interrupt controller.
12
13A single node in the device tree is used to describe the interrupt combiner
14controller module (which includes multiple combiners). A combiner in the
15interrupt controller module shares config/control registers with other
16combiners. For example, a 32-bit interrupt enable/disable config register
17can accommodate upto 4 interrupt combiners (with each combiner supporting
18upto 8 interrupt sources).
19
20Required properties:
21- compatible: should be "samsung,exynos4210-combiner".
22- interrupt-controller: Identifies the node as an interrupt controller.
23- #interrupt-cells: should be <2>. The meaning of the cells are
24 * First Cell: Combiner Group Number.
25 * Second Cell: Interrupt number within the group.
26- reg: Base address and size of interrupt combiner registers.
27- interrupts: The list of interrupts generated by the combiners which are then
28 connected to a parent interrupt controller. The format of the interrupt
29 specifier depends in the interrupt parent controller.
30
31Optional properties:
32- samsung,combiner-nr: The number of interrupt combiners supported. If this
33 property is not specified, the default number of combiners is assumed
34 to be 16.
35- interrupt-parent: pHandle of the parent interrupt controller, if not
36 inherited from the parent node.
37
38
39Example:
40
41 The following is a an example from the Exynos4210 SoC dtsi file.
42
43 combiner:interrupt-controller@10440000 {
44 compatible = "samsung,exynos4210-combiner";
45 interrupt-controller;
46 #interrupt-cells = <2>;
47 reg = <0x10440000 0x1000>;
48 interrupts = <0 0 0>, <0 1 0>, <0 2 0>, <0 3 0>,
49 <0 4 0>, <0 5 0>, <0 6 0>, <0 7 0>,
50 <0 8 0>, <0 9 0>, <0 10 0>, <0 11 0>,
51 <0 12 0>, <0 13 0>, <0 14 0>, <0 15 0>;
52 };
diff --git a/Documentation/devicetree/bindings/arm/spear-timer.txt b/Documentation/devicetree/bindings/arm/spear-timer.txt
new file mode 100644
index 000000000000..c0017221cf55
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/spear-timer.txt
@@ -0,0 +1,18 @@
1* SPEAr ARM Timer
2
3** Timer node required properties:
4
5- compatible : Should be:
6 "st,spear-timer"
7- reg: Address range of the timer registers
8- interrupt-parent: Should be the phandle for the interrupt controller
9 that services interrupts for this device
10- interrupt: Should contain the timer interrupt number
11
12Example:
13
14 timer@f0000000 {
15 compatible = "st,spear-timer";
16 reg = <0xf0000000 0x400>;
17 interrupts = <2>;
18 };
diff --git a/Documentation/devicetree/bindings/arm/spear.txt b/Documentation/devicetree/bindings/arm/spear.txt
index f8e54f092328..0d42949df6c2 100644
--- a/Documentation/devicetree/bindings/arm/spear.txt
+++ b/Documentation/devicetree/bindings/arm/spear.txt
@@ -2,7 +2,25 @@ ST SPEAr Platforms Device Tree Bindings
2--------------------------------------- 2---------------------------------------
3 3
4Boards with the ST SPEAr600 SoC shall have the following properties: 4Boards with the ST SPEAr600 SoC shall have the following properties:
5Required root node property:
6compatible = "st,spear600";
5 7
8Boards with the ST SPEAr300 SoC shall have the following properties:
6Required root node property: 9Required root node property:
10compatible = "st,spear300";
7 11
8compatible = "st,spear600"; 12Boards with the ST SPEAr310 SoC shall have the following properties:
13Required root node property:
14compatible = "st,spear310";
15
16Boards with the ST SPEAr320 SoC shall have the following properties:
17Required root node property:
18compatible = "st,spear320";
19
20Boards with the ST SPEAr1310 SoC shall have the following properties:
21Required root node property:
22compatible = "st,spear1310";
23
24Boards with the ST SPEAr1340 SoC shall have the following properties:
25Required root node property:
26compatible = "st,spear1340";
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt
new file mode 100644
index 000000000000..234406d41c12
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt
@@ -0,0 +1,11 @@
1NVIDIA Tegra AHB
2
3Required properties:
4- compatible : "nvidia,tegra20-ahb" or "nvidia,tegra30-ahb"
5- reg : Should contain 1 register ranges(address and length)
6
7Example:
8 ahb: ahb@6000c004 {
9 compatible = "nvidia,tegra20-ahb";
10 reg = <0x6000c004 0x10c>; /* AHB Arbitration + Gizmo Controller */
11 };
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-mc.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-mc.txt
new file mode 100644
index 000000000000..c25a0a55151d
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-mc.txt
@@ -0,0 +1,16 @@
1NVIDIA Tegra20 MC(Memory Controller)
2
3Required properties:
4- compatible : "nvidia,tegra20-mc"
5- reg : Should contain 2 register ranges(address and length); see the
6 example below. Note that the MC registers are interleaved with the
7 GART registers, and hence must be represented as multiple ranges.
8- interrupts : Should contain MC General interrupt.
9
10Example:
11 mc {
12 compatible = "nvidia,tegra20-mc";
13 reg = <0x7000f000 0x024
14 0x7000f03c 0x3c4>;
15 interrupts = <0 77 0x04>;
16 };
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-mc.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-mc.txt
new file mode 100644
index 000000000000..e47e73f612f4
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-mc.txt
@@ -0,0 +1,18 @@
1NVIDIA Tegra30 MC(Memory Controller)
2
3Required properties:
4- compatible : "nvidia,tegra30-mc"
5- reg : Should contain 4 register ranges(address and length); see the
6 example below. Note that the MC registers are interleaved with the
7 SMMU registers, and hence must be represented as multiple ranges.
8- interrupts : Should contain MC General interrupt.
9
10Example:
11 mc {
12 compatible = "nvidia,tegra30-mc";
13 reg = <0x7000f000 0x010
14 0x7000f03c 0x1b4
15 0x7000f200 0x028
16 0x7000f284 0x17c>;
17 interrupts = <0 77 0x04>;
18 };
diff --git a/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt b/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt
new file mode 100644
index 000000000000..ded0398d3bdc
--- /dev/null
+++ b/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt
@@ -0,0 +1,19 @@
1* Freescale MXS DMA
2
3Required properties:
4- compatible : Should be "fsl,<chip>-dma-apbh" or "fsl,<chip>-dma-apbx"
5- reg : Should contain registers location and length
6
7Supported chips:
8imx23, imx28.
9
10Examples:
11dma-apbh@80004000 {
12 compatible = "fsl,imx28-dma-apbh";
13 reg = <0x80004000 2000>;
14};
15
16dma-apbx@80024000 {
17 compatible = "fsl,imx28-dma-apbx";
18 reg = <0x80024000 2000>;
19};
diff --git a/Documentation/devicetree/bindings/dma/snps-dma.txt b/Documentation/devicetree/bindings/dma/snps-dma.txt
new file mode 100644
index 000000000000..c0d85dbcada5
--- /dev/null
+++ b/Documentation/devicetree/bindings/dma/snps-dma.txt
@@ -0,0 +1,17 @@
1* Synopsys Designware DMA Controller
2
3Required properties:
4- compatible: "snps,dma-spear1340"
5- reg: Address range of the DMAC registers
6- interrupt-parent: Should be the phandle for the interrupt controller
7 that services interrupts for this device
8- interrupt: Should contain the DMAC interrupt number
9
10Example:
11
12 dma@fc000000 {
13 compatible = "snps,dma-spear1340";
14 reg = <0xfc000000 0x1000>;
15 interrupt-parent = <&vic1>;
16 interrupts = <12>;
17 };
diff --git a/Documentation/devicetree/bindings/gpio/gpio-mm-lantiq.txt b/Documentation/devicetree/bindings/gpio/gpio-mm-lantiq.txt
new file mode 100644
index 000000000000..f93d51478d5a
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-mm-lantiq.txt
@@ -0,0 +1,38 @@
1Lantiq SoC External Bus memory mapped GPIO controller
2
3By attaching hardware latches to the EBU it is possible to create output
4only gpios. This driver configures a special memory address, which when
5written to outputs 16 bit to the latches.
6
7The node describing the memory mapped GPIOs needs to be a child of the node
8describing the "lantiq,localbus".
9
10Required properties:
11- compatible : Should be "lantiq,gpio-mm-lantiq"
12- reg : Address and length of the register set for the device
13- #gpio-cells : Should be two. The first cell is the pin number and
14 the second cell is used to specify optional parameters (currently
15 unused).
16- gpio-controller : Marks the device node as a gpio controller.
17
18Optional properties:
19- lantiq,shadow : The default value that we shall assume as already set on the
20 shift register cascade.
21
22Example:
23
24localbus@0 {
25 #address-cells = <2>;
26 #size-cells = <1>;
27 ranges = <0 0 0x0 0x3ffffff /* addrsel0 */
28 1 0 0x4000000 0x4000010>; /* addsel1 */
29 compatible = "lantiq,localbus", "simple-bus";
30
31 gpio_mm0: gpio@4000000 {
32 compatible = "lantiq,gpio-mm";
33 reg = <1 0x0 0x10>;
34 gpio-controller;
35 #gpio-cells = <2>;
36 lantiq,shadow = <0x77f>
37 };
38}
diff --git a/Documentation/devicetree/bindings/gpio/gpio-mxs.txt b/Documentation/devicetree/bindings/gpio/gpio-mxs.txt
new file mode 100644
index 000000000000..0c35673f7a3e
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-mxs.txt
@@ -0,0 +1,87 @@
1* Freescale MXS GPIO controller
2
3The Freescale MXS GPIO controller is part of MXS PIN controller. The
4GPIOs are organized in port/bank. Each port consists of 32 GPIOs.
5
6As the GPIO controller is embedded in the PIN controller and all the
7GPIO ports share the same IO space with PIN controller, the GPIO node
8will be represented as sub-nodes of MXS pinctrl node.
9
10Required properties for GPIO node:
11- compatible : Should be "fsl,<soc>-gpio". The supported SoCs include
12 imx23 and imx28.
13- interrupts : Should be the port interrupt shared by all 32 pins.
14- gpio-controller : Marks the device node as a gpio controller.
15- #gpio-cells : Should be two. The first cell is the pin number and
16 the second cell is used to specify optional parameters (currently
17 unused).
18- interrupt-controller: Marks the device node as an interrupt controller.
19- #interrupt-cells : Should be 2. The first cell is the GPIO number.
20 The second cell bits[3:0] is used to specify trigger type and level flags:
21 1 = low-to-high edge triggered.
22 2 = high-to-low edge triggered.
23 4 = active high level-sensitive.
24 8 = active low level-sensitive.
25
26Note: Each GPIO port should have an alias correctly numbered in "aliases"
27node.
28
29Examples:
30
31aliases {
32 gpio0 = &gpio0;
33 gpio1 = &gpio1;
34 gpio2 = &gpio2;
35 gpio3 = &gpio3;
36 gpio4 = &gpio4;
37};
38
39pinctrl@80018000 {
40 compatible = "fsl,imx28-pinctrl", "simple-bus";
41 reg = <0x80018000 2000>;
42
43 gpio0: gpio@0 {
44 compatible = "fsl,imx28-gpio";
45 interrupts = <127>;
46 gpio-controller;
47 #gpio-cells = <2>;
48 interrupt-controller;
49 #interrupt-cells = <2>;
50 };
51
52 gpio1: gpio@1 {
53 compatible = "fsl,imx28-gpio";
54 interrupts = <126>;
55 gpio-controller;
56 #gpio-cells = <2>;
57 interrupt-controller;
58 #interrupt-cells = <2>;
59 };
60
61 gpio2: gpio@2 {
62 compatible = "fsl,imx28-gpio";
63 interrupts = <125>;
64 gpio-controller;
65 #gpio-cells = <2>;
66 interrupt-controller;
67 #interrupt-cells = <2>;
68 };
69
70 gpio3: gpio@3 {
71 compatible = "fsl,imx28-gpio";
72 interrupts = <124>;
73 gpio-controller;
74 #gpio-cells = <2>;
75 interrupt-controller;
76 #interrupt-cells = <2>;
77 };
78
79 gpio4: gpio@4 {
80 compatible = "fsl,imx28-gpio";
81 interrupts = <123>;
82 gpio-controller;
83 #gpio-cells = <2>;
84 interrupt-controller;
85 #interrupt-cells = <2>;
86 };
87};
diff --git a/Documentation/devicetree/bindings/gpio/gpio-nmk.txt b/Documentation/devicetree/bindings/gpio/gpio-nmk.txt
new file mode 100644
index 000000000000..ee87467ad8d6
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-nmk.txt
@@ -0,0 +1,31 @@
1Nomadik GPIO controller
2
3Required properties:
4- compatible : Should be "st,nomadik-gpio".
5- reg : Physical base address and length of the controller's registers.
6- interrupts : The interrupt outputs from the controller.
7- #gpio-cells : Should be two:
8 The first cell is the pin number.
9 The second cell is used to specify optional parameters:
10 - bits[3:0] trigger type and level flags:
11 1 = low-to-high edge triggered.
12 2 = high-to-low edge triggered.
13 4 = active high level-sensitive.
14 8 = active low level-sensitive.
15- gpio-controller : Marks the device node as a GPIO controller.
16- interrupt-controller : Marks the device node as an interrupt controller.
17- gpio-bank : Specifies which bank a controller owns.
18- st,supports-sleepmode : Specifies whether controller can sleep or not
19
20Example:
21
22 gpio1: gpio@8012e080 {
23 compatible = "st,nomadik-gpio";
24 reg = <0x8012e080 0x80>;
25 interrupts = <0 120 0x4>;
26 #gpio-cells = <2>;
27 gpio-controller;
28 interrupt-controller;
29 supports-sleepmode;
30 gpio-bank = <1>;
31 };
diff --git a/Documentation/devicetree/bindings/gpio/gpio-stp-xway.txt b/Documentation/devicetree/bindings/gpio/gpio-stp-xway.txt
new file mode 100644
index 000000000000..854de130a971
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-stp-xway.txt
@@ -0,0 +1,42 @@
1Lantiq SoC Serial To Parallel (STP) GPIO controller
2
3The Serial To Parallel (STP) is found on MIPS based Lantiq socs. It is a
4peripheral controller used to drive external shift register cascades. At most
53 groups of 8 bits can be driven. The hardware is able to allow the DSL modem
6to drive the 2 LSBs of the cascade automatically.
7
8
9Required properties:
10- compatible : Should be "lantiq,gpio-stp-xway"
11- reg : Address and length of the register set for the device
12- #gpio-cells : Should be two. The first cell is the pin number and
13 the second cell is used to specify optional parameters (currently
14 unused).
15- gpio-controller : Marks the device node as a gpio controller.
16
17Optional properties:
18- lantiq,shadow : The default value that we shall assume as already set on the
19 shift register cascade.
20- lantiq,groups : Set the 3 bit mask to select which of the 3 groups are enabled
21 in the shift register cascade.
22- lantiq,dsl : The dsl core can control the 2 LSBs of the gpio cascade. This 2 bit
23 property can enable this feature.
24- lantiq,phy1 : The gphy1 core can control 3 bits of the gpio cascade.
25- lantiq,phy2 : The gphy2 core can control 3 bits of the gpio cascade.
26- lantiq,rising : use rising instead of falling edge for the shift register
27
28Example:
29
30gpio1: stp@E100BB0 {
31 compatible = "lantiq,gpio-stp-xway";
32 reg = <0xE100BB0 0x40>;
33 #gpio-cells = <2>;
34 gpio-controller;
35
36 lantiq,shadow = <0xffff>;
37 lantiq,groups = <0x7>;
38 lantiq,dsl = <0x3>;
39 lantiq,phy1 = <0x7>;
40 lantiq,phy2 = <0x7>;
41 /* lantiq,rising; */
42};
diff --git a/Documentation/devicetree/bindings/gpio/gpio_lpc32xx.txt b/Documentation/devicetree/bindings/gpio/gpio_lpc32xx.txt
new file mode 100644
index 000000000000..49819367a011
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio_lpc32xx.txt
@@ -0,0 +1,43 @@
1NXP LPC32xx SoC GPIO controller
2
3Required properties:
4- compatible: must be "nxp,lpc3220-gpio"
5- reg: Physical base address and length of the controller's registers.
6- gpio-controller: Marks the device node as a GPIO controller.
7- #gpio-cells: Should be 3:
8 1) bank:
9 0: GPIO P0
10 1: GPIO P1
11 2: GPIO P2
12 3: GPIO P3
13 4: GPI P3
14 5: GPO P3
15 2) pin number
16 3) optional parameters:
17 - bit 0 specifies polarity (0 for normal, 1 for inverted)
18- reg: Index of the GPIO group
19
20Example:
21
22 gpio: gpio@40028000 {
23 compatible = "nxp,lpc3220-gpio";
24 reg = <0x40028000 0x1000>;
25 gpio-controller;
26 #gpio-cells = <3>; /* bank, pin, flags */
27 };
28
29 leds {
30 compatible = "gpio-leds";
31
32 led0 {
33 gpios = <&gpio 5 1 1>; /* GPO_P3 1, active low */
34 linux,default-trigger = "heartbeat";
35 default-state = "off";
36 };
37
38 led1 {
39 gpios = <&gpio 5 14 1>; /* GPO_P3 14, active low */
40 linux,default-trigger = "timer";
41 default-state = "off";
42 };
43 };
diff --git a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt b/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
index 1e34cfe5ebea..05428f39d9ac 100644
--- a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
+++ b/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
@@ -3,19 +3,25 @@
3Required properties: 3Required properties:
4- compatible : Should be "mrvl,pxa-gpio" or "mrvl,mmp-gpio" 4- compatible : Should be "mrvl,pxa-gpio" or "mrvl,mmp-gpio"
5- reg : Address and length of the register set for the device 5- reg : Address and length of the register set for the device
6- interrupts : Should be the port interrupt shared by all gpio pins, if 6- interrupts : Should be the port interrupt shared by all gpio pins.
7- interrupt-name : Should be the name of irq resource. 7 There're three gpio interrupts in arch-pxa, and they're gpio0,
8 one number. 8 gpio1 and gpio_mux. There're only one gpio interrupt in arch-mmp,
9 gpio_mux.
10- interrupt-name : Should be the name of irq resource. Each interrupt
11 binds its interrupt-name.
12- interrupt-controller : Identifies the node as an interrupt controller.
13- #interrupt-cells: Specifies the number of cells needed to encode an
14 interrupt source.
9- gpio-controller : Marks the device node as a gpio controller. 15- gpio-controller : Marks the device node as a gpio controller.
10- #gpio-cells : Should be one. It is the pin number. 16- #gpio-cells : Should be one. It is the pin number.
11 17
12Example: 18Example:
13 19
14 gpio: gpio@d4019000 { 20 gpio: gpio@d4019000 {
15 compatible = "mrvl,mmp-gpio", "mrvl,pxa-gpio"; 21 compatible = "mrvl,mmp-gpio";
16 reg = <0xd4019000 0x1000>; 22 reg = <0xd4019000 0x1000>;
17 interrupts = <49>, <17>, <18>; 23 interrupts = <49>;
18 interrupt-name = "gpio_mux", "gpio0", "gpio1"; 24 interrupt-name = "gpio_mux";
19 gpio-controller; 25 gpio-controller;
20 #gpio-cells = <1>; 26 #gpio-cells = <1>;
21 interrupt-controller; 27 interrupt-controller;
diff --git a/Documentation/devicetree/bindings/i2c/i2c-mux-pinctrl.txt b/Documentation/devicetree/bindings/i2c/i2c-mux-pinctrl.txt
new file mode 100644
index 000000000000..ae8af1694e95
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/i2c-mux-pinctrl.txt
@@ -0,0 +1,93 @@
1Pinctrl-based I2C Bus Mux
2
3This binding describes an I2C bus multiplexer that uses pin multiplexing to
4route the I2C signals, and represents the pin multiplexing configuration
5using the pinctrl device tree bindings.
6
7 +-----+ +-----+
8 | dev | | dev |
9 +------------------------+ +-----+ +-----+
10 | SoC | | |
11 | /----|------+--------+
12 | +---+ +------+ | child bus A, on first set of pins
13 | |I2C|---|Pinmux| |
14 | +---+ +------+ | child bus B, on second set of pins
15 | \----|------+--------+--------+
16 | | | | |
17 +------------------------+ +-----+ +-----+ +-----+
18 | dev | | dev | | dev |
19 +-----+ +-----+ +-----+
20
21Required properties:
22- compatible: i2c-mux-pinctrl
23- i2c-parent: The phandle of the I2C bus that this multiplexer's master-side
24 port is connected to.
25
26Also required are:
27
28* Standard pinctrl properties that specify the pin mux state for each child
29 bus. See ../pinctrl/pinctrl-bindings.txt.
30
31* Standard I2C mux properties. See mux.txt in this directory.
32
33* I2C child bus nodes. See mux.txt in this directory.
34
35For each named state defined in the pinctrl-names property, an I2C child bus
36will be created. I2C child bus numbers are assigned based on the index into
37the pinctrl-names property.
38
39The only exception is that no bus will be created for a state named "idle". If
40such a state is defined, it must be the last entry in pinctrl-names. For
41example:
42
43 pinctrl-names = "ddc", "pta", "idle" -> ddc = bus 0, pta = bus 1
44 pinctrl-names = "ddc", "idle", "pta" -> Invalid ("idle" not last)
45 pinctrl-names = "idle", "ddc", "pta" -> Invalid ("idle" not last)
46
47Whenever an access is made to a device on a child bus, the relevant pinctrl
48state will be programmed into hardware.
49
50If an idle state is defined, whenever an access is not being made to a device
51on a child bus, the idle pinctrl state will be programmed into hardware.
52
53If an idle state is not defined, the most recently used pinctrl state will be
54left programmed into hardware whenever no access is being made of a device on
55a child bus.
56
57Example:
58
59 i2cmux {
60 compatible = "i2c-mux-pinctrl";
61 #address-cells = <1>;
62 #size-cells = <0>;
63
64 i2c-parent = <&i2c1>;
65
66 pinctrl-names = "ddc", "pta", "idle";
67 pinctrl-0 = <&state_i2cmux_ddc>;
68 pinctrl-1 = <&state_i2cmux_pta>;
69 pinctrl-2 = <&state_i2cmux_idle>;
70
71 i2c@0 {
72 reg = <0>;
73 #address-cells = <1>;
74 #size-cells = <0>;
75
76 eeprom {
77 compatible = "eeprom";
78 reg = <0x50>;
79 };
80 };
81
82 i2c@1 {
83 reg = <1>;
84 #address-cells = <1>;
85 #size-cells = <0>;
86
87 eeprom {
88 compatible = "eeprom";
89 reg = <0x50>;
90 };
91 };
92 };
93
diff --git a/Documentation/devicetree/bindings/i2c/i2c-mxs.txt b/Documentation/devicetree/bindings/i2c/i2c-mxs.txt
new file mode 100644
index 000000000000..1bfc02de1b0c
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/i2c-mxs.txt
@@ -0,0 +1,16 @@
1* Freescale MXS Inter IC (I2C) Controller
2
3Required properties:
4- compatible: Should be "fsl,<chip>-i2c"
5- reg: Should contain registers location and length
6- interrupts: Should contain ERROR and DMA interrupts
7
8Examples:
9
10i2c0: i2c@80058000 {
11 #address-cells = <1>;
12 #size-cells = <0>;
13 compatible = "fsl,imx28-i2c";
14 reg = <0x80058000 2000>;
15 interrupts = <111 68>;
16};
diff --git a/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt b/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
index 071eb3caae91..b891ee218354 100644
--- a/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
+++ b/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
@@ -3,34 +3,31 @@
3Required properties : 3Required properties :
4 4
5 - reg : Offset and length of the register set for the device 5 - reg : Offset and length of the register set for the device
6 - compatible : should be "mrvl,mmp-twsi" where CHIP is the name of a 6 - compatible : should be "mrvl,mmp-twsi" where mmp is the name of a
7 compatible processor, e.g. pxa168, pxa910, mmp2, mmp3. 7 compatible processor, e.g. pxa168, pxa910, mmp2, mmp3.
8 For the pxa2xx/pxa3xx, an additional node "mrvl,pxa-i2c" is required 8 For the pxa2xx/pxa3xx, an additional node "mrvl,pxa-i2c" is required
9 as shown in the example below. 9 as shown in the example below.
10 10
11Recommended properties : 11Recommended properties :
12 12
13 - interrupts : <a b> where a is the interrupt number and b is a 13 - interrupts : the interrupt number
14 field that represents an encoding of the sense and level
15 information for the interrupt. This should be encoded based on
16 the information in section 2) depending on the type of interrupt
17 controller you have.
18 - interrupt-parent : the phandle for the interrupt controller that 14 - interrupt-parent : the phandle for the interrupt controller that
19 services interrupts for this device. 15 services interrupts for this device. If the parent is the default
16 interrupt controller in device tree, it could be ignored.
20 - mrvl,i2c-polling : Disable interrupt of i2c controller. Polling 17 - mrvl,i2c-polling : Disable interrupt of i2c controller. Polling
21 status register of i2c controller instead. 18 status register of i2c controller instead.
22 - mrvl,i2c-fast-mode : Enable fast mode of i2c controller. 19 - mrvl,i2c-fast-mode : Enable fast mode of i2c controller.
23 20
24Examples: 21Examples:
25 twsi1: i2c@d4011000 { 22 twsi1: i2c@d4011000 {
26 compatible = "mrvl,mmp-twsi", "mrvl,pxa-i2c"; 23 compatible = "mrvl,mmp-twsi";
27 reg = <0xd4011000 0x1000>; 24 reg = <0xd4011000 0x1000>;
28 interrupts = <7>; 25 interrupts = <7>;
29 mrvl,i2c-fast-mode; 26 mrvl,i2c-fast-mode;
30 }; 27 };
31 28
32 twsi2: i2c@d4025000 { 29 twsi2: i2c@d4025000 {
33 compatible = "mrvl,mmp-twsi", "mrvl,pxa-i2c"; 30 compatible = "mrvl,mmp-twsi";
34 reg = <0xd4025000 0x1000>; 31 reg = <0xd4025000 0x1000>;
35 interrupts = <58>; 32 interrupts = <58>;
36 }; 33 };
diff --git a/Documentation/devicetree/bindings/i2c/mux.txt b/Documentation/devicetree/bindings/i2c/mux.txt
new file mode 100644
index 000000000000..af84cce5cd7b
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/mux.txt
@@ -0,0 +1,60 @@
1Common i2c bus multiplexer/switch properties.
2
3An i2c bus multiplexer/switch will have several child busses that are
4numbered uniquely in a device dependent manner. The nodes for an i2c bus
5multiplexer/switch will have one child node for each child
6bus.
7
8Required properties:
9- #address-cells = <1>;
10- #size-cells = <0>;
11
12Required properties for child nodes:
13- #address-cells = <1>;
14- #size-cells = <0>;
15- reg : The sub-bus number.
16
17Optional properties for child nodes:
18- Other properties specific to the multiplexer/switch hardware.
19- Child nodes conforming to i2c bus binding
20
21
22Example :
23
24 /*
25 An NXP pca9548 8 channel I2C multiplexer at address 0x70
26 with two NXP pca8574 GPIO expanders attached, one each to
27 ports 3 and 4.
28 */
29
30 mux@70 {
31 compatible = "nxp,pca9548";
32 reg = <0x70>;
33 #address-cells = <1>;
34 #size-cells = <0>;
35
36 i2c@3 {
37 #address-cells = <1>;
38 #size-cells = <0>;
39 reg = <3>;
40
41 gpio1: gpio@38 {
42 compatible = "nxp,pca8574";
43 reg = <0x38>;
44 #gpio-cells = <2>;
45 gpio-controller;
46 };
47 };
48 i2c@4 {
49 #address-cells = <1>;
50 #size-cells = <0>;
51 reg = <4>;
52
53 gpio2: gpio@38 {
54 compatible = "nxp,pca8574";
55 reg = <0x38>;
56 #gpio-cells = <2>;
57 gpio-controller;
58 };
59 };
60 };
diff --git a/Documentation/devicetree/bindings/i2c/pnx.txt b/Documentation/devicetree/bindings/i2c/pnx.txt
new file mode 100644
index 000000000000..fe98ada33ee4
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/pnx.txt
@@ -0,0 +1,36 @@
1* NXP PNX I2C Controller
2
3Required properties:
4
5 - reg: Offset and length of the register set for the device
6 - compatible: should be "nxp,pnx-i2c"
7 - interrupts: configure one interrupt line
8 - #address-cells: always 1 (for i2c addresses)
9 - #size-cells: always 0
10 - interrupt-parent: the phandle for the interrupt controller that
11 services interrupts for this device.
12
13Optional properties:
14
15 - clock-frequency: desired I2C bus clock frequency in Hz, Default: 100000 Hz
16
17Examples:
18
19 i2c1: i2c@400a0000 {
20 compatible = "nxp,pnx-i2c";
21 reg = <0x400a0000 0x100>;
22 interrupt-parent = <&mic>;
23 interrupts = <51 0>;
24 #address-cells = <1>;
25 #size-cells = <0>;
26 };
27
28 i2c2: i2c@400a8000 {
29 compatible = "nxp,pnx-i2c";
30 reg = <0x400a8000 0x100>;
31 interrupt-parent = <&mic>;
32 interrupts = <50 0>;
33 #address-cells = <1>;
34 #size-cells = <0>;
35 clock-frequency = <100000>;
36 };
diff --git a/Documentation/devicetree/bindings/i2c/samsung-i2c.txt b/Documentation/devicetree/bindings/i2c/samsung-i2c.txt
index 38832c712919..b6cb5a12c672 100644
--- a/Documentation/devicetree/bindings/i2c/samsung-i2c.txt
+++ b/Documentation/devicetree/bindings/i2c/samsung-i2c.txt
@@ -6,14 +6,18 @@ Required properties:
6 - compatible: value should be either of the following. 6 - compatible: value should be either of the following.
7 (a) "samsung, s3c2410-i2c", for i2c compatible with s3c2410 i2c. 7 (a) "samsung, s3c2410-i2c", for i2c compatible with s3c2410 i2c.
8 (b) "samsung, s3c2440-i2c", for i2c compatible with s3c2440 i2c. 8 (b) "samsung, s3c2440-i2c", for i2c compatible with s3c2440 i2c.
9 (c) "samsung, s3c2440-hdmiphy-i2c", for s3c2440-like i2c used
10 inside HDMIPHY block found on several samsung SoCs
9 - reg: physical base address of the controller and length of memory mapped 11 - reg: physical base address of the controller and length of memory mapped
10 region. 12 region.
11 - interrupts: interrupt number to the cpu. 13 - interrupts: interrupt number to the cpu.
12 - samsung,i2c-sda-delay: Delay (in ns) applied to data line (SDA) edges. 14 - samsung,i2c-sda-delay: Delay (in ns) applied to data line (SDA) edges.
13 - gpios: The order of the gpios should be the following: <SDA, SCL>.
14 The gpio specifier depends on the gpio controller.
15 15
16Optional properties: 16Optional properties:
17 - gpios: The order of the gpios should be the following: <SDA, SCL>.
18 The gpio specifier depends on the gpio controller. Required in all
19 cases except for "samsung,s3c2440-hdmiphy-i2c" whose input/output
20 lines are permanently wired to the respective client
17 - samsung,i2c-slave-addr: Slave address in multi-master enviroment. If not 21 - samsung,i2c-slave-addr: Slave address in multi-master enviroment. If not
18 specified, default value is 0. 22 specified, default value is 0.
19 - samsung,i2c-max-bus-freq: Desired frequency in Hz of the bus. If not 23 - samsung,i2c-max-bus-freq: Desired frequency in Hz of the bus. If not
diff --git a/Documentation/devicetree/bindings/i2c/xiic.txt b/Documentation/devicetree/bindings/i2c/xiic.txt
new file mode 100644
index 000000000000..ceabbe91ae44
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/xiic.txt
@@ -0,0 +1,22 @@
1Xilinx IIC controller:
2
3Required properties:
4- compatible : Must be "xlnx,xps-iic-2.00.a"
5- reg : IIC register location and length
6- interrupts : IIC controller unterrupt
7- #address-cells = <1>
8- #size-cells = <0>
9
10Optional properties:
11- Child nodes conforming to i2c bus binding
12
13Example:
14
15 axi_iic_0: i2c@40800000 {
16 compatible = "xlnx,xps-iic-2.00.a";
17 interrupts = < 1 2 >;
18 reg = < 0x40800000 0x10000 >;
19
20 #size-cells = <0>;
21 #address-cells = <1>;
22 };
diff --git a/Documentation/devicetree/bindings/input/fsl-mma8450.txt b/Documentation/devicetree/bindings/input/fsl-mma8450.txt
index a00c94ccbdee..0b96e5737d3a 100644
--- a/Documentation/devicetree/bindings/input/fsl-mma8450.txt
+++ b/Documentation/devicetree/bindings/input/fsl-mma8450.txt
@@ -2,6 +2,7 @@
2 2
3Required properties: 3Required properties:
4- compatible : "fsl,mma8450". 4- compatible : "fsl,mma8450".
5- reg: the I2C address of MMA8450
5 6
6Example: 7Example:
7 8
diff --git a/Documentation/devicetree/bindings/input/spear-keyboard.txt b/Documentation/devicetree/bindings/input/spear-keyboard.txt
new file mode 100644
index 000000000000..4a846d26da23
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/spear-keyboard.txt
@@ -0,0 +1,20 @@
1* SPEAr keyboard controller
2
3Required properties:
4- compatible: "st,spear300-kbd"
5
6Optional properties, in addition to those specified by the shared
7matrix-keyboard bindings:
8- autorepeat: bool: enables key autorepeat
9- st,mode: keyboard mode: 0 - 9x9, 1 - 6x6, 2 - 2x2
10
11Example:
12
13kbd@fc400000 {
14 compatible = "st,spear300-kbd";
15 reg = <0xfc400000 0x100>;
16 linux,keymap = < 0x00030012
17 0x0102003a >;
18 autorepeat;
19 st,mode = <0>;
20};
diff --git a/Documentation/devicetree/bindings/input/touchscreen/lpc32xx-tsc.txt b/Documentation/devicetree/bindings/input/touchscreen/lpc32xx-tsc.txt
new file mode 100644
index 000000000000..41cbf4b7a670
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/touchscreen/lpc32xx-tsc.txt
@@ -0,0 +1,16 @@
1* NXP LPC32xx SoC Touchscreen Controller (TSC)
2
3Required properties:
4- compatible: must be "nxp,lpc3220-tsc"
5- reg: physical base address of the controller and length of memory mapped
6 region.
7- interrupts: The TSC/ADC interrupt
8
9Example:
10
11 tsc@40048000 {
12 compatible = "nxp,lpc3220-tsc";
13 reg = <0x40048000 0x1000>;
14 interrupt-parent = <&mic>;
15 interrupts = <39 0>;
16 };
diff --git a/Documentation/devicetree/bindings/input/twl6040-vibra.txt b/Documentation/devicetree/bindings/input/twl6040-vibra.txt
new file mode 100644
index 000000000000..5b1918b818fb
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/twl6040-vibra.txt
@@ -0,0 +1,37 @@
1Vibra driver for the twl6040 family
2
3The vibra driver is a child of the twl6040 MFD dirver.
4Documentation/devicetree/bindings/mfd/twl6040.txt
5
6Required properties:
7- compatible : Must be "ti,twl6040-vibra";
8- interrupts: 4, Vibra overcurrent interrupt
9- vddvibl-supply: Regulator supplying the left vibra motor
10- vddvibr-supply: Regulator supplying the right vibra motor
11- vibldrv_res: Board specific left driver resistance
12- vibrdrv_res: Board specific right driver resistance
13- viblmotor_res: Board specific left motor resistance
14- vibrmotor_res: Board specific right motor resistance
15
16Optional properties:
17- vddvibl_uV: If the vddvibl default voltage need to be changed
18- vddvibr_uV: If the vddvibr default voltage need to be changed
19
20Example:
21/*
22 * 8-channel high quality low-power audio codec
23 * http://www.ti.com/lit/ds/symlink/twl6040.pdf
24 */
25twl6040: twl6040@4b {
26 ...
27 twl6040_vibra: twl6040@1 {
28 compatible = "ti,twl6040-vibra";
29 interrupts = <4>;
30 vddvibl-supply = <&vbat>;
31 vddvibr-supply = <&vbat>;
32 vibldrv_res = <8>;
33 vibrdrv_res = <3>;
34 viblmotor_res = <10>;
35 vibrmotor_res = <10>;
36 };
37};
diff --git a/Documentation/devicetree/bindings/iommu/nvidia,tegra20-gart.txt b/Documentation/devicetree/bindings/iommu/nvidia,tegra20-gart.txt
new file mode 100644
index 000000000000..099d9362ebc1
--- /dev/null
+++ b/Documentation/devicetree/bindings/iommu/nvidia,tegra20-gart.txt
@@ -0,0 +1,14 @@
1NVIDIA Tegra 20 GART
2
3Required properties:
4- compatible: "nvidia,tegra20-gart"
5- reg: Two pairs of cells specifying the physical address and size of
6 the memory controller registers and the GART aperture respectively.
7
8Example:
9
10 gart {
11 compatible = "nvidia,tegra20-gart";
12 reg = <0x7000f024 0x00000018 /* controller registers */
13 0x58000000 0x02000000>; /* GART aperture */
14 };
diff --git a/Documentation/devicetree/bindings/mfd/da9052-i2c.txt b/Documentation/devicetree/bindings/mfd/da9052-i2c.txt
new file mode 100644
index 000000000000..1857f4a6b9a9
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/da9052-i2c.txt
@@ -0,0 +1,60 @@
1* Dialog DA9052/53 Power Management Integrated Circuit (PMIC)
2
3Required properties:
4- compatible : Should be "dlg,da9052", "dlg,da9053-aa",
5 "dlg,da9053-ab", or "dlg,da9053-bb"
6
7Sub-nodes:
8- regulators : Contain the regulator nodes. The DA9052/53 regulators are
9 bound using their names as listed below:
10
11 buck0 : regulator BUCK0
12 buck1 : regulator BUCK1
13 buck2 : regulator BUCK2
14 buck3 : regulator BUCK3
15 ldo4 : regulator LDO4
16 ldo5 : regulator LDO5
17 ldo6 : regulator LDO6
18 ldo7 : regulator LDO7
19 ldo8 : regulator LDO8
20 ldo9 : regulator LDO9
21 ldo10 : regulator LDO10
22 ldo11 : regulator LDO11
23 ldo12 : regulator LDO12
24 ldo13 : regulator LDO13
25
26 The bindings details of individual regulator device can be found in:
27 Documentation/devicetree/bindings/regulator/regulator.txt
28
29Examples:
30
31i2c@63fc8000 { /* I2C1 */
32 status = "okay";
33
34 pmic: dialog@48 {
35 compatible = "dlg,da9053-aa";
36 reg = <0x48>;
37
38 regulators {
39 buck0 {
40 regulator-min-microvolt = <500000>;
41 regulator-max-microvolt = <2075000>;
42 };
43
44 buck1 {
45 regulator-min-microvolt = <500000>;
46 regulator-max-microvolt = <2075000>;
47 };
48
49 buck2 {
50 regulator-min-microvolt = <925000>;
51 regulator-max-microvolt = <2500000>;
52 };
53
54 buck3 {
55 regulator-min-microvolt = <925000>;
56 regulator-max-microvolt = <2500000>;
57 };
58 };
59 };
60};
diff --git a/Documentation/devicetree/bindings/mfd/mc13xxx.txt b/Documentation/devicetree/bindings/mfd/mc13xxx.txt
index 19f6af47a792..baf07987ae68 100644
--- a/Documentation/devicetree/bindings/mfd/mc13xxx.txt
+++ b/Documentation/devicetree/bindings/mfd/mc13xxx.txt
@@ -46,8 +46,8 @@ Examples:
46 46
47ecspi@70010000 { /* ECSPI1 */ 47ecspi@70010000 { /* ECSPI1 */
48 fsl,spi-num-chipselects = <2>; 48 fsl,spi-num-chipselects = <2>;
49 cs-gpios = <&gpio3 24 0>, /* GPIO4_24 */ 49 cs-gpios = <&gpio4 24 0>, /* GPIO4_24 */
50 <&gpio3 25 0>; /* GPIO4_25 */ 50 <&gpio4 25 0>; /* GPIO4_25 */
51 status = "okay"; 51 status = "okay";
52 52
53 pmic: mc13892@0 { 53 pmic: mc13892@0 {
diff --git a/Documentation/devicetree/bindings/mfd/tps65910.txt b/Documentation/devicetree/bindings/mfd/tps65910.txt
new file mode 100644
index 000000000000..645f5eaadb3f
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/tps65910.txt
@@ -0,0 +1,133 @@
1TPS65910 Power Management Integrated Circuit
2
3Required properties:
4- compatible: "ti,tps65910" or "ti,tps65911"
5- reg: I2C slave address
6- interrupts: the interrupt outputs of the controller
7- #gpio-cells: number of cells to describe a GPIO, this should be 2.
8 The first cell is the GPIO number.
9 The second cell is used to specify additional options <unused>.
10- gpio-controller: mark the device as a GPIO controller
11- #interrupt-cells: the number of cells to describe an IRQ, this should be 2.
12 The first cell is the IRQ number.
13 The second cell is the flags, encoded as the trigger masks from
14 Documentation/devicetree/bindings/interrupts.txt
15- regulators: This is the list of child nodes that specify the regulator
16 initialization data for defined regulators. Not all regulators for the given
17 device need to be present. The definition for each of these nodes is defined
18 using the standard binding for regulators found at
19 Documentation/devicetree/bindings/regulator/regulator.txt.
20
21 The valid names for regulators are:
22 tps65910: vrtc, vio, vdd1, vdd2, vdd3, vdig1, vdig2, vpll, vdac, vaux1,
23 vaux2, vaux33, vmmc
24 tps65911: vrtc, vio, vdd1, vdd3, vddctrl, ldo1, ldo2, ldo3, ldo4, ldo5,
25 ldo6, ldo7, ldo8
26
27Optional properties:
28- ti,vmbch-threshold: (tps65911) main battery charged threshold
29 comparator. (see VMBCH_VSEL in TPS65910 datasheet)
30- ti,vmbch2-threshold: (tps65911) main battery discharged threshold
31 comparator. (see VMBCH_VSEL in TPS65910 datasheet)
32- ti,en-gpio-sleep: enable sleep control for gpios
33 There should be 9 entries here, one for each gpio.
34
35Regulator Optional properties:
36- ti,regulator-ext-sleep-control: enable external sleep
37 control through external inputs [0 (not enabled), 1 (EN1), 2 (EN2) or 4(EN3)]
38 If this property is not defined, it defaults to 0 (not enabled).
39
40Example:
41
42 pmu: tps65910@d2 {
43 compatible = "ti,tps65910";
44 reg = <0xd2>;
45 interrupt-parent = <&intc>;
46 interrupts = < 0 118 0x04 >;
47
48 #gpio-cells = <2>;
49 gpio-controller;
50
51 #interrupt-cells = <2>;
52 interrupt-controller;
53
54 ti,vmbch-threshold = 0;
55 ti,vmbch2-threshold = 0;
56
57 ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>;
58
59 regulators {
60 vdd1_reg: vdd1 {
61 regulator-min-microvolt = < 600000>;
62 regulator-max-microvolt = <1500000>;
63 regulator-always-on;
64 regulator-boot-on;
65 ti,regulator-ext-sleep-control = <0>;
66 };
67 vdd2_reg: vdd2 {
68 regulator-min-microvolt = < 600000>;
69 regulator-max-microvolt = <1500000>;
70 regulator-always-on;
71 regulator-boot-on;
72 ti,regulator-ext-sleep-control = <4>;
73 };
74 vddctrl_reg: vddctrl {
75 regulator-min-microvolt = < 600000>;
76 regulator-max-microvolt = <1400000>;
77 regulator-always-on;
78 regulator-boot-on;
79 ti,regulator-ext-sleep-control = <0>;
80 };
81 vio_reg: vio {
82 regulator-min-microvolt = <1500000>;
83 regulator-max-microvolt = <1800000>;
84 regulator-always-on;
85 regulator-boot-on;
86 ti,regulator-ext-sleep-control = <1>;
87 };
88 ldo1_reg: ldo1 {
89 regulator-min-microvolt = <1000000>;
90 regulator-max-microvolt = <3300000>;
91 ti,regulator-ext-sleep-control = <0>;
92 };
93 ldo2_reg: ldo2 {
94 regulator-min-microvolt = <1050000>;
95 regulator-max-microvolt = <1050000>;
96 ti,regulator-ext-sleep-control = <0>;
97 };
98 ldo3_reg: ldo3 {
99 regulator-min-microvolt = <1000000>;
100 regulator-max-microvolt = <3300000>;
101 ti,regulator-ext-sleep-control = <0>;
102 };
103 ldo4_reg: ldo4 {
104 regulator-min-microvolt = <1000000>;
105 regulator-max-microvolt = <3300000>;
106 regulator-always-on;
107 ti,regulator-ext-sleep-control = <0>;
108 };
109 ldo5_reg: ldo5 {
110 regulator-min-microvolt = <1000000>;
111 regulator-max-microvolt = <3300000>;
112 ti,regulator-ext-sleep-control = <0>;
113 };
114 ldo6_reg: ldo6 {
115 regulator-min-microvolt = <1200000>;
116 regulator-max-microvolt = <1200000>;
117 ti,regulator-ext-sleep-control = <0>;
118 };
119 ldo7_reg: ldo7 {
120 regulator-min-microvolt = <1200000>;
121 regulator-max-microvolt = <1200000>;
122 regulator-always-on;
123 regulator-boot-on;
124 ti,regulator-ext-sleep-control = <1>;
125 };
126 ldo8_reg: ldo8 {
127 regulator-min-microvolt = <1000000>;
128 regulator-max-microvolt = <3300000>;
129 regulator-always-on;
130 ti,regulator-ext-sleep-control = <1>;
131 };
132 };
133 };
diff --git a/Documentation/devicetree/bindings/mfd/twl6040.txt b/Documentation/devicetree/bindings/mfd/twl6040.txt
new file mode 100644
index 000000000000..bc67c6f424aa
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/twl6040.txt
@@ -0,0 +1,62 @@
1Texas Instruments TWL6040 family
2
3The TWL6040s are 8-channel high quality low-power audio codecs providing audio
4and vibra functionality on OMAP4+ platforms.
5They are connected ot the host processor via i2c for commands, McPDM for audio
6data and commands.
7
8Required properties:
9- compatible : Must be "ti,twl6040";
10- reg: must be 0x4b for i2c address
11- interrupts: twl6040 has one interrupt line connecteded to the main SoC
12- interrupt-parent: The parent interrupt controller
13- twl6040,audpwron-gpio: Power on GPIO line for the twl6040
14
15- vio-supply: Regulator for the twl6040 VIO supply
16- v2v1-supply: Regulator for the twl6040 V2V1 supply
17
18Optional properties, nodes:
19- enable-active-high: To power on the twl6040 during boot.
20
21Vibra functionality
22Required properties:
23- vddvibl-supply: Regulator for the left vibra motor
24- vddvibr-supply: Regulator for the right vibra motor
25- vibra { }: Configuration section for vibra parameters containing the following
26 properties:
27- ti,vibldrv-res: Resistance parameter for left driver
28- ti,vibrdrv-res: Resistance parameter for right driver
29- ti,viblmotor-res: Resistance parameter for left motor
30- ti,viblmotor-res: Resistance parameter for right motor
31
32Optional properties within vibra { } section:
33- vddvibl_uV: If the vddvibl default voltage need to be changed
34- vddvibr_uV: If the vddvibr default voltage need to be changed
35
36Example:
37&i2c1 {
38 twl6040: twl@4b {
39 compatible = "ti,twl6040";
40 reg = <0x4b>;
41
42 interrupts = <0 119 4>;
43 interrupt-parent = <&gic>;
44 twl6040,audpwron-gpio = <&gpio4 31 0>;
45
46 vio-supply = <&v1v8>;
47 v2v1-supply = <&v2v1>;
48 enable-active-high;
49
50 /* regulators for vibra motor */
51 vddvibl-supply = <&vbat>;
52 vddvibr-supply = <&vbat>;
53
54 vibra {
55 /* Vibra driver, motor resistance parameters */
56 ti,vibldrv-res = <8>;
57 ti,vibrdrv-res = <3>;
58 ti,viblmotor-res = <10>;
59 ti,vibrmotor-res = <10>;
60 };
61 };
62};
diff --git a/Documentation/devicetree/bindings/misc/bmp085.txt b/Documentation/devicetree/bindings/misc/bmp085.txt
new file mode 100644
index 000000000000..91dfda2e4e11
--- /dev/null
+++ b/Documentation/devicetree/bindings/misc/bmp085.txt
@@ -0,0 +1,20 @@
1BMP085/BMP18x digital pressure sensors
2
3Required properties:
4- compatible: bosch,bmp085
5
6Optional properties:
7- chip-id: configurable chip id for non-default chip revisions
8- temp-measurement-period: temperature measurement period (milliseconds)
9- default-oversampling: default oversampling value to be used at startup,
10 value range is 0-3 with rising sensitivity.
11
12Example:
13
14pressure@77 {
15 compatible = "bosch,bmp085";
16 reg = <0x77>;
17 chip-id = <10>;
18 temp-measurement-period = <100>;
19 default-oversampling = <2>;
20};
diff --git a/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt b/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt
index 64bcb8be973c..0d93b4b0e0e3 100644
--- a/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt
+++ b/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt
@@ -11,9 +11,11 @@ Required properties:
11 - interrupt-parent : interrupt source phandle. 11 - interrupt-parent : interrupt source phandle.
12 - clock-frequency : specifies eSDHC base clock frequency. 12 - clock-frequency : specifies eSDHC base clock frequency.
13 - sdhci,wp-inverted : (optional) specifies that eSDHC controller 13 - sdhci,wp-inverted : (optional) specifies that eSDHC controller
14 reports inverted write-protect state; 14 reports inverted write-protect state; New devices should use
15 the generic "wp-inverted" property.
15 - sdhci,1-bit-only : (optional) specifies that a controller can 16 - sdhci,1-bit-only : (optional) specifies that a controller can
16 only handle 1-bit data transfers. 17 only handle 1-bit data transfers. New devices should use the
18 generic "bus-width = <1>" property.
17 - sdhci,auto-cmd12: (optional) specifies that a controller can 19 - sdhci,auto-cmd12: (optional) specifies that a controller can
18 only handle auto CMD12. 20 only handle auto CMD12.
19 21
diff --git a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt
index ab22fe6e73ab..fea541ee8b34 100644
--- a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt
+++ b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt
@@ -9,7 +9,7 @@ Required properties:
9- interrupts : Should contain eSDHC interrupt 9- interrupts : Should contain eSDHC interrupt
10 10
11Optional properties: 11Optional properties:
12- fsl,card-wired : Indicate the card is wired to host permanently 12- non-removable : Indicate the card is wired to host permanently
13- fsl,cd-internal : Indicate to use controller internal card detection 13- fsl,cd-internal : Indicate to use controller internal card detection
14- fsl,wp-internal : Indicate to use controller internal write protection 14- fsl,wp-internal : Indicate to use controller internal write protection
15- cd-gpios : Specify GPIOs for card detection 15- cd-gpios : Specify GPIOs for card detection
@@ -29,6 +29,6 @@ esdhc@70008000 {
29 compatible = "fsl,imx51-esdhc"; 29 compatible = "fsl,imx51-esdhc";
30 reg = <0x70008000 0x4000>; 30 reg = <0x70008000 0x4000>;
31 interrupts = <2>; 31 interrupts = <2>;
32 cd-gpios = <&gpio0 6 0>; /* GPIO1_6 */ 32 cd-gpios = <&gpio1 6 0>; /* GPIO1_6 */
33 wp-gpios = <&gpio0 5 0>; /* GPIO1_5 */ 33 wp-gpios = <&gpio1 5 0>; /* GPIO1_5 */
34}; 34};
diff --git a/Documentation/devicetree/bindings/mmc/mmc-spi-slot.txt b/Documentation/devicetree/bindings/mmc/mmc-spi-slot.txt
index 89a0084df2f7..d64aea5a4203 100644
--- a/Documentation/devicetree/bindings/mmc/mmc-spi-slot.txt
+++ b/Documentation/devicetree/bindings/mmc/mmc-spi-slot.txt
@@ -10,7 +10,8 @@ Required properties:
10 10
11Optional properties: 11Optional properties:
12- gpios : may specify GPIOs in this order: Card-Detect GPIO, 12- gpios : may specify GPIOs in this order: Card-Detect GPIO,
13 Write-Protect GPIO. 13 Write-Protect GPIO. Note that this does not follow the
14 binding from mmc.txt, for historic reasons.
14- interrupts : the interrupt of a card detect interrupt. 15- interrupts : the interrupt of a card detect interrupt.
15- interrupt-parent : the phandle for the interrupt controller that 16- interrupt-parent : the phandle for the interrupt controller that
16 services interrupts for this device. 17 services interrupts for this device.
diff --git a/Documentation/devicetree/bindings/mmc/mmc.txt b/Documentation/devicetree/bindings/mmc/mmc.txt
new file mode 100644
index 000000000000..6e70dcde0a71
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/mmc.txt
@@ -0,0 +1,27 @@
1These properties are common to multiple MMC host controllers. Any host
2that requires the respective functionality should implement them using
3these definitions.
4
5Required properties:
6- bus-width: Number of data lines, can be <1>, <4>, or <8>
7
8Optional properties:
9- cd-gpios : Specify GPIOs for card detection, see gpio binding
10- wp-gpios : Specify GPIOs for write protection, see gpio binding
11- cd-inverted: when present, polarity on the wp gpio line is inverted
12- wp-inverted: when present, polarity on the wp gpio line is inverted
13- non-removable: non-removable slot (like eMMC)
14- max-frequency: maximum operating clock frequency
15
16Example:
17
18sdhci@ab000000 {
19 compatible = "sdhci";
20 reg = <0xab000000 0x200>;
21 interrupts = <23>;
22 bus-width = <4>;
23 cd-gpios = <&gpio 69 0>;
24 cd-inverted;
25 wp-gpios = <&gpio 70 0>;
26 max-frequency = <50000000>;
27}
diff --git a/Documentation/devicetree/bindings/mmc/mmci.txt b/Documentation/devicetree/bindings/mmc/mmci.txt
new file mode 100644
index 000000000000..14a81d526118
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/mmci.txt
@@ -0,0 +1,19 @@
1* ARM PrimeCell MultiMedia Card Interface (MMCI) PL180/1
2
3The ARM PrimeCell MMCI PL180 and PL181 provides and interface for
4reading and writing to MultiMedia and SD cards alike.
5
6Required properties:
7- compatible : contains "arm,pl18x", "arm,primecell".
8- reg : contains pl18x registers and length.
9- interrupts : contains the device IRQ(s).
10- arm,primecell-periphid : contains the PrimeCell Peripheral ID.
11
12Optional properties:
13- wp-gpios : contains any write protect (ro) gpios
14- cd-gpios : contains any card detection gpios
15- cd-inverted : indicates whether the cd gpio is inverted
16- max-frequency : contains the maximum operating frequency
17- bus-width : number of data lines, can be <1>, <4>, or <8>
18- mmc-cap-mmc-highspeed : indicates whether MMC is high speed capable
19- mmc-cap-sd-highspeed : indicates whether SD is high speed capable
diff --git a/Documentation/devicetree/bindings/mmc/mxs-mmc.txt b/Documentation/devicetree/bindings/mmc/mxs-mmc.txt
new file mode 100644
index 000000000000..14d870a9e3db
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/mxs-mmc.txt
@@ -0,0 +1,25 @@
1* Freescale MXS MMC controller
2
3The Freescale MXS Synchronous Serial Ports (SSP) can act as a MMC controller
4to support MMC, SD, and SDIO types of memory cards.
5
6Required properties:
7- compatible: Should be "fsl,<chip>-mmc". The supported chips include
8 imx23 and imx28.
9- reg: Should contain registers location and length
10- interrupts: Should contain ERROR and DMA interrupts
11- fsl,ssp-dma-channel: APBH DMA channel for the SSP
12- bus-width: Number of data lines, can be <1>, <4>, or <8>
13
14Optional properties:
15- wp-gpios: Specify GPIOs for write protection
16
17Examples:
18
19ssp0: ssp@80010000 {
20 compatible = "fsl,imx28-mmc";
21 reg = <0x80010000 2000>;
22 interrupts = <96 82>;
23 fsl,ssp-dma-channel = <0>;
24 bus-width = <8>;
25};
diff --git a/Documentation/devicetree/bindings/mmc/nvidia-sdhci.txt b/Documentation/devicetree/bindings/mmc/nvidia-sdhci.txt
index 7e51154679a6..f77c3031607f 100644
--- a/Documentation/devicetree/bindings/mmc/nvidia-sdhci.txt
+++ b/Documentation/devicetree/bindings/mmc/nvidia-sdhci.txt
@@ -7,12 +7,12 @@ Required properties:
7- compatible : Should be "nvidia,<chip>-sdhci" 7- compatible : Should be "nvidia,<chip>-sdhci"
8- reg : Should contain SD/MMC registers location and length 8- reg : Should contain SD/MMC registers location and length
9- interrupts : Should contain SD/MMC interrupt 9- interrupts : Should contain SD/MMC interrupt
10- bus-width : Number of data lines, can be <1>, <4>, or <8>
10 11
11Optional properties: 12Optional properties:
12- cd-gpios : Specify GPIOs for card detection 13- cd-gpios : Specify GPIOs for card detection
13- wp-gpios : Specify GPIOs for write protection 14- wp-gpios : Specify GPIOs for write protection
14- power-gpios : Specify GPIOs for power control 15- power-gpios : Specify GPIOs for power control
15- support-8bit : Boolean, indicates if 8-bit mode should be used.
16 16
17Example: 17Example:
18 18
@@ -23,5 +23,5 @@ sdhci@c8000200 {
23 cd-gpios = <&gpio 69 0>; /* gpio PI5 */ 23 cd-gpios = <&gpio 69 0>; /* gpio PI5 */
24 wp-gpios = <&gpio 57 0>; /* gpio PH1 */ 24 wp-gpios = <&gpio 57 0>; /* gpio PH1 */
25 power-gpios = <&gpio 155 0>; /* gpio PT3 */ 25 power-gpios = <&gpio 155 0>; /* gpio PT3 */
26 support-8bit; 26 bus-width = <8>;
27}; 27};
diff --git a/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt b/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
index dbd4368ab8cc..8a53958c9a9f 100644
--- a/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
+++ b/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
@@ -15,7 +15,7 @@ Optional properties:
15ti,dual-volt: boolean, supports dual voltage cards 15ti,dual-volt: boolean, supports dual voltage cards
16<supply-name>-supply: phandle to the regulator device tree node 16<supply-name>-supply: phandle to the regulator device tree node
17"supply-name" examples are "vmmc", "vmmc_aux" etc 17"supply-name" examples are "vmmc", "vmmc_aux" etc
18ti,bus-width: Number of data lines, default assumed is 1 if the property is missing. 18bus-width: Number of data lines, default assumed is 1 if the property is missing.
19cd-gpios: GPIOs for card detection 19cd-gpios: GPIOs for card detection
20wp-gpios: GPIOs for write protection 20wp-gpios: GPIOs for write protection
21ti,non-removable: non-removable slot (like eMMC) 21ti,non-removable: non-removable slot (like eMMC)
@@ -27,7 +27,7 @@ Example:
27 reg = <0x4809c000 0x400>; 27 reg = <0x4809c000 0x400>;
28 ti,hwmods = "mmc1"; 28 ti,hwmods = "mmc1";
29 ti,dual-volt; 29 ti,dual-volt;
30 ti,bus-width = <4>; 30 bus-width = <4>;
31 vmmc-supply = <&vmmc>; /* phandle to regulator node */ 31 vmmc-supply = <&vmmc>; /* phandle to regulator node */
32 ti,non-removable; 32 ti,non-removable;
33 }; 33 };
diff --git a/Documentation/devicetree/bindings/mtd/gpmi-nand.txt b/Documentation/devicetree/bindings/mtd/gpmi-nand.txt
new file mode 100644
index 000000000000..1a5bbd346d22
--- /dev/null
+++ b/Documentation/devicetree/bindings/mtd/gpmi-nand.txt
@@ -0,0 +1,33 @@
1* Freescale General-Purpose Media Interface (GPMI)
2
3The GPMI nand controller provides an interface to control the
4NAND flash chips. We support only one NAND chip now.
5
6Required properties:
7 - compatible : should be "fsl,<chip>-gpmi-nand"
8 - reg : should contain registers location and length for gpmi and bch.
9 - reg-names: Should contain the reg names "gpmi-nand" and "bch"
10 - interrupts : The first is the DMA interrupt number for GPMI.
11 The second is the BCH interrupt number.
12 - interrupt-names : The interrupt names "gpmi-dma", "bch";
13 - fsl,gpmi-dma-channel : Should contain the dma channel it uses.
14
15The device tree may optionally contain sub-nodes describing partitions of the
16address space. See partition.txt for more detail.
17
18Examples:
19
20gpmi-nand@8000c000 {
21 compatible = "fsl,imx28-gpmi-nand";
22 #address-cells = <1>;
23 #size-cells = <1>;
24 reg = <0x8000c000 2000>, <0x8000a000 2000>;
25 reg-names = "gpmi-nand", "bch";
26 interrupts = <88>, <41>;
27 interrupt-names = "gpmi-dma", "bch";
28 fsl,gpmi-dma-channel = <4>;
29
30 partition@0 {
31 ...
32 };
33};
diff --git a/Documentation/devicetree/bindings/mtd/mxc-nand.txt b/Documentation/devicetree/bindings/mtd/mxc-nand.txt
new file mode 100644
index 000000000000..b5833d11c7be
--- /dev/null
+++ b/Documentation/devicetree/bindings/mtd/mxc-nand.txt
@@ -0,0 +1,19 @@
1* Freescale's mxc_nand
2
3Required properties:
4- compatible: "fsl,imxXX-nand"
5- reg: address range of the nfc block
6- interrupts: irq to be used
7- nand-bus-width: see nand.txt
8- nand-ecc-mode: see nand.txt
9- nand-on-flash-bbt: see nand.txt
10
11Example:
12
13 nand@d8000000 {
14 compatible = "fsl,imx27-nand";
15 reg = <0xd8000000 0x1000>;
16 interrupts = <29>;
17 nand-bus-width = <8>;
18 nand-ecc-mode = "hw";
19 };
diff --git a/Documentation/devicetree/bindings/mtd/orion-nand.txt b/Documentation/devicetree/bindings/mtd/orion-nand.txt
new file mode 100644
index 000000000000..b2356b7d2fa4
--- /dev/null
+++ b/Documentation/devicetree/bindings/mtd/orion-nand.txt
@@ -0,0 +1,50 @@
1NAND support for Marvell Orion SoC platforms
2
3Required properties:
4- compatible : "mrvl,orion-nand".
5- reg : Base physical address of the NAND and length of memory mapped
6 region
7
8Optional properties:
9- cle : Address line number connected to CLE. Default is 0
10- ale : Address line number connected to ALE. Default is 1
11- bank-width : Width in bytes of the device. Default is 1
12- chip-delay : Chip dependent delay for transferring data from array to read
13 registers in usecs
14
15The device tree may optionally contain sub-nodes describing partitions of the
16address space. See partition.txt for more detail.
17
18Example:
19
20nand@f4000000 {
21 #address-cells = <1>;
22 #size-cells = <1>;
23 cle = <0>;
24 ale = <1>;
25 bank-width = <1>;
26 chip-delay = <25>;
27 compatible = "mrvl,orion-nand";
28 reg = <0xf4000000 0x400>;
29
30 partition@0 {
31 label = "u-boot";
32 reg = <0x0000000 0x100000>;
33 read-only;
34 };
35
36 partition@100000 {
37 label = "uImage";
38 reg = <0x0100000 0x200000>;
39 };
40
41 partition@300000 {
42 label = "dtb";
43 reg = <0x0300000 0x100000>;
44 };
45
46 partition@400000 {
47 label = "root";
48 reg = <0x0400000 0x7d00000>;
49 };
50};
diff --git a/Documentation/devicetree/bindings/net/can/fsl-flexcan.txt b/Documentation/devicetree/bindings/net/can/fsl-flexcan.txt
index 1ad80d5865a9..f31b686d4556 100644
--- a/Documentation/devicetree/bindings/net/can/fsl-flexcan.txt
+++ b/Documentation/devicetree/bindings/net/can/fsl-flexcan.txt
@@ -1,4 +1,4 @@
1Flexcan CAN contoller on Freescale's ARM and PowerPC system-on-a-chip (SOC). 1Flexcan CAN controller on Freescale's ARM and PowerPC system-on-a-chip (SOC).
2 2
3Required properties: 3Required properties:
4 4
diff --git a/Documentation/devicetree/bindings/net/fsl-fec.txt b/Documentation/devicetree/bindings/net/fsl-fec.txt
index de439517dff0..4616fc28ee86 100644
--- a/Documentation/devicetree/bindings/net/fsl-fec.txt
+++ b/Documentation/devicetree/bindings/net/fsl-fec.txt
@@ -14,11 +14,11 @@ Optional properties:
14 14
15Example: 15Example:
16 16
17fec@83fec000 { 17ethernet@83fec000 {
18 compatible = "fsl,imx51-fec", "fsl,imx27-fec"; 18 compatible = "fsl,imx51-fec", "fsl,imx27-fec";
19 reg = <0x83fec000 0x4000>; 19 reg = <0x83fec000 0x4000>;
20 interrupts = <87>; 20 interrupts = <87>;
21 phy-mode = "mii"; 21 phy-mode = "mii";
22 phy-reset-gpios = <&gpio1 14 0>; /* GPIO2_14 */ 22 phy-reset-gpios = <&gpio2 14 0>; /* GPIO2_14 */
23 local-mac-address = [00 04 9F 01 1B B9]; 23 local-mac-address = [00 04 9F 01 1B B9];
24}; 24};
diff --git a/Documentation/devicetree/bindings/net/lpc-eth.txt b/Documentation/devicetree/bindings/net/lpc-eth.txt
new file mode 100644
index 000000000000..585021acd178
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/lpc-eth.txt
@@ -0,0 +1,24 @@
1* NXP LPC32xx SoC Ethernet Controller
2
3Required properties:
4- compatible: Should be "nxp,lpc-eth"
5- reg: Address and length of the register set for the device
6- interrupts: Should contain ethernet controller interrupt
7
8Optional properties:
9- phy-mode: String, operation mode of the PHY interface.
10 Supported values are: "mii", "rmii" (default)
11- use-iram: Use LPC32xx internal SRAM (IRAM) for DMA buffering
12- local-mac-address : 6 bytes, mac address
13
14Example:
15
16 mac: ethernet@31060000 {
17 compatible = "nxp,lpc-eth";
18 reg = <0x31060000 0x1000>;
19 interrupt-parent = <&mic>;
20 interrupts = <29 0>;
21
22 phy-mode = "rmii";
23 use-iram;
24 };
diff --git a/Documentation/devicetree/bindings/net/mdio-mux-gpio.txt b/Documentation/devicetree/bindings/net/mdio-mux-gpio.txt
new file mode 100644
index 000000000000..79384113c2b0
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/mdio-mux-gpio.txt
@@ -0,0 +1,127 @@
1Properties for an MDIO bus multiplexer/switch controlled by GPIO pins.
2
3This is a special case of a MDIO bus multiplexer. One or more GPIO
4lines are used to control which child bus is connected.
5
6Required properties in addition to the generic multiplexer properties:
7
8- compatible : mdio-mux-gpio.
9- gpios : GPIO specifiers for each GPIO line. One or more must be specified.
10
11
12Example :
13
14 /* The parent MDIO bus. */
15 smi1: mdio@1180000001900 {
16 compatible = "cavium,octeon-3860-mdio";
17 #address-cells = <1>;
18 #size-cells = <0>;
19 reg = <0x11800 0x00001900 0x0 0x40>;
20 };
21
22 /*
23 An NXP sn74cbtlv3253 dual 1-of-4 switch controlled by a
24 pair of GPIO lines. Child busses 2 and 3 populated with 4
25 PHYs each.
26 */
27 mdio-mux {
28 compatible = "mdio-mux-gpio";
29 gpios = <&gpio1 3 0>, <&gpio1 4 0>;
30 mdio-parent-bus = <&smi1>;
31 #address-cells = <1>;
32 #size-cells = <0>;
33
34 mdio@2 {
35 reg = <2>;
36 #address-cells = <1>;
37 #size-cells = <0>;
38
39 phy11: ethernet-phy@1 {
40 reg = <1>;
41 compatible = "marvell,88e1149r";
42 marvell,reg-init = <3 0x10 0 0x5777>,
43 <3 0x11 0 0x00aa>,
44 <3 0x12 0 0x4105>,
45 <3 0x13 0 0x0a60>;
46 interrupt-parent = <&gpio>;
47 interrupts = <10 8>; /* Pin 10, active low */
48 };
49 phy12: ethernet-phy@2 {
50 reg = <2>;
51 compatible = "marvell,88e1149r";
52 marvell,reg-init = <3 0x10 0 0x5777>,
53 <3 0x11 0 0x00aa>,
54 <3 0x12 0 0x4105>,
55 <3 0x13 0 0x0a60>;
56 interrupt-parent = <&gpio>;
57 interrupts = <10 8>; /* Pin 10, active low */
58 };
59 phy13: ethernet-phy@3 {
60 reg = <3>;
61 compatible = "marvell,88e1149r";
62 marvell,reg-init = <3 0x10 0 0x5777>,
63 <3 0x11 0 0x00aa>,
64 <3 0x12 0 0x4105>,
65 <3 0x13 0 0x0a60>;
66 interrupt-parent = <&gpio>;
67 interrupts = <10 8>; /* Pin 10, active low */
68 };
69 phy14: ethernet-phy@4 {
70 reg = <4>;
71 compatible = "marvell,88e1149r";
72 marvell,reg-init = <3 0x10 0 0x5777>,
73 <3 0x11 0 0x00aa>,
74 <3 0x12 0 0x4105>,
75 <3 0x13 0 0x0a60>;
76 interrupt-parent = <&gpio>;
77 interrupts = <10 8>; /* Pin 10, active low */
78 };
79 };
80
81 mdio@3 {
82 reg = <3>;
83 #address-cells = <1>;
84 #size-cells = <0>;
85
86 phy21: ethernet-phy@1 {
87 reg = <1>;
88 compatible = "marvell,88e1149r";
89 marvell,reg-init = <3 0x10 0 0x5777>,
90 <3 0x11 0 0x00aa>,
91 <3 0x12 0 0x4105>,
92 <3 0x13 0 0x0a60>;
93 interrupt-parent = <&gpio>;
94 interrupts = <12 8>; /* Pin 12, active low */
95 };
96 phy22: ethernet-phy@2 {
97 reg = <2>;
98 compatible = "marvell,88e1149r";
99 marvell,reg-init = <3 0x10 0 0x5777>,
100 <3 0x11 0 0x00aa>,
101 <3 0x12 0 0x4105>,
102 <3 0x13 0 0x0a60>;
103 interrupt-parent = <&gpio>;
104 interrupts = <12 8>; /* Pin 12, active low */
105 };
106 phy23: ethernet-phy@3 {
107 reg = <3>;
108 compatible = "marvell,88e1149r";
109 marvell,reg-init = <3 0x10 0 0x5777>,
110 <3 0x11 0 0x00aa>,
111 <3 0x12 0 0x4105>,
112 <3 0x13 0 0x0a60>;
113 interrupt-parent = <&gpio>;
114 interrupts = <12 8>; /* Pin 12, active low */
115 };
116 phy24: ethernet-phy@4 {
117 reg = <4>;
118 compatible = "marvell,88e1149r";
119 marvell,reg-init = <3 0x10 0 0x5777>,
120 <3 0x11 0 0x00aa>,
121 <3 0x12 0 0x4105>,
122 <3 0x13 0 0x0a60>;
123 interrupt-parent = <&gpio>;
124 interrupts = <12 8>; /* Pin 12, active low */
125 };
126 };
127 };
diff --git a/Documentation/devicetree/bindings/net/mdio-mux.txt b/Documentation/devicetree/bindings/net/mdio-mux.txt
new file mode 100644
index 000000000000..f65606f8d632
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/mdio-mux.txt
@@ -0,0 +1,136 @@
1Common MDIO bus multiplexer/switch properties.
2
3An MDIO bus multiplexer/switch will have several child busses that are
4numbered uniquely in a device dependent manner. The nodes for an MDIO
5bus multiplexer/switch will have one child node for each child bus.
6
7Required properties:
8- mdio-parent-bus : phandle to the parent MDIO bus.
9- #address-cells = <1>;
10- #size-cells = <0>;
11
12Optional properties:
13- Other properties specific to the multiplexer/switch hardware.
14
15Required properties for child nodes:
16- #address-cells = <1>;
17- #size-cells = <0>;
18- reg : The sub-bus number.
19
20
21Example :
22
23 /* The parent MDIO bus. */
24 smi1: mdio@1180000001900 {
25 compatible = "cavium,octeon-3860-mdio";
26 #address-cells = <1>;
27 #size-cells = <0>;
28 reg = <0x11800 0x00001900 0x0 0x40>;
29 };
30
31 /*
32 An NXP sn74cbtlv3253 dual 1-of-4 switch controlled by a
33 pair of GPIO lines. Child busses 2 and 3 populated with 4
34 PHYs each.
35 */
36 mdio-mux {
37 compatible = "mdio-mux-gpio";
38 gpios = <&gpio1 3 0>, <&gpio1 4 0>;
39 mdio-parent-bus = <&smi1>;
40 #address-cells = <1>;
41 #size-cells = <0>;
42
43 mdio@2 {
44 reg = <2>;
45 #address-cells = <1>;
46 #size-cells = <0>;
47
48 phy11: ethernet-phy@1 {
49 reg = <1>;
50 compatible = "marvell,88e1149r";
51 marvell,reg-init = <3 0x10 0 0x5777>,
52 <3 0x11 0 0x00aa>,
53 <3 0x12 0 0x4105>,
54 <3 0x13 0 0x0a60>;
55 interrupt-parent = <&gpio>;
56 interrupts = <10 8>; /* Pin 10, active low */
57 };
58 phy12: ethernet-phy@2 {
59 reg = <2>;
60 compatible = "marvell,88e1149r";
61 marvell,reg-init = <3 0x10 0 0x5777>,
62 <3 0x11 0 0x00aa>,
63 <3 0x12 0 0x4105>,
64 <3 0x13 0 0x0a60>;
65 interrupt-parent = <&gpio>;
66 interrupts = <10 8>; /* Pin 10, active low */
67 };
68 phy13: ethernet-phy@3 {
69 reg = <3>;
70 compatible = "marvell,88e1149r";
71 marvell,reg-init = <3 0x10 0 0x5777>,
72 <3 0x11 0 0x00aa>,
73 <3 0x12 0 0x4105>,
74 <3 0x13 0 0x0a60>;
75 interrupt-parent = <&gpio>;
76 interrupts = <10 8>; /* Pin 10, active low */
77 };
78 phy14: ethernet-phy@4 {
79 reg = <4>;
80 compatible = "marvell,88e1149r";
81 marvell,reg-init = <3 0x10 0 0x5777>,
82 <3 0x11 0 0x00aa>,
83 <3 0x12 0 0x4105>,
84 <3 0x13 0 0x0a60>;
85 interrupt-parent = <&gpio>;
86 interrupts = <10 8>; /* Pin 10, active low */
87 };
88 };
89
90 mdio@3 {
91 reg = <3>;
92 #address-cells = <1>;
93 #size-cells = <0>;
94
95 phy21: ethernet-phy@1 {
96 reg = <1>;
97 compatible = "marvell,88e1149r";
98 marvell,reg-init = <3 0x10 0 0x5777>,
99 <3 0x11 0 0x00aa>,
100 <3 0x12 0 0x4105>,
101 <3 0x13 0 0x0a60>;
102 interrupt-parent = <&gpio>;
103 interrupts = <12 8>; /* Pin 12, active low */
104 };
105 phy22: ethernet-phy@2 {
106 reg = <2>;
107 compatible = "marvell,88e1149r";
108 marvell,reg-init = <3 0x10 0 0x5777>,
109 <3 0x11 0 0x00aa>,
110 <3 0x12 0 0x4105>,
111 <3 0x13 0 0x0a60>;
112 interrupt-parent = <&gpio>;
113 interrupts = <12 8>; /* Pin 12, active low */
114 };
115 phy23: ethernet-phy@3 {
116 reg = <3>;
117 compatible = "marvell,88e1149r";
118 marvell,reg-init = <3 0x10 0 0x5777>,
119 <3 0x11 0 0x00aa>,
120 <3 0x12 0 0x4105>,
121 <3 0x13 0 0x0a60>;
122 interrupt-parent = <&gpio>;
123 interrupts = <12 8>; /* Pin 12, active low */
124 };
125 phy24: ethernet-phy@4 {
126 reg = <4>;
127 compatible = "marvell,88e1149r";
128 marvell,reg-init = <3 0x10 0 0x5777>,
129 <3 0x11 0 0x00aa>,
130 <3 0x12 0 0x4105>,
131 <3 0x13 0 0x0a60>;
132 interrupt-parent = <&gpio>;
133 interrupts = <12 8>; /* Pin 12, active low */
134 };
135 };
136 };
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt
new file mode 100644
index 000000000000..ab19e6bc7d3b
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt
@@ -0,0 +1,95 @@
1* Freescale IOMUX Controller (IOMUXC) for i.MX
2
3The IOMUX Controller (IOMUXC), together with the IOMUX, enables the IC
4to share one PAD to several functional blocks. The sharing is done by
5multiplexing the PAD input/output signals. For each PAD there are up to
68 muxing options (called ALT modes). Since different modules require
7different PAD settings (like pull up, keeper, etc) the IOMUXC controls
8also the PAD settings parameters.
9
10Please refer to pinctrl-bindings.txt in this directory for details of the
11common pinctrl bindings used by client devices, including the meaning of the
12phrase "pin configuration node".
13
14Freescale IMX pin configuration node is a node of a group of pins which can be
15used for a specific device or function. This node represents both mux and config
16of the pins in that group. The 'mux' selects the function mode(also named mux
17mode) this pin can work on and the 'config' configures various pad settings
18such as pull-up, open drain, drive strength, etc.
19
20Required properties for iomux controller:
21- compatible: "fsl,<soc>-iomuxc"
22 Please refer to each fsl,<soc>-pinctrl.txt binding doc for supported SoCs.
23
24Required properties for pin configuration node:
25- fsl,pins: two integers array, represents a group of pins mux and config
26 setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a
27 pin working on a specific function, CONFIG is the pad setting value like
28 pull-up on this pin. Please refer to fsl,<soc>-pinctrl.txt for the valid
29 pins and functions of each SoC.
30
31Bits used for CONFIG:
32NO_PAD_CTL(1 << 31): indicate this pin does not need config.
33
34SION(1 << 30): Software Input On Field.
35Force the selected mux mode input path no matter of MUX_MODE functionality.
36By default the input path is determined by functionality of the selected
37mux mode (regular).
38
39Other bits are used for PAD setting.
40Please refer to each fsl,<soc>-pinctrl,txt binding doc for SoC specific part
41of bits definitions.
42
43NOTE:
44Some requirements for using fsl,imx-pinctrl binding:
451. We have pin function node defined under iomux controller node to represent
46 what pinmux functions this SoC supports.
472. The pin configuration node intends to work on a specific function should
48 to be defined under that specific function node.
49 The function node's name should represent well about what function
50 this group of pins in this pin configuration node are working on.
513. The driver can use the function node's name and pin configuration node's
52 name describe the pin function and group hierarchy.
53 For example, Linux IMX pinctrl driver takes the function node's name
54 as the function name and pin configuration node's name as group name to
55 create the map table.
564. Each pin configuration node should have a phandle, devices can set pins
57 configurations by referring to the phandle of that pin configuration node.
58
59Examples:
60usdhc@0219c000 { /* uSDHC4 */
61 fsl,card-wired;
62 vmmc-supply = <&reg_3p3v>;
63 status = "okay";
64 pinctrl-names = "default";
65 pinctrl-0 = <&pinctrl_usdhc4_1>;
66};
67
68iomuxc@020e0000 {
69 compatible = "fsl,imx6q-iomuxc";
70 reg = <0x020e0000 0x4000>;
71
72 /* shared pinctrl settings */
73 usdhc4 {
74 pinctrl_usdhc4_1: usdhc4grp-1 {
75 fsl,pins = <1386 0x17059 /* MX6Q_PAD_SD4_CMD__USDHC4_CMD */
76 1392 0x10059 /* MX6Q_PAD_SD4_CLK__USDHC4_CLK */
77 1462 0x17059 /* MX6Q_PAD_SD4_DAT0__USDHC4_DAT0 */
78 1470 0x17059 /* MX6Q_PAD_SD4_DAT1__USDHC4_DAT1 */
79 1478 0x17059 /* MX6Q_PAD_SD4_DAT2__USDHC4_DAT2 */
80 1486 0x17059 /* MX6Q_PAD_SD4_DAT3__USDHC4_DAT3 */
81 1493 0x17059 /* MX6Q_PAD_SD4_DAT4__USDHC4_DAT4 */
82 1501 0x17059 /* MX6Q_PAD_SD4_DAT5__USDHC4_DAT5 */
83 1509 0x17059 /* MX6Q_PAD_SD4_DAT6__USDHC4_DAT6 */
84 1517 0x17059>; /* MX6Q_PAD_SD4_DAT7__USDHC4_DAT7 */
85 };
86 };
87 ....
88};
89Refer to the IOMUXC controller chapter in imx6q datasheet,
900x17059 means enable hysteresis, 47KOhm Pull Up, 50Mhz speed,
9180Ohm driver strength and Fast Slew Rate.
92User should refer to each SoC spec to set the correct value.
93
94TODO: when dtc macro support is available, we can change above raw data
95to dt macro which can get better readability in dts file.
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx51-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx51-pinctrl.txt
new file mode 100644
index 000000000000..b96fa4c31745
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx51-pinctrl.txt
@@ -0,0 +1,787 @@
1* Freescale IMX51 IOMUX Controller
2
3Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
4and usage.
5
6Required properties:
7- compatible: "fsl,imx51-iomuxc"
8- fsl,pins: two integers array, represents a group of pins mux and config
9 setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a
10 pin working on a specific function, CONFIG is the pad setting value like
11 pull-up for this pin. Please refer to imx51 datasheet for the valid pad
12 config settings.
13
14CONFIG bits definition:
15PAD_CTL_HVE (1 << 13)
16PAD_CTL_HYS (1 << 8)
17PAD_CTL_PKE (1 << 7)
18PAD_CTL_PUE (1 << 6)
19PAD_CTL_PUS_100K_DOWN (0 << 4)
20PAD_CTL_PUS_47K_UP (1 << 4)
21PAD_CTL_PUS_100K_UP (2 << 4)
22PAD_CTL_PUS_22K_UP (3 << 4)
23PAD_CTL_ODE (1 << 3)
24PAD_CTL_DSE_LOW (0 << 1)
25PAD_CTL_DSE_MED (1 << 1)
26PAD_CTL_DSE_HIGH (2 << 1)
27PAD_CTL_DSE_MAX (3 << 1)
28PAD_CTL_SRE_FAST (1 << 0)
29PAD_CTL_SRE_SLOW (0 << 0)
30
31See below for available PIN_FUNC_ID for imx51:
32MX51_PAD_EIM_D16__AUD4_RXFS 0
33MX51_PAD_EIM_D16__AUD5_TXD 1
34MX51_PAD_EIM_D16__EIM_D16 2
35MX51_PAD_EIM_D16__GPIO2_0 3
36MX51_PAD_EIM_D16__I2C1_SDA 4
37MX51_PAD_EIM_D16__UART2_CTS 5
38MX51_PAD_EIM_D16__USBH2_DATA0 6
39MX51_PAD_EIM_D17__AUD5_RXD 7
40MX51_PAD_EIM_D17__EIM_D17 8
41MX51_PAD_EIM_D17__GPIO2_1 9
42MX51_PAD_EIM_D17__UART2_RXD 10
43MX51_PAD_EIM_D17__UART3_CTS 11
44MX51_PAD_EIM_D17__USBH2_DATA1 12
45MX51_PAD_EIM_D18__AUD5_TXC 13
46MX51_PAD_EIM_D18__EIM_D18 14
47MX51_PAD_EIM_D18__GPIO2_2 15
48MX51_PAD_EIM_D18__UART2_TXD 16
49MX51_PAD_EIM_D18__UART3_RTS 17
50MX51_PAD_EIM_D18__USBH2_DATA2 18
51MX51_PAD_EIM_D19__AUD4_RXC 19
52MX51_PAD_EIM_D19__AUD5_TXFS 20
53MX51_PAD_EIM_D19__EIM_D19 21
54MX51_PAD_EIM_D19__GPIO2_3 22
55MX51_PAD_EIM_D19__I2C1_SCL 23
56MX51_PAD_EIM_D19__UART2_RTS 24
57MX51_PAD_EIM_D19__USBH2_DATA3 25
58MX51_PAD_EIM_D20__AUD4_TXD 26
59MX51_PAD_EIM_D20__EIM_D20 27
60MX51_PAD_EIM_D20__GPIO2_4 28
61MX51_PAD_EIM_D20__SRTC_ALARM_DEB 29
62MX51_PAD_EIM_D20__USBH2_DATA4 30
63MX51_PAD_EIM_D21__AUD4_RXD 31
64MX51_PAD_EIM_D21__EIM_D21 32
65MX51_PAD_EIM_D21__GPIO2_5 33
66MX51_PAD_EIM_D21__SRTC_ALARM_DEB 34
67MX51_PAD_EIM_D21__USBH2_DATA5 35
68MX51_PAD_EIM_D22__AUD4_TXC 36
69MX51_PAD_EIM_D22__EIM_D22 37
70MX51_PAD_EIM_D22__GPIO2_6 38
71MX51_PAD_EIM_D22__USBH2_DATA6 39
72MX51_PAD_EIM_D23__AUD4_TXFS 40
73MX51_PAD_EIM_D23__EIM_D23 41
74MX51_PAD_EIM_D23__GPIO2_7 42
75MX51_PAD_EIM_D23__SPDIF_OUT1 43
76MX51_PAD_EIM_D23__USBH2_DATA7 44
77MX51_PAD_EIM_D24__AUD6_RXFS 45
78MX51_PAD_EIM_D24__EIM_D24 46
79MX51_PAD_EIM_D24__GPIO2_8 47
80MX51_PAD_EIM_D24__I2C2_SDA 48
81MX51_PAD_EIM_D24__UART3_CTS 49
82MX51_PAD_EIM_D24__USBOTG_DATA0 50
83MX51_PAD_EIM_D25__EIM_D25 51
84MX51_PAD_EIM_D25__KEY_COL6 52
85MX51_PAD_EIM_D25__UART2_CTS 53
86MX51_PAD_EIM_D25__UART3_RXD 54
87MX51_PAD_EIM_D25__USBOTG_DATA1 55
88MX51_PAD_EIM_D26__EIM_D26 56
89MX51_PAD_EIM_D26__KEY_COL7 57
90MX51_PAD_EIM_D26__UART2_RTS 58
91MX51_PAD_EIM_D26__UART3_TXD 59
92MX51_PAD_EIM_D26__USBOTG_DATA2 60
93MX51_PAD_EIM_D27__AUD6_RXC 61
94MX51_PAD_EIM_D27__EIM_D27 62
95MX51_PAD_EIM_D27__GPIO2_9 63
96MX51_PAD_EIM_D27__I2C2_SCL 64
97MX51_PAD_EIM_D27__UART3_RTS 65
98MX51_PAD_EIM_D27__USBOTG_DATA3 66
99MX51_PAD_EIM_D28__AUD6_TXD 67
100MX51_PAD_EIM_D28__EIM_D28 68
101MX51_PAD_EIM_D28__KEY_ROW4 69
102MX51_PAD_EIM_D28__USBOTG_DATA4 70
103MX51_PAD_EIM_D29__AUD6_RXD 71
104MX51_PAD_EIM_D29__EIM_D29 72
105MX51_PAD_EIM_D29__KEY_ROW5 73
106MX51_PAD_EIM_D29__USBOTG_DATA5 74
107MX51_PAD_EIM_D30__AUD6_TXC 75
108MX51_PAD_EIM_D30__EIM_D30 76
109MX51_PAD_EIM_D30__KEY_ROW6 77
110MX51_PAD_EIM_D30__USBOTG_DATA6 78
111MX51_PAD_EIM_D31__AUD6_TXFS 79
112MX51_PAD_EIM_D31__EIM_D31 80
113MX51_PAD_EIM_D31__KEY_ROW7 81
114MX51_PAD_EIM_D31__USBOTG_DATA7 82
115MX51_PAD_EIM_A16__EIM_A16 83
116MX51_PAD_EIM_A16__GPIO2_10 84
117MX51_PAD_EIM_A16__OSC_FREQ_SEL0 85
118MX51_PAD_EIM_A17__EIM_A17 86
119MX51_PAD_EIM_A17__GPIO2_11 87
120MX51_PAD_EIM_A17__OSC_FREQ_SEL1 88
121MX51_PAD_EIM_A18__BOOT_LPB0 89
122MX51_PAD_EIM_A18__EIM_A18 90
123MX51_PAD_EIM_A18__GPIO2_12 91
124MX51_PAD_EIM_A19__BOOT_LPB1 92
125MX51_PAD_EIM_A19__EIM_A19 93
126MX51_PAD_EIM_A19__GPIO2_13 94
127MX51_PAD_EIM_A20__BOOT_UART_SRC0 95
128MX51_PAD_EIM_A20__EIM_A20 96
129MX51_PAD_EIM_A20__GPIO2_14 97
130MX51_PAD_EIM_A21__BOOT_UART_SRC1 98
131MX51_PAD_EIM_A21__EIM_A21 99
132MX51_PAD_EIM_A21__GPIO2_15 100
133MX51_PAD_EIM_A22__EIM_A22 101
134MX51_PAD_EIM_A22__GPIO2_16 102
135MX51_PAD_EIM_A23__BOOT_HPN_EN 103
136MX51_PAD_EIM_A23__EIM_A23 104
137MX51_PAD_EIM_A23__GPIO2_17 105
138MX51_PAD_EIM_A24__EIM_A24 106
139MX51_PAD_EIM_A24__GPIO2_18 107
140MX51_PAD_EIM_A24__USBH2_CLK 108
141MX51_PAD_EIM_A25__DISP1_PIN4 109
142MX51_PAD_EIM_A25__EIM_A25 110
143MX51_PAD_EIM_A25__GPIO2_19 111
144MX51_PAD_EIM_A25__USBH2_DIR 112
145MX51_PAD_EIM_A26__CSI1_DATA_EN 113
146MX51_PAD_EIM_A26__DISP2_EXT_CLK 114
147MX51_PAD_EIM_A26__EIM_A26 115
148MX51_PAD_EIM_A26__GPIO2_20 116
149MX51_PAD_EIM_A26__USBH2_STP 117
150MX51_PAD_EIM_A27__CSI2_DATA_EN 118
151MX51_PAD_EIM_A27__DISP1_PIN1 119
152MX51_PAD_EIM_A27__EIM_A27 120
153MX51_PAD_EIM_A27__GPIO2_21 121
154MX51_PAD_EIM_A27__USBH2_NXT 122
155MX51_PAD_EIM_EB0__EIM_EB0 123
156MX51_PAD_EIM_EB1__EIM_EB1 124
157MX51_PAD_EIM_EB2__AUD5_RXFS 125
158MX51_PAD_EIM_EB2__CSI1_D2 126
159MX51_PAD_EIM_EB2__EIM_EB2 127
160MX51_PAD_EIM_EB2__FEC_MDIO 128
161MX51_PAD_EIM_EB2__GPIO2_22 129
162MX51_PAD_EIM_EB2__GPT_CMPOUT1 130
163MX51_PAD_EIM_EB3__AUD5_RXC 131
164MX51_PAD_EIM_EB3__CSI1_D3 132
165MX51_PAD_EIM_EB3__EIM_EB3 133
166MX51_PAD_EIM_EB3__FEC_RDATA1 134
167MX51_PAD_EIM_EB3__GPIO2_23 135
168MX51_PAD_EIM_EB3__GPT_CMPOUT2 136
169MX51_PAD_EIM_OE__EIM_OE 137
170MX51_PAD_EIM_OE__GPIO2_24 138
171MX51_PAD_EIM_CS0__EIM_CS0 139
172MX51_PAD_EIM_CS0__GPIO2_25 140
173MX51_PAD_EIM_CS1__EIM_CS1 141
174MX51_PAD_EIM_CS1__GPIO2_26 142
175MX51_PAD_EIM_CS2__AUD5_TXD 143
176MX51_PAD_EIM_CS2__CSI1_D4 144
177MX51_PAD_EIM_CS2__EIM_CS2 145
178MX51_PAD_EIM_CS2__FEC_RDATA2 146
179MX51_PAD_EIM_CS2__GPIO2_27 147
180MX51_PAD_EIM_CS2__USBOTG_STP 148
181MX51_PAD_EIM_CS3__AUD5_RXD 149
182MX51_PAD_EIM_CS3__CSI1_D5 150
183MX51_PAD_EIM_CS3__EIM_CS3 151
184MX51_PAD_EIM_CS3__FEC_RDATA3 152
185MX51_PAD_EIM_CS3__GPIO2_28 153
186MX51_PAD_EIM_CS3__USBOTG_NXT 154
187MX51_PAD_EIM_CS4__AUD5_TXC 155
188MX51_PAD_EIM_CS4__CSI1_D6 156
189MX51_PAD_EIM_CS4__EIM_CS4 157
190MX51_PAD_EIM_CS4__FEC_RX_ER 158
191MX51_PAD_EIM_CS4__GPIO2_29 159
192MX51_PAD_EIM_CS4__USBOTG_CLK 160
193MX51_PAD_EIM_CS5__AUD5_TXFS 161
194MX51_PAD_EIM_CS5__CSI1_D7 162
195MX51_PAD_EIM_CS5__DISP1_EXT_CLK 163
196MX51_PAD_EIM_CS5__EIM_CS5 164
197MX51_PAD_EIM_CS5__FEC_CRS 165
198MX51_PAD_EIM_CS5__GPIO2_30 166
199MX51_PAD_EIM_CS5__USBOTG_DIR 167
200MX51_PAD_EIM_DTACK__EIM_DTACK 168
201MX51_PAD_EIM_DTACK__GPIO2_31 169
202MX51_PAD_EIM_LBA__EIM_LBA 170
203MX51_PAD_EIM_LBA__GPIO3_1 171
204MX51_PAD_EIM_CRE__EIM_CRE 172
205MX51_PAD_EIM_CRE__GPIO3_2 173
206MX51_PAD_DRAM_CS1__DRAM_CS1 174
207MX51_PAD_NANDF_WE_B__GPIO3_3 175
208MX51_PAD_NANDF_WE_B__NANDF_WE_B 176
209MX51_PAD_NANDF_WE_B__PATA_DIOW 177
210MX51_PAD_NANDF_WE_B__SD3_DATA0 178
211MX51_PAD_NANDF_RE_B__GPIO3_4 179
212MX51_PAD_NANDF_RE_B__NANDF_RE_B 180
213MX51_PAD_NANDF_RE_B__PATA_DIOR 181
214MX51_PAD_NANDF_RE_B__SD3_DATA1 182
215MX51_PAD_NANDF_ALE__GPIO3_5 183
216MX51_PAD_NANDF_ALE__NANDF_ALE 184
217MX51_PAD_NANDF_ALE__PATA_BUFFER_EN 185
218MX51_PAD_NANDF_CLE__GPIO3_6 186
219MX51_PAD_NANDF_CLE__NANDF_CLE 187
220MX51_PAD_NANDF_CLE__PATA_RESET_B 188
221MX51_PAD_NANDF_WP_B__GPIO3_7 189
222MX51_PAD_NANDF_WP_B__NANDF_WP_B 190
223MX51_PAD_NANDF_WP_B__PATA_DMACK 191
224MX51_PAD_NANDF_WP_B__SD3_DATA2 192
225MX51_PAD_NANDF_RB0__ECSPI2_SS1 193
226MX51_PAD_NANDF_RB0__GPIO3_8 194
227MX51_PAD_NANDF_RB0__NANDF_RB0 195
228MX51_PAD_NANDF_RB0__PATA_DMARQ 196
229MX51_PAD_NANDF_RB0__SD3_DATA3 197
230MX51_PAD_NANDF_RB1__CSPI_MOSI 198
231MX51_PAD_NANDF_RB1__ECSPI2_RDY 199
232MX51_PAD_NANDF_RB1__GPIO3_9 200
233MX51_PAD_NANDF_RB1__NANDF_RB1 201
234MX51_PAD_NANDF_RB1__PATA_IORDY 202
235MX51_PAD_NANDF_RB1__SD4_CMD 203
236MX51_PAD_NANDF_RB2__DISP2_WAIT 204
237MX51_PAD_NANDF_RB2__ECSPI2_SCLK 205
238MX51_PAD_NANDF_RB2__FEC_COL 206
239MX51_PAD_NANDF_RB2__GPIO3_10 207
240MX51_PAD_NANDF_RB2__NANDF_RB2 208
241MX51_PAD_NANDF_RB2__USBH3_H3_DP 209
242MX51_PAD_NANDF_RB2__USBH3_NXT 210
243MX51_PAD_NANDF_RB3__DISP1_WAIT 211
244MX51_PAD_NANDF_RB3__ECSPI2_MISO 212
245MX51_PAD_NANDF_RB3__FEC_RX_CLK 213
246MX51_PAD_NANDF_RB3__GPIO3_11 214
247MX51_PAD_NANDF_RB3__NANDF_RB3 215
248MX51_PAD_NANDF_RB3__USBH3_CLK 216
249MX51_PAD_NANDF_RB3__USBH3_H3_DM 217
250MX51_PAD_GPIO_NAND__GPIO_NAND 218
251MX51_PAD_GPIO_NAND__PATA_INTRQ 219
252MX51_PAD_NANDF_CS0__GPIO3_16 220
253MX51_PAD_NANDF_CS0__NANDF_CS0 221
254MX51_PAD_NANDF_CS1__GPIO3_17 222
255MX51_PAD_NANDF_CS1__NANDF_CS1 223
256MX51_PAD_NANDF_CS2__CSPI_SCLK 224
257MX51_PAD_NANDF_CS2__FEC_TX_ER 225
258MX51_PAD_NANDF_CS2__GPIO3_18 226
259MX51_PAD_NANDF_CS2__NANDF_CS2 227
260MX51_PAD_NANDF_CS2__PATA_CS_0 228
261MX51_PAD_NANDF_CS2__SD4_CLK 229
262MX51_PAD_NANDF_CS2__USBH3_H1_DP 230
263MX51_PAD_NANDF_CS3__FEC_MDC 231
264MX51_PAD_NANDF_CS3__GPIO3_19 232
265MX51_PAD_NANDF_CS3__NANDF_CS3 233
266MX51_PAD_NANDF_CS3__PATA_CS_1 234
267MX51_PAD_NANDF_CS3__SD4_DAT0 235
268MX51_PAD_NANDF_CS3__USBH3_H1_DM 236
269MX51_PAD_NANDF_CS4__FEC_TDATA1 237
270MX51_PAD_NANDF_CS4__GPIO3_20 238
271MX51_PAD_NANDF_CS4__NANDF_CS4 239
272MX51_PAD_NANDF_CS4__PATA_DA_0 240
273MX51_PAD_NANDF_CS4__SD4_DAT1 241
274MX51_PAD_NANDF_CS4__USBH3_STP 242
275MX51_PAD_NANDF_CS5__FEC_TDATA2 243
276MX51_PAD_NANDF_CS5__GPIO3_21 244
277MX51_PAD_NANDF_CS5__NANDF_CS5 245
278MX51_PAD_NANDF_CS5__PATA_DA_1 246
279MX51_PAD_NANDF_CS5__SD4_DAT2 247
280MX51_PAD_NANDF_CS5__USBH3_DIR 248
281MX51_PAD_NANDF_CS6__CSPI_SS3 249
282MX51_PAD_NANDF_CS6__FEC_TDATA3 250
283MX51_PAD_NANDF_CS6__GPIO3_22 251
284MX51_PAD_NANDF_CS6__NANDF_CS6 252
285MX51_PAD_NANDF_CS6__PATA_DA_2 253
286MX51_PAD_NANDF_CS6__SD4_DAT3 254
287MX51_PAD_NANDF_CS7__FEC_TX_EN 255
288MX51_PAD_NANDF_CS7__GPIO3_23 256
289MX51_PAD_NANDF_CS7__NANDF_CS7 257
290MX51_PAD_NANDF_CS7__SD3_CLK 258
291MX51_PAD_NANDF_RDY_INT__ECSPI2_SS0 259
292MX51_PAD_NANDF_RDY_INT__FEC_TX_CLK 260
293MX51_PAD_NANDF_RDY_INT__GPIO3_24 261
294MX51_PAD_NANDF_RDY_INT__NANDF_RDY_INT 262
295MX51_PAD_NANDF_RDY_INT__SD3_CMD 263
296MX51_PAD_NANDF_D15__ECSPI2_MOSI 264
297MX51_PAD_NANDF_D15__GPIO3_25 265
298MX51_PAD_NANDF_D15__NANDF_D15 266
299MX51_PAD_NANDF_D15__PATA_DATA15 267
300MX51_PAD_NANDF_D15__SD3_DAT7 268
301MX51_PAD_NANDF_D14__ECSPI2_SS3 269
302MX51_PAD_NANDF_D14__GPIO3_26 270
303MX51_PAD_NANDF_D14__NANDF_D14 271
304MX51_PAD_NANDF_D14__PATA_DATA14 272
305MX51_PAD_NANDF_D14__SD3_DAT6 273
306MX51_PAD_NANDF_D13__ECSPI2_SS2 274
307MX51_PAD_NANDF_D13__GPIO3_27 275
308MX51_PAD_NANDF_D13__NANDF_D13 276
309MX51_PAD_NANDF_D13__PATA_DATA13 277
310MX51_PAD_NANDF_D13__SD3_DAT5 278
311MX51_PAD_NANDF_D12__ECSPI2_SS1 279
312MX51_PAD_NANDF_D12__GPIO3_28 280
313MX51_PAD_NANDF_D12__NANDF_D12 281
314MX51_PAD_NANDF_D12__PATA_DATA12 282
315MX51_PAD_NANDF_D12__SD3_DAT4 283
316MX51_PAD_NANDF_D11__FEC_RX_DV 284
317MX51_PAD_NANDF_D11__GPIO3_29 285
318MX51_PAD_NANDF_D11__NANDF_D11 286
319MX51_PAD_NANDF_D11__PATA_DATA11 287
320MX51_PAD_NANDF_D11__SD3_DATA3 288
321MX51_PAD_NANDF_D10__GPIO3_30 289
322MX51_PAD_NANDF_D10__NANDF_D10 290
323MX51_PAD_NANDF_D10__PATA_DATA10 291
324MX51_PAD_NANDF_D10__SD3_DATA2 292
325MX51_PAD_NANDF_D9__FEC_RDATA0 293
326MX51_PAD_NANDF_D9__GPIO3_31 294
327MX51_PAD_NANDF_D9__NANDF_D9 295
328MX51_PAD_NANDF_D9__PATA_DATA9 296
329MX51_PAD_NANDF_D9__SD3_DATA1 297
330MX51_PAD_NANDF_D8__FEC_TDATA0 298
331MX51_PAD_NANDF_D8__GPIO4_0 299
332MX51_PAD_NANDF_D8__NANDF_D8 300
333MX51_PAD_NANDF_D8__PATA_DATA8 301
334MX51_PAD_NANDF_D8__SD3_DATA0 302
335MX51_PAD_NANDF_D7__GPIO4_1 303
336MX51_PAD_NANDF_D7__NANDF_D7 304
337MX51_PAD_NANDF_D7__PATA_DATA7 305
338MX51_PAD_NANDF_D7__USBH3_DATA0 306
339MX51_PAD_NANDF_D6__GPIO4_2 307
340MX51_PAD_NANDF_D6__NANDF_D6 308
341MX51_PAD_NANDF_D6__PATA_DATA6 309
342MX51_PAD_NANDF_D6__SD4_LCTL 310
343MX51_PAD_NANDF_D6__USBH3_DATA1 311
344MX51_PAD_NANDF_D5__GPIO4_3 312
345MX51_PAD_NANDF_D5__NANDF_D5 313
346MX51_PAD_NANDF_D5__PATA_DATA5 314
347MX51_PAD_NANDF_D5__SD4_WP 315
348MX51_PAD_NANDF_D5__USBH3_DATA2 316
349MX51_PAD_NANDF_D4__GPIO4_4 317
350MX51_PAD_NANDF_D4__NANDF_D4 318
351MX51_PAD_NANDF_D4__PATA_DATA4 319
352MX51_PAD_NANDF_D4__SD4_CD 320
353MX51_PAD_NANDF_D4__USBH3_DATA3 321
354MX51_PAD_NANDF_D3__GPIO4_5 322
355MX51_PAD_NANDF_D3__NANDF_D3 323
356MX51_PAD_NANDF_D3__PATA_DATA3 324
357MX51_PAD_NANDF_D3__SD4_DAT4 325
358MX51_PAD_NANDF_D3__USBH3_DATA4 326
359MX51_PAD_NANDF_D2__GPIO4_6 327
360MX51_PAD_NANDF_D2__NANDF_D2 328
361MX51_PAD_NANDF_D2__PATA_DATA2 329
362MX51_PAD_NANDF_D2__SD4_DAT5 330
363MX51_PAD_NANDF_D2__USBH3_DATA5 331
364MX51_PAD_NANDF_D1__GPIO4_7 332
365MX51_PAD_NANDF_D1__NANDF_D1 333
366MX51_PAD_NANDF_D1__PATA_DATA1 334
367MX51_PAD_NANDF_D1__SD4_DAT6 335
368MX51_PAD_NANDF_D1__USBH3_DATA6 336
369MX51_PAD_NANDF_D0__GPIO4_8 337
370MX51_PAD_NANDF_D0__NANDF_D0 338
371MX51_PAD_NANDF_D0__PATA_DATA0 339
372MX51_PAD_NANDF_D0__SD4_DAT7 340
373MX51_PAD_NANDF_D0__USBH3_DATA7 341
374MX51_PAD_CSI1_D8__CSI1_D8 342
375MX51_PAD_CSI1_D8__GPIO3_12 343
376MX51_PAD_CSI1_D9__CSI1_D9 344
377MX51_PAD_CSI1_D9__GPIO3_13 345
378MX51_PAD_CSI1_D10__CSI1_D10 346
379MX51_PAD_CSI1_D11__CSI1_D11 347
380MX51_PAD_CSI1_D12__CSI1_D12 348
381MX51_PAD_CSI1_D13__CSI1_D13 349
382MX51_PAD_CSI1_D14__CSI1_D14 350
383MX51_PAD_CSI1_D15__CSI1_D15 351
384MX51_PAD_CSI1_D16__CSI1_D16 352
385MX51_PAD_CSI1_D17__CSI1_D17 353
386MX51_PAD_CSI1_D18__CSI1_D18 354
387MX51_PAD_CSI1_D19__CSI1_D19 355
388MX51_PAD_CSI1_VSYNC__CSI1_VSYNC 356
389MX51_PAD_CSI1_VSYNC__GPIO3_14 357
390MX51_PAD_CSI1_HSYNC__CSI1_HSYNC 358
391MX51_PAD_CSI1_HSYNC__GPIO3_15 359
392MX51_PAD_CSI1_PIXCLK__CSI1_PIXCLK 360
393MX51_PAD_CSI1_MCLK__CSI1_MCLK 361
394MX51_PAD_CSI2_D12__CSI2_D12 362
395MX51_PAD_CSI2_D12__GPIO4_9 363
396MX51_PAD_CSI2_D13__CSI2_D13 364
397MX51_PAD_CSI2_D13__GPIO4_10 365
398MX51_PAD_CSI2_D14__CSI2_D14 366
399MX51_PAD_CSI2_D15__CSI2_D15 367
400MX51_PAD_CSI2_D16__CSI2_D16 368
401MX51_PAD_CSI2_D17__CSI2_D17 369
402MX51_PAD_CSI2_D18__CSI2_D18 370
403MX51_PAD_CSI2_D18__GPIO4_11 371
404MX51_PAD_CSI2_D19__CSI2_D19 372
405MX51_PAD_CSI2_D19__GPIO4_12 373
406MX51_PAD_CSI2_VSYNC__CSI2_VSYNC 374
407MX51_PAD_CSI2_VSYNC__GPIO4_13 375
408MX51_PAD_CSI2_HSYNC__CSI2_HSYNC 376
409MX51_PAD_CSI2_HSYNC__GPIO4_14 377
410MX51_PAD_CSI2_PIXCLK__CSI2_PIXCLK 378
411MX51_PAD_CSI2_PIXCLK__GPIO4_15 379
412MX51_PAD_I2C1_CLK__GPIO4_16 380
413MX51_PAD_I2C1_CLK__I2C1_CLK 381
414MX51_PAD_I2C1_DAT__GPIO4_17 382
415MX51_PAD_I2C1_DAT__I2C1_DAT 383
416MX51_PAD_AUD3_BB_TXD__AUD3_TXD 384
417MX51_PAD_AUD3_BB_TXD__GPIO4_18 385
418MX51_PAD_AUD3_BB_RXD__AUD3_RXD 386
419MX51_PAD_AUD3_BB_RXD__GPIO4_19 387
420MX51_PAD_AUD3_BB_RXD__UART3_RXD 388
421MX51_PAD_AUD3_BB_CK__AUD3_TXC 389
422MX51_PAD_AUD3_BB_CK__GPIO4_20 390
423MX51_PAD_AUD3_BB_FS__AUD3_TXFS 391
424MX51_PAD_AUD3_BB_FS__GPIO4_21 392
425MX51_PAD_AUD3_BB_FS__UART3_TXD 393
426MX51_PAD_CSPI1_MOSI__ECSPI1_MOSI 394
427MX51_PAD_CSPI1_MOSI__GPIO4_22 395
428MX51_PAD_CSPI1_MOSI__I2C1_SDA 396
429MX51_PAD_CSPI1_MISO__AUD4_RXD 397
430MX51_PAD_CSPI1_MISO__ECSPI1_MISO 398
431MX51_PAD_CSPI1_MISO__GPIO4_23 399
432MX51_PAD_CSPI1_SS0__AUD4_TXC 400
433MX51_PAD_CSPI1_SS0__ECSPI1_SS0 401
434MX51_PAD_CSPI1_SS0__GPIO4_24 402
435MX51_PAD_CSPI1_SS1__AUD4_TXD 403
436MX51_PAD_CSPI1_SS1__ECSPI1_SS1 404
437MX51_PAD_CSPI1_SS1__GPIO4_25 405
438MX51_PAD_CSPI1_RDY__AUD4_TXFS 406
439MX51_PAD_CSPI1_RDY__ECSPI1_RDY 407
440MX51_PAD_CSPI1_RDY__GPIO4_26 408
441MX51_PAD_CSPI1_SCLK__ECSPI1_SCLK 409
442MX51_PAD_CSPI1_SCLK__GPIO4_27 410
443MX51_PAD_CSPI1_SCLK__I2C1_SCL 411
444MX51_PAD_UART1_RXD__GPIO4_28 412
445MX51_PAD_UART1_RXD__UART1_RXD 413
446MX51_PAD_UART1_TXD__GPIO4_29 414
447MX51_PAD_UART1_TXD__PWM2_PWMO 415
448MX51_PAD_UART1_TXD__UART1_TXD 416
449MX51_PAD_UART1_RTS__GPIO4_30 417
450MX51_PAD_UART1_RTS__UART1_RTS 418
451MX51_PAD_UART1_CTS__GPIO4_31 419
452MX51_PAD_UART1_CTS__UART1_CTS 420
453MX51_PAD_UART2_RXD__FIRI_TXD 421
454MX51_PAD_UART2_RXD__GPIO1_20 422
455MX51_PAD_UART2_RXD__UART2_RXD 423
456MX51_PAD_UART2_TXD__FIRI_RXD 424
457MX51_PAD_UART2_TXD__GPIO1_21 425
458MX51_PAD_UART2_TXD__UART2_TXD 426
459MX51_PAD_UART3_RXD__CSI1_D0 427
460MX51_PAD_UART3_RXD__GPIO1_22 428
461MX51_PAD_UART3_RXD__UART1_DTR 429
462MX51_PAD_UART3_RXD__UART3_RXD 430
463MX51_PAD_UART3_TXD__CSI1_D1 431
464MX51_PAD_UART3_TXD__GPIO1_23 432
465MX51_PAD_UART3_TXD__UART1_DSR 433
466MX51_PAD_UART3_TXD__UART3_TXD 434
467MX51_PAD_OWIRE_LINE__GPIO1_24 435
468MX51_PAD_OWIRE_LINE__OWIRE_LINE 436
469MX51_PAD_OWIRE_LINE__SPDIF_OUT 437
470MX51_PAD_KEY_ROW0__KEY_ROW0 438
471MX51_PAD_KEY_ROW1__KEY_ROW1 439
472MX51_PAD_KEY_ROW2__KEY_ROW2 440
473MX51_PAD_KEY_ROW3__KEY_ROW3 441
474MX51_PAD_KEY_COL0__KEY_COL0 442
475MX51_PAD_KEY_COL0__PLL1_BYP 443
476MX51_PAD_KEY_COL1__KEY_COL1 444
477MX51_PAD_KEY_COL1__PLL2_BYP 445
478MX51_PAD_KEY_COL2__KEY_COL2 446
479MX51_PAD_KEY_COL2__PLL3_BYP 447
480MX51_PAD_KEY_COL3__KEY_COL3 448
481MX51_PAD_KEY_COL4__I2C2_SCL 449
482MX51_PAD_KEY_COL4__KEY_COL4 450
483MX51_PAD_KEY_COL4__SPDIF_OUT1 451
484MX51_PAD_KEY_COL4__UART1_RI 452
485MX51_PAD_KEY_COL4__UART3_RTS 453
486MX51_PAD_KEY_COL5__I2C2_SDA 454
487MX51_PAD_KEY_COL5__KEY_COL5 455
488MX51_PAD_KEY_COL5__UART1_DCD 456
489MX51_PAD_KEY_COL5__UART3_CTS 457
490MX51_PAD_USBH1_CLK__CSPI_SCLK 458
491MX51_PAD_USBH1_CLK__GPIO1_25 459
492MX51_PAD_USBH1_CLK__I2C2_SCL 460
493MX51_PAD_USBH1_CLK__USBH1_CLK 461
494MX51_PAD_USBH1_DIR__CSPI_MOSI 462
495MX51_PAD_USBH1_DIR__GPIO1_26 463
496MX51_PAD_USBH1_DIR__I2C2_SDA 464
497MX51_PAD_USBH1_DIR__USBH1_DIR 465
498MX51_PAD_USBH1_STP__CSPI_RDY 466
499MX51_PAD_USBH1_STP__GPIO1_27 467
500MX51_PAD_USBH1_STP__UART3_RXD 468
501MX51_PAD_USBH1_STP__USBH1_STP 469
502MX51_PAD_USBH1_NXT__CSPI_MISO 470
503MX51_PAD_USBH1_NXT__GPIO1_28 471
504MX51_PAD_USBH1_NXT__UART3_TXD 472
505MX51_PAD_USBH1_NXT__USBH1_NXT 473
506MX51_PAD_USBH1_DATA0__GPIO1_11 474
507MX51_PAD_USBH1_DATA0__UART2_CTS 475
508MX51_PAD_USBH1_DATA0__USBH1_DATA0 476
509MX51_PAD_USBH1_DATA1__GPIO1_12 477
510MX51_PAD_USBH1_DATA1__UART2_RXD 478
511MX51_PAD_USBH1_DATA1__USBH1_DATA1 479
512MX51_PAD_USBH1_DATA2__GPIO1_13 480
513MX51_PAD_USBH1_DATA2__UART2_TXD 481
514MX51_PAD_USBH1_DATA2__USBH1_DATA2 482
515MX51_PAD_USBH1_DATA3__GPIO1_14 483
516MX51_PAD_USBH1_DATA3__UART2_RTS 484
517MX51_PAD_USBH1_DATA3__USBH1_DATA3 485
518MX51_PAD_USBH1_DATA4__CSPI_SS0 486
519MX51_PAD_USBH1_DATA4__GPIO1_15 487
520MX51_PAD_USBH1_DATA4__USBH1_DATA4 488
521MX51_PAD_USBH1_DATA5__CSPI_SS1 489
522MX51_PAD_USBH1_DATA5__GPIO1_16 490
523MX51_PAD_USBH1_DATA5__USBH1_DATA5 491
524MX51_PAD_USBH1_DATA6__CSPI_SS3 492
525MX51_PAD_USBH1_DATA6__GPIO1_17 493
526MX51_PAD_USBH1_DATA6__USBH1_DATA6 494
527MX51_PAD_USBH1_DATA7__ECSPI1_SS3 495
528MX51_PAD_USBH1_DATA7__ECSPI2_SS3 496
529MX51_PAD_USBH1_DATA7__GPIO1_18 497
530MX51_PAD_USBH1_DATA7__USBH1_DATA7 498
531MX51_PAD_DI1_PIN11__DI1_PIN11 499
532MX51_PAD_DI1_PIN11__ECSPI1_SS2 500
533MX51_PAD_DI1_PIN11__GPIO3_0 501
534MX51_PAD_DI1_PIN12__DI1_PIN12 502
535MX51_PAD_DI1_PIN12__GPIO3_1 503
536MX51_PAD_DI1_PIN13__DI1_PIN13 504
537MX51_PAD_DI1_PIN13__GPIO3_2 505
538MX51_PAD_DI1_D0_CS__DI1_D0_CS 506
539MX51_PAD_DI1_D0_CS__GPIO3_3 507
540MX51_PAD_DI1_D1_CS__DI1_D1_CS 508
541MX51_PAD_DI1_D1_CS__DISP1_PIN14 509
542MX51_PAD_DI1_D1_CS__DISP1_PIN5 510
543MX51_PAD_DI1_D1_CS__GPIO3_4 511
544MX51_PAD_DISPB2_SER_DIN__DISP1_PIN1 512
545MX51_PAD_DISPB2_SER_DIN__DISPB2_SER_DIN 513
546MX51_PAD_DISPB2_SER_DIN__GPIO3_5 514
547MX51_PAD_DISPB2_SER_DIO__DISP1_PIN6 515
548MX51_PAD_DISPB2_SER_DIO__DISPB2_SER_DIO 516
549MX51_PAD_DISPB2_SER_DIO__GPIO3_6 517
550MX51_PAD_DISPB2_SER_CLK__DISP1_PIN17 518
551MX51_PAD_DISPB2_SER_CLK__DISP1_PIN7 519
552MX51_PAD_DISPB2_SER_CLK__DISPB2_SER_CLK 520
553MX51_PAD_DISPB2_SER_CLK__GPIO3_7 521
554MX51_PAD_DISPB2_SER_RS__DISP1_EXT_CLK 522
555MX51_PAD_DISPB2_SER_RS__DISP1_PIN16 523
556MX51_PAD_DISPB2_SER_RS__DISP1_PIN8 524
557MX51_PAD_DISPB2_SER_RS__DISPB2_SER_RS 525
558MX51_PAD_DISPB2_SER_RS__DISPB2_SER_RS 526
559MX51_PAD_DISPB2_SER_RS__GPIO3_8 527
560MX51_PAD_DISP1_DAT0__DISP1_DAT0 528
561MX51_PAD_DISP1_DAT1__DISP1_DAT1 529
562MX51_PAD_DISP1_DAT2__DISP1_DAT2 530
563MX51_PAD_DISP1_DAT3__DISP1_DAT3 531
564MX51_PAD_DISP1_DAT4__DISP1_DAT4 532
565MX51_PAD_DISP1_DAT5__DISP1_DAT5 533
566MX51_PAD_DISP1_DAT6__BOOT_USB_SRC 534
567MX51_PAD_DISP1_DAT6__DISP1_DAT6 535
568MX51_PAD_DISP1_DAT7__BOOT_EEPROM_CFG 536
569MX51_PAD_DISP1_DAT7__DISP1_DAT7 537
570MX51_PAD_DISP1_DAT8__BOOT_SRC0 538
571MX51_PAD_DISP1_DAT8__DISP1_DAT8 539
572MX51_PAD_DISP1_DAT9__BOOT_SRC1 540
573MX51_PAD_DISP1_DAT9__DISP1_DAT9 541
574MX51_PAD_DISP1_DAT10__BOOT_SPARE_SIZE 542
575MX51_PAD_DISP1_DAT10__DISP1_DAT10 543
576MX51_PAD_DISP1_DAT11__BOOT_LPB_FREQ2 544
577MX51_PAD_DISP1_DAT11__DISP1_DAT11 545
578MX51_PAD_DISP1_DAT12__BOOT_MLC_SEL 546
579MX51_PAD_DISP1_DAT12__DISP1_DAT12 547
580MX51_PAD_DISP1_DAT13__BOOT_MEM_CTL0 548
581MX51_PAD_DISP1_DAT13__DISP1_DAT13 549
582MX51_PAD_DISP1_DAT14__BOOT_MEM_CTL1 550
583MX51_PAD_DISP1_DAT14__DISP1_DAT14 551
584MX51_PAD_DISP1_DAT15__BOOT_BUS_WIDTH 552
585MX51_PAD_DISP1_DAT15__DISP1_DAT15 553
586MX51_PAD_DISP1_DAT16__BOOT_PAGE_SIZE0 554
587MX51_PAD_DISP1_DAT16__DISP1_DAT16 555
588MX51_PAD_DISP1_DAT17__BOOT_PAGE_SIZE1 556
589MX51_PAD_DISP1_DAT17__DISP1_DAT17 557
590MX51_PAD_DISP1_DAT18__BOOT_WEIM_MUXED0 558
591MX51_PAD_DISP1_DAT18__DISP1_DAT18 559
592MX51_PAD_DISP1_DAT18__DISP2_PIN11 560
593MX51_PAD_DISP1_DAT18__DISP2_PIN5 561
594MX51_PAD_DISP1_DAT19__BOOT_WEIM_MUXED1 562
595MX51_PAD_DISP1_DAT19__DISP1_DAT19 563
596MX51_PAD_DISP1_DAT19__DISP2_PIN12 564
597MX51_PAD_DISP1_DAT19__DISP2_PIN6 565
598MX51_PAD_DISP1_DAT20__BOOT_MEM_TYPE0 566
599MX51_PAD_DISP1_DAT20__DISP1_DAT20 567
600MX51_PAD_DISP1_DAT20__DISP2_PIN13 568
601MX51_PAD_DISP1_DAT20__DISP2_PIN7 569
602MX51_PAD_DISP1_DAT21__BOOT_MEM_TYPE1 570
603MX51_PAD_DISP1_DAT21__DISP1_DAT21 571
604MX51_PAD_DISP1_DAT21__DISP2_PIN14 572
605MX51_PAD_DISP1_DAT21__DISP2_PIN8 573
606MX51_PAD_DISP1_DAT22__BOOT_LPB_FREQ0 574
607MX51_PAD_DISP1_DAT22__DISP1_DAT22 575
608MX51_PAD_DISP1_DAT22__DISP2_D0_CS 576
609MX51_PAD_DISP1_DAT22__DISP2_DAT16 577
610MX51_PAD_DISP1_DAT23__BOOT_LPB_FREQ1 578
611MX51_PAD_DISP1_DAT23__DISP1_DAT23 579
612MX51_PAD_DISP1_DAT23__DISP2_D1_CS 580
613MX51_PAD_DISP1_DAT23__DISP2_DAT17 581
614MX51_PAD_DISP1_DAT23__DISP2_SER_CS 582
615MX51_PAD_DI1_PIN3__DI1_PIN3 583
616MX51_PAD_DI1_PIN2__DI1_PIN2 584
617MX51_PAD_DI_GP2__DISP1_SER_CLK 585
618MX51_PAD_DI_GP2__DISP2_WAIT 586
619MX51_PAD_DI_GP3__CSI1_DATA_EN 587
620MX51_PAD_DI_GP3__DISP1_SER_DIO 588
621MX51_PAD_DI_GP3__FEC_TX_ER 589
622MX51_PAD_DI2_PIN4__CSI2_DATA_EN 590
623MX51_PAD_DI2_PIN4__DI2_PIN4 591
624MX51_PAD_DI2_PIN4__FEC_CRS 592
625MX51_PAD_DI2_PIN2__DI2_PIN2 593
626MX51_PAD_DI2_PIN2__FEC_MDC 594
627MX51_PAD_DI2_PIN3__DI2_PIN3 595
628MX51_PAD_DI2_PIN3__FEC_MDIO 596
629MX51_PAD_DI2_DISP_CLK__DI2_DISP_CLK 597
630MX51_PAD_DI2_DISP_CLK__FEC_RDATA1 598
631MX51_PAD_DI_GP4__DI2_PIN15 599
632MX51_PAD_DI_GP4__DISP1_SER_DIN 600
633MX51_PAD_DI_GP4__DISP2_PIN1 601
634MX51_PAD_DI_GP4__FEC_RDATA2 602
635MX51_PAD_DISP2_DAT0__DISP2_DAT0 603
636MX51_PAD_DISP2_DAT0__FEC_RDATA3 604
637MX51_PAD_DISP2_DAT0__KEY_COL6 605
638MX51_PAD_DISP2_DAT0__UART3_RXD 606
639MX51_PAD_DISP2_DAT0__USBH3_CLK 607
640MX51_PAD_DISP2_DAT1__DISP2_DAT1 608
641MX51_PAD_DISP2_DAT1__FEC_RX_ER 609
642MX51_PAD_DISP2_DAT1__KEY_COL7 610
643MX51_PAD_DISP2_DAT1__UART3_TXD 611
644MX51_PAD_DISP2_DAT1__USBH3_DIR 612
645MX51_PAD_DISP2_DAT2__DISP2_DAT2 613
646MX51_PAD_DISP2_DAT3__DISP2_DAT3 614
647MX51_PAD_DISP2_DAT4__DISP2_DAT4 615
648MX51_PAD_DISP2_DAT5__DISP2_DAT5 616
649MX51_PAD_DISP2_DAT6__DISP2_DAT6 617
650MX51_PAD_DISP2_DAT6__FEC_TDATA1 618
651MX51_PAD_DISP2_DAT6__GPIO1_19 619
652MX51_PAD_DISP2_DAT6__KEY_ROW4 620
653MX51_PAD_DISP2_DAT6__USBH3_STP 621
654MX51_PAD_DISP2_DAT7__DISP2_DAT7 622
655MX51_PAD_DISP2_DAT7__FEC_TDATA2 623
656MX51_PAD_DISP2_DAT7__GPIO1_29 624
657MX51_PAD_DISP2_DAT7__KEY_ROW5 625
658MX51_PAD_DISP2_DAT7__USBH3_NXT 626
659MX51_PAD_DISP2_DAT8__DISP2_DAT8 627
660MX51_PAD_DISP2_DAT8__FEC_TDATA3 628
661MX51_PAD_DISP2_DAT8__GPIO1_30 629
662MX51_PAD_DISP2_DAT8__KEY_ROW6 630
663MX51_PAD_DISP2_DAT8__USBH3_DATA0 631
664MX51_PAD_DISP2_DAT9__AUD6_RXC 632
665MX51_PAD_DISP2_DAT9__DISP2_DAT9 633
666MX51_PAD_DISP2_DAT9__FEC_TX_EN 634
667MX51_PAD_DISP2_DAT9__GPIO1_31 635
668MX51_PAD_DISP2_DAT9__USBH3_DATA1 636
669MX51_PAD_DISP2_DAT10__DISP2_DAT10 637
670MX51_PAD_DISP2_DAT10__DISP2_SER_CS 638
671MX51_PAD_DISP2_DAT10__FEC_COL 639
672MX51_PAD_DISP2_DAT10__KEY_ROW7 640
673MX51_PAD_DISP2_DAT10__USBH3_DATA2 641
674MX51_PAD_DISP2_DAT11__AUD6_TXD 642
675MX51_PAD_DISP2_DAT11__DISP2_DAT11 643
676MX51_PAD_DISP2_DAT11__FEC_RX_CLK 644
677MX51_PAD_DISP2_DAT11__GPIO1_10 645
678MX51_PAD_DISP2_DAT11__USBH3_DATA3 646
679MX51_PAD_DISP2_DAT12__AUD6_RXD 647
680MX51_PAD_DISP2_DAT12__DISP2_DAT12 648
681MX51_PAD_DISP2_DAT12__FEC_RX_DV 649
682MX51_PAD_DISP2_DAT12__USBH3_DATA4 650
683MX51_PAD_DISP2_DAT13__AUD6_TXC 651
684MX51_PAD_DISP2_DAT13__DISP2_DAT13 652
685MX51_PAD_DISP2_DAT13__FEC_TX_CLK 653
686MX51_PAD_DISP2_DAT13__USBH3_DATA5 654
687MX51_PAD_DISP2_DAT14__AUD6_TXFS 655
688MX51_PAD_DISP2_DAT14__DISP2_DAT14 656
689MX51_PAD_DISP2_DAT14__FEC_RDATA0 657
690MX51_PAD_DISP2_DAT14__USBH3_DATA6 658
691MX51_PAD_DISP2_DAT15__AUD6_RXFS 659
692MX51_PAD_DISP2_DAT15__DISP1_SER_CS 660
693MX51_PAD_DISP2_DAT15__DISP2_DAT15 661
694MX51_PAD_DISP2_DAT15__FEC_TDATA0 662
695MX51_PAD_DISP2_DAT15__USBH3_DATA7 663
696MX51_PAD_SD1_CMD__AUD5_RXFS 664
697MX51_PAD_SD1_CMD__CSPI_MOSI 665
698MX51_PAD_SD1_CMD__SD1_CMD 666
699MX51_PAD_SD1_CLK__AUD5_RXC 667
700MX51_PAD_SD1_CLK__CSPI_SCLK 668
701MX51_PAD_SD1_CLK__SD1_CLK 669
702MX51_PAD_SD1_DATA0__AUD5_TXD 670
703MX51_PAD_SD1_DATA0__CSPI_MISO 671
704MX51_PAD_SD1_DATA0__SD1_DATA0 672
705MX51_PAD_EIM_DA0__EIM_DA0 673
706MX51_PAD_EIM_DA1__EIM_DA1 674
707MX51_PAD_EIM_DA2__EIM_DA2 675
708MX51_PAD_EIM_DA3__EIM_DA3 676
709MX51_PAD_SD1_DATA1__AUD5_RXD 677
710MX51_PAD_SD1_DATA1__SD1_DATA1 678
711MX51_PAD_EIM_DA4__EIM_DA4 679
712MX51_PAD_EIM_DA5__EIM_DA5 680
713MX51_PAD_EIM_DA6__EIM_DA6 681
714MX51_PAD_EIM_DA7__EIM_DA7 682
715MX51_PAD_SD1_DATA2__AUD5_TXC 683
716MX51_PAD_SD1_DATA2__SD1_DATA2 684
717MX51_PAD_EIM_DA10__EIM_DA10 685
718MX51_PAD_EIM_DA11__EIM_DA11 686
719MX51_PAD_EIM_DA8__EIM_DA8 687
720MX51_PAD_EIM_DA9__EIM_DA9 688
721MX51_PAD_SD1_DATA3__AUD5_TXFS 689
722MX51_PAD_SD1_DATA3__CSPI_SS1 690
723MX51_PAD_SD1_DATA3__SD1_DATA3 691
724MX51_PAD_GPIO1_0__CSPI_SS2 692
725MX51_PAD_GPIO1_0__GPIO1_0 693
726MX51_PAD_GPIO1_0__SD1_CD 694
727MX51_PAD_GPIO1_1__CSPI_MISO 695
728MX51_PAD_GPIO1_1__GPIO1_1 696
729MX51_PAD_GPIO1_1__SD1_WP 697
730MX51_PAD_EIM_DA12__EIM_DA12 698
731MX51_PAD_EIM_DA13__EIM_DA13 699
732MX51_PAD_EIM_DA14__EIM_DA14 700
733MX51_PAD_EIM_DA15__EIM_DA15 701
734MX51_PAD_SD2_CMD__CSPI_MOSI 702
735MX51_PAD_SD2_CMD__I2C1_SCL 703
736MX51_PAD_SD2_CMD__SD2_CMD 704
737MX51_PAD_SD2_CLK__CSPI_SCLK 705
738MX51_PAD_SD2_CLK__I2C1_SDA 706
739MX51_PAD_SD2_CLK__SD2_CLK 707
740MX51_PAD_SD2_DATA0__CSPI_MISO 708
741MX51_PAD_SD2_DATA0__SD1_DAT4 709
742MX51_PAD_SD2_DATA0__SD2_DATA0 710
743MX51_PAD_SD2_DATA1__SD1_DAT5 711
744MX51_PAD_SD2_DATA1__SD2_DATA1 712
745MX51_PAD_SD2_DATA1__USBH3_H2_DP 713
746MX51_PAD_SD2_DATA2__SD1_DAT6 714
747MX51_PAD_SD2_DATA2__SD2_DATA2 715
748MX51_PAD_SD2_DATA2__USBH3_H2_DM 716
749MX51_PAD_SD2_DATA3__CSPI_SS2 717
750MX51_PAD_SD2_DATA3__SD1_DAT7 718
751MX51_PAD_SD2_DATA3__SD2_DATA3 719
752MX51_PAD_GPIO1_2__CCM_OUT_2 720
753MX51_PAD_GPIO1_2__GPIO1_2 721
754MX51_PAD_GPIO1_2__I2C2_SCL 722
755MX51_PAD_GPIO1_2__PLL1_BYP 723
756MX51_PAD_GPIO1_2__PWM1_PWMO 724
757MX51_PAD_GPIO1_3__GPIO1_3 725
758MX51_PAD_GPIO1_3__I2C2_SDA 726
759MX51_PAD_GPIO1_3__PLL2_BYP 727
760MX51_PAD_GPIO1_3__PWM2_PWMO 728
761MX51_PAD_PMIC_INT_REQ__PMIC_INT_REQ 729
762MX51_PAD_PMIC_INT_REQ__PMIC_PMU_IRQ_B 730
763MX51_PAD_GPIO1_4__DISP2_EXT_CLK 731
764MX51_PAD_GPIO1_4__EIM_RDY 732
765MX51_PAD_GPIO1_4__GPIO1_4 733
766MX51_PAD_GPIO1_4__WDOG1_WDOG_B 734
767MX51_PAD_GPIO1_5__CSI2_MCLK 735
768MX51_PAD_GPIO1_5__DISP2_PIN16 736
769MX51_PAD_GPIO1_5__GPIO1_5 737
770MX51_PAD_GPIO1_5__WDOG2_WDOG_B 738
771MX51_PAD_GPIO1_6__DISP2_PIN17 739
772MX51_PAD_GPIO1_6__GPIO1_6 740
773MX51_PAD_GPIO1_6__REF_EN_B 741
774MX51_PAD_GPIO1_7__CCM_OUT_0 742
775MX51_PAD_GPIO1_7__GPIO1_7 743
776MX51_PAD_GPIO1_7__SD2_WP 744
777MX51_PAD_GPIO1_7__SPDIF_OUT1 745
778MX51_PAD_GPIO1_8__CSI2_DATA_EN 746
779MX51_PAD_GPIO1_8__GPIO1_8 747
780MX51_PAD_GPIO1_8__SD2_CD 748
781MX51_PAD_GPIO1_8__USBH3_PWR 749
782MX51_PAD_GPIO1_9__CCM_OUT_1 750
783MX51_PAD_GPIO1_9__DISP2_D1_CS 751
784MX51_PAD_GPIO1_9__DISP2_SER_CS 752
785MX51_PAD_GPIO1_9__GPIO1_9 753
786MX51_PAD_GPIO1_9__SD2_LCTL 754
787MX51_PAD_GPIO1_9__USBH3_OC 755
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx53-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx53-pinctrl.txt
new file mode 100644
index 000000000000..ca85ca432ef0
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx53-pinctrl.txt
@@ -0,0 +1,1202 @@
1* Freescale IMX53 IOMUX Controller
2
3Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
4and usage.
5
6Required properties:
7- compatible: "fsl,imx53-iomuxc"
8- fsl,pins: two integers array, represents a group of pins mux and config
9 setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a
10 pin working on a specific function, CONFIG is the pad setting value like
11 pull-up for this pin. Please refer to imx53 datasheet for the valid pad
12 config settings.
13
14CONFIG bits definition:
15PAD_CTL_HVE (1 << 13)
16PAD_CTL_HYS (1 << 8)
17PAD_CTL_PKE (1 << 7)
18PAD_CTL_PUE (1 << 6)
19PAD_CTL_PUS_100K_DOWN (0 << 4)
20PAD_CTL_PUS_47K_UP (1 << 4)
21PAD_CTL_PUS_100K_UP (2 << 4)
22PAD_CTL_PUS_22K_UP (3 << 4)
23PAD_CTL_ODE (1 << 3)
24PAD_CTL_DSE_LOW (0 << 1)
25PAD_CTL_DSE_MED (1 << 1)
26PAD_CTL_DSE_HIGH (2 << 1)
27PAD_CTL_DSE_MAX (3 << 1)
28PAD_CTL_SRE_FAST (1 << 0)
29PAD_CTL_SRE_SLOW (0 << 0)
30
31See below for available PIN_FUNC_ID for imx53:
32MX53_PAD_GPIO_19__KPP_COL_5 0
33MX53_PAD_GPIO_19__GPIO4_5 1
34MX53_PAD_GPIO_19__CCM_CLKO 2
35MX53_PAD_GPIO_19__SPDIF_OUT1 3
36MX53_PAD_GPIO_19__RTC_CE_RTC_EXT_TRIG2 4
37MX53_PAD_GPIO_19__ECSPI1_RDY 5
38MX53_PAD_GPIO_19__FEC_TDATA_3 6
39MX53_PAD_GPIO_19__SRC_INT_BOOT 7
40MX53_PAD_KEY_COL0__KPP_COL_0 8
41MX53_PAD_KEY_COL0__GPIO4_6 9
42MX53_PAD_KEY_COL0__AUDMUX_AUD5_TXC 10
43MX53_PAD_KEY_COL0__UART4_TXD_MUX 11
44MX53_PAD_KEY_COL0__ECSPI1_SCLK 12
45MX53_PAD_KEY_COL0__FEC_RDATA_3 13
46MX53_PAD_KEY_COL0__SRC_ANY_PU_RST 14
47MX53_PAD_KEY_ROW0__KPP_ROW_0 15
48MX53_PAD_KEY_ROW0__GPIO4_7 16
49MX53_PAD_KEY_ROW0__AUDMUX_AUD5_TXD 17
50MX53_PAD_KEY_ROW0__UART4_RXD_MUX 18
51MX53_PAD_KEY_ROW0__ECSPI1_MOSI 19
52MX53_PAD_KEY_ROW0__FEC_TX_ER 20
53MX53_PAD_KEY_COL1__KPP_COL_1 21
54MX53_PAD_KEY_COL1__GPIO4_8 22
55MX53_PAD_KEY_COL1__AUDMUX_AUD5_TXFS 23
56MX53_PAD_KEY_COL1__UART5_TXD_MUX 24
57MX53_PAD_KEY_COL1__ECSPI1_MISO 25
58MX53_PAD_KEY_COL1__FEC_RX_CLK 26
59MX53_PAD_KEY_COL1__USBPHY1_TXREADY 27
60MX53_PAD_KEY_ROW1__KPP_ROW_1 28
61MX53_PAD_KEY_ROW1__GPIO4_9 29
62MX53_PAD_KEY_ROW1__AUDMUX_AUD5_RXD 30
63MX53_PAD_KEY_ROW1__UART5_RXD_MUX 31
64MX53_PAD_KEY_ROW1__ECSPI1_SS0 32
65MX53_PAD_KEY_ROW1__FEC_COL 33
66MX53_PAD_KEY_ROW1__USBPHY1_RXVALID 34
67MX53_PAD_KEY_COL2__KPP_COL_2 35
68MX53_PAD_KEY_COL2__GPIO4_10 36
69MX53_PAD_KEY_COL2__CAN1_TXCAN 37
70MX53_PAD_KEY_COL2__FEC_MDIO 38
71MX53_PAD_KEY_COL2__ECSPI1_SS1 39
72MX53_PAD_KEY_COL2__FEC_RDATA_2 40
73MX53_PAD_KEY_COL2__USBPHY1_RXACTIVE 41
74MX53_PAD_KEY_ROW2__KPP_ROW_2 42
75MX53_PAD_KEY_ROW2__GPIO4_11 43
76MX53_PAD_KEY_ROW2__CAN1_RXCAN 44
77MX53_PAD_KEY_ROW2__FEC_MDC 45
78MX53_PAD_KEY_ROW2__ECSPI1_SS2 46
79MX53_PAD_KEY_ROW2__FEC_TDATA_2 47
80MX53_PAD_KEY_ROW2__USBPHY1_RXERROR 48
81MX53_PAD_KEY_COL3__KPP_COL_3 49
82MX53_PAD_KEY_COL3__GPIO4_12 50
83MX53_PAD_KEY_COL3__USBOH3_H2_DP 51
84MX53_PAD_KEY_COL3__SPDIF_IN1 52
85MX53_PAD_KEY_COL3__I2C2_SCL 53
86MX53_PAD_KEY_COL3__ECSPI1_SS3 54
87MX53_PAD_KEY_COL3__FEC_CRS 55
88MX53_PAD_KEY_COL3__USBPHY1_SIECLOCK 56
89MX53_PAD_KEY_ROW3__KPP_ROW_3 57
90MX53_PAD_KEY_ROW3__GPIO4_13 58
91MX53_PAD_KEY_ROW3__USBOH3_H2_DM 59
92MX53_PAD_KEY_ROW3__CCM_ASRC_EXT_CLK 60
93MX53_PAD_KEY_ROW3__I2C2_SDA 61
94MX53_PAD_KEY_ROW3__OSC32K_32K_OUT 62
95MX53_PAD_KEY_ROW3__CCM_PLL4_BYP 63
96MX53_PAD_KEY_ROW3__USBPHY1_LINESTATE_0 64
97MX53_PAD_KEY_COL4__KPP_COL_4 65
98MX53_PAD_KEY_COL4__GPIO4_14 66
99MX53_PAD_KEY_COL4__CAN2_TXCAN 67
100MX53_PAD_KEY_COL4__IPU_SISG_4 68
101MX53_PAD_KEY_COL4__UART5_RTS 69
102MX53_PAD_KEY_COL4__USBOH3_USBOTG_OC 70
103MX53_PAD_KEY_COL4__USBPHY1_LINESTATE_1 71
104MX53_PAD_KEY_ROW4__KPP_ROW_4 72
105MX53_PAD_KEY_ROW4__GPIO4_15 73
106MX53_PAD_KEY_ROW4__CAN2_RXCAN 74
107MX53_PAD_KEY_ROW4__IPU_SISG_5 75
108MX53_PAD_KEY_ROW4__UART5_CTS 76
109MX53_PAD_KEY_ROW4__USBOH3_USBOTG_PWR 77
110MX53_PAD_KEY_ROW4__USBPHY1_VBUSVALID 78
111MX53_PAD_DI0_DISP_CLK__IPU_DI0_DISP_CLK 79
112MX53_PAD_DI0_DISP_CLK__GPIO4_16 80
113MX53_PAD_DI0_DISP_CLK__USBOH3_USBH2_DIR 81
114MX53_PAD_DI0_DISP_CLK__SDMA_DEBUG_CORE_STATE_0 82
115MX53_PAD_DI0_DISP_CLK__EMI_EMI_DEBUG_0 83
116MX53_PAD_DI0_DISP_CLK__USBPHY1_AVALID 84
117MX53_PAD_DI0_PIN15__IPU_DI0_PIN15 85
118MX53_PAD_DI0_PIN15__GPIO4_17 86
119MX53_PAD_DI0_PIN15__AUDMUX_AUD6_TXC 87
120MX53_PAD_DI0_PIN15__SDMA_DEBUG_CORE_STATE_1 88
121MX53_PAD_DI0_PIN15__EMI_EMI_DEBUG_1 89
122MX53_PAD_DI0_PIN15__USBPHY1_BVALID 90
123MX53_PAD_DI0_PIN2__IPU_DI0_PIN2 91
124MX53_PAD_DI0_PIN2__GPIO4_18 92
125MX53_PAD_DI0_PIN2__AUDMUX_AUD6_TXD 93
126MX53_PAD_DI0_PIN2__SDMA_DEBUG_CORE_STATE_2 94
127MX53_PAD_DI0_PIN2__EMI_EMI_DEBUG_2 95
128MX53_PAD_DI0_PIN2__USBPHY1_ENDSESSION 96
129MX53_PAD_DI0_PIN3__IPU_DI0_PIN3 97
130MX53_PAD_DI0_PIN3__GPIO4_19 98
131MX53_PAD_DI0_PIN3__AUDMUX_AUD6_TXFS 99
132MX53_PAD_DI0_PIN3__SDMA_DEBUG_CORE_STATE_3 100
133MX53_PAD_DI0_PIN3__EMI_EMI_DEBUG_3 101
134MX53_PAD_DI0_PIN3__USBPHY1_IDDIG 102
135MX53_PAD_DI0_PIN4__IPU_DI0_PIN4 103
136MX53_PAD_DI0_PIN4__GPIO4_20 104
137MX53_PAD_DI0_PIN4__AUDMUX_AUD6_RXD 105
138MX53_PAD_DI0_PIN4__ESDHC1_WP 106
139MX53_PAD_DI0_PIN4__SDMA_DEBUG_YIELD 107
140MX53_PAD_DI0_PIN4__EMI_EMI_DEBUG_4 108
141MX53_PAD_DI0_PIN4__USBPHY1_HOSTDISCONNECT 109
142MX53_PAD_DISP0_DAT0__IPU_DISP0_DAT_0 110
143MX53_PAD_DISP0_DAT0__GPIO4_21 111
144MX53_PAD_DISP0_DAT0__CSPI_SCLK 112
145MX53_PAD_DISP0_DAT0__USBOH3_USBH2_DATA_0 113
146MX53_PAD_DISP0_DAT0__SDMA_DEBUG_CORE_RUN 114
147MX53_PAD_DISP0_DAT0__EMI_EMI_DEBUG_5 115
148MX53_PAD_DISP0_DAT0__USBPHY2_TXREADY 116
149MX53_PAD_DISP0_DAT1__IPU_DISP0_DAT_1 117
150MX53_PAD_DISP0_DAT1__GPIO4_22 118
151MX53_PAD_DISP0_DAT1__CSPI_MOSI 119
152MX53_PAD_DISP0_DAT1__USBOH3_USBH2_DATA_1 120
153MX53_PAD_DISP0_DAT1__SDMA_DEBUG_EVENT_CHANNEL_SEL 121
154MX53_PAD_DISP0_DAT1__EMI_EMI_DEBUG_6 122
155MX53_PAD_DISP0_DAT1__USBPHY2_RXVALID 123
156MX53_PAD_DISP0_DAT2__IPU_DISP0_DAT_2 124
157MX53_PAD_DISP0_DAT2__GPIO4_23 125
158MX53_PAD_DISP0_DAT2__CSPI_MISO 126
159MX53_PAD_DISP0_DAT2__USBOH3_USBH2_DATA_2 127
160MX53_PAD_DISP0_DAT2__SDMA_DEBUG_MODE 128
161MX53_PAD_DISP0_DAT2__EMI_EMI_DEBUG_7 129
162MX53_PAD_DISP0_DAT2__USBPHY2_RXACTIVE 130
163MX53_PAD_DISP0_DAT3__IPU_DISP0_DAT_3 131
164MX53_PAD_DISP0_DAT3__GPIO4_24 132
165MX53_PAD_DISP0_DAT3__CSPI_SS0 133
166MX53_PAD_DISP0_DAT3__USBOH3_USBH2_DATA_3 134
167MX53_PAD_DISP0_DAT3__SDMA_DEBUG_BUS_ERROR 135
168MX53_PAD_DISP0_DAT3__EMI_EMI_DEBUG_8 136
169MX53_PAD_DISP0_DAT3__USBPHY2_RXERROR 137
170MX53_PAD_DISP0_DAT4__IPU_DISP0_DAT_4 138
171MX53_PAD_DISP0_DAT4__GPIO4_25 139
172MX53_PAD_DISP0_DAT4__CSPI_SS1 140
173MX53_PAD_DISP0_DAT4__USBOH3_USBH2_DATA_4 141
174MX53_PAD_DISP0_DAT4__SDMA_DEBUG_BUS_RWB 142
175MX53_PAD_DISP0_DAT4__EMI_EMI_DEBUG_9 143
176MX53_PAD_DISP0_DAT4__USBPHY2_SIECLOCK 144
177MX53_PAD_DISP0_DAT5__IPU_DISP0_DAT_5 145
178MX53_PAD_DISP0_DAT5__GPIO4_26 146
179MX53_PAD_DISP0_DAT5__CSPI_SS2 147
180MX53_PAD_DISP0_DAT5__USBOH3_USBH2_DATA_5 148
181MX53_PAD_DISP0_DAT5__SDMA_DEBUG_MATCHED_DMBUS 149
182MX53_PAD_DISP0_DAT5__EMI_EMI_DEBUG_10 150
183MX53_PAD_DISP0_DAT5__USBPHY2_LINESTATE_0 151
184MX53_PAD_DISP0_DAT6__IPU_DISP0_DAT_6 152
185MX53_PAD_DISP0_DAT6__GPIO4_27 153
186MX53_PAD_DISP0_DAT6__CSPI_SS3 154
187MX53_PAD_DISP0_DAT6__USBOH3_USBH2_DATA_6 155
188MX53_PAD_DISP0_DAT6__SDMA_DEBUG_RTBUFFER_WRITE 156
189MX53_PAD_DISP0_DAT6__EMI_EMI_DEBUG_11 157
190MX53_PAD_DISP0_DAT6__USBPHY2_LINESTATE_1 158
191MX53_PAD_DISP0_DAT7__IPU_DISP0_DAT_7 159
192MX53_PAD_DISP0_DAT7__GPIO4_28 160
193MX53_PAD_DISP0_DAT7__CSPI_RDY 161
194MX53_PAD_DISP0_DAT7__USBOH3_USBH2_DATA_7 162
195MX53_PAD_DISP0_DAT7__SDMA_DEBUG_EVENT_CHANNEL_0 163
196MX53_PAD_DISP0_DAT7__EMI_EMI_DEBUG_12 164
197MX53_PAD_DISP0_DAT7__USBPHY2_VBUSVALID 165
198MX53_PAD_DISP0_DAT8__IPU_DISP0_DAT_8 166
199MX53_PAD_DISP0_DAT8__GPIO4_29 167
200MX53_PAD_DISP0_DAT8__PWM1_PWMO 168
201MX53_PAD_DISP0_DAT8__WDOG1_WDOG_B 169
202MX53_PAD_DISP0_DAT8__SDMA_DEBUG_EVENT_CHANNEL_1 170
203MX53_PAD_DISP0_DAT8__EMI_EMI_DEBUG_13 171
204MX53_PAD_DISP0_DAT8__USBPHY2_AVALID 172
205MX53_PAD_DISP0_DAT9__IPU_DISP0_DAT_9 173
206MX53_PAD_DISP0_DAT9__GPIO4_30 174
207MX53_PAD_DISP0_DAT9__PWM2_PWMO 175
208MX53_PAD_DISP0_DAT9__WDOG2_WDOG_B 176
209MX53_PAD_DISP0_DAT9__SDMA_DEBUG_EVENT_CHANNEL_2 177
210MX53_PAD_DISP0_DAT9__EMI_EMI_DEBUG_14 178
211MX53_PAD_DISP0_DAT9__USBPHY2_VSTATUS_0 179
212MX53_PAD_DISP0_DAT10__IPU_DISP0_DAT_10 180
213MX53_PAD_DISP0_DAT10__GPIO4_31 181
214MX53_PAD_DISP0_DAT10__USBOH3_USBH2_STP 182
215MX53_PAD_DISP0_DAT10__SDMA_DEBUG_EVENT_CHANNEL_3 183
216MX53_PAD_DISP0_DAT10__EMI_EMI_DEBUG_15 184
217MX53_PAD_DISP0_DAT10__USBPHY2_VSTATUS_1 185
218MX53_PAD_DISP0_DAT11__IPU_DISP0_DAT_11 186
219MX53_PAD_DISP0_DAT11__GPIO5_5 187
220MX53_PAD_DISP0_DAT11__USBOH3_USBH2_NXT 188
221MX53_PAD_DISP0_DAT11__SDMA_DEBUG_EVENT_CHANNEL_4 189
222MX53_PAD_DISP0_DAT11__EMI_EMI_DEBUG_16 190
223MX53_PAD_DISP0_DAT11__USBPHY2_VSTATUS_2 191
224MX53_PAD_DISP0_DAT12__IPU_DISP0_DAT_12 192
225MX53_PAD_DISP0_DAT12__GPIO5_6 193
226MX53_PAD_DISP0_DAT12__USBOH3_USBH2_CLK 194
227MX53_PAD_DISP0_DAT12__SDMA_DEBUG_EVENT_CHANNEL_5 195
228MX53_PAD_DISP0_DAT12__EMI_EMI_DEBUG_17 196
229MX53_PAD_DISP0_DAT12__USBPHY2_VSTATUS_3 197
230MX53_PAD_DISP0_DAT13__IPU_DISP0_DAT_13 198
231MX53_PAD_DISP0_DAT13__GPIO5_7 199
232MX53_PAD_DISP0_DAT13__AUDMUX_AUD5_RXFS 200
233MX53_PAD_DISP0_DAT13__SDMA_DEBUG_EVT_CHN_LINES_0 201
234MX53_PAD_DISP0_DAT13__EMI_EMI_DEBUG_18 202
235MX53_PAD_DISP0_DAT13__USBPHY2_VSTATUS_4 203
236MX53_PAD_DISP0_DAT14__IPU_DISP0_DAT_14 204
237MX53_PAD_DISP0_DAT14__GPIO5_8 205
238MX53_PAD_DISP0_DAT14__AUDMUX_AUD5_RXC 206
239MX53_PAD_DISP0_DAT14__SDMA_DEBUG_EVT_CHN_LINES_1 207
240MX53_PAD_DISP0_DAT14__EMI_EMI_DEBUG_19 208
241MX53_PAD_DISP0_DAT14__USBPHY2_VSTATUS_5 209
242MX53_PAD_DISP0_DAT15__IPU_DISP0_DAT_15 210
243MX53_PAD_DISP0_DAT15__GPIO5_9 211
244MX53_PAD_DISP0_DAT15__ECSPI1_SS1 212
245MX53_PAD_DISP0_DAT15__ECSPI2_SS1 213
246MX53_PAD_DISP0_DAT15__SDMA_DEBUG_EVT_CHN_LINES_2 214
247MX53_PAD_DISP0_DAT15__EMI_EMI_DEBUG_20 215
248MX53_PAD_DISP0_DAT15__USBPHY2_VSTATUS_6 216
249MX53_PAD_DISP0_DAT16__IPU_DISP0_DAT_16 217
250MX53_PAD_DISP0_DAT16__GPIO5_10 218
251MX53_PAD_DISP0_DAT16__ECSPI2_MOSI 219
252MX53_PAD_DISP0_DAT16__AUDMUX_AUD5_TXC 220
253MX53_PAD_DISP0_DAT16__SDMA_EXT_EVENT_0 221
254MX53_PAD_DISP0_DAT16__SDMA_DEBUG_EVT_CHN_LINES_3 222
255MX53_PAD_DISP0_DAT16__EMI_EMI_DEBUG_21 223
256MX53_PAD_DISP0_DAT16__USBPHY2_VSTATUS_7 224
257MX53_PAD_DISP0_DAT17__IPU_DISP0_DAT_17 225
258MX53_PAD_DISP0_DAT17__GPIO5_11 226
259MX53_PAD_DISP0_DAT17__ECSPI2_MISO 227
260MX53_PAD_DISP0_DAT17__AUDMUX_AUD5_TXD 228
261MX53_PAD_DISP0_DAT17__SDMA_EXT_EVENT_1 229
262MX53_PAD_DISP0_DAT17__SDMA_DEBUG_EVT_CHN_LINES_4 230
263MX53_PAD_DISP0_DAT17__EMI_EMI_DEBUG_22 231
264MX53_PAD_DISP0_DAT18__IPU_DISP0_DAT_18 232
265MX53_PAD_DISP0_DAT18__GPIO5_12 233
266MX53_PAD_DISP0_DAT18__ECSPI2_SS0 234
267MX53_PAD_DISP0_DAT18__AUDMUX_AUD5_TXFS 235
268MX53_PAD_DISP0_DAT18__AUDMUX_AUD4_RXFS 236
269MX53_PAD_DISP0_DAT18__SDMA_DEBUG_EVT_CHN_LINES_5 237
270MX53_PAD_DISP0_DAT18__EMI_EMI_DEBUG_23 238
271MX53_PAD_DISP0_DAT18__EMI_WEIM_CS_2 239
272MX53_PAD_DISP0_DAT19__IPU_DISP0_DAT_19 240
273MX53_PAD_DISP0_DAT19__GPIO5_13 241
274MX53_PAD_DISP0_DAT19__ECSPI2_SCLK 242
275MX53_PAD_DISP0_DAT19__AUDMUX_AUD5_RXD 243
276MX53_PAD_DISP0_DAT19__AUDMUX_AUD4_RXC 244
277MX53_PAD_DISP0_DAT19__SDMA_DEBUG_EVT_CHN_LINES_6 245
278MX53_PAD_DISP0_DAT19__EMI_EMI_DEBUG_24 246
279MX53_PAD_DISP0_DAT19__EMI_WEIM_CS_3 247
280MX53_PAD_DISP0_DAT20__IPU_DISP0_DAT_20 248
281MX53_PAD_DISP0_DAT20__GPIO5_14 249
282MX53_PAD_DISP0_DAT20__ECSPI1_SCLK 250
283MX53_PAD_DISP0_DAT20__AUDMUX_AUD4_TXC 251
284MX53_PAD_DISP0_DAT20__SDMA_DEBUG_EVT_CHN_LINES_7 252
285MX53_PAD_DISP0_DAT20__EMI_EMI_DEBUG_25 253
286MX53_PAD_DISP0_DAT20__SATA_PHY_TDI 254
287MX53_PAD_DISP0_DAT21__IPU_DISP0_DAT_21 255
288MX53_PAD_DISP0_DAT21__GPIO5_15 256
289MX53_PAD_DISP0_DAT21__ECSPI1_MOSI 257
290MX53_PAD_DISP0_DAT21__AUDMUX_AUD4_TXD 258
291MX53_PAD_DISP0_DAT21__SDMA_DEBUG_BUS_DEVICE_0 259
292MX53_PAD_DISP0_DAT21__EMI_EMI_DEBUG_26 260
293MX53_PAD_DISP0_DAT21__SATA_PHY_TDO 261
294MX53_PAD_DISP0_DAT22__IPU_DISP0_DAT_22 262
295MX53_PAD_DISP0_DAT22__GPIO5_16 263
296MX53_PAD_DISP0_DAT22__ECSPI1_MISO 264
297MX53_PAD_DISP0_DAT22__AUDMUX_AUD4_TXFS 265
298MX53_PAD_DISP0_DAT22__SDMA_DEBUG_BUS_DEVICE_1 266
299MX53_PAD_DISP0_DAT22__EMI_EMI_DEBUG_27 267
300MX53_PAD_DISP0_DAT22__SATA_PHY_TCK 268
301MX53_PAD_DISP0_DAT23__IPU_DISP0_DAT_23 269
302MX53_PAD_DISP0_DAT23__GPIO5_17 270
303MX53_PAD_DISP0_DAT23__ECSPI1_SS0 271
304MX53_PAD_DISP0_DAT23__AUDMUX_AUD4_RXD 272
305MX53_PAD_DISP0_DAT23__SDMA_DEBUG_BUS_DEVICE_2 273
306MX53_PAD_DISP0_DAT23__EMI_EMI_DEBUG_28 274
307MX53_PAD_DISP0_DAT23__SATA_PHY_TMS 275
308MX53_PAD_CSI0_PIXCLK__IPU_CSI0_PIXCLK 276
309MX53_PAD_CSI0_PIXCLK__GPIO5_18 277
310MX53_PAD_CSI0_PIXCLK__SDMA_DEBUG_PC_0 278
311MX53_PAD_CSI0_PIXCLK__EMI_EMI_DEBUG_29 279
312MX53_PAD_CSI0_MCLK__IPU_CSI0_HSYNC 280
313MX53_PAD_CSI0_MCLK__GPIO5_19 281
314MX53_PAD_CSI0_MCLK__CCM_CSI0_MCLK 282
315MX53_PAD_CSI0_MCLK__SDMA_DEBUG_PC_1 283
316MX53_PAD_CSI0_MCLK__EMI_EMI_DEBUG_30 284
317MX53_PAD_CSI0_MCLK__TPIU_TRCTL 285
318MX53_PAD_CSI0_DATA_EN__IPU_CSI0_DATA_EN 286
319MX53_PAD_CSI0_DATA_EN__GPIO5_20 287
320MX53_PAD_CSI0_DATA_EN__SDMA_DEBUG_PC_2 288
321MX53_PAD_CSI0_DATA_EN__EMI_EMI_DEBUG_31 289
322MX53_PAD_CSI0_DATA_EN__TPIU_TRCLK 290
323MX53_PAD_CSI0_VSYNC__IPU_CSI0_VSYNC 291
324MX53_PAD_CSI0_VSYNC__GPIO5_21 292
325MX53_PAD_CSI0_VSYNC__SDMA_DEBUG_PC_3 293
326MX53_PAD_CSI0_VSYNC__EMI_EMI_DEBUG_32 294
327MX53_PAD_CSI0_VSYNC__TPIU_TRACE_0 295
328MX53_PAD_CSI0_DAT4__IPU_CSI0_D_4 296
329MX53_PAD_CSI0_DAT4__GPIO5_22 297
330MX53_PAD_CSI0_DAT4__KPP_COL_5 298
331MX53_PAD_CSI0_DAT4__ECSPI1_SCLK 299
332MX53_PAD_CSI0_DAT4__USBOH3_USBH3_STP 300
333MX53_PAD_CSI0_DAT4__AUDMUX_AUD3_TXC 301
334MX53_PAD_CSI0_DAT4__EMI_EMI_DEBUG_33 302
335MX53_PAD_CSI0_DAT4__TPIU_TRACE_1 303
336MX53_PAD_CSI0_DAT5__IPU_CSI0_D_5 304
337MX53_PAD_CSI0_DAT5__GPIO5_23 305
338MX53_PAD_CSI0_DAT5__KPP_ROW_5 306
339MX53_PAD_CSI0_DAT5__ECSPI1_MOSI 307
340MX53_PAD_CSI0_DAT5__USBOH3_USBH3_NXT 308
341MX53_PAD_CSI0_DAT5__AUDMUX_AUD3_TXD 309
342MX53_PAD_CSI0_DAT5__EMI_EMI_DEBUG_34 310
343MX53_PAD_CSI0_DAT5__TPIU_TRACE_2 311
344MX53_PAD_CSI0_DAT6__IPU_CSI0_D_6 312
345MX53_PAD_CSI0_DAT6__GPIO5_24 313
346MX53_PAD_CSI0_DAT6__KPP_COL_6 314
347MX53_PAD_CSI0_DAT6__ECSPI1_MISO 315
348MX53_PAD_CSI0_DAT6__USBOH3_USBH3_CLK 316
349MX53_PAD_CSI0_DAT6__AUDMUX_AUD3_TXFS 317
350MX53_PAD_CSI0_DAT6__EMI_EMI_DEBUG_35 318
351MX53_PAD_CSI0_DAT6__TPIU_TRACE_3 319
352MX53_PAD_CSI0_DAT7__IPU_CSI0_D_7 320
353MX53_PAD_CSI0_DAT7__GPIO5_25 321
354MX53_PAD_CSI0_DAT7__KPP_ROW_6 322
355MX53_PAD_CSI0_DAT7__ECSPI1_SS0 323
356MX53_PAD_CSI0_DAT7__USBOH3_USBH3_DIR 324
357MX53_PAD_CSI0_DAT7__AUDMUX_AUD3_RXD 325
358MX53_PAD_CSI0_DAT7__EMI_EMI_DEBUG_36 326
359MX53_PAD_CSI0_DAT7__TPIU_TRACE_4 327
360MX53_PAD_CSI0_DAT8__IPU_CSI0_D_8 328
361MX53_PAD_CSI0_DAT8__GPIO5_26 329
362MX53_PAD_CSI0_DAT8__KPP_COL_7 330
363MX53_PAD_CSI0_DAT8__ECSPI2_SCLK 331
364MX53_PAD_CSI0_DAT8__USBOH3_USBH3_OC 332
365MX53_PAD_CSI0_DAT8__I2C1_SDA 333
366MX53_PAD_CSI0_DAT8__EMI_EMI_DEBUG_37 334
367MX53_PAD_CSI0_DAT8__TPIU_TRACE_5 335
368MX53_PAD_CSI0_DAT9__IPU_CSI0_D_9 336
369MX53_PAD_CSI0_DAT9__GPIO5_27 337
370MX53_PAD_CSI0_DAT9__KPP_ROW_7 338
371MX53_PAD_CSI0_DAT9__ECSPI2_MOSI 339
372MX53_PAD_CSI0_DAT9__USBOH3_USBH3_PWR 340
373MX53_PAD_CSI0_DAT9__I2C1_SCL 341
374MX53_PAD_CSI0_DAT9__EMI_EMI_DEBUG_38 342
375MX53_PAD_CSI0_DAT9__TPIU_TRACE_6 343
376MX53_PAD_CSI0_DAT10__IPU_CSI0_D_10 344
377MX53_PAD_CSI0_DAT10__GPIO5_28 345
378MX53_PAD_CSI0_DAT10__UART1_TXD_MUX 346
379MX53_PAD_CSI0_DAT10__ECSPI2_MISO 347
380MX53_PAD_CSI0_DAT10__AUDMUX_AUD3_RXC 348
381MX53_PAD_CSI0_DAT10__SDMA_DEBUG_PC_4 349
382MX53_PAD_CSI0_DAT10__EMI_EMI_DEBUG_39 350
383MX53_PAD_CSI0_DAT10__TPIU_TRACE_7 351
384MX53_PAD_CSI0_DAT11__IPU_CSI0_D_11 352
385MX53_PAD_CSI0_DAT11__GPIO5_29 353
386MX53_PAD_CSI0_DAT11__UART1_RXD_MUX 354
387MX53_PAD_CSI0_DAT11__ECSPI2_SS0 355
388MX53_PAD_CSI0_DAT11__AUDMUX_AUD3_RXFS 356
389MX53_PAD_CSI0_DAT11__SDMA_DEBUG_PC_5 357
390MX53_PAD_CSI0_DAT11__EMI_EMI_DEBUG_40 358
391MX53_PAD_CSI0_DAT11__TPIU_TRACE_8 359
392MX53_PAD_CSI0_DAT12__IPU_CSI0_D_12 360
393MX53_PAD_CSI0_DAT12__GPIO5_30 361
394MX53_PAD_CSI0_DAT12__UART4_TXD_MUX 362
395MX53_PAD_CSI0_DAT12__USBOH3_USBH3_DATA_0 363
396MX53_PAD_CSI0_DAT12__SDMA_DEBUG_PC_6 364
397MX53_PAD_CSI0_DAT12__EMI_EMI_DEBUG_41 365
398MX53_PAD_CSI0_DAT12__TPIU_TRACE_9 366
399MX53_PAD_CSI0_DAT13__IPU_CSI0_D_13 367
400MX53_PAD_CSI0_DAT13__GPIO5_31 368
401MX53_PAD_CSI0_DAT13__UART4_RXD_MUX 369
402MX53_PAD_CSI0_DAT13__USBOH3_USBH3_DATA_1 370
403MX53_PAD_CSI0_DAT13__SDMA_DEBUG_PC_7 371
404MX53_PAD_CSI0_DAT13__EMI_EMI_DEBUG_42 372
405MX53_PAD_CSI0_DAT13__TPIU_TRACE_10 373
406MX53_PAD_CSI0_DAT14__IPU_CSI0_D_14 374
407MX53_PAD_CSI0_DAT14__GPIO6_0 375
408MX53_PAD_CSI0_DAT14__UART5_TXD_MUX 376
409MX53_PAD_CSI0_DAT14__USBOH3_USBH3_DATA_2 377
410MX53_PAD_CSI0_DAT14__SDMA_DEBUG_PC_8 378
411MX53_PAD_CSI0_DAT14__EMI_EMI_DEBUG_43 379
412MX53_PAD_CSI0_DAT14__TPIU_TRACE_11 380
413MX53_PAD_CSI0_DAT15__IPU_CSI0_D_15 381
414MX53_PAD_CSI0_DAT15__GPIO6_1 382
415MX53_PAD_CSI0_DAT15__UART5_RXD_MUX 383
416MX53_PAD_CSI0_DAT15__USBOH3_USBH3_DATA_3 384
417MX53_PAD_CSI0_DAT15__SDMA_DEBUG_PC_9 385
418MX53_PAD_CSI0_DAT15__EMI_EMI_DEBUG_44 386
419MX53_PAD_CSI0_DAT15__TPIU_TRACE_12 387
420MX53_PAD_CSI0_DAT16__IPU_CSI0_D_16 388
421MX53_PAD_CSI0_DAT16__GPIO6_2 389
422MX53_PAD_CSI0_DAT16__UART4_RTS 390
423MX53_PAD_CSI0_DAT16__USBOH3_USBH3_DATA_4 391
424MX53_PAD_CSI0_DAT16__SDMA_DEBUG_PC_10 392
425MX53_PAD_CSI0_DAT16__EMI_EMI_DEBUG_45 393
426MX53_PAD_CSI0_DAT16__TPIU_TRACE_13 394
427MX53_PAD_CSI0_DAT17__IPU_CSI0_D_17 395
428MX53_PAD_CSI0_DAT17__GPIO6_3 396
429MX53_PAD_CSI0_DAT17__UART4_CTS 397
430MX53_PAD_CSI0_DAT17__USBOH3_USBH3_DATA_5 398
431MX53_PAD_CSI0_DAT17__SDMA_DEBUG_PC_11 399
432MX53_PAD_CSI0_DAT17__EMI_EMI_DEBUG_46 400
433MX53_PAD_CSI0_DAT17__TPIU_TRACE_14 401
434MX53_PAD_CSI0_DAT18__IPU_CSI0_D_18 402
435MX53_PAD_CSI0_DAT18__GPIO6_4 403
436MX53_PAD_CSI0_DAT18__UART5_RTS 404
437MX53_PAD_CSI0_DAT18__USBOH3_USBH3_DATA_6 405
438MX53_PAD_CSI0_DAT18__SDMA_DEBUG_PC_12 406
439MX53_PAD_CSI0_DAT18__EMI_EMI_DEBUG_47 407
440MX53_PAD_CSI0_DAT18__TPIU_TRACE_15 408
441MX53_PAD_CSI0_DAT19__IPU_CSI0_D_19 409
442MX53_PAD_CSI0_DAT19__GPIO6_5 410
443MX53_PAD_CSI0_DAT19__UART5_CTS 411
444MX53_PAD_CSI0_DAT19__USBOH3_USBH3_DATA_7 412
445MX53_PAD_CSI0_DAT19__SDMA_DEBUG_PC_13 413
446MX53_PAD_CSI0_DAT19__EMI_EMI_DEBUG_48 414
447MX53_PAD_CSI0_DAT19__USBPHY2_BISTOK 415
448MX53_PAD_EIM_A25__EMI_WEIM_A_25 416
449MX53_PAD_EIM_A25__GPIO5_2 417
450MX53_PAD_EIM_A25__ECSPI2_RDY 418
451MX53_PAD_EIM_A25__IPU_DI1_PIN12 419
452MX53_PAD_EIM_A25__CSPI_SS1 420
453MX53_PAD_EIM_A25__IPU_DI0_D1_CS 421
454MX53_PAD_EIM_A25__USBPHY1_BISTOK 422
455MX53_PAD_EIM_EB2__EMI_WEIM_EB_2 423
456MX53_PAD_EIM_EB2__GPIO2_30 424
457MX53_PAD_EIM_EB2__CCM_DI1_EXT_CLK 425
458MX53_PAD_EIM_EB2__IPU_SER_DISP1_CS 426
459MX53_PAD_EIM_EB2__ECSPI1_SS0 427
460MX53_PAD_EIM_EB2__I2C2_SCL 428
461MX53_PAD_EIM_D16__EMI_WEIM_D_16 429
462MX53_PAD_EIM_D16__GPIO3_16 430
463MX53_PAD_EIM_D16__IPU_DI0_PIN5 431
464MX53_PAD_EIM_D16__IPU_DISPB1_SER_CLK 432
465MX53_PAD_EIM_D16__ECSPI1_SCLK 433
466MX53_PAD_EIM_D16__I2C2_SDA 434
467MX53_PAD_EIM_D17__EMI_WEIM_D_17 435
468MX53_PAD_EIM_D17__GPIO3_17 436
469MX53_PAD_EIM_D17__IPU_DI0_PIN6 437
470MX53_PAD_EIM_D17__IPU_DISPB1_SER_DIN 438
471MX53_PAD_EIM_D17__ECSPI1_MISO 439
472MX53_PAD_EIM_D17__I2C3_SCL 440
473MX53_PAD_EIM_D18__EMI_WEIM_D_18 441
474MX53_PAD_EIM_D18__GPIO3_18 442
475MX53_PAD_EIM_D18__IPU_DI0_PIN7 443
476MX53_PAD_EIM_D18__IPU_DISPB1_SER_DIO 444
477MX53_PAD_EIM_D18__ECSPI1_MOSI 445
478MX53_PAD_EIM_D18__I2C3_SDA 446
479MX53_PAD_EIM_D18__IPU_DI1_D0_CS 447
480MX53_PAD_EIM_D19__EMI_WEIM_D_19 448
481MX53_PAD_EIM_D19__GPIO3_19 449
482MX53_PAD_EIM_D19__IPU_DI0_PIN8 450
483MX53_PAD_EIM_D19__IPU_DISPB1_SER_RS 451
484MX53_PAD_EIM_D19__ECSPI1_SS1 452
485MX53_PAD_EIM_D19__EPIT1_EPITO 453
486MX53_PAD_EIM_D19__UART1_CTS 454
487MX53_PAD_EIM_D19__USBOH3_USBH2_OC 455
488MX53_PAD_EIM_D20__EMI_WEIM_D_20 456
489MX53_PAD_EIM_D20__GPIO3_20 457
490MX53_PAD_EIM_D20__IPU_DI0_PIN16 458
491MX53_PAD_EIM_D20__IPU_SER_DISP0_CS 459
492MX53_PAD_EIM_D20__CSPI_SS0 460
493MX53_PAD_EIM_D20__EPIT2_EPITO 461
494MX53_PAD_EIM_D20__UART1_RTS 462
495MX53_PAD_EIM_D20__USBOH3_USBH2_PWR 463
496MX53_PAD_EIM_D21__EMI_WEIM_D_21 464
497MX53_PAD_EIM_D21__GPIO3_21 465
498MX53_PAD_EIM_D21__IPU_DI0_PIN17 466
499MX53_PAD_EIM_D21__IPU_DISPB0_SER_CLK 467
500MX53_PAD_EIM_D21__CSPI_SCLK 468
501MX53_PAD_EIM_D21__I2C1_SCL 469
502MX53_PAD_EIM_D21__USBOH3_USBOTG_OC 470
503MX53_PAD_EIM_D22__EMI_WEIM_D_22 471
504MX53_PAD_EIM_D22__GPIO3_22 472
505MX53_PAD_EIM_D22__IPU_DI0_PIN1 473
506MX53_PAD_EIM_D22__IPU_DISPB0_SER_DIN 474
507MX53_PAD_EIM_D22__CSPI_MISO 475
508MX53_PAD_EIM_D22__USBOH3_USBOTG_PWR 476
509MX53_PAD_EIM_D23__EMI_WEIM_D_23 477
510MX53_PAD_EIM_D23__GPIO3_23 478
511MX53_PAD_EIM_D23__UART3_CTS 479
512MX53_PAD_EIM_D23__UART1_DCD 480
513MX53_PAD_EIM_D23__IPU_DI0_D0_CS 481
514MX53_PAD_EIM_D23__IPU_DI1_PIN2 482
515MX53_PAD_EIM_D23__IPU_CSI1_DATA_EN 483
516MX53_PAD_EIM_D23__IPU_DI1_PIN14 484
517MX53_PAD_EIM_EB3__EMI_WEIM_EB_3 485
518MX53_PAD_EIM_EB3__GPIO2_31 486
519MX53_PAD_EIM_EB3__UART3_RTS 487
520MX53_PAD_EIM_EB3__UART1_RI 488
521MX53_PAD_EIM_EB3__IPU_DI1_PIN3 489
522MX53_PAD_EIM_EB3__IPU_CSI1_HSYNC 490
523MX53_PAD_EIM_EB3__IPU_DI1_PIN16 491
524MX53_PAD_EIM_D24__EMI_WEIM_D_24 492
525MX53_PAD_EIM_D24__GPIO3_24 493
526MX53_PAD_EIM_D24__UART3_TXD_MUX 494
527MX53_PAD_EIM_D24__ECSPI1_SS2 495
528MX53_PAD_EIM_D24__CSPI_SS2 496
529MX53_PAD_EIM_D24__AUDMUX_AUD5_RXFS 497
530MX53_PAD_EIM_D24__ECSPI2_SS2 498
531MX53_PAD_EIM_D24__UART1_DTR 499
532MX53_PAD_EIM_D25__EMI_WEIM_D_25 500
533MX53_PAD_EIM_D25__GPIO3_25 501
534MX53_PAD_EIM_D25__UART3_RXD_MUX 502
535MX53_PAD_EIM_D25__ECSPI1_SS3 503
536MX53_PAD_EIM_D25__CSPI_SS3 504
537MX53_PAD_EIM_D25__AUDMUX_AUD5_RXC 505
538MX53_PAD_EIM_D25__ECSPI2_SS3 506
539MX53_PAD_EIM_D25__UART1_DSR 507
540MX53_PAD_EIM_D26__EMI_WEIM_D_26 508
541MX53_PAD_EIM_D26__GPIO3_26 509
542MX53_PAD_EIM_D26__UART2_TXD_MUX 510
543MX53_PAD_EIM_D26__FIRI_RXD 511
544MX53_PAD_EIM_D26__IPU_CSI0_D_1 512
545MX53_PAD_EIM_D26__IPU_DI1_PIN11 513
546MX53_PAD_EIM_D26__IPU_SISG_2 514
547MX53_PAD_EIM_D26__IPU_DISP1_DAT_22 515
548MX53_PAD_EIM_D27__EMI_WEIM_D_27 516
549MX53_PAD_EIM_D27__GPIO3_27 517
550MX53_PAD_EIM_D27__UART2_RXD_MUX 518
551MX53_PAD_EIM_D27__FIRI_TXD 519
552MX53_PAD_EIM_D27__IPU_CSI0_D_0 520
553MX53_PAD_EIM_D27__IPU_DI1_PIN13 521
554MX53_PAD_EIM_D27__IPU_SISG_3 522
555MX53_PAD_EIM_D27__IPU_DISP1_DAT_23 523
556MX53_PAD_EIM_D28__EMI_WEIM_D_28 524
557MX53_PAD_EIM_D28__GPIO3_28 525
558MX53_PAD_EIM_D28__UART2_CTS 526
559MX53_PAD_EIM_D28__IPU_DISPB0_SER_DIO 527
560MX53_PAD_EIM_D28__CSPI_MOSI 528
561MX53_PAD_EIM_D28__I2C1_SDA 529
562MX53_PAD_EIM_D28__IPU_EXT_TRIG 530
563MX53_PAD_EIM_D28__IPU_DI0_PIN13 531
564MX53_PAD_EIM_D29__EMI_WEIM_D_29 532
565MX53_PAD_EIM_D29__GPIO3_29 533
566MX53_PAD_EIM_D29__UART2_RTS 534
567MX53_PAD_EIM_D29__IPU_DISPB0_SER_RS 535
568MX53_PAD_EIM_D29__CSPI_SS0 536
569MX53_PAD_EIM_D29__IPU_DI1_PIN15 537
570MX53_PAD_EIM_D29__IPU_CSI1_VSYNC 538
571MX53_PAD_EIM_D29__IPU_DI0_PIN14 539
572MX53_PAD_EIM_D30__EMI_WEIM_D_30 540
573MX53_PAD_EIM_D30__GPIO3_30 541
574MX53_PAD_EIM_D30__UART3_CTS 542
575MX53_PAD_EIM_D30__IPU_CSI0_D_3 543
576MX53_PAD_EIM_D30__IPU_DI0_PIN11 544
577MX53_PAD_EIM_D30__IPU_DISP1_DAT_21 545
578MX53_PAD_EIM_D30__USBOH3_USBH1_OC 546
579MX53_PAD_EIM_D30__USBOH3_USBH2_OC 547
580MX53_PAD_EIM_D31__EMI_WEIM_D_31 548
581MX53_PAD_EIM_D31__GPIO3_31 549
582MX53_PAD_EIM_D31__UART3_RTS 550
583MX53_PAD_EIM_D31__IPU_CSI0_D_2 551
584MX53_PAD_EIM_D31__IPU_DI0_PIN12 552
585MX53_PAD_EIM_D31__IPU_DISP1_DAT_20 553
586MX53_PAD_EIM_D31__USBOH3_USBH1_PWR 554
587MX53_PAD_EIM_D31__USBOH3_USBH2_PWR 555
588MX53_PAD_EIM_A24__EMI_WEIM_A_24 556
589MX53_PAD_EIM_A24__GPIO5_4 557
590MX53_PAD_EIM_A24__IPU_DISP1_DAT_19 558
591MX53_PAD_EIM_A24__IPU_CSI1_D_19 559
592MX53_PAD_EIM_A24__IPU_SISG_2 560
593MX53_PAD_EIM_A24__USBPHY2_BVALID 561
594MX53_PAD_EIM_A23__EMI_WEIM_A_23 562
595MX53_PAD_EIM_A23__GPIO6_6 563
596MX53_PAD_EIM_A23__IPU_DISP1_DAT_18 564
597MX53_PAD_EIM_A23__IPU_CSI1_D_18 565
598MX53_PAD_EIM_A23__IPU_SISG_3 566
599MX53_PAD_EIM_A23__USBPHY2_ENDSESSION 567
600MX53_PAD_EIM_A22__EMI_WEIM_A_22 568
601MX53_PAD_EIM_A22__GPIO2_16 569
602MX53_PAD_EIM_A22__IPU_DISP1_DAT_17 570
603MX53_PAD_EIM_A22__IPU_CSI1_D_17 571
604MX53_PAD_EIM_A22__SRC_BT_CFG1_7 572
605MX53_PAD_EIM_A21__EMI_WEIM_A_21 573
606MX53_PAD_EIM_A21__GPIO2_17 574
607MX53_PAD_EIM_A21__IPU_DISP1_DAT_16 575
608MX53_PAD_EIM_A21__IPU_CSI1_D_16 576
609MX53_PAD_EIM_A21__SRC_BT_CFG1_6 577
610MX53_PAD_EIM_A20__EMI_WEIM_A_20 578
611MX53_PAD_EIM_A20__GPIO2_18 579
612MX53_PAD_EIM_A20__IPU_DISP1_DAT_15 580
613MX53_PAD_EIM_A20__IPU_CSI1_D_15 581
614MX53_PAD_EIM_A20__SRC_BT_CFG1_5 582
615MX53_PAD_EIM_A19__EMI_WEIM_A_19 583
616MX53_PAD_EIM_A19__GPIO2_19 584
617MX53_PAD_EIM_A19__IPU_DISP1_DAT_14 585
618MX53_PAD_EIM_A19__IPU_CSI1_D_14 586
619MX53_PAD_EIM_A19__SRC_BT_CFG1_4 587
620MX53_PAD_EIM_A18__EMI_WEIM_A_18 588
621MX53_PAD_EIM_A18__GPIO2_20 589
622MX53_PAD_EIM_A18__IPU_DISP1_DAT_13 590
623MX53_PAD_EIM_A18__IPU_CSI1_D_13 591
624MX53_PAD_EIM_A18__SRC_BT_CFG1_3 592
625MX53_PAD_EIM_A17__EMI_WEIM_A_17 593
626MX53_PAD_EIM_A17__GPIO2_21 594
627MX53_PAD_EIM_A17__IPU_DISP1_DAT_12 595
628MX53_PAD_EIM_A17__IPU_CSI1_D_12 596
629MX53_PAD_EIM_A17__SRC_BT_CFG1_2 597
630MX53_PAD_EIM_A16__EMI_WEIM_A_16 598
631MX53_PAD_EIM_A16__GPIO2_22 599
632MX53_PAD_EIM_A16__IPU_DI1_DISP_CLK 600
633MX53_PAD_EIM_A16__IPU_CSI1_PIXCLK 601
634MX53_PAD_EIM_A16__SRC_BT_CFG1_1 602
635MX53_PAD_EIM_CS0__EMI_WEIM_CS_0 603
636MX53_PAD_EIM_CS0__GPIO2_23 604
637MX53_PAD_EIM_CS0__ECSPI2_SCLK 605
638MX53_PAD_EIM_CS0__IPU_DI1_PIN5 606
639MX53_PAD_EIM_CS1__EMI_WEIM_CS_1 607
640MX53_PAD_EIM_CS1__GPIO2_24 608
641MX53_PAD_EIM_CS1__ECSPI2_MOSI 609
642MX53_PAD_EIM_CS1__IPU_DI1_PIN6 610
643MX53_PAD_EIM_OE__EMI_WEIM_OE 611
644MX53_PAD_EIM_OE__GPIO2_25 612
645MX53_PAD_EIM_OE__ECSPI2_MISO 613
646MX53_PAD_EIM_OE__IPU_DI1_PIN7 614
647MX53_PAD_EIM_OE__USBPHY2_IDDIG 615
648MX53_PAD_EIM_RW__EMI_WEIM_RW 616
649MX53_PAD_EIM_RW__GPIO2_26 617
650MX53_PAD_EIM_RW__ECSPI2_SS0 618
651MX53_PAD_EIM_RW__IPU_DI1_PIN8 619
652MX53_PAD_EIM_RW__USBPHY2_HOSTDISCONNECT 620
653MX53_PAD_EIM_LBA__EMI_WEIM_LBA 621
654MX53_PAD_EIM_LBA__GPIO2_27 622
655MX53_PAD_EIM_LBA__ECSPI2_SS1 623
656MX53_PAD_EIM_LBA__IPU_DI1_PIN17 624
657MX53_PAD_EIM_LBA__SRC_BT_CFG1_0 625
658MX53_PAD_EIM_EB0__EMI_WEIM_EB_0 626
659MX53_PAD_EIM_EB0__GPIO2_28 627
660MX53_PAD_EIM_EB0__IPU_DISP1_DAT_11 628
661MX53_PAD_EIM_EB0__IPU_CSI1_D_11 629
662MX53_PAD_EIM_EB0__GPC_PMIC_RDY 630
663MX53_PAD_EIM_EB0__SRC_BT_CFG2_7 631
664MX53_PAD_EIM_EB1__EMI_WEIM_EB_1 632
665MX53_PAD_EIM_EB1__GPIO2_29 633
666MX53_PAD_EIM_EB1__IPU_DISP1_DAT_10 634
667MX53_PAD_EIM_EB1__IPU_CSI1_D_10 635
668MX53_PAD_EIM_EB1__SRC_BT_CFG2_6 636
669MX53_PAD_EIM_DA0__EMI_NAND_WEIM_DA_0 637
670MX53_PAD_EIM_DA0__GPIO3_0 638
671MX53_PAD_EIM_DA0__IPU_DISP1_DAT_9 639
672MX53_PAD_EIM_DA0__IPU_CSI1_D_9 640
673MX53_PAD_EIM_DA0__SRC_BT_CFG2_5 641
674MX53_PAD_EIM_DA1__EMI_NAND_WEIM_DA_1 642
675MX53_PAD_EIM_DA1__GPIO3_1 643
676MX53_PAD_EIM_DA1__IPU_DISP1_DAT_8 644
677MX53_PAD_EIM_DA1__IPU_CSI1_D_8 645
678MX53_PAD_EIM_DA1__SRC_BT_CFG2_4 646
679MX53_PAD_EIM_DA2__EMI_NAND_WEIM_DA_2 647
680MX53_PAD_EIM_DA2__GPIO3_2 648
681MX53_PAD_EIM_DA2__IPU_DISP1_DAT_7 649
682MX53_PAD_EIM_DA2__IPU_CSI1_D_7 650
683MX53_PAD_EIM_DA2__SRC_BT_CFG2_3 651
684MX53_PAD_EIM_DA3__EMI_NAND_WEIM_DA_3 652
685MX53_PAD_EIM_DA3__GPIO3_3 653
686MX53_PAD_EIM_DA3__IPU_DISP1_DAT_6 654
687MX53_PAD_EIM_DA3__IPU_CSI1_D_6 655
688MX53_PAD_EIM_DA3__SRC_BT_CFG2_2 656
689MX53_PAD_EIM_DA4__EMI_NAND_WEIM_DA_4 657
690MX53_PAD_EIM_DA4__GPIO3_4 658
691MX53_PAD_EIM_DA4__IPU_DISP1_DAT_5 659
692MX53_PAD_EIM_DA4__IPU_CSI1_D_5 660
693MX53_PAD_EIM_DA4__SRC_BT_CFG3_7 661
694MX53_PAD_EIM_DA5__EMI_NAND_WEIM_DA_5 662
695MX53_PAD_EIM_DA5__GPIO3_5 663
696MX53_PAD_EIM_DA5__IPU_DISP1_DAT_4 664
697MX53_PAD_EIM_DA5__IPU_CSI1_D_4 665
698MX53_PAD_EIM_DA5__SRC_BT_CFG3_6 666
699MX53_PAD_EIM_DA6__EMI_NAND_WEIM_DA_6 667
700MX53_PAD_EIM_DA6__GPIO3_6 668
701MX53_PAD_EIM_DA6__IPU_DISP1_DAT_3 669
702MX53_PAD_EIM_DA6__IPU_CSI1_D_3 670
703MX53_PAD_EIM_DA6__SRC_BT_CFG3_5 671
704MX53_PAD_EIM_DA7__EMI_NAND_WEIM_DA_7 672
705MX53_PAD_EIM_DA7__GPIO3_7 673
706MX53_PAD_EIM_DA7__IPU_DISP1_DAT_2 674
707MX53_PAD_EIM_DA7__IPU_CSI1_D_2 675
708MX53_PAD_EIM_DA7__SRC_BT_CFG3_4 676
709MX53_PAD_EIM_DA8__EMI_NAND_WEIM_DA_8 677
710MX53_PAD_EIM_DA8__GPIO3_8 678
711MX53_PAD_EIM_DA8__IPU_DISP1_DAT_1 679
712MX53_PAD_EIM_DA8__IPU_CSI1_D_1 680
713MX53_PAD_EIM_DA8__SRC_BT_CFG3_3 681
714MX53_PAD_EIM_DA9__EMI_NAND_WEIM_DA_9 682
715MX53_PAD_EIM_DA9__GPIO3_9 683
716MX53_PAD_EIM_DA9__IPU_DISP1_DAT_0 684
717MX53_PAD_EIM_DA9__IPU_CSI1_D_0 685
718MX53_PAD_EIM_DA9__SRC_BT_CFG3_2 686
719MX53_PAD_EIM_DA10__EMI_NAND_WEIM_DA_10 687
720MX53_PAD_EIM_DA10__GPIO3_10 688
721MX53_PAD_EIM_DA10__IPU_DI1_PIN15 689
722MX53_PAD_EIM_DA10__IPU_CSI1_DATA_EN 690
723MX53_PAD_EIM_DA10__SRC_BT_CFG3_1 691
724MX53_PAD_EIM_DA11__EMI_NAND_WEIM_DA_11 692
725MX53_PAD_EIM_DA11__GPIO3_11 693
726MX53_PAD_EIM_DA11__IPU_DI1_PIN2 694
727MX53_PAD_EIM_DA11__IPU_CSI1_HSYNC 695
728MX53_PAD_EIM_DA12__EMI_NAND_WEIM_DA_12 696
729MX53_PAD_EIM_DA12__GPIO3_12 697
730MX53_PAD_EIM_DA12__IPU_DI1_PIN3 698
731MX53_PAD_EIM_DA12__IPU_CSI1_VSYNC 699
732MX53_PAD_EIM_DA13__EMI_NAND_WEIM_DA_13 700
733MX53_PAD_EIM_DA13__GPIO3_13 701
734MX53_PAD_EIM_DA13__IPU_DI1_D0_CS 702
735MX53_PAD_EIM_DA13__CCM_DI1_EXT_CLK 703
736MX53_PAD_EIM_DA14__EMI_NAND_WEIM_DA_14 704
737MX53_PAD_EIM_DA14__GPIO3_14 705
738MX53_PAD_EIM_DA14__IPU_DI1_D1_CS 706
739MX53_PAD_EIM_DA14__CCM_DI0_EXT_CLK 707
740MX53_PAD_EIM_DA15__EMI_NAND_WEIM_DA_15 708
741MX53_PAD_EIM_DA15__GPIO3_15 709
742MX53_PAD_EIM_DA15__IPU_DI1_PIN1 710
743MX53_PAD_EIM_DA15__IPU_DI1_PIN4 711
744MX53_PAD_NANDF_WE_B__EMI_NANDF_WE_B 712
745MX53_PAD_NANDF_WE_B__GPIO6_12 713
746MX53_PAD_NANDF_RE_B__EMI_NANDF_RE_B 714
747MX53_PAD_NANDF_RE_B__GPIO6_13 715
748MX53_PAD_EIM_WAIT__EMI_WEIM_WAIT 716
749MX53_PAD_EIM_WAIT__GPIO5_0 717
750MX53_PAD_EIM_WAIT__EMI_WEIM_DTACK_B 718
751MX53_PAD_LVDS1_TX3_P__GPIO6_22 719
752MX53_PAD_LVDS1_TX3_P__LDB_LVDS1_TX3 720
753MX53_PAD_LVDS1_TX2_P__GPIO6_24 721
754MX53_PAD_LVDS1_TX2_P__LDB_LVDS1_TX2 722
755MX53_PAD_LVDS1_CLK_P__GPIO6_26 723
756MX53_PAD_LVDS1_CLK_P__LDB_LVDS1_CLK 724
757MX53_PAD_LVDS1_TX1_P__GPIO6_28 725
758MX53_PAD_LVDS1_TX1_P__LDB_LVDS1_TX1 726
759MX53_PAD_LVDS1_TX0_P__GPIO6_30 727
760MX53_PAD_LVDS1_TX0_P__LDB_LVDS1_TX0 728
761MX53_PAD_LVDS0_TX3_P__GPIO7_22 729
762MX53_PAD_LVDS0_TX3_P__LDB_LVDS0_TX3 730
763MX53_PAD_LVDS0_CLK_P__GPIO7_24 731
764MX53_PAD_LVDS0_CLK_P__LDB_LVDS0_CLK 732
765MX53_PAD_LVDS0_TX2_P__GPIO7_26 733
766MX53_PAD_LVDS0_TX2_P__LDB_LVDS0_TX2 734
767MX53_PAD_LVDS0_TX1_P__GPIO7_28 735
768MX53_PAD_LVDS0_TX1_P__LDB_LVDS0_TX1 736
769MX53_PAD_LVDS0_TX0_P__GPIO7_30 737
770MX53_PAD_LVDS0_TX0_P__LDB_LVDS0_TX0 738
771MX53_PAD_GPIO_10__GPIO4_0 739
772MX53_PAD_GPIO_10__OSC32k_32K_OUT 740
773MX53_PAD_GPIO_11__GPIO4_1 741
774MX53_PAD_GPIO_12__GPIO4_2 742
775MX53_PAD_GPIO_13__GPIO4_3 743
776MX53_PAD_GPIO_14__GPIO4_4 744
777MX53_PAD_NANDF_CLE__EMI_NANDF_CLE 745
778MX53_PAD_NANDF_CLE__GPIO6_7 746
779MX53_PAD_NANDF_CLE__USBPHY1_VSTATUS_0 747
780MX53_PAD_NANDF_ALE__EMI_NANDF_ALE 748
781MX53_PAD_NANDF_ALE__GPIO6_8 749
782MX53_PAD_NANDF_ALE__USBPHY1_VSTATUS_1 750
783MX53_PAD_NANDF_WP_B__EMI_NANDF_WP_B 751
784MX53_PAD_NANDF_WP_B__GPIO6_9 752
785MX53_PAD_NANDF_WP_B__USBPHY1_VSTATUS_2 753
786MX53_PAD_NANDF_RB0__EMI_NANDF_RB_0 754
787MX53_PAD_NANDF_RB0__GPIO6_10 755
788MX53_PAD_NANDF_RB0__USBPHY1_VSTATUS_3 756
789MX53_PAD_NANDF_CS0__EMI_NANDF_CS_0 757
790MX53_PAD_NANDF_CS0__GPIO6_11 758
791MX53_PAD_NANDF_CS0__USBPHY1_VSTATUS_4 759
792MX53_PAD_NANDF_CS1__EMI_NANDF_CS_1 760
793MX53_PAD_NANDF_CS1__GPIO6_14 761
794MX53_PAD_NANDF_CS1__MLB_MLBCLK 762
795MX53_PAD_NANDF_CS1__USBPHY1_VSTATUS_5 763
796MX53_PAD_NANDF_CS2__EMI_NANDF_CS_2 764
797MX53_PAD_NANDF_CS2__GPIO6_15 765
798MX53_PAD_NANDF_CS2__IPU_SISG_0 766
799MX53_PAD_NANDF_CS2__ESAI1_TX0 767
800MX53_PAD_NANDF_CS2__EMI_WEIM_CRE 768
801MX53_PAD_NANDF_CS2__CCM_CSI0_MCLK 769
802MX53_PAD_NANDF_CS2__MLB_MLBSIG 770
803MX53_PAD_NANDF_CS2__USBPHY1_VSTATUS_6 771
804MX53_PAD_NANDF_CS3__EMI_NANDF_CS_3 772
805MX53_PAD_NANDF_CS3__GPIO6_16 773
806MX53_PAD_NANDF_CS3__IPU_SISG_1 774
807MX53_PAD_NANDF_CS3__ESAI1_TX1 775
808MX53_PAD_NANDF_CS3__EMI_WEIM_A_26 776
809MX53_PAD_NANDF_CS3__MLB_MLBDAT 777
810MX53_PAD_NANDF_CS3__USBPHY1_VSTATUS_7 778
811MX53_PAD_FEC_MDIO__FEC_MDIO 779
812MX53_PAD_FEC_MDIO__GPIO1_22 780
813MX53_PAD_FEC_MDIO__ESAI1_SCKR 781
814MX53_PAD_FEC_MDIO__FEC_COL 782
815MX53_PAD_FEC_MDIO__RTC_CE_RTC_PS2 783
816MX53_PAD_FEC_MDIO__SDMA_DEBUG_BUS_DEVICE_3 784
817MX53_PAD_FEC_MDIO__EMI_EMI_DEBUG_49 785
818MX53_PAD_FEC_REF_CLK__FEC_TX_CLK 786
819MX53_PAD_FEC_REF_CLK__GPIO1_23 787
820MX53_PAD_FEC_REF_CLK__ESAI1_FSR 788
821MX53_PAD_FEC_REF_CLK__SDMA_DEBUG_BUS_DEVICE_4 789
822MX53_PAD_FEC_REF_CLK__EMI_EMI_DEBUG_50 790
823MX53_PAD_FEC_RX_ER__FEC_RX_ER 791
824MX53_PAD_FEC_RX_ER__GPIO1_24 792
825MX53_PAD_FEC_RX_ER__ESAI1_HCKR 793
826MX53_PAD_FEC_RX_ER__FEC_RX_CLK 794
827MX53_PAD_FEC_RX_ER__RTC_CE_RTC_PS3 795
828MX53_PAD_FEC_CRS_DV__FEC_RX_DV 796
829MX53_PAD_FEC_CRS_DV__GPIO1_25 797
830MX53_PAD_FEC_CRS_DV__ESAI1_SCKT 798
831MX53_PAD_FEC_RXD1__FEC_RDATA_1 799
832MX53_PAD_FEC_RXD1__GPIO1_26 800
833MX53_PAD_FEC_RXD1__ESAI1_FST 801
834MX53_PAD_FEC_RXD1__MLB_MLBSIG 802
835MX53_PAD_FEC_RXD1__RTC_CE_RTC_PS1 803
836MX53_PAD_FEC_RXD0__FEC_RDATA_0 804
837MX53_PAD_FEC_RXD0__GPIO1_27 805
838MX53_PAD_FEC_RXD0__ESAI1_HCKT 806
839MX53_PAD_FEC_RXD0__OSC32k_32K_OUT 807
840MX53_PAD_FEC_TX_EN__FEC_TX_EN 808
841MX53_PAD_FEC_TX_EN__GPIO1_28 809
842MX53_PAD_FEC_TX_EN__ESAI1_TX3_RX2 810
843MX53_PAD_FEC_TXD1__FEC_TDATA_1 811
844MX53_PAD_FEC_TXD1__GPIO1_29 812
845MX53_PAD_FEC_TXD1__ESAI1_TX2_RX3 813
846MX53_PAD_FEC_TXD1__MLB_MLBCLK 814
847MX53_PAD_FEC_TXD1__RTC_CE_RTC_PRSC_CLK 815
848MX53_PAD_FEC_TXD0__FEC_TDATA_0 816
849MX53_PAD_FEC_TXD0__GPIO1_30 817
850MX53_PAD_FEC_TXD0__ESAI1_TX4_RX1 818
851MX53_PAD_FEC_TXD0__USBPHY2_DATAOUT_0 819
852MX53_PAD_FEC_MDC__FEC_MDC 820
853MX53_PAD_FEC_MDC__GPIO1_31 821
854MX53_PAD_FEC_MDC__ESAI1_TX5_RX0 822
855MX53_PAD_FEC_MDC__MLB_MLBDAT 823
856MX53_PAD_FEC_MDC__RTC_CE_RTC_ALARM1_TRIG 824
857MX53_PAD_FEC_MDC__USBPHY2_DATAOUT_1 825
858MX53_PAD_PATA_DIOW__PATA_DIOW 826
859MX53_PAD_PATA_DIOW__GPIO6_17 827
860MX53_PAD_PATA_DIOW__UART1_TXD_MUX 828
861MX53_PAD_PATA_DIOW__USBPHY2_DATAOUT_2 829
862MX53_PAD_PATA_DMACK__PATA_DMACK 830
863MX53_PAD_PATA_DMACK__GPIO6_18 831
864MX53_PAD_PATA_DMACK__UART1_RXD_MUX 832
865MX53_PAD_PATA_DMACK__USBPHY2_DATAOUT_3 833
866MX53_PAD_PATA_DMARQ__PATA_DMARQ 834
867MX53_PAD_PATA_DMARQ__GPIO7_0 835
868MX53_PAD_PATA_DMARQ__UART2_TXD_MUX 836
869MX53_PAD_PATA_DMARQ__CCM_CCM_OUT_0 837
870MX53_PAD_PATA_DMARQ__USBPHY2_DATAOUT_4 838
871MX53_PAD_PATA_BUFFER_EN__PATA_BUFFER_EN 839
872MX53_PAD_PATA_BUFFER_EN__GPIO7_1 840
873MX53_PAD_PATA_BUFFER_EN__UART2_RXD_MUX 841
874MX53_PAD_PATA_BUFFER_EN__CCM_CCM_OUT_1 842
875MX53_PAD_PATA_BUFFER_EN__USBPHY2_DATAOUT_5 843
876MX53_PAD_PATA_INTRQ__PATA_INTRQ 844
877MX53_PAD_PATA_INTRQ__GPIO7_2 845
878MX53_PAD_PATA_INTRQ__UART2_CTS 846
879MX53_PAD_PATA_INTRQ__CAN1_TXCAN 847
880MX53_PAD_PATA_INTRQ__CCM_CCM_OUT_2 848
881MX53_PAD_PATA_INTRQ__USBPHY2_DATAOUT_6 849
882MX53_PAD_PATA_DIOR__PATA_DIOR 850
883MX53_PAD_PATA_DIOR__GPIO7_3 851
884MX53_PAD_PATA_DIOR__UART2_RTS 852
885MX53_PAD_PATA_DIOR__CAN1_RXCAN 853
886MX53_PAD_PATA_DIOR__USBPHY2_DATAOUT_7 854
887MX53_PAD_PATA_RESET_B__PATA_PATA_RESET_B 855
888MX53_PAD_PATA_RESET_B__GPIO7_4 856
889MX53_PAD_PATA_RESET_B__ESDHC3_CMD 857
890MX53_PAD_PATA_RESET_B__UART1_CTS 858
891MX53_PAD_PATA_RESET_B__CAN2_TXCAN 859
892MX53_PAD_PATA_RESET_B__USBPHY1_DATAOUT_0 860
893MX53_PAD_PATA_IORDY__PATA_IORDY 861
894MX53_PAD_PATA_IORDY__GPIO7_5 862
895MX53_PAD_PATA_IORDY__ESDHC3_CLK 863
896MX53_PAD_PATA_IORDY__UART1_RTS 864
897MX53_PAD_PATA_IORDY__CAN2_RXCAN 865
898MX53_PAD_PATA_IORDY__USBPHY1_DATAOUT_1 866
899MX53_PAD_PATA_DA_0__PATA_DA_0 867
900MX53_PAD_PATA_DA_0__GPIO7_6 868
901MX53_PAD_PATA_DA_0__ESDHC3_RST 869
902MX53_PAD_PATA_DA_0__OWIRE_LINE 870
903MX53_PAD_PATA_DA_0__USBPHY1_DATAOUT_2 871
904MX53_PAD_PATA_DA_1__PATA_DA_1 872
905MX53_PAD_PATA_DA_1__GPIO7_7 873
906MX53_PAD_PATA_DA_1__ESDHC4_CMD 874
907MX53_PAD_PATA_DA_1__UART3_CTS 875
908MX53_PAD_PATA_DA_1__USBPHY1_DATAOUT_3 876
909MX53_PAD_PATA_DA_2__PATA_DA_2 877
910MX53_PAD_PATA_DA_2__GPIO7_8 878
911MX53_PAD_PATA_DA_2__ESDHC4_CLK 879
912MX53_PAD_PATA_DA_2__UART3_RTS 880
913MX53_PAD_PATA_DA_2__USBPHY1_DATAOUT_4 881
914MX53_PAD_PATA_CS_0__PATA_CS_0 882
915MX53_PAD_PATA_CS_0__GPIO7_9 883
916MX53_PAD_PATA_CS_0__UART3_TXD_MUX 884
917MX53_PAD_PATA_CS_0__USBPHY1_DATAOUT_5 885
918MX53_PAD_PATA_CS_1__PATA_CS_1 886
919MX53_PAD_PATA_CS_1__GPIO7_10 887
920MX53_PAD_PATA_CS_1__UART3_RXD_MUX 888
921MX53_PAD_PATA_CS_1__USBPHY1_DATAOUT_6 889
922MX53_PAD_PATA_DATA0__PATA_DATA_0 890
923MX53_PAD_PATA_DATA0__GPIO2_0 891
924MX53_PAD_PATA_DATA0__EMI_NANDF_D_0 892
925MX53_PAD_PATA_DATA0__ESDHC3_DAT4 893
926MX53_PAD_PATA_DATA0__GPU3d_GPU_DEBUG_OUT_0 894
927MX53_PAD_PATA_DATA0__IPU_DIAG_BUS_0 895
928MX53_PAD_PATA_DATA0__USBPHY1_DATAOUT_7 896
929MX53_PAD_PATA_DATA1__PATA_DATA_1 897
930MX53_PAD_PATA_DATA1__GPIO2_1 898
931MX53_PAD_PATA_DATA1__EMI_NANDF_D_1 899
932MX53_PAD_PATA_DATA1__ESDHC3_DAT5 900
933MX53_PAD_PATA_DATA1__GPU3d_GPU_DEBUG_OUT_1 901
934MX53_PAD_PATA_DATA1__IPU_DIAG_BUS_1 902
935MX53_PAD_PATA_DATA2__PATA_DATA_2 903
936MX53_PAD_PATA_DATA2__GPIO2_2 904
937MX53_PAD_PATA_DATA2__EMI_NANDF_D_2 905
938MX53_PAD_PATA_DATA2__ESDHC3_DAT6 906
939MX53_PAD_PATA_DATA2__GPU3d_GPU_DEBUG_OUT_2 907
940MX53_PAD_PATA_DATA2__IPU_DIAG_BUS_2 908
941MX53_PAD_PATA_DATA3__PATA_DATA_3 909
942MX53_PAD_PATA_DATA3__GPIO2_3 910
943MX53_PAD_PATA_DATA3__EMI_NANDF_D_3 911
944MX53_PAD_PATA_DATA3__ESDHC3_DAT7 912
945MX53_PAD_PATA_DATA3__GPU3d_GPU_DEBUG_OUT_3 913
946MX53_PAD_PATA_DATA3__IPU_DIAG_BUS_3 914
947MX53_PAD_PATA_DATA4__PATA_DATA_4 915
948MX53_PAD_PATA_DATA4__GPIO2_4 916
949MX53_PAD_PATA_DATA4__EMI_NANDF_D_4 917
950MX53_PAD_PATA_DATA4__ESDHC4_DAT4 918
951MX53_PAD_PATA_DATA4__GPU3d_GPU_DEBUG_OUT_4 919
952MX53_PAD_PATA_DATA4__IPU_DIAG_BUS_4 920
953MX53_PAD_PATA_DATA5__PATA_DATA_5 921
954MX53_PAD_PATA_DATA5__GPIO2_5 922
955MX53_PAD_PATA_DATA5__EMI_NANDF_D_5 923
956MX53_PAD_PATA_DATA5__ESDHC4_DAT5 924
957MX53_PAD_PATA_DATA5__GPU3d_GPU_DEBUG_OUT_5 925
958MX53_PAD_PATA_DATA5__IPU_DIAG_BUS_5 926
959MX53_PAD_PATA_DATA6__PATA_DATA_6 927
960MX53_PAD_PATA_DATA6__GPIO2_6 928
961MX53_PAD_PATA_DATA6__EMI_NANDF_D_6 929
962MX53_PAD_PATA_DATA6__ESDHC4_DAT6 930
963MX53_PAD_PATA_DATA6__GPU3d_GPU_DEBUG_OUT_6 931
964MX53_PAD_PATA_DATA6__IPU_DIAG_BUS_6 932
965MX53_PAD_PATA_DATA7__PATA_DATA_7 933
966MX53_PAD_PATA_DATA7__GPIO2_7 934
967MX53_PAD_PATA_DATA7__EMI_NANDF_D_7 935
968MX53_PAD_PATA_DATA7__ESDHC4_DAT7 936
969MX53_PAD_PATA_DATA7__GPU3d_GPU_DEBUG_OUT_7 937
970MX53_PAD_PATA_DATA7__IPU_DIAG_BUS_7 938
971MX53_PAD_PATA_DATA8__PATA_DATA_8 939
972MX53_PAD_PATA_DATA8__GPIO2_8 940
973MX53_PAD_PATA_DATA8__ESDHC1_DAT4 941
974MX53_PAD_PATA_DATA8__EMI_NANDF_D_8 942
975MX53_PAD_PATA_DATA8__ESDHC3_DAT0 943
976MX53_PAD_PATA_DATA8__GPU3d_GPU_DEBUG_OUT_8 944
977MX53_PAD_PATA_DATA8__IPU_DIAG_BUS_8 945
978MX53_PAD_PATA_DATA9__PATA_DATA_9 946
979MX53_PAD_PATA_DATA9__GPIO2_9 947
980MX53_PAD_PATA_DATA9__ESDHC1_DAT5 948
981MX53_PAD_PATA_DATA9__EMI_NANDF_D_9 949
982MX53_PAD_PATA_DATA9__ESDHC3_DAT1 950
983MX53_PAD_PATA_DATA9__GPU3d_GPU_DEBUG_OUT_9 951
984MX53_PAD_PATA_DATA9__IPU_DIAG_BUS_9 952
985MX53_PAD_PATA_DATA10__PATA_DATA_10 953
986MX53_PAD_PATA_DATA10__GPIO2_10 954
987MX53_PAD_PATA_DATA10__ESDHC1_DAT6 955
988MX53_PAD_PATA_DATA10__EMI_NANDF_D_10 956
989MX53_PAD_PATA_DATA10__ESDHC3_DAT2 957
990MX53_PAD_PATA_DATA10__GPU3d_GPU_DEBUG_OUT_10 958
991MX53_PAD_PATA_DATA10__IPU_DIAG_BUS_10 959
992MX53_PAD_PATA_DATA11__PATA_DATA_11 960
993MX53_PAD_PATA_DATA11__GPIO2_11 961
994MX53_PAD_PATA_DATA11__ESDHC1_DAT7 962
995MX53_PAD_PATA_DATA11__EMI_NANDF_D_11 963
996MX53_PAD_PATA_DATA11__ESDHC3_DAT3 964
997MX53_PAD_PATA_DATA11__GPU3d_GPU_DEBUG_OUT_11 965
998MX53_PAD_PATA_DATA11__IPU_DIAG_BUS_11 966
999MX53_PAD_PATA_DATA12__PATA_DATA_12 967
1000MX53_PAD_PATA_DATA12__GPIO2_12 968
1001MX53_PAD_PATA_DATA12__ESDHC2_DAT4 969
1002MX53_PAD_PATA_DATA12__EMI_NANDF_D_12 970
1003MX53_PAD_PATA_DATA12__ESDHC4_DAT0 971
1004MX53_PAD_PATA_DATA12__GPU3d_GPU_DEBUG_OUT_12 972
1005MX53_PAD_PATA_DATA12__IPU_DIAG_BUS_12 973
1006MX53_PAD_PATA_DATA13__PATA_DATA_13 974
1007MX53_PAD_PATA_DATA13__GPIO2_13 975
1008MX53_PAD_PATA_DATA13__ESDHC2_DAT5 976
1009MX53_PAD_PATA_DATA13__EMI_NANDF_D_13 977
1010MX53_PAD_PATA_DATA13__ESDHC4_DAT1 978
1011MX53_PAD_PATA_DATA13__GPU3d_GPU_DEBUG_OUT_13 979
1012MX53_PAD_PATA_DATA13__IPU_DIAG_BUS_13 980
1013MX53_PAD_PATA_DATA14__PATA_DATA_14 981
1014MX53_PAD_PATA_DATA14__GPIO2_14 982
1015MX53_PAD_PATA_DATA14__ESDHC2_DAT6 983
1016MX53_PAD_PATA_DATA14__EMI_NANDF_D_14 984
1017MX53_PAD_PATA_DATA14__ESDHC4_DAT2 985
1018MX53_PAD_PATA_DATA14__GPU3d_GPU_DEBUG_OUT_14 986
1019MX53_PAD_PATA_DATA14__IPU_DIAG_BUS_14 987
1020MX53_PAD_PATA_DATA15__PATA_DATA_15 988
1021MX53_PAD_PATA_DATA15__GPIO2_15 989
1022MX53_PAD_PATA_DATA15__ESDHC2_DAT7 990
1023MX53_PAD_PATA_DATA15__EMI_NANDF_D_15 991
1024MX53_PAD_PATA_DATA15__ESDHC4_DAT3 992
1025MX53_PAD_PATA_DATA15__GPU3d_GPU_DEBUG_OUT_15 993
1026MX53_PAD_PATA_DATA15__IPU_DIAG_BUS_15 994
1027MX53_PAD_SD1_DATA0__ESDHC1_DAT0 995
1028MX53_PAD_SD1_DATA0__GPIO1_16 996
1029MX53_PAD_SD1_DATA0__GPT_CAPIN1 997
1030MX53_PAD_SD1_DATA0__CSPI_MISO 998
1031MX53_PAD_SD1_DATA0__CCM_PLL3_BYP 999
1032MX53_PAD_SD1_DATA1__ESDHC1_DAT1 1000
1033MX53_PAD_SD1_DATA1__GPIO1_17 1001
1034MX53_PAD_SD1_DATA1__GPT_CAPIN2 1002
1035MX53_PAD_SD1_DATA1__CSPI_SS0 1003
1036MX53_PAD_SD1_DATA1__CCM_PLL4_BYP 1004
1037MX53_PAD_SD1_CMD__ESDHC1_CMD 1005
1038MX53_PAD_SD1_CMD__GPIO1_18 1006
1039MX53_PAD_SD1_CMD__GPT_CMPOUT1 1007
1040MX53_PAD_SD1_CMD__CSPI_MOSI 1008
1041MX53_PAD_SD1_CMD__CCM_PLL1_BYP 1009
1042MX53_PAD_SD1_DATA2__ESDHC1_DAT2 1010
1043MX53_PAD_SD1_DATA2__GPIO1_19 1011
1044MX53_PAD_SD1_DATA2__GPT_CMPOUT2 1012
1045MX53_PAD_SD1_DATA2__PWM2_PWMO 1013
1046MX53_PAD_SD1_DATA2__WDOG1_WDOG_B 1014
1047MX53_PAD_SD1_DATA2__CSPI_SS1 1015
1048MX53_PAD_SD1_DATA2__WDOG1_WDOG_RST_B_DEB 1016
1049MX53_PAD_SD1_DATA2__CCM_PLL2_BYP 1017
1050MX53_PAD_SD1_CLK__ESDHC1_CLK 1018
1051MX53_PAD_SD1_CLK__GPIO1_20 1019
1052MX53_PAD_SD1_CLK__OSC32k_32K_OUT 1020
1053MX53_PAD_SD1_CLK__GPT_CLKIN 1021
1054MX53_PAD_SD1_CLK__CSPI_SCLK 1022
1055MX53_PAD_SD1_CLK__SATA_PHY_DTB_0 1023
1056MX53_PAD_SD1_DATA3__ESDHC1_DAT3 1024
1057MX53_PAD_SD1_DATA3__GPIO1_21 1025
1058MX53_PAD_SD1_DATA3__GPT_CMPOUT3 1026
1059MX53_PAD_SD1_DATA3__PWM1_PWMO 1027
1060MX53_PAD_SD1_DATA3__WDOG2_WDOG_B 1028
1061MX53_PAD_SD1_DATA3__CSPI_SS2 1029
1062MX53_PAD_SD1_DATA3__WDOG2_WDOG_RST_B_DEB 1030
1063MX53_PAD_SD1_DATA3__SATA_PHY_DTB_1 1031
1064MX53_PAD_SD2_CLK__ESDHC2_CLK 1032
1065MX53_PAD_SD2_CLK__GPIO1_10 1033
1066MX53_PAD_SD2_CLK__KPP_COL_5 1034
1067MX53_PAD_SD2_CLK__AUDMUX_AUD4_RXFS 1035
1068MX53_PAD_SD2_CLK__CSPI_SCLK 1036
1069MX53_PAD_SD2_CLK__SCC_RANDOM_V 1037
1070MX53_PAD_SD2_CMD__ESDHC2_CMD 1038
1071MX53_PAD_SD2_CMD__GPIO1_11 1039
1072MX53_PAD_SD2_CMD__KPP_ROW_5 1040
1073MX53_PAD_SD2_CMD__AUDMUX_AUD4_RXC 1041
1074MX53_PAD_SD2_CMD__CSPI_MOSI 1042
1075MX53_PAD_SD2_CMD__SCC_RANDOM 1043
1076MX53_PAD_SD2_DATA3__ESDHC2_DAT3 1044
1077MX53_PAD_SD2_DATA3__GPIO1_12 1045
1078MX53_PAD_SD2_DATA3__KPP_COL_6 1046
1079MX53_PAD_SD2_DATA3__AUDMUX_AUD4_TXC 1047
1080MX53_PAD_SD2_DATA3__CSPI_SS2 1048
1081MX53_PAD_SD2_DATA3__SJC_DONE 1049
1082MX53_PAD_SD2_DATA2__ESDHC2_DAT2 1050
1083MX53_PAD_SD2_DATA2__GPIO1_13 1051
1084MX53_PAD_SD2_DATA2__KPP_ROW_6 1052
1085MX53_PAD_SD2_DATA2__AUDMUX_AUD4_TXD 1053
1086MX53_PAD_SD2_DATA2__CSPI_SS1 1054
1087MX53_PAD_SD2_DATA2__SJC_FAIL 1055
1088MX53_PAD_SD2_DATA1__ESDHC2_DAT1 1056
1089MX53_PAD_SD2_DATA1__GPIO1_14 1057
1090MX53_PAD_SD2_DATA1__KPP_COL_7 1058
1091MX53_PAD_SD2_DATA1__AUDMUX_AUD4_TXFS 1059
1092MX53_PAD_SD2_DATA1__CSPI_SS0 1060
1093MX53_PAD_SD2_DATA1__RTIC_SEC_VIO 1061
1094MX53_PAD_SD2_DATA0__ESDHC2_DAT0 1062
1095MX53_PAD_SD2_DATA0__GPIO1_15 1063
1096MX53_PAD_SD2_DATA0__KPP_ROW_7 1064
1097MX53_PAD_SD2_DATA0__AUDMUX_AUD4_RXD 1065
1098MX53_PAD_SD2_DATA0__CSPI_MISO 1066
1099MX53_PAD_SD2_DATA0__RTIC_DONE_INT 1067
1100MX53_PAD_GPIO_0__CCM_CLKO 1068
1101MX53_PAD_GPIO_0__GPIO1_0 1069
1102MX53_PAD_GPIO_0__KPP_COL_5 1070
1103MX53_PAD_GPIO_0__CCM_SSI_EXT1_CLK 1071
1104MX53_PAD_GPIO_0__EPIT1_EPITO 1072
1105MX53_PAD_GPIO_0__SRTC_ALARM_DEB 1073
1106MX53_PAD_GPIO_0__USBOH3_USBH1_PWR 1074
1107MX53_PAD_GPIO_0__CSU_TD 1075
1108MX53_PAD_GPIO_1__ESAI1_SCKR 1076
1109MX53_PAD_GPIO_1__GPIO1_1 1077
1110MX53_PAD_GPIO_1__KPP_ROW_5 1078
1111MX53_PAD_GPIO_1__CCM_SSI_EXT2_CLK 1079
1112MX53_PAD_GPIO_1__PWM2_PWMO 1080
1113MX53_PAD_GPIO_1__WDOG2_WDOG_B 1081
1114MX53_PAD_GPIO_1__ESDHC1_CD 1082
1115MX53_PAD_GPIO_1__SRC_TESTER_ACK 1083
1116MX53_PAD_GPIO_9__ESAI1_FSR 1084
1117MX53_PAD_GPIO_9__GPIO1_9 1085
1118MX53_PAD_GPIO_9__KPP_COL_6 1086
1119MX53_PAD_GPIO_9__CCM_REF_EN_B 1087
1120MX53_PAD_GPIO_9__PWM1_PWMO 1088
1121MX53_PAD_GPIO_9__WDOG1_WDOG_B 1089
1122MX53_PAD_GPIO_9__ESDHC1_WP 1090
1123MX53_PAD_GPIO_9__SCC_FAIL_STATE 1091
1124MX53_PAD_GPIO_3__ESAI1_HCKR 1092
1125MX53_PAD_GPIO_3__GPIO1_3 1093
1126MX53_PAD_GPIO_3__I2C3_SCL 1094
1127MX53_PAD_GPIO_3__DPLLIP1_TOG_EN 1095
1128MX53_PAD_GPIO_3__CCM_CLKO2 1096
1129MX53_PAD_GPIO_3__OBSERVE_MUX_OBSRV_INT_OUT0 1097
1130MX53_PAD_GPIO_3__USBOH3_USBH1_OC 1098
1131MX53_PAD_GPIO_3__MLB_MLBCLK 1099
1132MX53_PAD_GPIO_6__ESAI1_SCKT 1100
1133MX53_PAD_GPIO_6__GPIO1_6 1101
1134MX53_PAD_GPIO_6__I2C3_SDA 1102
1135MX53_PAD_GPIO_6__CCM_CCM_OUT_0 1103
1136MX53_PAD_GPIO_6__CSU_CSU_INT_DEB 1104
1137MX53_PAD_GPIO_6__OBSERVE_MUX_OBSRV_INT_OUT1 1105
1138MX53_PAD_GPIO_6__ESDHC2_LCTL 1106
1139MX53_PAD_GPIO_6__MLB_MLBSIG 1107
1140MX53_PAD_GPIO_2__ESAI1_FST 1108
1141MX53_PAD_GPIO_2__GPIO1_2 1109
1142MX53_PAD_GPIO_2__KPP_ROW_6 1110
1143MX53_PAD_GPIO_2__CCM_CCM_OUT_1 1111
1144MX53_PAD_GPIO_2__CSU_CSU_ALARM_AUT_0 1112
1145MX53_PAD_GPIO_2__OBSERVE_MUX_OBSRV_INT_OUT2 1113
1146MX53_PAD_GPIO_2__ESDHC2_WP 1114
1147MX53_PAD_GPIO_2__MLB_MLBDAT 1115
1148MX53_PAD_GPIO_4__ESAI1_HCKT 1116
1149MX53_PAD_GPIO_4__GPIO1_4 1117
1150MX53_PAD_GPIO_4__KPP_COL_7 1118
1151MX53_PAD_GPIO_4__CCM_CCM_OUT_2 1119
1152MX53_PAD_GPIO_4__CSU_CSU_ALARM_AUT_1 1120
1153MX53_PAD_GPIO_4__OBSERVE_MUX_OBSRV_INT_OUT3 1121
1154MX53_PAD_GPIO_4__ESDHC2_CD 1122
1155MX53_PAD_GPIO_4__SCC_SEC_STATE 1123
1156MX53_PAD_GPIO_5__ESAI1_TX2_RX3 1124
1157MX53_PAD_GPIO_5__GPIO1_5 1125
1158MX53_PAD_GPIO_5__KPP_ROW_7 1126
1159MX53_PAD_GPIO_5__CCM_CLKO 1127
1160MX53_PAD_GPIO_5__CSU_CSU_ALARM_AUT_2 1128
1161MX53_PAD_GPIO_5__OBSERVE_MUX_OBSRV_INT_OUT4 1129
1162MX53_PAD_GPIO_5__I2C3_SCL 1130
1163MX53_PAD_GPIO_5__CCM_PLL1_BYP 1131
1164MX53_PAD_GPIO_7__ESAI1_TX4_RX1 1132
1165MX53_PAD_GPIO_7__GPIO1_7 1133
1166MX53_PAD_GPIO_7__EPIT1_EPITO 1134
1167MX53_PAD_GPIO_7__CAN1_TXCAN 1135
1168MX53_PAD_GPIO_7__UART2_TXD_MUX 1136
1169MX53_PAD_GPIO_7__FIRI_RXD 1137
1170MX53_PAD_GPIO_7__SPDIF_PLOCK 1138
1171MX53_PAD_GPIO_7__CCM_PLL2_BYP 1139
1172MX53_PAD_GPIO_8__ESAI1_TX5_RX0 1140
1173MX53_PAD_GPIO_8__GPIO1_8 1141
1174MX53_PAD_GPIO_8__EPIT2_EPITO 1142
1175MX53_PAD_GPIO_8__CAN1_RXCAN 1143
1176MX53_PAD_GPIO_8__UART2_RXD_MUX 1144
1177MX53_PAD_GPIO_8__FIRI_TXD 1145
1178MX53_PAD_GPIO_8__SPDIF_SRCLK 1146
1179MX53_PAD_GPIO_8__CCM_PLL3_BYP 1147
1180MX53_PAD_GPIO_16__ESAI1_TX3_RX2 1148
1181MX53_PAD_GPIO_16__GPIO7_11 1149
1182MX53_PAD_GPIO_16__TZIC_PWRFAIL_INT 1150
1183MX53_PAD_GPIO_16__RTC_CE_RTC_EXT_TRIG1 1151
1184MX53_PAD_GPIO_16__SPDIF_IN1 1152
1185MX53_PAD_GPIO_16__I2C3_SDA 1153
1186MX53_PAD_GPIO_16__SJC_DE_B 1154
1187MX53_PAD_GPIO_17__ESAI1_TX0 1155
1188MX53_PAD_GPIO_17__GPIO7_12 1156
1189MX53_PAD_GPIO_17__SDMA_EXT_EVENT_0 1157
1190MX53_PAD_GPIO_17__GPC_PMIC_RDY 1158
1191MX53_PAD_GPIO_17__RTC_CE_RTC_FSV_TRIG 1159
1192MX53_PAD_GPIO_17__SPDIF_OUT1 1160
1193MX53_PAD_GPIO_17__IPU_SNOOP2 1161
1194MX53_PAD_GPIO_17__SJC_JTAG_ACT 1162
1195MX53_PAD_GPIO_18__ESAI1_TX1 1163
1196MX53_PAD_GPIO_18__GPIO7_13 1164
1197MX53_PAD_GPIO_18__SDMA_EXT_EVENT_1 1165
1198MX53_PAD_GPIO_18__OWIRE_LINE 1166
1199MX53_PAD_GPIO_18__RTC_CE_RTC_ALARM2_TRIG 1167
1200MX53_PAD_GPIO_18__CCM_ASRC_EXT_CLK 1168
1201MX53_PAD_GPIO_18__ESDHC1_LCTL 1169
1202MX53_PAD_GPIO_18__SRC_SYSTEM_RST 1170
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt
new file mode 100644
index 000000000000..a4119f6422d9
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt
@@ -0,0 +1,1630 @@
1* Freescale IMX6Q IOMUX Controller
2
3Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
4and usage.
5
6Required properties:
7- compatible: "fsl,imx6q-iomuxc"
8- fsl,pins: two integers array, represents a group of pins mux and config
9 setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a
10 pin working on a specific function, CONFIG is the pad setting value like
11 pull-up for this pin. Please refer to imx6q datasheet for the valid pad
12 config settings.
13
14CONFIG bits definition:
15PAD_CTL_HYS (1 << 16)
16PAD_CTL_PUS_100K_DOWN (0 << 14)
17PAD_CTL_PUS_47K_UP (1 << 14)
18PAD_CTL_PUS_100K_UP (2 << 14)
19PAD_CTL_PUS_22K_UP (3 << 14)
20PAD_CTL_PUE (1 << 13)
21PAD_CTL_PKE (1 << 12)
22PAD_CTL_ODE (1 << 11)
23PAD_CTL_SPEED_LOW (1 << 6)
24PAD_CTL_SPEED_MED (2 << 6)
25PAD_CTL_SPEED_HIGH (3 << 6)
26PAD_CTL_DSE_DISABLE (0 << 3)
27PAD_CTL_DSE_240ohm (1 << 3)
28PAD_CTL_DSE_120ohm (2 << 3)
29PAD_CTL_DSE_80ohm (3 << 3)
30PAD_CTL_DSE_60ohm (4 << 3)
31PAD_CTL_DSE_48ohm (5 << 3)
32PAD_CTL_DSE_40ohm (6 << 3)
33PAD_CTL_DSE_34ohm (7 << 3)
34PAD_CTL_SRE_FAST (1 << 0)
35PAD_CTL_SRE_SLOW (0 << 0)
36
37See below for available PIN_FUNC_ID for imx6q:
38MX6Q_PAD_SD2_DAT1__USDHC2_DAT1 0
39MX6Q_PAD_SD2_DAT1__ECSPI5_SS0 1
40MX6Q_PAD_SD2_DAT1__WEIM_WEIM_CS_2 2
41MX6Q_PAD_SD2_DAT1__AUDMUX_AUD4_TXFS 3
42MX6Q_PAD_SD2_DAT1__KPP_COL_7 4
43MX6Q_PAD_SD2_DAT1__GPIO_1_14 5
44MX6Q_PAD_SD2_DAT1__CCM_WAIT 6
45MX6Q_PAD_SD2_DAT1__ANATOP_TESTO_0 7
46MX6Q_PAD_SD2_DAT2__USDHC2_DAT2 8
47MX6Q_PAD_SD2_DAT2__ECSPI5_SS1 9
48MX6Q_PAD_SD2_DAT2__WEIM_WEIM_CS_3 10
49MX6Q_PAD_SD2_DAT2__AUDMUX_AUD4_TXD 11
50MX6Q_PAD_SD2_DAT2__KPP_ROW_6 12
51MX6Q_PAD_SD2_DAT2__GPIO_1_13 13
52MX6Q_PAD_SD2_DAT2__CCM_STOP 14
53MX6Q_PAD_SD2_DAT2__ANATOP_TESTO_1 15
54MX6Q_PAD_SD2_DAT0__USDHC2_DAT0 16
55MX6Q_PAD_SD2_DAT0__ECSPI5_MISO 17
56MX6Q_PAD_SD2_DAT0__AUDMUX_AUD4_RXD 18
57MX6Q_PAD_SD2_DAT0__KPP_ROW_7 19
58MX6Q_PAD_SD2_DAT0__GPIO_1_15 20
59MX6Q_PAD_SD2_DAT0__DCIC2_DCIC_OUT 21
60MX6Q_PAD_SD2_DAT0__TESTO_2 22
61MX6Q_PAD_RGMII_TXC__USBOH3_H2_DATA 23
62MX6Q_PAD_RGMII_TXC__ENET_RGMII_TXC 24
63MX6Q_PAD_RGMII_TXC__SPDIF_SPDIF_EXTCLK 25
64MX6Q_PAD_RGMII_TXC__GPIO_6_19 26
65MX6Q_PAD_RGMII_TXC__MIPI_CORE_DPHY_IN_0 27
66MX6Q_PAD_RGMII_TXC__ANATOP_24M_OUT 28
67MX6Q_PAD_RGMII_TD0__MIPI_HSI_CRL_TX_RDY 29
68MX6Q_PAD_RGMII_TD0__ENET_RGMII_TD0 30
69MX6Q_PAD_RGMII_TD0__GPIO_6_20 31
70MX6Q_PAD_RGMII_TD0__MIPI_CORE_DPHY_IN_1 32
71MX6Q_PAD_RGMII_TD1__MIPI_HSI_CRL_RX_FLG 33
72MX6Q_PAD_RGMII_TD1__ENET_RGMII_TD1 34
73MX6Q_PAD_RGMII_TD1__GPIO_6_21 35
74MX6Q_PAD_RGMII_TD1__MIPI_CORE_DPHY_IN_2 36
75MX6Q_PAD_RGMII_TD1__CCM_PLL3_BYP 37
76MX6Q_PAD_RGMII_TD2__MIPI_HSI_CRL_RX_DTA 38
77MX6Q_PAD_RGMII_TD2__ENET_RGMII_TD2 39
78MX6Q_PAD_RGMII_TD2__GPIO_6_22 40
79MX6Q_PAD_RGMII_TD2__MIPI_CORE_DPHY_IN_3 41
80MX6Q_PAD_RGMII_TD2__CCM_PLL2_BYP 42
81MX6Q_PAD_RGMII_TD3__MIPI_HSI_CRL_RX_WAK 43
82MX6Q_PAD_RGMII_TD3__ENET_RGMII_TD3 44
83MX6Q_PAD_RGMII_TD3__GPIO_6_23 45
84MX6Q_PAD_RGMII_TD3__MIPI_CORE_DPHY_IN_4 46
85MX6Q_PAD_RGMII_RX_CTL__USBOH3_H3_DATA 47
86MX6Q_PAD_RGMII_RX_CTL__RGMII_RX_CTL 48
87MX6Q_PAD_RGMII_RX_CTL__GPIO_6_24 49
88MX6Q_PAD_RGMII_RX_CTL__MIPI_DPHY_IN_5 50
89MX6Q_PAD_RGMII_RD0__MIPI_HSI_CRL_RX_RDY 51
90MX6Q_PAD_RGMII_RD0__ENET_RGMII_RD0 52
91MX6Q_PAD_RGMII_RD0__GPIO_6_25 53
92MX6Q_PAD_RGMII_RD0__MIPI_CORE_DPHY_IN_6 54
93MX6Q_PAD_RGMII_TX_CTL__USBOH3_H2_STROBE 55
94MX6Q_PAD_RGMII_TX_CTL__RGMII_TX_CTL 56
95MX6Q_PAD_RGMII_TX_CTL__GPIO_6_26 57
96MX6Q_PAD_RGMII_TX_CTL__CORE_DPHY_IN_7 58
97MX6Q_PAD_RGMII_TX_CTL__ANATOP_REF_OUT 59
98MX6Q_PAD_RGMII_RD1__MIPI_HSI_CTRL_TX_FL 60
99MX6Q_PAD_RGMII_RD1__ENET_RGMII_RD1 61
100MX6Q_PAD_RGMII_RD1__GPIO_6_27 62
101MX6Q_PAD_RGMII_RD1__CORE_DPHY_TEST_IN_8 63
102MX6Q_PAD_RGMII_RD1__SJC_FAIL 64
103MX6Q_PAD_RGMII_RD2__MIPI_HSI_CRL_TX_DTA 65
104MX6Q_PAD_RGMII_RD2__ENET_RGMII_RD2 66
105MX6Q_PAD_RGMII_RD2__GPIO_6_28 67
106MX6Q_PAD_RGMII_RD2__MIPI_CORE_DPHY_IN_9 68
107MX6Q_PAD_RGMII_RD3__MIPI_HSI_CRL_TX_WAK 69
108MX6Q_PAD_RGMII_RD3__ENET_RGMII_RD3 70
109MX6Q_PAD_RGMII_RD3__GPIO_6_29 71
110MX6Q_PAD_RGMII_RD3__MIPI_CORE_DPHY_IN10 72
111MX6Q_PAD_RGMII_RXC__USBOH3_H3_STROBE 73
112MX6Q_PAD_RGMII_RXC__ENET_RGMII_RXC 74
113MX6Q_PAD_RGMII_RXC__GPIO_6_30 75
114MX6Q_PAD_RGMII_RXC__MIPI_CORE_DPHY_IN11 76
115MX6Q_PAD_EIM_A25__WEIM_WEIM_A_25 77
116MX6Q_PAD_EIM_A25__ECSPI4_SS1 78
117MX6Q_PAD_EIM_A25__ECSPI2_RDY 79
118MX6Q_PAD_EIM_A25__IPU1_DI1_PIN12 80
119MX6Q_PAD_EIM_A25__IPU1_DI0_D1_CS 81
120MX6Q_PAD_EIM_A25__GPIO_5_2 82
121MX6Q_PAD_EIM_A25__HDMI_TX_CEC_LINE 83
122MX6Q_PAD_EIM_A25__PL301_PER1_HBURST_0 84
123MX6Q_PAD_EIM_EB2__WEIM_WEIM_EB_2 85
124MX6Q_PAD_EIM_EB2__ECSPI1_SS0 86
125MX6Q_PAD_EIM_EB2__CCM_DI1_EXT_CLK 87
126MX6Q_PAD_EIM_EB2__IPU2_CSI1_D_19 88
127MX6Q_PAD_EIM_EB2__HDMI_TX_DDC_SCL 89
128MX6Q_PAD_EIM_EB2__GPIO_2_30 90
129MX6Q_PAD_EIM_EB2__I2C2_SCL 91
130MX6Q_PAD_EIM_EB2__SRC_BT_CFG_30 92
131MX6Q_PAD_EIM_D16__WEIM_WEIM_D_16 93
132MX6Q_PAD_EIM_D16__ECSPI1_SCLK 94
133MX6Q_PAD_EIM_D16__IPU1_DI0_PIN5 95
134MX6Q_PAD_EIM_D16__IPU2_CSI1_D_18 96
135MX6Q_PAD_EIM_D16__HDMI_TX_DDC_SDA 97
136MX6Q_PAD_EIM_D16__GPIO_3_16 98
137MX6Q_PAD_EIM_D16__I2C2_SDA 99
138MX6Q_PAD_EIM_D17__WEIM_WEIM_D_17 100
139MX6Q_PAD_EIM_D17__ECSPI1_MISO 101
140MX6Q_PAD_EIM_D17__IPU1_DI0_PIN6 102
141MX6Q_PAD_EIM_D17__IPU2_CSI1_PIXCLK 103
142MX6Q_PAD_EIM_D17__DCIC1_DCIC_OUT 104
143MX6Q_PAD_EIM_D17__GPIO_3_17 105
144MX6Q_PAD_EIM_D17__I2C3_SCL 106
145MX6Q_PAD_EIM_D17__PL301_PER1_HBURST_1 107
146MX6Q_PAD_EIM_D18__WEIM_WEIM_D_18 108
147MX6Q_PAD_EIM_D18__ECSPI1_MOSI 109
148MX6Q_PAD_EIM_D18__IPU1_DI0_PIN7 110
149MX6Q_PAD_EIM_D18__IPU2_CSI1_D_17 111
150MX6Q_PAD_EIM_D18__IPU1_DI1_D0_CS 112
151MX6Q_PAD_EIM_D18__GPIO_3_18 113
152MX6Q_PAD_EIM_D18__I2C3_SDA 114
153MX6Q_PAD_EIM_D18__PL301_PER1_HBURST_2 115
154MX6Q_PAD_EIM_D19__WEIM_WEIM_D_19 116
155MX6Q_PAD_EIM_D19__ECSPI1_SS1 117
156MX6Q_PAD_EIM_D19__IPU1_DI0_PIN8 118
157MX6Q_PAD_EIM_D19__IPU2_CSI1_D_16 119
158MX6Q_PAD_EIM_D19__UART1_CTS 120
159MX6Q_PAD_EIM_D19__GPIO_3_19 121
160MX6Q_PAD_EIM_D19__EPIT1_EPITO 122
161MX6Q_PAD_EIM_D19__PL301_PER1_HRESP 123
162MX6Q_PAD_EIM_D20__WEIM_WEIM_D_20 124
163MX6Q_PAD_EIM_D20__ECSPI4_SS0 125
164MX6Q_PAD_EIM_D20__IPU1_DI0_PIN16 126
165MX6Q_PAD_EIM_D20__IPU2_CSI1_D_15 127
166MX6Q_PAD_EIM_D20__UART1_RTS 128
167MX6Q_PAD_EIM_D20__GPIO_3_20 129
168MX6Q_PAD_EIM_D20__EPIT2_EPITO 130
169MX6Q_PAD_EIM_D21__WEIM_WEIM_D_21 131
170MX6Q_PAD_EIM_D21__ECSPI4_SCLK 132
171MX6Q_PAD_EIM_D21__IPU1_DI0_PIN17 133
172MX6Q_PAD_EIM_D21__IPU2_CSI1_D_11 134
173MX6Q_PAD_EIM_D21__USBOH3_USBOTG_OC 135
174MX6Q_PAD_EIM_D21__GPIO_3_21 136
175MX6Q_PAD_EIM_D21__I2C1_SCL 137
176MX6Q_PAD_EIM_D21__SPDIF_IN1 138
177MX6Q_PAD_EIM_D22__WEIM_WEIM_D_22 139
178MX6Q_PAD_EIM_D22__ECSPI4_MISO 140
179MX6Q_PAD_EIM_D22__IPU1_DI0_PIN1 141
180MX6Q_PAD_EIM_D22__IPU2_CSI1_D_10 142
181MX6Q_PAD_EIM_D22__USBOH3_USBOTG_PWR 143
182MX6Q_PAD_EIM_D22__GPIO_3_22 144
183MX6Q_PAD_EIM_D22__SPDIF_OUT1 145
184MX6Q_PAD_EIM_D22__PL301_PER1_HWRITE 146
185MX6Q_PAD_EIM_D23__WEIM_WEIM_D_23 147
186MX6Q_PAD_EIM_D23__IPU1_DI0_D0_CS 148
187MX6Q_PAD_EIM_D23__UART3_CTS 149
188MX6Q_PAD_EIM_D23__UART1_DCD 150
189MX6Q_PAD_EIM_D23__IPU2_CSI1_DATA_EN 151
190MX6Q_PAD_EIM_D23__GPIO_3_23 152
191MX6Q_PAD_EIM_D23__IPU1_DI1_PIN2 153
192MX6Q_PAD_EIM_D23__IPU1_DI1_PIN14 154
193MX6Q_PAD_EIM_EB3__WEIM_WEIM_EB_3 155
194MX6Q_PAD_EIM_EB3__ECSPI4_RDY 156
195MX6Q_PAD_EIM_EB3__UART3_RTS 157
196MX6Q_PAD_EIM_EB3__UART1_RI 158
197MX6Q_PAD_EIM_EB3__IPU2_CSI1_HSYNC 159
198MX6Q_PAD_EIM_EB3__GPIO_2_31 160
199MX6Q_PAD_EIM_EB3__IPU1_DI1_PIN3 161
200MX6Q_PAD_EIM_EB3__SRC_BT_CFG_31 162
201MX6Q_PAD_EIM_D24__WEIM_WEIM_D_24 163
202MX6Q_PAD_EIM_D24__ECSPI4_SS2 164
203MX6Q_PAD_EIM_D24__UART3_TXD 165
204MX6Q_PAD_EIM_D24__ECSPI1_SS2 166
205MX6Q_PAD_EIM_D24__ECSPI2_SS2 167
206MX6Q_PAD_EIM_D24__GPIO_3_24 168
207MX6Q_PAD_EIM_D24__AUDMUX_AUD5_RXFS 169
208MX6Q_PAD_EIM_D24__UART1_DTR 170
209MX6Q_PAD_EIM_D25__WEIM_WEIM_D_25 171
210MX6Q_PAD_EIM_D25__ECSPI4_SS3 172
211MX6Q_PAD_EIM_D25__UART3_RXD 173
212MX6Q_PAD_EIM_D25__ECSPI1_SS3 174
213MX6Q_PAD_EIM_D25__ECSPI2_SS3 175
214MX6Q_PAD_EIM_D25__GPIO_3_25 176
215MX6Q_PAD_EIM_D25__AUDMUX_AUD5_RXC 177
216MX6Q_PAD_EIM_D25__UART1_DSR 178
217MX6Q_PAD_EIM_D26__WEIM_WEIM_D_26 179
218MX6Q_PAD_EIM_D26__IPU1_DI1_PIN11 180
219MX6Q_PAD_EIM_D26__IPU1_CSI0_D_1 181
220MX6Q_PAD_EIM_D26__IPU2_CSI1_D_14 182
221MX6Q_PAD_EIM_D26__UART2_TXD 183
222MX6Q_PAD_EIM_D26__GPIO_3_26 184
223MX6Q_PAD_EIM_D26__IPU1_SISG_2 185
224MX6Q_PAD_EIM_D26__IPU1_DISP1_DAT_22 186
225MX6Q_PAD_EIM_D27__WEIM_WEIM_D_27 187
226MX6Q_PAD_EIM_D27__IPU1_DI1_PIN13 188
227MX6Q_PAD_EIM_D27__IPU1_CSI0_D_0 189
228MX6Q_PAD_EIM_D27__IPU2_CSI1_D_13 190
229MX6Q_PAD_EIM_D27__UART2_RXD 191
230MX6Q_PAD_EIM_D27__GPIO_3_27 192
231MX6Q_PAD_EIM_D27__IPU1_SISG_3 193
232MX6Q_PAD_EIM_D27__IPU1_DISP1_DAT_23 194
233MX6Q_PAD_EIM_D28__WEIM_WEIM_D_28 195
234MX6Q_PAD_EIM_D28__I2C1_SDA 196
235MX6Q_PAD_EIM_D28__ECSPI4_MOSI 197
236MX6Q_PAD_EIM_D28__IPU2_CSI1_D_12 198
237MX6Q_PAD_EIM_D28__UART2_CTS 199
238MX6Q_PAD_EIM_D28__GPIO_3_28 200
239MX6Q_PAD_EIM_D28__IPU1_EXT_TRIG 201
240MX6Q_PAD_EIM_D28__IPU1_DI0_PIN13 202
241MX6Q_PAD_EIM_D29__WEIM_WEIM_D_29 203
242MX6Q_PAD_EIM_D29__IPU1_DI1_PIN15 204
243MX6Q_PAD_EIM_D29__ECSPI4_SS0 205
244MX6Q_PAD_EIM_D29__UART2_RTS 206
245MX6Q_PAD_EIM_D29__GPIO_3_29 207
246MX6Q_PAD_EIM_D29__IPU2_CSI1_VSYNC 208
247MX6Q_PAD_EIM_D29__IPU1_DI0_PIN14 209
248MX6Q_PAD_EIM_D30__WEIM_WEIM_D_30 210
249MX6Q_PAD_EIM_D30__IPU1_DISP1_DAT_21 211
250MX6Q_PAD_EIM_D30__IPU1_DI0_PIN11 212
251MX6Q_PAD_EIM_D30__IPU1_CSI0_D_3 213
252MX6Q_PAD_EIM_D30__UART3_CTS 214
253MX6Q_PAD_EIM_D30__GPIO_3_30 215
254MX6Q_PAD_EIM_D30__USBOH3_USBH1_OC 216
255MX6Q_PAD_EIM_D30__PL301_PER1_HPROT_0 217
256MX6Q_PAD_EIM_D31__WEIM_WEIM_D_31 218
257MX6Q_PAD_EIM_D31__IPU1_DISP1_DAT_20 219
258MX6Q_PAD_EIM_D31__IPU1_DI0_PIN12 220
259MX6Q_PAD_EIM_D31__IPU1_CSI0_D_2 221
260MX6Q_PAD_EIM_D31__UART3_RTS 222
261MX6Q_PAD_EIM_D31__GPIO_3_31 223
262MX6Q_PAD_EIM_D31__USBOH3_USBH1_PWR 224
263MX6Q_PAD_EIM_D31__PL301_PER1_HPROT_1 225
264MX6Q_PAD_EIM_A24__WEIM_WEIM_A_24 226
265MX6Q_PAD_EIM_A24__IPU1_DISP1_DAT_19 227
266MX6Q_PAD_EIM_A24__IPU2_CSI1_D_19 228
267MX6Q_PAD_EIM_A24__IPU2_SISG_2 229
268MX6Q_PAD_EIM_A24__IPU1_SISG_2 230
269MX6Q_PAD_EIM_A24__GPIO_5_4 231
270MX6Q_PAD_EIM_A24__PL301_PER1_HPROT_2 232
271MX6Q_PAD_EIM_A24__SRC_BT_CFG_24 233
272MX6Q_PAD_EIM_A23__WEIM_WEIM_A_23 234
273MX6Q_PAD_EIM_A23__IPU1_DISP1_DAT_18 235
274MX6Q_PAD_EIM_A23__IPU2_CSI1_D_18 236
275MX6Q_PAD_EIM_A23__IPU2_SISG_3 237
276MX6Q_PAD_EIM_A23__IPU1_SISG_3 238
277MX6Q_PAD_EIM_A23__GPIO_6_6 239
278MX6Q_PAD_EIM_A23__PL301_PER1_HPROT_3 240
279MX6Q_PAD_EIM_A23__SRC_BT_CFG_23 241
280MX6Q_PAD_EIM_A22__WEIM_WEIM_A_22 242
281MX6Q_PAD_EIM_A22__IPU1_DISP1_DAT_17 243
282MX6Q_PAD_EIM_A22__IPU2_CSI1_D_17 244
283MX6Q_PAD_EIM_A22__GPIO_2_16 245
284MX6Q_PAD_EIM_A22__TPSMP_HDATA_0 246
285MX6Q_PAD_EIM_A22__SRC_BT_CFG_22 247
286MX6Q_PAD_EIM_A21__WEIM_WEIM_A_21 248
287MX6Q_PAD_EIM_A21__IPU1_DISP1_DAT_16 249
288MX6Q_PAD_EIM_A21__IPU2_CSI1_D_16 250
289MX6Q_PAD_EIM_A21__RESERVED_RESERVED 251
290MX6Q_PAD_EIM_A21__MIPI_CORE_DPHY_OUT_18 252
291MX6Q_PAD_EIM_A21__GPIO_2_17 253
292MX6Q_PAD_EIM_A21__TPSMP_HDATA_1 254
293MX6Q_PAD_EIM_A21__SRC_BT_CFG_21 255
294MX6Q_PAD_EIM_A20__WEIM_WEIM_A_20 256
295MX6Q_PAD_EIM_A20__IPU1_DISP1_DAT_15 257
296MX6Q_PAD_EIM_A20__IPU2_CSI1_D_15 258
297MX6Q_PAD_EIM_A20__RESERVED_RESERVED 259
298MX6Q_PAD_EIM_A20__MIPI_CORE_DPHY_OUT_19 260
299MX6Q_PAD_EIM_A20__GPIO_2_18 261
300MX6Q_PAD_EIM_A20__TPSMP_HDATA_2 262
301MX6Q_PAD_EIM_A20__SRC_BT_CFG_20 263
302MX6Q_PAD_EIM_A19__WEIM_WEIM_A_19 264
303MX6Q_PAD_EIM_A19__IPU1_DISP1_DAT_14 265
304MX6Q_PAD_EIM_A19__IPU2_CSI1_D_14 266
305MX6Q_PAD_EIM_A19__RESERVED_RESERVED 267
306MX6Q_PAD_EIM_A19__MIPI_CORE_DPHY_OUT_20 268
307MX6Q_PAD_EIM_A19__GPIO_2_19 269
308MX6Q_PAD_EIM_A19__TPSMP_HDATA_3 270
309MX6Q_PAD_EIM_A19__SRC_BT_CFG_19 271
310MX6Q_PAD_EIM_A18__WEIM_WEIM_A_18 272
311MX6Q_PAD_EIM_A18__IPU1_DISP1_DAT_13 273
312MX6Q_PAD_EIM_A18__IPU2_CSI1_D_13 274
313MX6Q_PAD_EIM_A18__RESERVED_RESERVED 275
314MX6Q_PAD_EIM_A18__MIPI_CORE_DPHY_OUT_21 276
315MX6Q_PAD_EIM_A18__GPIO_2_20 277
316MX6Q_PAD_EIM_A18__TPSMP_HDATA_4 278
317MX6Q_PAD_EIM_A18__SRC_BT_CFG_18 279
318MX6Q_PAD_EIM_A17__WEIM_WEIM_A_17 280
319MX6Q_PAD_EIM_A17__IPU1_DISP1_DAT_12 281
320MX6Q_PAD_EIM_A17__IPU2_CSI1_D_12 282
321MX6Q_PAD_EIM_A17__RESERVED_RESERVED 283
322MX6Q_PAD_EIM_A17__MIPI_CORE_DPHY_OUT_22 284
323MX6Q_PAD_EIM_A17__GPIO_2_21 285
324MX6Q_PAD_EIM_A17__TPSMP_HDATA_5 286
325MX6Q_PAD_EIM_A17__SRC_BT_CFG_17 287
326MX6Q_PAD_EIM_A16__WEIM_WEIM_A_16 288
327MX6Q_PAD_EIM_A16__IPU1_DI1_DISP_CLK 289
328MX6Q_PAD_EIM_A16__IPU2_CSI1_PIXCLK 290
329MX6Q_PAD_EIM_A16__MIPI_CORE_DPHY_OUT_23 291
330MX6Q_PAD_EIM_A16__GPIO_2_22 292
331MX6Q_PAD_EIM_A16__TPSMP_HDATA_6 293
332MX6Q_PAD_EIM_A16__SRC_BT_CFG_16 294
333MX6Q_PAD_EIM_CS0__WEIM_WEIM_CS_0 295
334MX6Q_PAD_EIM_CS0__IPU1_DI1_PIN5 296
335MX6Q_PAD_EIM_CS0__ECSPI2_SCLK 297
336MX6Q_PAD_EIM_CS0__MIPI_CORE_DPHY_OUT_24 298
337MX6Q_PAD_EIM_CS0__GPIO_2_23 299
338MX6Q_PAD_EIM_CS0__TPSMP_HDATA_7 300
339MX6Q_PAD_EIM_CS1__WEIM_WEIM_CS_1 301
340MX6Q_PAD_EIM_CS1__IPU1_DI1_PIN6 302
341MX6Q_PAD_EIM_CS1__ECSPI2_MOSI 303
342MX6Q_PAD_EIM_CS1__MIPI_CORE_DPHY_OUT_25 304
343MX6Q_PAD_EIM_CS1__GPIO_2_24 305
344MX6Q_PAD_EIM_CS1__TPSMP_HDATA_8 306
345MX6Q_PAD_EIM_OE__WEIM_WEIM_OE 307
346MX6Q_PAD_EIM_OE__IPU1_DI1_PIN7 308
347MX6Q_PAD_EIM_OE__ECSPI2_MISO 309
348MX6Q_PAD_EIM_OE__MIPI_CORE_DPHY_OUT_26 310
349MX6Q_PAD_EIM_OE__GPIO_2_25 311
350MX6Q_PAD_EIM_OE__TPSMP_HDATA_9 312
351MX6Q_PAD_EIM_RW__WEIM_WEIM_RW 313
352MX6Q_PAD_EIM_RW__IPU1_DI1_PIN8 314
353MX6Q_PAD_EIM_RW__ECSPI2_SS0 315
354MX6Q_PAD_EIM_RW__MIPI_CORE_DPHY_OUT_27 316
355MX6Q_PAD_EIM_RW__GPIO_2_26 317
356MX6Q_PAD_EIM_RW__TPSMP_HDATA_10 318
357MX6Q_PAD_EIM_RW__SRC_BT_CFG_29 319
358MX6Q_PAD_EIM_LBA__WEIM_WEIM_LBA 320
359MX6Q_PAD_EIM_LBA__IPU1_DI1_PIN17 321
360MX6Q_PAD_EIM_LBA__ECSPI2_SS1 322
361MX6Q_PAD_EIM_LBA__GPIO_2_27 323
362MX6Q_PAD_EIM_LBA__TPSMP_HDATA_11 324
363MX6Q_PAD_EIM_LBA__SRC_BT_CFG_26 325
364MX6Q_PAD_EIM_EB0__WEIM_WEIM_EB_0 326
365MX6Q_PAD_EIM_EB0__IPU1_DISP1_DAT_11 327
366MX6Q_PAD_EIM_EB0__IPU2_CSI1_D_11 328
367MX6Q_PAD_EIM_EB0__MIPI_CORE_DPHY_OUT_0 329
368MX6Q_PAD_EIM_EB0__CCM_PMIC_RDY 330
369MX6Q_PAD_EIM_EB0__GPIO_2_28 331
370MX6Q_PAD_EIM_EB0__TPSMP_HDATA_12 332
371MX6Q_PAD_EIM_EB0__SRC_BT_CFG_27 333
372MX6Q_PAD_EIM_EB1__WEIM_WEIM_EB_1 334
373MX6Q_PAD_EIM_EB1__IPU1_DISP1_DAT_10 335
374MX6Q_PAD_EIM_EB1__IPU2_CSI1_D_10 336
375MX6Q_PAD_EIM_EB1__MIPI_CORE_DPHY__OUT_1 337
376MX6Q_PAD_EIM_EB1__GPIO_2_29 338
377MX6Q_PAD_EIM_EB1__TPSMP_HDATA_13 339
378MX6Q_PAD_EIM_EB1__SRC_BT_CFG_28 340
379MX6Q_PAD_EIM_DA0__WEIM_WEIM_DA_A_0 341
380MX6Q_PAD_EIM_DA0__IPU1_DISP1_DAT_9 342
381MX6Q_PAD_EIM_DA0__IPU2_CSI1_D_9 343
382MX6Q_PAD_EIM_DA0__MIPI_CORE_DPHY__OUT_2 344
383MX6Q_PAD_EIM_DA0__GPIO_3_0 345
384MX6Q_PAD_EIM_DA0__TPSMP_HDATA_14 346
385MX6Q_PAD_EIM_DA0__SRC_BT_CFG_0 347
386MX6Q_PAD_EIM_DA1__WEIM_WEIM_DA_A_1 348
387MX6Q_PAD_EIM_DA1__IPU1_DISP1_DAT_8 349
388MX6Q_PAD_EIM_DA1__IPU2_CSI1_D_8 350
389MX6Q_PAD_EIM_DA1__MIPI_CORE_DPHY_OUT_3 351
390MX6Q_PAD_EIM_DA1__USBPHY1_TX_LS_MODE 352
391MX6Q_PAD_EIM_DA1__GPIO_3_1 353
392MX6Q_PAD_EIM_DA1__TPSMP_HDATA_15 354
393MX6Q_PAD_EIM_DA1__SRC_BT_CFG_1 355
394MX6Q_PAD_EIM_DA2__WEIM_WEIM_DA_A_2 356
395MX6Q_PAD_EIM_DA2__IPU1_DISP1_DAT_7 357
396MX6Q_PAD_EIM_DA2__IPU2_CSI1_D_7 358
397MX6Q_PAD_EIM_DA2__MIPI_CORE_DPHY_OUT_4 359
398MX6Q_PAD_EIM_DA2__USBPHY1_TX_HS_MODE 360
399MX6Q_PAD_EIM_DA2__GPIO_3_2 361
400MX6Q_PAD_EIM_DA2__TPSMP_HDATA_16 362
401MX6Q_PAD_EIM_DA2__SRC_BT_CFG_2 363
402MX6Q_PAD_EIM_DA3__WEIM_WEIM_DA_A_3 364
403MX6Q_PAD_EIM_DA3__IPU1_DISP1_DAT_6 365
404MX6Q_PAD_EIM_DA3__IPU2_CSI1_D_6 366
405MX6Q_PAD_EIM_DA3__MIPI_CORE_DPHY_OUT_5 367
406MX6Q_PAD_EIM_DA3__USBPHY1_TX_HIZ 368
407MX6Q_PAD_EIM_DA3__GPIO_3_3 369
408MX6Q_PAD_EIM_DA3__TPSMP_HDATA_17 370
409MX6Q_PAD_EIM_DA3__SRC_BT_CFG_3 371
410MX6Q_PAD_EIM_DA4__WEIM_WEIM_DA_A_4 372
411MX6Q_PAD_EIM_DA4__IPU1_DISP1_DAT_5 373
412MX6Q_PAD_EIM_DA4__IPU2_CSI1_D_5 374
413MX6Q_PAD_EIM_DA4__MIPI_CORE_DPHY_OUT_6 375
414MX6Q_PAD_EIM_DA4__ANATOP_USBPHY1_TX_EN 376
415MX6Q_PAD_EIM_DA4__GPIO_3_4 377
416MX6Q_PAD_EIM_DA4__TPSMP_HDATA_18 378
417MX6Q_PAD_EIM_DA4__SRC_BT_CFG_4 379
418MX6Q_PAD_EIM_DA5__WEIM_WEIM_DA_A_5 380
419MX6Q_PAD_EIM_DA5__IPU1_DISP1_DAT_4 381
420MX6Q_PAD_EIM_DA5__IPU2_CSI1_D_4 382
421MX6Q_PAD_EIM_DA5__MIPI_CORE_DPHY_OUT_7 383
422MX6Q_PAD_EIM_DA5__ANATOP_USBPHY1_TX_DP 384
423MX6Q_PAD_EIM_DA5__GPIO_3_5 385
424MX6Q_PAD_EIM_DA5__TPSMP_HDATA_19 386
425MX6Q_PAD_EIM_DA5__SRC_BT_CFG_5 387
426MX6Q_PAD_EIM_DA6__WEIM_WEIM_DA_A_6 388
427MX6Q_PAD_EIM_DA6__IPU1_DISP1_DAT_3 389
428MX6Q_PAD_EIM_DA6__IPU2_CSI1_D_3 390
429MX6Q_PAD_EIM_DA6__MIPI_CORE_DPHY_OUT_8 391
430MX6Q_PAD_EIM_DA6__ANATOP_USBPHY1_TX_DN 392
431MX6Q_PAD_EIM_DA6__GPIO_3_6 393
432MX6Q_PAD_EIM_DA6__TPSMP_HDATA_20 394
433MX6Q_PAD_EIM_DA6__SRC_BT_CFG_6 395
434MX6Q_PAD_EIM_DA7__WEIM_WEIM_DA_A_7 396
435MX6Q_PAD_EIM_DA7__IPU1_DISP1_DAT_2 397
436MX6Q_PAD_EIM_DA7__IPU2_CSI1_D_2 398
437MX6Q_PAD_EIM_DA7__MIPI_CORE_DPHY_OUT_9 399
438MX6Q_PAD_EIM_DA7__GPIO_3_7 400
439MX6Q_PAD_EIM_DA7__TPSMP_HDATA_21 401
440MX6Q_PAD_EIM_DA7__SRC_BT_CFG_7 402
441MX6Q_PAD_EIM_DA8__WEIM_WEIM_DA_A_8 403
442MX6Q_PAD_EIM_DA8__IPU1_DISP1_DAT_1 404
443MX6Q_PAD_EIM_DA8__IPU2_CSI1_D_1 405
444MX6Q_PAD_EIM_DA8__MIPI_CORE_DPHY_OUT_10 406
445MX6Q_PAD_EIM_DA8__GPIO_3_8 407
446MX6Q_PAD_EIM_DA8__TPSMP_HDATA_22 408
447MX6Q_PAD_EIM_DA8__SRC_BT_CFG_8 409
448MX6Q_PAD_EIM_DA9__WEIM_WEIM_DA_A_9 410
449MX6Q_PAD_EIM_DA9__IPU1_DISP1_DAT_0 411
450MX6Q_PAD_EIM_DA9__IPU2_CSI1_D_0 412
451MX6Q_PAD_EIM_DA9__MIPI_CORE_DPHY_OUT_11 413
452MX6Q_PAD_EIM_DA9__GPIO_3_9 414
453MX6Q_PAD_EIM_DA9__TPSMP_HDATA_23 415
454MX6Q_PAD_EIM_DA9__SRC_BT_CFG_9 416
455MX6Q_PAD_EIM_DA10__WEIM_WEIM_DA_A_10 417
456MX6Q_PAD_EIM_DA10__IPU1_DI1_PIN15 418
457MX6Q_PAD_EIM_DA10__IPU2_CSI1_DATA_EN 419
458MX6Q_PAD_EIM_DA10__MIPI_CORE_DPHY_OUT12 420
459MX6Q_PAD_EIM_DA10__GPIO_3_10 421
460MX6Q_PAD_EIM_DA10__TPSMP_HDATA_24 422
461MX6Q_PAD_EIM_DA10__SRC_BT_CFG_10 423
462MX6Q_PAD_EIM_DA11__WEIM_WEIM_DA_A_11 424
463MX6Q_PAD_EIM_DA11__IPU1_DI1_PIN2 425
464MX6Q_PAD_EIM_DA11__IPU2_CSI1_HSYNC 426
465MX6Q_PAD_EIM_DA11__MIPI_CORE_DPHY_OUT13 427
466MX6Q_PAD_EIM_DA11__SDMA_DBG_EVT_CHN_6 428
467MX6Q_PAD_EIM_DA11__GPIO_3_11 429
468MX6Q_PAD_EIM_DA11__TPSMP_HDATA_25 430
469MX6Q_PAD_EIM_DA11__SRC_BT_CFG_11 431
470MX6Q_PAD_EIM_DA12__WEIM_WEIM_DA_A_12 432
471MX6Q_PAD_EIM_DA12__IPU1_DI1_PIN3 433
472MX6Q_PAD_EIM_DA12__IPU2_CSI1_VSYNC 434
473MX6Q_PAD_EIM_DA12__MIPI_CORE_DPHY_OUT14 435
474MX6Q_PAD_EIM_DA12__SDMA_DEBUG_EVT_CHN_3 436
475MX6Q_PAD_EIM_DA12__GPIO_3_12 437
476MX6Q_PAD_EIM_DA12__TPSMP_HDATA_26 438
477MX6Q_PAD_EIM_DA12__SRC_BT_CFG_12 439
478MX6Q_PAD_EIM_DA13__WEIM_WEIM_DA_A_13 440
479MX6Q_PAD_EIM_DA13__IPU1_DI1_D0_CS 441
480MX6Q_PAD_EIM_DA13__CCM_DI1_EXT_CLK 442
481MX6Q_PAD_EIM_DA13__MIPI_CORE_DPHY_OUT15 443
482MX6Q_PAD_EIM_DA13__SDMA_DEBUG_EVT_CHN_4 444
483MX6Q_PAD_EIM_DA13__GPIO_3_13 445
484MX6Q_PAD_EIM_DA13__TPSMP_HDATA_27 446
485MX6Q_PAD_EIM_DA13__SRC_BT_CFG_13 447
486MX6Q_PAD_EIM_DA14__WEIM_WEIM_DA_A_14 448
487MX6Q_PAD_EIM_DA14__IPU1_DI1_D1_CS 449
488MX6Q_PAD_EIM_DA14__CCM_DI0_EXT_CLK 450
489MX6Q_PAD_EIM_DA14__MIPI_CORE_DPHY_OUT16 451
490MX6Q_PAD_EIM_DA14__SDMA_DEBUG_EVT_CHN_5 452
491MX6Q_PAD_EIM_DA14__GPIO_3_14 453
492MX6Q_PAD_EIM_DA14__TPSMP_HDATA_28 454
493MX6Q_PAD_EIM_DA14__SRC_BT_CFG_14 455
494MX6Q_PAD_EIM_DA15__WEIM_WEIM_DA_A_15 456
495MX6Q_PAD_EIM_DA15__IPU1_DI1_PIN1 457
496MX6Q_PAD_EIM_DA15__IPU1_DI1_PIN4 458
497MX6Q_PAD_EIM_DA15__MIPI_CORE_DPHY_OUT17 459
498MX6Q_PAD_EIM_DA15__GPIO_3_15 460
499MX6Q_PAD_EIM_DA15__TPSMP_HDATA_29 461
500MX6Q_PAD_EIM_DA15__SRC_BT_CFG_15 462
501MX6Q_PAD_EIM_WAIT__WEIM_WEIM_WAIT 463
502MX6Q_PAD_EIM_WAIT__WEIM_WEIM_DTACK_B 464
503MX6Q_PAD_EIM_WAIT__GPIO_5_0 465
504MX6Q_PAD_EIM_WAIT__TPSMP_HDATA_30 466
505MX6Q_PAD_EIM_WAIT__SRC_BT_CFG_25 467
506MX6Q_PAD_EIM_BCLK__WEIM_WEIM_BCLK 468
507MX6Q_PAD_EIM_BCLK__IPU1_DI1_PIN16 469
508MX6Q_PAD_EIM_BCLK__GPIO_6_31 470
509MX6Q_PAD_EIM_BCLK__TPSMP_HDATA_31 471
510MX6Q_PAD_DI0_DISP_CLK__IPU1_DI0_DSP_CLK 472
511MX6Q_PAD_DI0_DISP_CLK__IPU2_DI0_DSP_CLK 473
512MX6Q_PAD_DI0_DISP_CLK__MIPI_CR_DPY_OT28 474
513MX6Q_PAD_DI0_DISP_CLK__SDMA_DBG_CR_STA0 475
514MX6Q_PAD_DI0_DISP_CLK__GPIO_4_16 476
515MX6Q_PAD_DI0_DISP_CLK__MMDC_DEBUG_0 477
516MX6Q_PAD_DI0_PIN15__IPU1_DI0_PIN15 478
517MX6Q_PAD_DI0_PIN15__IPU2_DI0_PIN15 479
518MX6Q_PAD_DI0_PIN15__AUDMUX_AUD6_TXC 480
519MX6Q_PAD_DI0_PIN15__MIPI_CR_DPHY_OUT_29 481
520MX6Q_PAD_DI0_PIN15__SDMA_DBG_CORE_STA_1 482
521MX6Q_PAD_DI0_PIN15__GPIO_4_17 483
522MX6Q_PAD_DI0_PIN15__MMDC_MMDC_DEBUG_1 484
523MX6Q_PAD_DI0_PIN2__IPU1_DI0_PIN2 485
524MX6Q_PAD_DI0_PIN2__IPU2_DI0_PIN2 486
525MX6Q_PAD_DI0_PIN2__AUDMUX_AUD6_TXD 487
526MX6Q_PAD_DI0_PIN2__MIPI_CR_DPHY_OUT_30 488
527MX6Q_PAD_DI0_PIN2__SDMA_DBG_CORE_STA_2 489
528MX6Q_PAD_DI0_PIN2__GPIO_4_18 490
529MX6Q_PAD_DI0_PIN2__MMDC_DEBUG_2 491
530MX6Q_PAD_DI0_PIN2__PL301_PER1_HADDR_9 492
531MX6Q_PAD_DI0_PIN3__IPU1_DI0_PIN3 493
532MX6Q_PAD_DI0_PIN3__IPU2_DI0_PIN3 494
533MX6Q_PAD_DI0_PIN3__AUDMUX_AUD6_TXFS 495
534MX6Q_PAD_DI0_PIN3__MIPI_CORE_DPHY_OUT31 496
535MX6Q_PAD_DI0_PIN3__SDMA_DBG_CORE_STA_3 497
536MX6Q_PAD_DI0_PIN3__GPIO_4_19 498
537MX6Q_PAD_DI0_PIN3__MMDC_MMDC_DEBUG_3 499
538MX6Q_PAD_DI0_PIN3__PL301_PER1_HADDR_10 500
539MX6Q_PAD_DI0_PIN4__IPU1_DI0_PIN4 501
540MX6Q_PAD_DI0_PIN4__IPU2_DI0_PIN4 502
541MX6Q_PAD_DI0_PIN4__AUDMUX_AUD6_RXD 503
542MX6Q_PAD_DI0_PIN4__USDHC1_WP 504
543MX6Q_PAD_DI0_PIN4__SDMA_DEBUG_YIELD 505
544MX6Q_PAD_DI0_PIN4__GPIO_4_20 506
545MX6Q_PAD_DI0_PIN4__MMDC_MMDC_DEBUG_4 507
546MX6Q_PAD_DI0_PIN4__PL301_PER1_HADDR_11 508
547MX6Q_PAD_DISP0_DAT0__IPU1_DISP0_DAT_0 509
548MX6Q_PAD_DISP0_DAT0__IPU2_DISP0_DAT_0 510
549MX6Q_PAD_DISP0_DAT0__ECSPI3_SCLK 511
550MX6Q_PAD_DISP0_DAT0__USDHC1_USDHC_DBG_0 512
551MX6Q_PAD_DISP0_DAT0__SDMA_DBG_CORE_RUN 513
552MX6Q_PAD_DISP0_DAT0__GPIO_4_21 514
553MX6Q_PAD_DISP0_DAT0__MMDC_MMDC_DEBUG_5 515
554MX6Q_PAD_DISP0_DAT1__IPU1_DISP0_DAT_1 516
555MX6Q_PAD_DISP0_DAT1__IPU2_DISP0_DAT_1 517
556MX6Q_PAD_DISP0_DAT1__ECSPI3_MOSI 518
557MX6Q_PAD_DISP0_DAT1__USDHC1_USDHC_DBG_1 519
558MX6Q_PAD_DISP0_DAT1__SDMA_DBG_EVT_CHNSL 520
559MX6Q_PAD_DISP0_DAT1__GPIO_4_22 521
560MX6Q_PAD_DISP0_DAT1__MMDC_DEBUG_6 522
561MX6Q_PAD_DISP0_DAT1__PL301_PER1_HADR_12 523
562MX6Q_PAD_DISP0_DAT2__IPU1_DISP0_DAT_2 524
563MX6Q_PAD_DISP0_DAT2__IPU2_DISP0_DAT_2 525
564MX6Q_PAD_DISP0_DAT2__ECSPI3_MISO 526
565MX6Q_PAD_DISP0_DAT2__USDHC1_USDHC_DBG_2 527
566MX6Q_PAD_DISP0_DAT2__SDMA_DEBUG_MODE 528
567MX6Q_PAD_DISP0_DAT2__GPIO_4_23 529
568MX6Q_PAD_DISP0_DAT2__MMDC_DEBUG_7 530
569MX6Q_PAD_DISP0_DAT2__PL301_PER1_HADR_13 531
570MX6Q_PAD_DISP0_DAT3__IPU1_DISP0_DAT_3 532
571MX6Q_PAD_DISP0_DAT3__IPU2_DISP0_DAT_3 533
572MX6Q_PAD_DISP0_DAT3__ECSPI3_SS0 534
573MX6Q_PAD_DISP0_DAT3__USDHC1_USDHC_DBG_3 535
574MX6Q_PAD_DISP0_DAT3__SDMA_DBG_BUS_ERROR 536
575MX6Q_PAD_DISP0_DAT3__GPIO_4_24 537
576MX6Q_PAD_DISP0_DAT3__MMDC_MMDC_DBG_8 538
577MX6Q_PAD_DISP0_DAT3__PL301_PER1_HADR_14 539
578MX6Q_PAD_DISP0_DAT4__IPU1_DISP0_DAT_4 540
579MX6Q_PAD_DISP0_DAT4__IPU2_DISP0_DAT_4 541
580MX6Q_PAD_DISP0_DAT4__ECSPI3_SS1 542
581MX6Q_PAD_DISP0_DAT4__USDHC1_USDHC_DBG_4 543
582MX6Q_PAD_DISP0_DAT4__SDMA_DEBUG_BUS_RWB 544
583MX6Q_PAD_DISP0_DAT4__GPIO_4_25 545
584MX6Q_PAD_DISP0_DAT4__MMDC_MMDC_DEBUG_9 546
585MX6Q_PAD_DISP0_DAT4__PL301_PER1_HADR_15 547
586MX6Q_PAD_DISP0_DAT5__IPU1_DISP0_DAT_5 548
587MX6Q_PAD_DISP0_DAT5__IPU2_DISP0_DAT_5 549
588MX6Q_PAD_DISP0_DAT5__ECSPI3_SS2 550
589MX6Q_PAD_DISP0_DAT5__AUDMUX_AUD6_RXFS 551
590MX6Q_PAD_DISP0_DAT5__SDMA_DBG_MCH_DMBUS 552
591MX6Q_PAD_DISP0_DAT5__GPIO_4_26 553
592MX6Q_PAD_DISP0_DAT5__MMDC_DEBUG_10 554
593MX6Q_PAD_DISP0_DAT5__PL301_PER1_HADR_16 555
594MX6Q_PAD_DISP0_DAT6__IPU1_DISP0_DAT_6 556
595MX6Q_PAD_DISP0_DAT6__IPU2_DISP0_DAT_6 557
596MX6Q_PAD_DISP0_DAT6__ECSPI3_SS3 558
597MX6Q_PAD_DISP0_DAT6__AUDMUX_AUD6_RXC 559
598MX6Q_PAD_DISP0_DAT6__SDMA_DBG_RTBUF_WRT 560
599MX6Q_PAD_DISP0_DAT6__GPIO_4_27 561
600MX6Q_PAD_DISP0_DAT6__MMDC_DEBUG_11 562
601MX6Q_PAD_DISP0_DAT6__PL301_PER1_HADR_17 563
602MX6Q_PAD_DISP0_DAT7__IPU1_DISP0_DAT_7 564
603MX6Q_PAD_DISP0_DAT7__IPU2_DISP0_DAT_7 565
604MX6Q_PAD_DISP0_DAT7__ECSPI3_RDY 566
605MX6Q_PAD_DISP0_DAT7__USDHC1_USDHC_DBG_5 567
606MX6Q_PAD_DISP0_DAT7__SDMA_DBG_EVT_CHN_0 568
607MX6Q_PAD_DISP0_DAT7__GPIO_4_28 569
608MX6Q_PAD_DISP0_DAT7__MMDC_DEBUG_12 570
609MX6Q_PAD_DISP0_DAT7__PL301_PER1_HADR_18 571
610MX6Q_PAD_DISP0_DAT8__IPU1_DISP0_DAT_8 572
611MX6Q_PAD_DISP0_DAT8__IPU2_DISP0_DAT_8 573
612MX6Q_PAD_DISP0_DAT8__PWM1_PWMO 574
613MX6Q_PAD_DISP0_DAT8__WDOG1_WDOG_B 575
614MX6Q_PAD_DISP0_DAT8__SDMA_DBG_EVT_CHN_1 576
615MX6Q_PAD_DISP0_DAT8__GPIO_4_29 577
616MX6Q_PAD_DISP0_DAT8__MMDC_DEBUG_13 578
617MX6Q_PAD_DISP0_DAT8__PL301_PER1_HADR_19 579
618MX6Q_PAD_DISP0_DAT9__IPU1_DISP0_DAT_9 580
619MX6Q_PAD_DISP0_DAT9__IPU2_DISP0_DAT_9 581
620MX6Q_PAD_DISP0_DAT9__PWM2_PWMO 582
621MX6Q_PAD_DISP0_DAT9__WDOG2_WDOG_B 583
622MX6Q_PAD_DISP0_DAT9__SDMA_DBG_EVT_CHN_2 584
623MX6Q_PAD_DISP0_DAT9__GPIO_4_30 585
624MX6Q_PAD_DISP0_DAT9__MMDC_DEBUG_14 586
625MX6Q_PAD_DISP0_DAT9__PL301_PER1_HADR_20 587
626MX6Q_PAD_DISP0_DAT10__IPU1_DISP0_DAT_10 588
627MX6Q_PAD_DISP0_DAT10__IPU2_DISP0_DAT_10 589
628MX6Q_PAD_DISP0_DAT10__USDHC1_DBG_6 590
629MX6Q_PAD_DISP0_DAT10__SDMA_DBG_EVT_CHN3 591
630MX6Q_PAD_DISP0_DAT10__GPIO_4_31 592
631MX6Q_PAD_DISP0_DAT10__MMDC_DEBUG_15 593
632MX6Q_PAD_DISP0_DAT10__PL301_PER1_HADR21 594
633MX6Q_PAD_DISP0_DAT11__IPU1_DISP0_DAT_11 595
634MX6Q_PAD_DISP0_DAT11__IPU2_DISP0_DAT_11 596
635MX6Q_PAD_DISP0_DAT11__USDHC1_USDHC_DBG7 597
636MX6Q_PAD_DISP0_DAT11__SDMA_DBG_EVT_CHN4 598
637MX6Q_PAD_DISP0_DAT11__GPIO_5_5 599
638MX6Q_PAD_DISP0_DAT11__MMDC_DEBUG_16 600
639MX6Q_PAD_DISP0_DAT11__PL301_PER1_HADR22 601
640MX6Q_PAD_DISP0_DAT12__IPU1_DISP0_DAT_12 602
641MX6Q_PAD_DISP0_DAT12__IPU2_DISP0_DAT_12 603
642MX6Q_PAD_DISP0_DAT12__RESERVED_RESERVED 604
643MX6Q_PAD_DISP0_DAT12__SDMA_DBG_EVT_CHN5 605
644MX6Q_PAD_DISP0_DAT12__GPIO_5_6 606
645MX6Q_PAD_DISP0_DAT12__MMDC_DEBUG_17 607
646MX6Q_PAD_DISP0_DAT12__PL301_PER1_HADR23 608
647MX6Q_PAD_DISP0_DAT13__IPU1_DISP0_DAT_13 609
648MX6Q_PAD_DISP0_DAT13__IPU2_DISP0_DAT_13 610
649MX6Q_PAD_DISP0_DAT13__AUDMUX_AUD5_RXFS 611
650MX6Q_PAD_DISP0_DAT13__SDMA_DBG_EVT_CHN0 612
651MX6Q_PAD_DISP0_DAT13__GPIO_5_7 613
652MX6Q_PAD_DISP0_DAT13__MMDC_DEBUG_18 614
653MX6Q_PAD_DISP0_DAT13__PL301_PER1_HADR24 615
654MX6Q_PAD_DISP0_DAT14__IPU1_DISP0_DAT_14 616
655MX6Q_PAD_DISP0_DAT14__IPU2_DISP0_DAT_14 617
656MX6Q_PAD_DISP0_DAT14__AUDMUX_AUD5_RXC 618
657MX6Q_PAD_DISP0_DAT14__SDMA_DBG_EVT_CHN1 619
658MX6Q_PAD_DISP0_DAT14__GPIO_5_8 620
659MX6Q_PAD_DISP0_DAT14__MMDC_DEBUG_19 621
660MX6Q_PAD_DISP0_DAT15__IPU1_DISP0_DAT_15 622
661MX6Q_PAD_DISP0_DAT15__IPU2_DISP0_DAT_15 623
662MX6Q_PAD_DISP0_DAT15__ECSPI1_SS1 624
663MX6Q_PAD_DISP0_DAT15__ECSPI2_SS1 625
664MX6Q_PAD_DISP0_DAT15__SDMA_DBG_EVT_CHN2 626
665MX6Q_PAD_DISP0_DAT15__GPIO_5_9 627
666MX6Q_PAD_DISP0_DAT15__MMDC_DEBUG_20 628
667MX6Q_PAD_DISP0_DAT15__PL301_PER1_HADR25 629
668MX6Q_PAD_DISP0_DAT16__IPU1_DISP0_DAT_16 630
669MX6Q_PAD_DISP0_DAT16__IPU2_DISP0_DAT_16 631
670MX6Q_PAD_DISP0_DAT16__ECSPI2_MOSI 632
671MX6Q_PAD_DISP0_DAT16__AUDMUX_AUD5_TXC 633
672MX6Q_PAD_DISP0_DAT16__SDMA_EXT_EVENT_0 634
673MX6Q_PAD_DISP0_DAT16__GPIO_5_10 635
674MX6Q_PAD_DISP0_DAT16__MMDC_DEBUG_21 636
675MX6Q_PAD_DISP0_DAT16__PL301_PER1_HADR26 637
676MX6Q_PAD_DISP0_DAT17__IPU1_DISP0_DAT_17 638
677MX6Q_PAD_DISP0_DAT17__IPU2_DISP0_DAT_17 639
678MX6Q_PAD_DISP0_DAT17__ECSPI2_MISO 640
679MX6Q_PAD_DISP0_DAT17__AUDMUX_AUD5_TXD 641
680MX6Q_PAD_DISP0_DAT17__SDMA_EXT_EVENT_1 642
681MX6Q_PAD_DISP0_DAT17__GPIO_5_11 643
682MX6Q_PAD_DISP0_DAT17__MMDC_DEBUG_22 644
683MX6Q_PAD_DISP0_DAT17__PL301_PER1_HADR27 645
684MX6Q_PAD_DISP0_DAT18__IPU1_DISP0_DAT_18 646
685MX6Q_PAD_DISP0_DAT18__IPU2_DISP0_DAT_18 647
686MX6Q_PAD_DISP0_DAT18__ECSPI2_SS0 648
687MX6Q_PAD_DISP0_DAT18__AUDMUX_AUD5_TXFS 649
688MX6Q_PAD_DISP0_DAT18__AUDMUX_AUD4_RXFS 650
689MX6Q_PAD_DISP0_DAT18__GPIO_5_12 651
690MX6Q_PAD_DISP0_DAT18__MMDC_DEBUG_23 652
691MX6Q_PAD_DISP0_DAT18__WEIM_WEIM_CS_2 653
692MX6Q_PAD_DISP0_DAT19__IPU1_DISP0_DAT_19 654
693MX6Q_PAD_DISP0_DAT19__IPU2_DISP0_DAT_19 655
694MX6Q_PAD_DISP0_DAT19__ECSPI2_SCLK 656
695MX6Q_PAD_DISP0_DAT19__AUDMUX_AUD5_RXD 657
696MX6Q_PAD_DISP0_DAT19__AUDMUX_AUD4_RXC 658
697MX6Q_PAD_DISP0_DAT19__GPIO_5_13 659
698MX6Q_PAD_DISP0_DAT19__MMDC_DEBUG_24 660
699MX6Q_PAD_DISP0_DAT19__WEIM_WEIM_CS_3 661
700MX6Q_PAD_DISP0_DAT20__IPU1_DISP0_DAT_20 662
701MX6Q_PAD_DISP0_DAT20__IPU2_DISP0_DAT_20 663
702MX6Q_PAD_DISP0_DAT20__ECSPI1_SCLK 664
703MX6Q_PAD_DISP0_DAT20__AUDMUX_AUD4_TXC 665
704MX6Q_PAD_DISP0_DAT20__SDMA_DBG_EVT_CHN7 666
705MX6Q_PAD_DISP0_DAT20__GPIO_5_14 667
706MX6Q_PAD_DISP0_DAT20__MMDC_DEBUG_25 668
707MX6Q_PAD_DISP0_DAT20__PL301_PER1_HADR28 669
708MX6Q_PAD_DISP0_DAT21__IPU1_DISP0_DAT_21 670
709MX6Q_PAD_DISP0_DAT21__IPU2_DISP0_DAT_21 671
710MX6Q_PAD_DISP0_DAT21__ECSPI1_MOSI 672
711MX6Q_PAD_DISP0_DAT21__AUDMUX_AUD4_TXD 673
712MX6Q_PAD_DISP0_DAT21__SDMA_DBG_BUS_DEV0 674
713MX6Q_PAD_DISP0_DAT21__GPIO_5_15 675
714MX6Q_PAD_DISP0_DAT21__MMDC_DEBUG_26 676
715MX6Q_PAD_DISP0_DAT21__PL301_PER1_HADR29 677
716MX6Q_PAD_DISP0_DAT22__IPU1_DISP0_DAT_22 678
717MX6Q_PAD_DISP0_DAT22__IPU2_DISP0_DAT_22 679
718MX6Q_PAD_DISP0_DAT22__ECSPI1_MISO 680
719MX6Q_PAD_DISP0_DAT22__AUDMUX_AUD4_TXFS 681
720MX6Q_PAD_DISP0_DAT22__SDMA_DBG_BUS_DEV1 682
721MX6Q_PAD_DISP0_DAT22__GPIO_5_16 683
722MX6Q_PAD_DISP0_DAT22__MMDC_DEBUG_27 684
723MX6Q_PAD_DISP0_DAT22__PL301_PER1_HADR30 685
724MX6Q_PAD_DISP0_DAT23__IPU1_DISP0_DAT_23 686
725MX6Q_PAD_DISP0_DAT23__IPU2_DISP0_DAT_23 687
726MX6Q_PAD_DISP0_DAT23__ECSPI1_SS0 688
727MX6Q_PAD_DISP0_DAT23__AUDMUX_AUD4_RXD 689
728MX6Q_PAD_DISP0_DAT23__SDMA_DBG_BUS_DEV2 690
729MX6Q_PAD_DISP0_DAT23__GPIO_5_17 691
730MX6Q_PAD_DISP0_DAT23__MMDC_DEBUG_28 692
731MX6Q_PAD_DISP0_DAT23__PL301_PER1_HADR31 693
732MX6Q_PAD_ENET_MDIO__RESERVED_RESERVED 694
733MX6Q_PAD_ENET_MDIO__ENET_MDIO 695
734MX6Q_PAD_ENET_MDIO__ESAI1_SCKR 696
735MX6Q_PAD_ENET_MDIO__SDMA_DEBUG_BUS_DEV3 697
736MX6Q_PAD_ENET_MDIO__ENET_1588_EVT1_OUT 698
737MX6Q_PAD_ENET_MDIO__GPIO_1_22 699
738MX6Q_PAD_ENET_MDIO__SPDIF_PLOCK 700
739MX6Q_PAD_ENET_REF_CLK__RESERVED_RSRVED 701
740MX6Q_PAD_ENET_REF_CLK__ENET_TX_CLK 702
741MX6Q_PAD_ENET_REF_CLK__ESAI1_FSR 703
742MX6Q_PAD_ENET_REF_CLK__SDMA_DBGBUS_DEV4 704
743MX6Q_PAD_ENET_REF_CLK__GPIO_1_23 705
744MX6Q_PAD_ENET_REF_CLK__SPDIF_SRCLK 706
745MX6Q_PAD_ENET_REF_CLK__USBPHY1_RX_SQH 707
746MX6Q_PAD_ENET_RX_ER__ENET_RX_ER 708
747MX6Q_PAD_ENET_RX_ER__ESAI1_HCKR 709
748MX6Q_PAD_ENET_RX_ER__SPDIF_IN1 710
749MX6Q_PAD_ENET_RX_ER__ENET_1588_EVT2_OUT 711
750MX6Q_PAD_ENET_RX_ER__GPIO_1_24 712
751MX6Q_PAD_ENET_RX_ER__PHY_TDI 713
752MX6Q_PAD_ENET_RX_ER__USBPHY1_RX_HS_RXD 714
753MX6Q_PAD_ENET_CRS_DV__RESERVED_RSRVED 715
754MX6Q_PAD_ENET_CRS_DV__ENET_RX_EN 716
755MX6Q_PAD_ENET_CRS_DV__ESAI1_SCKT 717
756MX6Q_PAD_ENET_CRS_DV__SPDIF_EXTCLK 718
757MX6Q_PAD_ENET_CRS_DV__GPIO_1_25 719
758MX6Q_PAD_ENET_CRS_DV__PHY_TDO 720
759MX6Q_PAD_ENET_CRS_DV__USBPHY1_RX_FS_RXD 721
760MX6Q_PAD_ENET_RXD1__MLB_MLBSIG 722
761MX6Q_PAD_ENET_RXD1__ENET_RDATA_1 723
762MX6Q_PAD_ENET_RXD1__ESAI1_FST 724
763MX6Q_PAD_ENET_RXD1__ENET_1588_EVT3_OUT 725
764MX6Q_PAD_ENET_RXD1__GPIO_1_26 726
765MX6Q_PAD_ENET_RXD1__PHY_TCK 727
766MX6Q_PAD_ENET_RXD1__USBPHY1_RX_DISCON 728
767MX6Q_PAD_ENET_RXD0__OSC32K_32K_OUT 729
768MX6Q_PAD_ENET_RXD0__ENET_RDATA_0 730
769MX6Q_PAD_ENET_RXD0__ESAI1_HCKT 731
770MX6Q_PAD_ENET_RXD0__SPDIF_OUT1 732
771MX6Q_PAD_ENET_RXD0__GPIO_1_27 733
772MX6Q_PAD_ENET_RXD0__PHY_TMS 734
773MX6Q_PAD_ENET_RXD0__USBPHY1_PLL_CK20DIV 735
774MX6Q_PAD_ENET_TX_EN__RESERVED_RSRVED 736
775MX6Q_PAD_ENET_TX_EN__ENET_TX_EN 737
776MX6Q_PAD_ENET_TX_EN__ESAI1_TX3_RX2 738
777MX6Q_PAD_ENET_TX_EN__GPIO_1_28 739
778MX6Q_PAD_ENET_TX_EN__SATA_PHY_TDI 740
779MX6Q_PAD_ENET_TX_EN__USBPHY2_RX_SQH 741
780MX6Q_PAD_ENET_TXD1__MLB_MLBCLK 742
781MX6Q_PAD_ENET_TXD1__ENET_TDATA_1 743
782MX6Q_PAD_ENET_TXD1__ESAI1_TX2_RX3 744
783MX6Q_PAD_ENET_TXD1__ENET_1588_EVENT0_IN 745
784MX6Q_PAD_ENET_TXD1__GPIO_1_29 746
785MX6Q_PAD_ENET_TXD1__SATA_PHY_TDO 747
786MX6Q_PAD_ENET_TXD1__USBPHY2_RX_HS_RXD 748
787MX6Q_PAD_ENET_TXD0__RESERVED_RSRVED 749
788MX6Q_PAD_ENET_TXD0__ENET_TDATA_0 750
789MX6Q_PAD_ENET_TXD0__ESAI1_TX4_RX1 751
790MX6Q_PAD_ENET_TXD0__GPIO_1_30 752
791MX6Q_PAD_ENET_TXD0__SATA_PHY_TCK 753
792MX6Q_PAD_ENET_TXD0__USBPHY2_RX_FS_RXD 754
793MX6Q_PAD_ENET_MDC__MLB_MLBDAT 755
794MX6Q_PAD_ENET_MDC__ENET_MDC 756
795MX6Q_PAD_ENET_MDC__ESAI1_TX5_RX0 757
796MX6Q_PAD_ENET_MDC__ENET_1588_EVENT1_IN 758
797MX6Q_PAD_ENET_MDC__GPIO_1_31 759
798MX6Q_PAD_ENET_MDC__SATA_PHY_TMS 760
799MX6Q_PAD_ENET_MDC__USBPHY2_RX_DISCON 761
800MX6Q_PAD_DRAM_D40__MMDC_DRAM_D_40 762
801MX6Q_PAD_DRAM_D41__MMDC_DRAM_D_41 763
802MX6Q_PAD_DRAM_D42__MMDC_DRAM_D_42 764
803MX6Q_PAD_DRAM_D43__MMDC_DRAM_D_43 765
804MX6Q_PAD_DRAM_D44__MMDC_DRAM_D_44 766
805MX6Q_PAD_DRAM_D45__MMDC_DRAM_D_45 767
806MX6Q_PAD_DRAM_D46__MMDC_DRAM_D_46 768
807MX6Q_PAD_DRAM_D47__MMDC_DRAM_D_47 769
808MX6Q_PAD_DRAM_SDQS5__MMDC_DRAM_SDQS_5 770
809MX6Q_PAD_DRAM_DQM5__MMDC_DRAM_DQM_5 771
810MX6Q_PAD_DRAM_D32__MMDC_DRAM_D_32 772
811MX6Q_PAD_DRAM_D33__MMDC_DRAM_D_33 773
812MX6Q_PAD_DRAM_D34__MMDC_DRAM_D_34 774
813MX6Q_PAD_DRAM_D35__MMDC_DRAM_D_35 775
814MX6Q_PAD_DRAM_D36__MMDC_DRAM_D_36 776
815MX6Q_PAD_DRAM_D37__MMDC_DRAM_D_37 777
816MX6Q_PAD_DRAM_D38__MMDC_DRAM_D_38 778
817MX6Q_PAD_DRAM_D39__MMDC_DRAM_D_39 779
818MX6Q_PAD_DRAM_DQM4__MMDC_DRAM_DQM_4 780
819MX6Q_PAD_DRAM_SDQS4__MMDC_DRAM_SDQS_4 781
820MX6Q_PAD_DRAM_D24__MMDC_DRAM_D_24 782
821MX6Q_PAD_DRAM_D25__MMDC_DRAM_D_25 783
822MX6Q_PAD_DRAM_D26__MMDC_DRAM_D_26 784
823MX6Q_PAD_DRAM_D27__MMDC_DRAM_D_27 785
824MX6Q_PAD_DRAM_D28__MMDC_DRAM_D_28 786
825MX6Q_PAD_DRAM_D29__MMDC_DRAM_D_29 787
826MX6Q_PAD_DRAM_SDQS3__MMDC_DRAM_SDQS_3 788
827MX6Q_PAD_DRAM_D30__MMDC_DRAM_D_30 789
828MX6Q_PAD_DRAM_D31__MMDC_DRAM_D_31 790
829MX6Q_PAD_DRAM_DQM3__MMDC_DRAM_DQM_3 791
830MX6Q_PAD_DRAM_D16__MMDC_DRAM_D_16 792
831MX6Q_PAD_DRAM_D17__MMDC_DRAM_D_17 793
832MX6Q_PAD_DRAM_D18__MMDC_DRAM_D_18 794
833MX6Q_PAD_DRAM_D19__MMDC_DRAM_D_19 795
834MX6Q_PAD_DRAM_D20__MMDC_DRAM_D_20 796
835MX6Q_PAD_DRAM_D21__MMDC_DRAM_D_21 797
836MX6Q_PAD_DRAM_D22__MMDC_DRAM_D_22 798
837MX6Q_PAD_DRAM_SDQS2__MMDC_DRAM_SDQS_2 799
838MX6Q_PAD_DRAM_D23__MMDC_DRAM_D_23 800
839MX6Q_PAD_DRAM_DQM2__MMDC_DRAM_DQM_2 801
840MX6Q_PAD_DRAM_A0__MMDC_DRAM_A_0 802
841MX6Q_PAD_DRAM_A1__MMDC_DRAM_A_1 803
842MX6Q_PAD_DRAM_A2__MMDC_DRAM_A_2 804
843MX6Q_PAD_DRAM_A3__MMDC_DRAM_A_3 805
844MX6Q_PAD_DRAM_A4__MMDC_DRAM_A_4 806
845MX6Q_PAD_DRAM_A5__MMDC_DRAM_A_5 807
846MX6Q_PAD_DRAM_A6__MMDC_DRAM_A_6 808
847MX6Q_PAD_DRAM_A7__MMDC_DRAM_A_7 809
848MX6Q_PAD_DRAM_A8__MMDC_DRAM_A_8 810
849MX6Q_PAD_DRAM_A9__MMDC_DRAM_A_9 811
850MX6Q_PAD_DRAM_A10__MMDC_DRAM_A_10 812
851MX6Q_PAD_DRAM_A11__MMDC_DRAM_A_11 813
852MX6Q_PAD_DRAM_A12__MMDC_DRAM_A_12 814
853MX6Q_PAD_DRAM_A13__MMDC_DRAM_A_13 815
854MX6Q_PAD_DRAM_A14__MMDC_DRAM_A_14 816
855MX6Q_PAD_DRAM_A15__MMDC_DRAM_A_15 817
856MX6Q_PAD_DRAM_CAS__MMDC_DRAM_CAS 818
857MX6Q_PAD_DRAM_CS0__MMDC_DRAM_CS_0 819
858MX6Q_PAD_DRAM_CS1__MMDC_DRAM_CS_1 820
859MX6Q_PAD_DRAM_RAS__MMDC_DRAM_RAS 821
860MX6Q_PAD_DRAM_RESET__MMDC_DRAM_RESET 822
861MX6Q_PAD_DRAM_SDBA0__MMDC_DRAM_SDBA_0 823
862MX6Q_PAD_DRAM_SDBA1__MMDC_DRAM_SDBA_1 824
863MX6Q_PAD_DRAM_SDCLK_0__MMDC_DRAM_SDCLK0 825
864MX6Q_PAD_DRAM_SDBA2__MMDC_DRAM_SDBA_2 826
865MX6Q_PAD_DRAM_SDCKE0__MMDC_DRAM_SDCKE_0 827
866MX6Q_PAD_DRAM_SDCLK_1__MMDC_DRAM_SDCLK1 828
867MX6Q_PAD_DRAM_SDCKE1__MMDC_DRAM_SDCKE_1 829
868MX6Q_PAD_DRAM_SDODT0__MMDC_DRAM_ODT_0 830
869MX6Q_PAD_DRAM_SDODT1__MMDC_DRAM_ODT_1 831
870MX6Q_PAD_DRAM_SDWE__MMDC_DRAM_SDWE 832
871MX6Q_PAD_DRAM_D0__MMDC_DRAM_D_0 833
872MX6Q_PAD_DRAM_D1__MMDC_DRAM_D_1 834
873MX6Q_PAD_DRAM_D2__MMDC_DRAM_D_2 835
874MX6Q_PAD_DRAM_D3__MMDC_DRAM_D_3 836
875MX6Q_PAD_DRAM_D4__MMDC_DRAM_D_4 837
876MX6Q_PAD_DRAM_D5__MMDC_DRAM_D_5 838
877MX6Q_PAD_DRAM_SDQS0__MMDC_DRAM_SDQS_0 839
878MX6Q_PAD_DRAM_D6__MMDC_DRAM_D_6 840
879MX6Q_PAD_DRAM_D7__MMDC_DRAM_D_7 841
880MX6Q_PAD_DRAM_DQM0__MMDC_DRAM_DQM_0 842
881MX6Q_PAD_DRAM_D8__MMDC_DRAM_D_8 843
882MX6Q_PAD_DRAM_D9__MMDC_DRAM_D_9 844
883MX6Q_PAD_DRAM_D10__MMDC_DRAM_D_10 845
884MX6Q_PAD_DRAM_D11__MMDC_DRAM_D_11 846
885MX6Q_PAD_DRAM_D12__MMDC_DRAM_D_12 847
886MX6Q_PAD_DRAM_D13__MMDC_DRAM_D_13 848
887MX6Q_PAD_DRAM_D14__MMDC_DRAM_D_14 849
888MX6Q_PAD_DRAM_SDQS1__MMDC_DRAM_SDQS_1 850
889MX6Q_PAD_DRAM_D15__MMDC_DRAM_D_15 851
890MX6Q_PAD_DRAM_DQM1__MMDC_DRAM_DQM_1 852
891MX6Q_PAD_DRAM_D48__MMDC_DRAM_D_48 853
892MX6Q_PAD_DRAM_D49__MMDC_DRAM_D_49 854
893MX6Q_PAD_DRAM_D50__MMDC_DRAM_D_50 855
894MX6Q_PAD_DRAM_D51__MMDC_DRAM_D_51 856
895MX6Q_PAD_DRAM_D52__MMDC_DRAM_D_52 857
896MX6Q_PAD_DRAM_D53__MMDC_DRAM_D_53 858
897MX6Q_PAD_DRAM_D54__MMDC_DRAM_D_54 859
898MX6Q_PAD_DRAM_D55__MMDC_DRAM_D_55 860
899MX6Q_PAD_DRAM_SDQS6__MMDC_DRAM_SDQS_6 861
900MX6Q_PAD_DRAM_DQM6__MMDC_DRAM_DQM_6 862
901MX6Q_PAD_DRAM_D56__MMDC_DRAM_D_56 863
902MX6Q_PAD_DRAM_SDQS7__MMDC_DRAM_SDQS_7 864
903MX6Q_PAD_DRAM_D57__MMDC_DRAM_D_57 865
904MX6Q_PAD_DRAM_D58__MMDC_DRAM_D_58 866
905MX6Q_PAD_DRAM_D59__MMDC_DRAM_D_59 867
906MX6Q_PAD_DRAM_D60__MMDC_DRAM_D_60 868
907MX6Q_PAD_DRAM_DQM7__MMDC_DRAM_DQM_7 869
908MX6Q_PAD_DRAM_D61__MMDC_DRAM_D_61 870
909MX6Q_PAD_DRAM_D62__MMDC_DRAM_D_62 871
910MX6Q_PAD_DRAM_D63__MMDC_DRAM_D_63 872
911MX6Q_PAD_KEY_COL0__ECSPI1_SCLK 873
912MX6Q_PAD_KEY_COL0__ENET_RDATA_3 874
913MX6Q_PAD_KEY_COL0__AUDMUX_AUD5_TXC 875
914MX6Q_PAD_KEY_COL0__KPP_COL_0 876
915MX6Q_PAD_KEY_COL0__UART4_TXD 877
916MX6Q_PAD_KEY_COL0__GPIO_4_6 878
917MX6Q_PAD_KEY_COL0__DCIC1_DCIC_OUT 879
918MX6Q_PAD_KEY_COL0__SRC_ANY_PU_RST 880
919MX6Q_PAD_KEY_ROW0__ECSPI1_MOSI 881
920MX6Q_PAD_KEY_ROW0__ENET_TDATA_3 882
921MX6Q_PAD_KEY_ROW0__AUDMUX_AUD5_TXD 883
922MX6Q_PAD_KEY_ROW0__KPP_ROW_0 884
923MX6Q_PAD_KEY_ROW0__UART4_RXD 885
924MX6Q_PAD_KEY_ROW0__GPIO_4_7 886
925MX6Q_PAD_KEY_ROW0__DCIC2_DCIC_OUT 887
926MX6Q_PAD_KEY_ROW0__PL301_PER1_HADR_0 888
927MX6Q_PAD_KEY_COL1__ECSPI1_MISO 889
928MX6Q_PAD_KEY_COL1__ENET_MDIO 890
929MX6Q_PAD_KEY_COL1__AUDMUX_AUD5_TXFS 891
930MX6Q_PAD_KEY_COL1__KPP_COL_1 892
931MX6Q_PAD_KEY_COL1__UART5_TXD 893
932MX6Q_PAD_KEY_COL1__GPIO_4_8 894
933MX6Q_PAD_KEY_COL1__USDHC1_VSELECT 895
934MX6Q_PAD_KEY_COL1__PL301MX_PER1_HADR_1 896
935MX6Q_PAD_KEY_ROW1__ECSPI1_SS0 897
936MX6Q_PAD_KEY_ROW1__ENET_COL 898
937MX6Q_PAD_KEY_ROW1__AUDMUX_AUD5_RXD 899
938MX6Q_PAD_KEY_ROW1__KPP_ROW_1 900
939MX6Q_PAD_KEY_ROW1__UART5_RXD 901
940MX6Q_PAD_KEY_ROW1__GPIO_4_9 902
941MX6Q_PAD_KEY_ROW1__USDHC2_VSELECT 903
942MX6Q_PAD_KEY_ROW1__PL301_PER1_HADDR_2 904
943MX6Q_PAD_KEY_COL2__ECSPI1_SS1 905
944MX6Q_PAD_KEY_COL2__ENET_RDATA_2 906
945MX6Q_PAD_KEY_COL2__CAN1_TXCAN 907
946MX6Q_PAD_KEY_COL2__KPP_COL_2 908
947MX6Q_PAD_KEY_COL2__ENET_MDC 909
948MX6Q_PAD_KEY_COL2__GPIO_4_10 910
949MX6Q_PAD_KEY_COL2__USBOH3_H1_PWRCTL_WKP 911
950MX6Q_PAD_KEY_COL2__PL301_PER1_HADDR_3 912
951MX6Q_PAD_KEY_ROW2__ECSPI1_SS2 913
952MX6Q_PAD_KEY_ROW2__ENET_TDATA_2 914
953MX6Q_PAD_KEY_ROW2__CAN1_RXCAN 915
954MX6Q_PAD_KEY_ROW2__KPP_ROW_2 916
955MX6Q_PAD_KEY_ROW2__USDHC2_VSELECT 917
956MX6Q_PAD_KEY_ROW2__GPIO_4_11 918
957MX6Q_PAD_KEY_ROW2__HDMI_TX_CEC_LINE 919
958MX6Q_PAD_KEY_ROW2__PL301_PER1_HADR_4 920
959MX6Q_PAD_KEY_COL3__ECSPI1_SS3 921
960MX6Q_PAD_KEY_COL3__ENET_CRS 922
961MX6Q_PAD_KEY_COL3__HDMI_TX_DDC_SCL 923
962MX6Q_PAD_KEY_COL3__KPP_COL_3 924
963MX6Q_PAD_KEY_COL3__I2C2_SCL 925
964MX6Q_PAD_KEY_COL3__GPIO_4_12 926
965MX6Q_PAD_KEY_COL3__SPDIF_IN1 927
966MX6Q_PAD_KEY_COL3__PL301_PER1_HADR_5 928
967MX6Q_PAD_KEY_ROW3__OSC32K_32K_OUT 929
968MX6Q_PAD_KEY_ROW3__ASRC_ASRC_EXT_CLK 930
969MX6Q_PAD_KEY_ROW3__HDMI_TX_DDC_SDA 931
970MX6Q_PAD_KEY_ROW3__KPP_ROW_3 932
971MX6Q_PAD_KEY_ROW3__I2C2_SDA 933
972MX6Q_PAD_KEY_ROW3__GPIO_4_13 934
973MX6Q_PAD_KEY_ROW3__USDHC1_VSELECT 935
974MX6Q_PAD_KEY_ROW3__PL301_PER1_HADR_6 936
975MX6Q_PAD_KEY_COL4__CAN2_TXCAN 937
976MX6Q_PAD_KEY_COL4__IPU1_SISG_4 938
977MX6Q_PAD_KEY_COL4__USBOH3_USBOTG_OC 939
978MX6Q_PAD_KEY_COL4__KPP_COL_4 940
979MX6Q_PAD_KEY_COL4__UART5_RTS 941
980MX6Q_PAD_KEY_COL4__GPIO_4_14 942
981MX6Q_PAD_KEY_COL4__MMDC_DEBUG_49 943
982MX6Q_PAD_KEY_COL4__PL301_PER1_HADDR_7 944
983MX6Q_PAD_KEY_ROW4__CAN2_RXCAN 945
984MX6Q_PAD_KEY_ROW4__IPU1_SISG_5 946
985MX6Q_PAD_KEY_ROW4__USBOH3_USBOTG_PWR 947
986MX6Q_PAD_KEY_ROW4__KPP_ROW_4 948
987MX6Q_PAD_KEY_ROW4__UART5_CTS 949
988MX6Q_PAD_KEY_ROW4__GPIO_4_15 950
989MX6Q_PAD_KEY_ROW4__MMDC_DEBUG_50 951
990MX6Q_PAD_KEY_ROW4__PL301_PER1_HADR_8 952
991MX6Q_PAD_GPIO_0__CCM_CLKO 953
992MX6Q_PAD_GPIO_0__KPP_COL_5 954
993MX6Q_PAD_GPIO_0__ASRC_ASRC_EXT_CLK 955
994MX6Q_PAD_GPIO_0__EPIT1_EPITO 956
995MX6Q_PAD_GPIO_0__GPIO_1_0 957
996MX6Q_PAD_GPIO_0__USBOH3_USBH1_PWR 958
997MX6Q_PAD_GPIO_0__SNVS_HP_WRAP_SNVS_VIO5 959
998MX6Q_PAD_GPIO_1__ESAI1_SCKR 960
999MX6Q_PAD_GPIO_1__WDOG2_WDOG_B 961
1000MX6Q_PAD_GPIO_1__KPP_ROW_5 962
1001MX6Q_PAD_GPIO_1__PWM2_PWMO 963
1002MX6Q_PAD_GPIO_1__GPIO_1_1 964
1003MX6Q_PAD_GPIO_1__USDHC1_CD 965
1004MX6Q_PAD_GPIO_1__SRC_TESTER_ACK 966
1005MX6Q_PAD_GPIO_9__ESAI1_FSR 967
1006MX6Q_PAD_GPIO_9__WDOG1_WDOG_B 968
1007MX6Q_PAD_GPIO_9__KPP_COL_6 969
1008MX6Q_PAD_GPIO_9__CCM_REF_EN_B 970
1009MX6Q_PAD_GPIO_9__PWM1_PWMO 971
1010MX6Q_PAD_GPIO_9__GPIO_1_9 972
1011MX6Q_PAD_GPIO_9__USDHC1_WP 973
1012MX6Q_PAD_GPIO_9__SRC_EARLY_RST 974
1013MX6Q_PAD_GPIO_3__ESAI1_HCKR 975
1014MX6Q_PAD_GPIO_3__OBSERVE_MUX_INT_OUT0 976
1015MX6Q_PAD_GPIO_3__I2C3_SCL 977
1016MX6Q_PAD_GPIO_3__ANATOP_24M_OUT 978
1017MX6Q_PAD_GPIO_3__CCM_CLKO2 979
1018MX6Q_PAD_GPIO_3__GPIO_1_3 980
1019MX6Q_PAD_GPIO_3__USBOH3_USBH1_OC 981
1020MX6Q_PAD_GPIO_3__MLB_MLBCLK 982
1021MX6Q_PAD_GPIO_6__ESAI1_SCKT 983
1022MX6Q_PAD_GPIO_6__OBSERVE_MUX_INT_OUT1 984
1023MX6Q_PAD_GPIO_6__I2C3_SDA 985
1024MX6Q_PAD_GPIO_6__CCM_CCM_OUT_0 986
1025MX6Q_PAD_GPIO_6__CSU_CSU_INT_DEB 987
1026MX6Q_PAD_GPIO_6__GPIO_1_6 988
1027MX6Q_PAD_GPIO_6__USDHC2_LCTL 989
1028MX6Q_PAD_GPIO_6__MLB_MLBSIG 990
1029MX6Q_PAD_GPIO_2__ESAI1_FST 991
1030MX6Q_PAD_GPIO_2__OBSERVE_MUX_INT_OUT2 992
1031MX6Q_PAD_GPIO_2__KPP_ROW_6 993
1032MX6Q_PAD_GPIO_2__CCM_CCM_OUT_1 994
1033MX6Q_PAD_GPIO_2__CSU_CSU_ALARM_AUT_0 995
1034MX6Q_PAD_GPIO_2__GPIO_1_2 996
1035MX6Q_PAD_GPIO_2__USDHC2_WP 997
1036MX6Q_PAD_GPIO_2__MLB_MLBDAT 998
1037MX6Q_PAD_GPIO_4__ESAI1_HCKT 999
1038MX6Q_PAD_GPIO_4__OBSERVE_MUX_INT_OUT3 1000
1039MX6Q_PAD_GPIO_4__KPP_COL_7 1001
1040MX6Q_PAD_GPIO_4__CCM_CCM_OUT_2 1002
1041MX6Q_PAD_GPIO_4__CSU_CSU_ALARM_AUT_1 1003
1042MX6Q_PAD_GPIO_4__GPIO_1_4 1004
1043MX6Q_PAD_GPIO_4__USDHC2_CD 1005
1044MX6Q_PAD_GPIO_4__OCOTP_CRL_WRAR_FUSE_LA 1006
1045MX6Q_PAD_GPIO_5__ESAI1_TX2_RX3 1007
1046MX6Q_PAD_GPIO_5__OBSERVE_MUX_INT_OUT4 1008
1047MX6Q_PAD_GPIO_5__KPP_ROW_7 1009
1048MX6Q_PAD_GPIO_5__CCM_CLKO 1010
1049MX6Q_PAD_GPIO_5__CSU_CSU_ALARM_AUT_2 1011
1050MX6Q_PAD_GPIO_5__GPIO_1_5 1012
1051MX6Q_PAD_GPIO_5__I2C3_SCL 1013
1052MX6Q_PAD_GPIO_5__CHEETAH_EVENTI 1014
1053MX6Q_PAD_GPIO_7__ESAI1_TX4_RX1 1015
1054MX6Q_PAD_GPIO_7__ECSPI5_RDY 1016
1055MX6Q_PAD_GPIO_7__EPIT1_EPITO 1017
1056MX6Q_PAD_GPIO_7__CAN1_TXCAN 1018
1057MX6Q_PAD_GPIO_7__UART2_TXD 1019
1058MX6Q_PAD_GPIO_7__GPIO_1_7 1020
1059MX6Q_PAD_GPIO_7__SPDIF_PLOCK 1021
1060MX6Q_PAD_GPIO_7__USBOH3_OTGUSB_HST_MODE 1022
1061MX6Q_PAD_GPIO_8__ESAI1_TX5_RX0 1023
1062MX6Q_PAD_GPIO_8__ANATOP_ANATOP_32K_OUT 1024
1063MX6Q_PAD_GPIO_8__EPIT2_EPITO 1025
1064MX6Q_PAD_GPIO_8__CAN1_RXCAN 1026
1065MX6Q_PAD_GPIO_8__UART2_RXD 1027
1066MX6Q_PAD_GPIO_8__GPIO_1_8 1028
1067MX6Q_PAD_GPIO_8__SPDIF_SRCLK 1029
1068MX6Q_PAD_GPIO_8__USBOH3_OTG_PWRCTL_WAK 1030
1069MX6Q_PAD_GPIO_16__ESAI1_TX3_RX2 1031
1070MX6Q_PAD_GPIO_16__ENET_1588_EVENT2_IN 1032
1071MX6Q_PAD_GPIO_16__ENET_ETHERNET_REF_OUT 1033
1072MX6Q_PAD_GPIO_16__USDHC1_LCTL 1034
1073MX6Q_PAD_GPIO_16__SPDIF_IN1 1035
1074MX6Q_PAD_GPIO_16__GPIO_7_11 1036
1075MX6Q_PAD_GPIO_16__I2C3_SDA 1037
1076MX6Q_PAD_GPIO_16__SJC_DE_B 1038
1077MX6Q_PAD_GPIO_17__ESAI1_TX0 1039
1078MX6Q_PAD_GPIO_17__ENET_1588_EVENT3_IN 1040
1079MX6Q_PAD_GPIO_17__CCM_PMIC_RDY 1041
1080MX6Q_PAD_GPIO_17__SDMA_SDMA_EXT_EVENT_0 1042
1081MX6Q_PAD_GPIO_17__SPDIF_OUT1 1043
1082MX6Q_PAD_GPIO_17__GPIO_7_12 1044
1083MX6Q_PAD_GPIO_17__SJC_JTAG_ACT 1045
1084MX6Q_PAD_GPIO_18__ESAI1_TX1 1046
1085MX6Q_PAD_GPIO_18__ENET_RX_CLK 1047
1086MX6Q_PAD_GPIO_18__USDHC3_VSELECT 1048
1087MX6Q_PAD_GPIO_18__SDMA_SDMA_EXT_EVENT_1 1049
1088MX6Q_PAD_GPIO_18__ASRC_ASRC_EXT_CLK 1050
1089MX6Q_PAD_GPIO_18__GPIO_7_13 1051
1090MX6Q_PAD_GPIO_18__SNVS_HP_WRA_SNVS_VIO5 1052
1091MX6Q_PAD_GPIO_18__SRC_SYSTEM_RST 1053
1092MX6Q_PAD_GPIO_19__KPP_COL_5 1054
1093MX6Q_PAD_GPIO_19__ENET_1588_EVENT0_OUT 1055
1094MX6Q_PAD_GPIO_19__SPDIF_OUT1 1056
1095MX6Q_PAD_GPIO_19__CCM_CLKO 1057
1096MX6Q_PAD_GPIO_19__ECSPI1_RDY 1058
1097MX6Q_PAD_GPIO_19__GPIO_4_5 1059
1098MX6Q_PAD_GPIO_19__ENET_TX_ER 1060
1099MX6Q_PAD_GPIO_19__SRC_INT_BOOT 1061
1100MX6Q_PAD_CSI0_PIXCLK__IPU1_CSI0_PIXCLK 1062
1101MX6Q_PAD_CSI0_PIXCLK__PCIE_CTRL_MUX_12 1063
1102MX6Q_PAD_CSI0_PIXCLK__SDMA_DEBUG_PC_0 1064
1103MX6Q_PAD_CSI0_PIXCLK__GPIO_5_18 1065
1104MX6Q_PAD_CSI0_PIXCLK___MMDC_DEBUG_29 1066
1105MX6Q_PAD_CSI0_PIXCLK__CHEETAH_EVENTO 1067
1106MX6Q_PAD_CSI0_MCLK__IPU1_CSI0_HSYNC 1068
1107MX6Q_PAD_CSI0_MCLK__PCIE_CTRL_MUX_13 1069
1108MX6Q_PAD_CSI0_MCLK__CCM_CLKO 1070
1109MX6Q_PAD_CSI0_MCLK__SDMA_DEBUG_PC_1 1071
1110MX6Q_PAD_CSI0_MCLK__GPIO_5_19 1072
1111MX6Q_PAD_CSI0_MCLK__MMDC_MMDC_DEBUG_30 1073
1112MX6Q_PAD_CSI0_MCLK__CHEETAH_TRCTL 1074
1113MX6Q_PAD_CSI0_DATA_EN__IPU1_CSI0_DA_EN 1075
1114MX6Q_PAD_CSI0_DATA_EN__WEIM_WEIM_D_0 1076
1115MX6Q_PAD_CSI0_DATA_EN__PCIE_CTRL_MUX_14 1077
1116MX6Q_PAD_CSI0_DATA_EN__SDMA_DEBUG_PC_2 1078
1117MX6Q_PAD_CSI0_DATA_EN__GPIO_5_20 1079
1118MX6Q_PAD_CSI0_DATA_EN__MMDC_DEBUG_31 1080
1119MX6Q_PAD_CSI0_DATA_EN__CHEETAH_TRCLK 1081
1120MX6Q_PAD_CSI0_VSYNC__IPU1_CSI0_VSYNC 1082
1121MX6Q_PAD_CSI0_VSYNC__WEIM_WEIM_D_1 1083
1122MX6Q_PAD_CSI0_VSYNC__PCIE_CTRL_MUX_15 1084
1123MX6Q_PAD_CSI0_VSYNC__SDMA_DEBUG_PC_3 1085
1124MX6Q_PAD_CSI0_VSYNC__GPIO_5_21 1086
1125MX6Q_PAD_CSI0_VSYNC__MMDC_DEBUG_32 1087
1126MX6Q_PAD_CSI0_VSYNC__CHEETAH_TRACE_0 1088
1127MX6Q_PAD_CSI0_DAT4__IPU1_CSI0_D_4 1089
1128MX6Q_PAD_CSI0_DAT4__WEIM_WEIM_D_2 1090
1129MX6Q_PAD_CSI0_DAT4__ECSPI1_SCLK 1091
1130MX6Q_PAD_CSI0_DAT4__KPP_COL_5 1092
1131MX6Q_PAD_CSI0_DAT4__AUDMUX_AUD3_TXC 1093
1132MX6Q_PAD_CSI0_DAT4__GPIO_5_22 1094
1133MX6Q_PAD_CSI0_DAT4__MMDC_DEBUG_43 1095
1134MX6Q_PAD_CSI0_DAT4__CHEETAH_TRACE_1 1096
1135MX6Q_PAD_CSI0_DAT5__IPU1_CSI0_D_5 1097
1136MX6Q_PAD_CSI0_DAT5__WEIM_WEIM_D_3 1098
1137MX6Q_PAD_CSI0_DAT5__ECSPI1_MOSI 1099
1138MX6Q_PAD_CSI0_DAT5__KPP_ROW_5 1100
1139MX6Q_PAD_CSI0_DAT5__AUDMUX_AUD3_TXD 1101
1140MX6Q_PAD_CSI0_DAT5__GPIO_5_23 1102
1141MX6Q_PAD_CSI0_DAT5__MMDC_MMDC_DEBUG_44 1103
1142MX6Q_PAD_CSI0_DAT5__CHEETAH_TRACE_2 1104
1143MX6Q_PAD_CSI0_DAT6__IPU1_CSI0_D_6 1105
1144MX6Q_PAD_CSI0_DAT6__WEIM_WEIM_D_4 1106
1145MX6Q_PAD_CSI0_DAT6__ECSPI1_MISO 1107
1146MX6Q_PAD_CSI0_DAT6__KPP_COL_6 1108
1147MX6Q_PAD_CSI0_DAT6__AUDMUX_AUD3_TXFS 1109
1148MX6Q_PAD_CSI0_DAT6__GPIO_5_24 1110
1149MX6Q_PAD_CSI0_DAT6__MMDC_MMDC_DEBUG_45 1111
1150MX6Q_PAD_CSI0_DAT6__CHEETAH_TRACE_3 1112
1151MX6Q_PAD_CSI0_DAT7__IPU1_CSI0_D_7 1113
1152MX6Q_PAD_CSI0_DAT7__WEIM_WEIM_D_5 1114
1153MX6Q_PAD_CSI0_DAT7__ECSPI1_SS0 1115
1154MX6Q_PAD_CSI0_DAT7__KPP_ROW_6 1116
1155MX6Q_PAD_CSI0_DAT7__AUDMUX_AUD3_RXD 1117
1156MX6Q_PAD_CSI0_DAT7__GPIO_5_25 1118
1157MX6Q_PAD_CSI0_DAT7__MMDC_MMDC_DEBUG_46 1119
1158MX6Q_PAD_CSI0_DAT7__CHEETAH_TRACE_4 1120
1159MX6Q_PAD_CSI0_DAT8__IPU1_CSI0_D_8 1121
1160MX6Q_PAD_CSI0_DAT8__WEIM_WEIM_D_6 1122
1161MX6Q_PAD_CSI0_DAT8__ECSPI2_SCLK 1123
1162MX6Q_PAD_CSI0_DAT8__KPP_COL_7 1124
1163MX6Q_PAD_CSI0_DAT8__I2C1_SDA 1125
1164MX6Q_PAD_CSI0_DAT8__GPIO_5_26 1126
1165MX6Q_PAD_CSI0_DAT8__MMDC_MMDC_DEBUG_47 1127
1166MX6Q_PAD_CSI0_DAT8__CHEETAH_TRACE_5 1128
1167MX6Q_PAD_CSI0_DAT9__IPU1_CSI0_D_9 1129
1168MX6Q_PAD_CSI0_DAT9__WEIM_WEIM_D_7 1130
1169MX6Q_PAD_CSI0_DAT9__ECSPI2_MOSI 1131
1170MX6Q_PAD_CSI0_DAT9__KPP_ROW_7 1132
1171MX6Q_PAD_CSI0_DAT9__I2C1_SCL 1133
1172MX6Q_PAD_CSI0_DAT9__GPIO_5_27 1134
1173MX6Q_PAD_CSI0_DAT9__MMDC_MMDC_DEBUG_48 1135
1174MX6Q_PAD_CSI0_DAT9__CHEETAH_TRACE_6 1136
1175MX6Q_PAD_CSI0_DAT10__IPU1_CSI0_D_10 1137
1176MX6Q_PAD_CSI0_DAT10__AUDMUX_AUD3_RXC 1138
1177MX6Q_PAD_CSI0_DAT10__ECSPI2_MISO 1139
1178MX6Q_PAD_CSI0_DAT10__UART1_TXD 1140
1179MX6Q_PAD_CSI0_DAT10__SDMA_DEBUG_PC_4 1141
1180MX6Q_PAD_CSI0_DAT10__GPIO_5_28 1142
1181MX6Q_PAD_CSI0_DAT10__MMDC_MMDC_DEBUG_33 1143
1182MX6Q_PAD_CSI0_DAT10__CHEETAH_TRACE_7 1144
1183MX6Q_PAD_CSI0_DAT11__IPU1_CSI0_D_11 1145
1184MX6Q_PAD_CSI0_DAT11__AUDMUX_AUD3_RXFS 1146
1185MX6Q_PAD_CSI0_DAT11__ECSPI2_SS0 1147
1186MX6Q_PAD_CSI0_DAT11__UART1_RXD 1148
1187MX6Q_PAD_CSI0_DAT11__SDMA_DEBUG_PC_5 1149
1188MX6Q_PAD_CSI0_DAT11__GPIO_5_29 1150
1189MX6Q_PAD_CSI0_DAT11__MMDC_MMDC_DEBUG_34 1151
1190MX6Q_PAD_CSI0_DAT11__CHEETAH_TRACE_8 1152
1191MX6Q_PAD_CSI0_DAT12__IPU1_CSI0_D_12 1153
1192MX6Q_PAD_CSI0_DAT12__WEIM_WEIM_D_8 1154
1193MX6Q_PAD_CSI0_DAT12__PCIE_CTRL_MUX_16 1155
1194MX6Q_PAD_CSI0_DAT12__UART4_TXD 1156
1195MX6Q_PAD_CSI0_DAT12__SDMA_DEBUG_PC_6 1157
1196MX6Q_PAD_CSI0_DAT12__GPIO_5_30 1158
1197MX6Q_PAD_CSI0_DAT12__MMDC_MMDC_DEBUG_35 1159
1198MX6Q_PAD_CSI0_DAT12__CHEETAH_TRACE_9 1160
1199MX6Q_PAD_CSI0_DAT13__IPU1_CSI0_D_13 1161
1200MX6Q_PAD_CSI0_DAT13__WEIM_WEIM_D_9 1162
1201MX6Q_PAD_CSI0_DAT13__PCIE_CTRL_MUX_17 1163
1202MX6Q_PAD_CSI0_DAT13__UART4_RXD 1164
1203MX6Q_PAD_CSI0_DAT13__SDMA_DEBUG_PC_7 1165
1204MX6Q_PAD_CSI0_DAT13__GPIO_5_31 1166
1205MX6Q_PAD_CSI0_DAT13__MMDC_MMDC_DEBUG_36 1167
1206MX6Q_PAD_CSI0_DAT13__CHEETAH_TRACE_10 1168
1207MX6Q_PAD_CSI0_DAT14__IPU1_CSI0_D_14 1169
1208MX6Q_PAD_CSI0_DAT14__WEIM_WEIM_D_10 1170
1209MX6Q_PAD_CSI0_DAT14__PCIE_CTRL_MUX_18 1171
1210MX6Q_PAD_CSI0_DAT14__UART5_TXD 1172
1211MX6Q_PAD_CSI0_DAT14__SDMA_DEBUG_PC_8 1173
1212MX6Q_PAD_CSI0_DAT14__GPIO_6_0 1174
1213MX6Q_PAD_CSI0_DAT14__MMDC_MMDC_DEBUG_37 1175
1214MX6Q_PAD_CSI0_DAT14__CHEETAH_TRACE_11 1176
1215MX6Q_PAD_CSI0_DAT15__IPU1_CSI0_D_15 1177
1216MX6Q_PAD_CSI0_DAT15__WEIM_WEIM_D_11 1178
1217MX6Q_PAD_CSI0_DAT15__PCIE_CTRL_MUX_19 1179
1218MX6Q_PAD_CSI0_DAT15__UART5_RXD 1180
1219MX6Q_PAD_CSI0_DAT15__SDMA_DEBUG_PC_9 1181
1220MX6Q_PAD_CSI0_DAT15__GPIO_6_1 1182
1221MX6Q_PAD_CSI0_DAT15__MMDC_MMDC_DEBUG_38 1183
1222MX6Q_PAD_CSI0_DAT15__CHEETAH_TRACE_12 1184
1223MX6Q_PAD_CSI0_DAT16__IPU1_CSI0_D_16 1185
1224MX6Q_PAD_CSI0_DAT16__WEIM_WEIM_D_12 1186
1225MX6Q_PAD_CSI0_DAT16__PCIE_CTRL_MUX_20 1187
1226MX6Q_PAD_CSI0_DAT16__UART4_RTS 1188
1227MX6Q_PAD_CSI0_DAT16__SDMA_DEBUG_PC_10 1189
1228MX6Q_PAD_CSI0_DAT16__GPIO_6_2 1190
1229MX6Q_PAD_CSI0_DAT16__MMDC_MMDC_DEBUG_39 1191
1230MX6Q_PAD_CSI0_DAT16__CHEETAH_TRACE_13 1192
1231MX6Q_PAD_CSI0_DAT17__IPU1_CSI0_D_17 1193
1232MX6Q_PAD_CSI0_DAT17__WEIM_WEIM_D_13 1194
1233MX6Q_PAD_CSI0_DAT17__PCIE_CTRL_MUX_21 1195
1234MX6Q_PAD_CSI0_DAT17__UART4_CTS 1196
1235MX6Q_PAD_CSI0_DAT17__SDMA_DEBUG_PC_11 1197
1236MX6Q_PAD_CSI0_DAT17__GPIO_6_3 1198
1237MX6Q_PAD_CSI0_DAT17__MMDC_MMDC_DEBUG_40 1199
1238MX6Q_PAD_CSI0_DAT17__CHEETAH_TRACE_14 1200
1239MX6Q_PAD_CSI0_DAT18__IPU1_CSI0_D_18 1201
1240MX6Q_PAD_CSI0_DAT18__WEIM_WEIM_D_14 1202
1241MX6Q_PAD_CSI0_DAT18__PCIE_CTRL_MUX_22 1203
1242MX6Q_PAD_CSI0_DAT18__UART5_RTS 1204
1243MX6Q_PAD_CSI0_DAT18__SDMA_DEBUG_PC_12 1205
1244MX6Q_PAD_CSI0_DAT18__GPIO_6_4 1206
1245MX6Q_PAD_CSI0_DAT18__MMDC_MMDC_DEBUG_41 1207
1246MX6Q_PAD_CSI0_DAT18__CHEETAH_TRACE_15 1208
1247MX6Q_PAD_CSI0_DAT19__IPU1_CSI0_D_19 1209
1248MX6Q_PAD_CSI0_DAT19__WEIM_WEIM_D_15 1210
1249MX6Q_PAD_CSI0_DAT19__PCIE_CTRL_MUX_23 1211
1250MX6Q_PAD_CSI0_DAT19__UART5_CTS 1212
1251MX6Q_PAD_CSI0_DAT19__SDMA_DEBUG_PC_13 1213
1252MX6Q_PAD_CSI0_DAT19__GPIO_6_5 1214
1253MX6Q_PAD_CSI0_DAT19__MMDC_MMDC_DEBUG_42 1215
1254MX6Q_PAD_CSI0_DAT19__ANATOP_TESTO_9 1216
1255MX6Q_PAD_JTAG_TMS__SJC_TMS 1217
1256MX6Q_PAD_JTAG_MOD__SJC_MOD 1218
1257MX6Q_PAD_JTAG_TRSTB__SJC_TRSTB 1219
1258MX6Q_PAD_JTAG_TDI__SJC_TDI 1220
1259MX6Q_PAD_JTAG_TCK__SJC_TCK 1221
1260MX6Q_PAD_JTAG_TDO__SJC_TDO 1222
1261MX6Q_PAD_LVDS1_TX3_P__LDB_LVDS1_TX3 1223
1262MX6Q_PAD_LVDS1_TX2_P__LDB_LVDS1_TX2 1224
1263MX6Q_PAD_LVDS1_CLK_P__LDB_LVDS1_CLK 1225
1264MX6Q_PAD_LVDS1_TX1_P__LDB_LVDS1_TX1 1226
1265MX6Q_PAD_LVDS1_TX0_P__LDB_LVDS1_TX0 1227
1266MX6Q_PAD_LVDS0_TX3_P__LDB_LVDS0_TX3 1228
1267MX6Q_PAD_LVDS0_CLK_P__LDB_LVDS0_CLK 1229
1268MX6Q_PAD_LVDS0_TX2_P__LDB_LVDS0_TX2 1230
1269MX6Q_PAD_LVDS0_TX1_P__LDB_LVDS0_TX1 1231
1270MX6Q_PAD_LVDS0_TX0_P__LDB_LVDS0_TX0 1232
1271MX6Q_PAD_TAMPER__SNVS_LP_WRAP_SNVS_TD1 1233
1272MX6Q_PAD_PMIC_ON_REQ__SNVS_LPWRAP_WKALM 1234
1273MX6Q_PAD_PMIC_STBY_REQ__CCM_PMIC_STBYRQ 1235
1274MX6Q_PAD_POR_B__SRC_POR_B 1236
1275MX6Q_PAD_BOOT_MODE1__SRC_BOOT_MODE_1 1237
1276MX6Q_PAD_RESET_IN_B__SRC_RESET_B 1238
1277MX6Q_PAD_BOOT_MODE0__SRC_BOOT_MODE_0 1239
1278MX6Q_PAD_TEST_MODE__TCU_TEST_MODE 1240
1279MX6Q_PAD_SD3_DAT7__USDHC3_DAT7 1241
1280MX6Q_PAD_SD3_DAT7__UART1_TXD 1242
1281MX6Q_PAD_SD3_DAT7__PCIE_CTRL_MUX_24 1243
1282MX6Q_PAD_SD3_DAT7__USBOH3_UH3_DFD_OUT_0 1244
1283MX6Q_PAD_SD3_DAT7__USBOH3_UH2_DFD_OUT_0 1245
1284MX6Q_PAD_SD3_DAT7__GPIO_6_17 1246
1285MX6Q_PAD_SD3_DAT7__MIPI_CORE_DPHY_IN_12 1247
1286MX6Q_PAD_SD3_DAT7__USBPHY2_CLK20DIV 1248
1287MX6Q_PAD_SD3_DAT6__USDHC3_DAT6 1249
1288MX6Q_PAD_SD3_DAT6__UART1_RXD 1250
1289MX6Q_PAD_SD3_DAT6__PCIE_CTRL_MUX_25 1251
1290MX6Q_PAD_SD3_DAT6__USBOH3_UH3_DFD_OUT_1 1252
1291MX6Q_PAD_SD3_DAT6__USBOH3_UH2_DFD_OUT_1 1253
1292MX6Q_PAD_SD3_DAT6__GPIO_6_18 1254
1293MX6Q_PAD_SD3_DAT6__MIPI_CORE_DPHY_IN_13 1255
1294MX6Q_PAD_SD3_DAT6__ANATOP_TESTO_10 1256
1295MX6Q_PAD_SD3_DAT5__USDHC3_DAT5 1257
1296MX6Q_PAD_SD3_DAT5__UART2_TXD 1258
1297MX6Q_PAD_SD3_DAT5__PCIE_CTRL_MUX_26 1259
1298MX6Q_PAD_SD3_DAT5__USBOH3_UH3_DFD_OUT_2 1260
1299MX6Q_PAD_SD3_DAT5__USBOH3_UH2_DFD_OUT_2 1261
1300MX6Q_PAD_SD3_DAT5__GPIO_7_0 1262
1301MX6Q_PAD_SD3_DAT5__MIPI_CORE_DPHY_IN_14 1263
1302MX6Q_PAD_SD3_DAT5__ANATOP_TESTO_11 1264
1303MX6Q_PAD_SD3_DAT4__USDHC3_DAT4 1265
1304MX6Q_PAD_SD3_DAT4__UART2_RXD 1266
1305MX6Q_PAD_SD3_DAT4__PCIE_CTRL_MUX_27 1267
1306MX6Q_PAD_SD3_DAT4__USBOH3_UH3_DFD_OUT_3 1268
1307MX6Q_PAD_SD3_DAT4__USBOH3_UH2_DFD_OUT_3 1269
1308MX6Q_PAD_SD3_DAT4__GPIO_7_1 1270
1309MX6Q_PAD_SD3_DAT4__MIPI_CORE_DPHY_IN_15 1271
1310MX6Q_PAD_SD3_DAT4__ANATOP_TESTO_12 1272
1311MX6Q_PAD_SD3_CMD__USDHC3_CMD 1273
1312MX6Q_PAD_SD3_CMD__UART2_CTS 1274
1313MX6Q_PAD_SD3_CMD__CAN1_TXCAN 1275
1314MX6Q_PAD_SD3_CMD__USBOH3_UH3_DFD_OUT_4 1276
1315MX6Q_PAD_SD3_CMD__USBOH3_UH2_DFD_OUT_4 1277
1316MX6Q_PAD_SD3_CMD__GPIO_7_2 1278
1317MX6Q_PAD_SD3_CMD__MIPI_CORE_DPHY_IN_16 1279
1318MX6Q_PAD_SD3_CMD__ANATOP_TESTO_13 1280
1319MX6Q_PAD_SD3_CLK__USDHC3_CLK 1281
1320MX6Q_PAD_SD3_CLK__UART2_RTS 1282
1321MX6Q_PAD_SD3_CLK__CAN1_RXCAN 1283
1322MX6Q_PAD_SD3_CLK__USBOH3_UH3_DFD_OUT_5 1284
1323MX6Q_PAD_SD3_CLK__USBOH3_UH2_DFD_OUT_5 1285
1324MX6Q_PAD_SD3_CLK__GPIO_7_3 1286
1325MX6Q_PAD_SD3_CLK__MIPI_CORE_DPHY_IN_17 1287
1326MX6Q_PAD_SD3_CLK__ANATOP_TESTO_14 1288
1327MX6Q_PAD_SD3_DAT0__USDHC3_DAT0 1289
1328MX6Q_PAD_SD3_DAT0__UART1_CTS 1290
1329MX6Q_PAD_SD3_DAT0__CAN2_TXCAN 1291
1330MX6Q_PAD_SD3_DAT0__USBOH3_UH3_DFD_OUT_6 1292
1331MX6Q_PAD_SD3_DAT0__USBOH3_UH2_DFD_OUT_6 1293
1332MX6Q_PAD_SD3_DAT0__GPIO_7_4 1294
1333MX6Q_PAD_SD3_DAT0__MIPI_CORE_DPHY_IN_18 1295
1334MX6Q_PAD_SD3_DAT0__ANATOP_TESTO_15 1296
1335MX6Q_PAD_SD3_DAT1__USDHC3_DAT1 1297
1336MX6Q_PAD_SD3_DAT1__UART1_RTS 1298
1337MX6Q_PAD_SD3_DAT1__CAN2_RXCAN 1299
1338MX6Q_PAD_SD3_DAT1__USBOH3_UH3_DFD_OUT_7 1300
1339MX6Q_PAD_SD3_DAT1__USBOH3_UH2_DFD_OUT_7 1301
1340MX6Q_PAD_SD3_DAT1__GPIO_7_5 1302
1341MX6Q_PAD_SD3_DAT1__MIPI_CORE_DPHY_IN_19 1303
1342MX6Q_PAD_SD3_DAT1__ANATOP_TESTI_0 1304
1343MX6Q_PAD_SD3_DAT2__USDHC3_DAT2 1305
1344MX6Q_PAD_SD3_DAT2__PCIE_CTRL_MUX_28 1306
1345MX6Q_PAD_SD3_DAT2__USBOH3_UH3_DFD_OUT_8 1307
1346MX6Q_PAD_SD3_DAT2__USBOH3_UH2_DFD_OUT_8 1308
1347MX6Q_PAD_SD3_DAT2__GPIO_7_6 1309
1348MX6Q_PAD_SD3_DAT2__MIPI_CORE_DPHY_IN_20 1310
1349MX6Q_PAD_SD3_DAT2__ANATOP_TESTI_1 1311
1350MX6Q_PAD_SD3_DAT3__USDHC3_DAT3 1312
1351MX6Q_PAD_SD3_DAT3__UART3_CTS 1313
1352MX6Q_PAD_SD3_DAT3__PCIE_CTRL_MUX_29 1314
1353MX6Q_PAD_SD3_DAT3__USBOH3_UH3_DFD_OUT_9 1315
1354MX6Q_PAD_SD3_DAT3__USBOH3_UH2_DFD_OUT_9 1316
1355MX6Q_PAD_SD3_DAT3__GPIO_7_7 1317
1356MX6Q_PAD_SD3_DAT3__MIPI_CORE_DPHY_IN_21 1318
1357MX6Q_PAD_SD3_DAT3__ANATOP_TESTI_2 1319
1358MX6Q_PAD_SD3_RST__USDHC3_RST 1320
1359MX6Q_PAD_SD3_RST__UART3_RTS 1321
1360MX6Q_PAD_SD3_RST__PCIE_CTRL_MUX_30 1322
1361MX6Q_PAD_SD3_RST__USBOH3_UH3_DFD_OUT_10 1323
1362MX6Q_PAD_SD3_RST__USBOH3_UH2_DFD_OUT_10 1324
1363MX6Q_PAD_SD3_RST__GPIO_7_8 1325
1364MX6Q_PAD_SD3_RST__MIPI_CORE_DPHY_IN_22 1326
1365MX6Q_PAD_SD3_RST__ANATOP_ANATOP_TESTI_3 1327
1366MX6Q_PAD_NANDF_CLE__RAWNAND_CLE 1328
1367MX6Q_PAD_NANDF_CLE__IPU2_SISG_4 1329
1368MX6Q_PAD_NANDF_CLE__PCIE_CTRL_MUX_31 1330
1369MX6Q_PAD_NANDF_CLE__USBOH3_UH3_DFD_OT11 1331
1370MX6Q_PAD_NANDF_CLE__USBOH3_UH2_DFD_OT11 1332
1371MX6Q_PAD_NANDF_CLE__GPIO_6_7 1333
1372MX6Q_PAD_NANDF_CLE__MIPI_CORE_DPHY_IN23 1334
1373MX6Q_PAD_NANDF_CLE__TPSMP_HTRANS_0 1335
1374MX6Q_PAD_NANDF_ALE__RAWNAND_ALE 1336
1375MX6Q_PAD_NANDF_ALE__USDHC4_RST 1337
1376MX6Q_PAD_NANDF_ALE__PCIE_CTRL_MUX_0 1338
1377MX6Q_PAD_NANDF_ALE__USBOH3_UH3_DFD_OT12 1339
1378MX6Q_PAD_NANDF_ALE__USBOH3_UH2_DFD_OT12 1340
1379MX6Q_PAD_NANDF_ALE__GPIO_6_8 1341
1380MX6Q_PAD_NANDF_ALE__MIPI_CR_DPHY_IN_24 1342
1381MX6Q_PAD_NANDF_ALE__TPSMP_HTRANS_1 1343
1382MX6Q_PAD_NANDF_WP_B__RAWNAND_RESETN 1344
1383MX6Q_PAD_NANDF_WP_B__IPU2_SISG_5 1345
1384MX6Q_PAD_NANDF_WP_B__PCIE_CTRL__MUX_1 1346
1385MX6Q_PAD_NANDF_WP_B__USBOH3_UH3_DFDOT13 1347
1386MX6Q_PAD_NANDF_WP_B__USBOH3_UH2_DFDOT13 1348
1387MX6Q_PAD_NANDF_WP_B__GPIO_6_9 1349
1388MX6Q_PAD_NANDF_WP_B__MIPI_CR_DPHY_OUT32 1350
1389MX6Q_PAD_NANDF_WP_B__PL301_PER1_HSIZE_0 1351
1390MX6Q_PAD_NANDF_RB0__RAWNAND_READY0 1352
1391MX6Q_PAD_NANDF_RB0__IPU2_DI0_PIN1 1353
1392MX6Q_PAD_NANDF_RB0__PCIE_CTRL_MUX_2 1354
1393MX6Q_PAD_NANDF_RB0__USBOH3_UH3_DFD_OT14 1355
1394MX6Q_PAD_NANDF_RB0__USBOH3_UH2_DFD_OT14 1356
1395MX6Q_PAD_NANDF_RB0__GPIO_6_10 1357
1396MX6Q_PAD_NANDF_RB0__MIPI_CR_DPHY_OUT_33 1358
1397MX6Q_PAD_NANDF_RB0__PL301_PER1_HSIZE_1 1359
1398MX6Q_PAD_NANDF_CS0__RAWNAND_CE0N 1360
1399MX6Q_PAD_NANDF_CS0__USBOH3_UH3_DFD_OT15 1361
1400MX6Q_PAD_NANDF_CS0__USBOH3_UH2_DFD_OT15 1362
1401MX6Q_PAD_NANDF_CS0__GPIO_6_11 1363
1402MX6Q_PAD_NANDF_CS0__PL301_PER1_HSIZE_2 1364
1403MX6Q_PAD_NANDF_CS1__RAWNAND_CE1N 1365
1404MX6Q_PAD_NANDF_CS1__USDHC4_VSELECT 1366
1405MX6Q_PAD_NANDF_CS1__USDHC3_VSELECT 1367
1406MX6Q_PAD_NANDF_CS1__PCIE_CTRL_MUX_3 1368
1407MX6Q_PAD_NANDF_CS1__GPIO_6_14 1369
1408MX6Q_PAD_NANDF_CS1__PL301_PER1_HRDYOUT 1370
1409MX6Q_PAD_NANDF_CS2__RAWNAND_CE2N 1371
1410MX6Q_PAD_NANDF_CS2__IPU1_SISG_0 1372
1411MX6Q_PAD_NANDF_CS2__ESAI1_TX0 1373
1412MX6Q_PAD_NANDF_CS2__WEIM_WEIM_CRE 1374
1413MX6Q_PAD_NANDF_CS2__CCM_CLKO2 1375
1414MX6Q_PAD_NANDF_CS2__GPIO_6_15 1376
1415MX6Q_PAD_NANDF_CS2__IPU2_SISG_0 1377
1416MX6Q_PAD_NANDF_CS3__RAWNAND_CE3N 1378
1417MX6Q_PAD_NANDF_CS3__IPU1_SISG_1 1379
1418MX6Q_PAD_NANDF_CS3__ESAI1_TX1 1380
1419MX6Q_PAD_NANDF_CS3__WEIM_WEIM_A_26 1381
1420MX6Q_PAD_NANDF_CS3__PCIE_CTRL_MUX_4 1382
1421MX6Q_PAD_NANDF_CS3__GPIO_6_16 1383
1422MX6Q_PAD_NANDF_CS3__IPU2_SISG_1 1384
1423MX6Q_PAD_NANDF_CS3__TPSMP_CLK 1385
1424MX6Q_PAD_SD4_CMD__USDHC4_CMD 1386
1425MX6Q_PAD_SD4_CMD__RAWNAND_RDN 1387
1426MX6Q_PAD_SD4_CMD__UART3_TXD 1388
1427MX6Q_PAD_SD4_CMD__PCIE_CTRL_MUX_5 1389
1428MX6Q_PAD_SD4_CMD__GPIO_7_9 1390
1429MX6Q_PAD_SD4_CMD__TPSMP_HDATA_DIR 1391
1430MX6Q_PAD_SD4_CLK__USDHC4_CLK 1392
1431MX6Q_PAD_SD4_CLK__RAWNAND_WRN 1393
1432MX6Q_PAD_SD4_CLK__UART3_RXD 1394
1433MX6Q_PAD_SD4_CLK__PCIE_CTRL_MUX_6 1395
1434MX6Q_PAD_SD4_CLK__GPIO_7_10 1396
1435MX6Q_PAD_NANDF_D0__RAWNAND_D0 1397
1436MX6Q_PAD_NANDF_D0__USDHC1_DAT4 1398
1437MX6Q_PAD_NANDF_D0__GPU3D_GPU_DBG_OUT_0 1399
1438MX6Q_PAD_NANDF_D0__USBOH3_UH2_DFD_OUT16 1400
1439MX6Q_PAD_NANDF_D0__USBOH3_UH3_DFD_OUT16 1401
1440MX6Q_PAD_NANDF_D0__GPIO_2_0 1402
1441MX6Q_PAD_NANDF_D0__IPU1_IPU_DIAG_BUS_0 1403
1442MX6Q_PAD_NANDF_D0__IPU2_IPU_DIAG_BUS_0 1404
1443MX6Q_PAD_NANDF_D1__RAWNAND_D1 1405
1444MX6Q_PAD_NANDF_D1__USDHC1_DAT5 1406
1445MX6Q_PAD_NANDF_D1__GPU3D_GPU_DEBUG_OUT1 1407
1446MX6Q_PAD_NANDF_D1__USBOH3_UH2_DFD_OUT17 1408
1447MX6Q_PAD_NANDF_D1__USBOH3_UH3_DFD_OUT17 1409
1448MX6Q_PAD_NANDF_D1__GPIO_2_1 1410
1449MX6Q_PAD_NANDF_D1__IPU1_IPU_DIAG_BUS_1 1411
1450MX6Q_PAD_NANDF_D1__IPU2_IPU_DIAG_BUS_1 1412
1451MX6Q_PAD_NANDF_D2__RAWNAND_D2 1413
1452MX6Q_PAD_NANDF_D2__USDHC1_DAT6 1414
1453MX6Q_PAD_NANDF_D2__GPU3D_GPU_DBG_OUT_2 1415
1454MX6Q_PAD_NANDF_D2__USBOH3_UH2_DFD_OUT18 1416
1455MX6Q_PAD_NANDF_D2__USBOH3_UH3_DFD_OUT18 1417
1456MX6Q_PAD_NANDF_D2__GPIO_2_2 1418
1457MX6Q_PAD_NANDF_D2__IPU1_IPU_DIAG_BUS_2 1419
1458MX6Q_PAD_NANDF_D2__IPU2_IPU_DIAG_BUS_2 1420
1459MX6Q_PAD_NANDF_D3__RAWNAND_D3 1421
1460MX6Q_PAD_NANDF_D3__USDHC1_DAT7 1422
1461MX6Q_PAD_NANDF_D3__GPU3D_GPU_DBG_OUT_3 1423
1462MX6Q_PAD_NANDF_D3__USBOH3_UH2_DFD_OUT19 1424
1463MX6Q_PAD_NANDF_D3__USBOH3_UH3_DFD_OUT19 1425
1464MX6Q_PAD_NANDF_D3__GPIO_2_3 1426
1465MX6Q_PAD_NANDF_D3__IPU1_IPU_DIAG_BUS_3 1427
1466MX6Q_PAD_NANDF_D3__IPU2_IPU_DIAG_BUS_3 1428
1467MX6Q_PAD_NANDF_D4__RAWNAND_D4 1429
1468MX6Q_PAD_NANDF_D4__USDHC2_DAT4 1430
1469MX6Q_PAD_NANDF_D4__GPU3D_GPU_DBG_OUT_4 1431
1470MX6Q_PAD_NANDF_D4__USBOH3_UH2_DFD_OUT20 1432
1471MX6Q_PAD_NANDF_D4__USBOH3_UH3_DFD_OUT20 1433
1472MX6Q_PAD_NANDF_D4__GPIO_2_4 1434
1473MX6Q_PAD_NANDF_D4__IPU1_IPU_DIAG_BUS_4 1435
1474MX6Q_PAD_NANDF_D4__IPU2_IPU_DIAG_BUS_4 1436
1475MX6Q_PAD_NANDF_D5__RAWNAND_D5 1437
1476MX6Q_PAD_NANDF_D5__USDHC2_DAT5 1438
1477MX6Q_PAD_NANDF_D5__GPU3D_GPU_DBG_OUT_5 1439
1478MX6Q_PAD_NANDF_D5__USBOH3_UH2_DFD_OUT21 1440
1479MX6Q_PAD_NANDF_D5__USBOH3_UH3_DFD_OUT21 1441
1480MX6Q_PAD_NANDF_D5__GPIO_2_5 1442
1481MX6Q_PAD_NANDF_D5__IPU1_IPU_DIAG_BUS_5 1443
1482MX6Q_PAD_NANDF_D5__IPU2_IPU_DIAG_BUS_5 1444
1483MX6Q_PAD_NANDF_D6__RAWNAND_D6 1445
1484MX6Q_PAD_NANDF_D6__USDHC2_DAT6 1446
1485MX6Q_PAD_NANDF_D6__GPU3D_GPU_DBG_OUT_6 1447
1486MX6Q_PAD_NANDF_D6__USBOH3_UH2_DFD_OUT22 1448
1487MX6Q_PAD_NANDF_D6__USBOH3_UH3_DFD_OUT22 1449
1488MX6Q_PAD_NANDF_D6__GPIO_2_6 1450
1489MX6Q_PAD_NANDF_D6__IPU1_IPU_DIAG_BUS_6 1451
1490MX6Q_PAD_NANDF_D6__IPU2_IPU_DIAG_BUS_6 1452
1491MX6Q_PAD_NANDF_D7__RAWNAND_D7 1453
1492MX6Q_PAD_NANDF_D7__USDHC2_DAT7 1454
1493MX6Q_PAD_NANDF_D7__GPU3D_GPU_DBG_OUT_7 1455
1494MX6Q_PAD_NANDF_D7__USBOH3_UH2_DFD_OUT23 1456
1495MX6Q_PAD_NANDF_D7__USBOH3_UH3_DFD_OUT23 1457
1496MX6Q_PAD_NANDF_D7__GPIO_2_7 1458
1497MX6Q_PAD_NANDF_D7__IPU1_IPU_DIAG_BUS_7 1459
1498MX6Q_PAD_NANDF_D7__IPU2_IPU_DIAG_BUS_7 1460
1499MX6Q_PAD_SD4_DAT0__RAWNAND_D8 1461
1500MX6Q_PAD_SD4_DAT0__USDHC4_DAT0 1462
1501MX6Q_PAD_SD4_DAT0__RAWNAND_DQS 1463
1502MX6Q_PAD_SD4_DAT0__USBOH3_UH2_DFD_OUT24 1464
1503MX6Q_PAD_SD4_DAT0__USBOH3_UH3_DFD_OUT24 1465
1504MX6Q_PAD_SD4_DAT0__GPIO_2_8 1466
1505MX6Q_PAD_SD4_DAT0__IPU1_IPU_DIAG_BUS_8 1467
1506MX6Q_PAD_SD4_DAT0__IPU2_IPU_DIAG_BUS_8 1468
1507MX6Q_PAD_SD4_DAT1__RAWNAND_D9 1469
1508MX6Q_PAD_SD4_DAT1__USDHC4_DAT1 1470
1509MX6Q_PAD_SD4_DAT1__PWM3_PWMO 1471
1510MX6Q_PAD_SD4_DAT1__USBOH3_UH2_DFD_OUT25 1472
1511MX6Q_PAD_SD4_DAT1__USBOH3_UH3_DFD_OUT25 1473
1512MX6Q_PAD_SD4_DAT1__GPIO_2_9 1474
1513MX6Q_PAD_SD4_DAT1__IPU1_IPU_DIAG_BUS_9 1475
1514MX6Q_PAD_SD4_DAT1__IPU2_IPU_DIAG_BUS_9 1476
1515MX6Q_PAD_SD4_DAT2__RAWNAND_D10 1477
1516MX6Q_PAD_SD4_DAT2__USDHC4_DAT2 1478
1517MX6Q_PAD_SD4_DAT2__PWM4_PWMO 1479
1518MX6Q_PAD_SD4_DAT2__USBOH3_UH2_DFD_OUT26 1480
1519MX6Q_PAD_SD4_DAT2__USBOH3_UH3_DFD_OUT26 1481
1520MX6Q_PAD_SD4_DAT2__GPIO_2_10 1482
1521MX6Q_PAD_SD4_DAT2__IPU1_IPU_DIAG_BUS_10 1483
1522MX6Q_PAD_SD4_DAT2__IPU2_IPU_DIAG_BUS_10 1484
1523MX6Q_PAD_SD4_DAT3__RAWNAND_D11 1485
1524MX6Q_PAD_SD4_DAT3__USDHC4_DAT3 1486
1525MX6Q_PAD_SD4_DAT3__USBOH3_UH2_DFD_OUT27 1487
1526MX6Q_PAD_SD4_DAT3__USBOH3_UH3_DFD_OUT27 1488
1527MX6Q_PAD_SD4_DAT3__GPIO_2_11 1489
1528MX6Q_PAD_SD4_DAT3__IPU1_IPU_DIAG_BUS_11 1490
1529MX6Q_PAD_SD4_DAT3__IPU2_IPU_DIAG_BUS_11 1491
1530MX6Q_PAD_SD4_DAT4__RAWNAND_D12 1492
1531MX6Q_PAD_SD4_DAT4__USDHC4_DAT4 1493
1532MX6Q_PAD_SD4_DAT4__UART2_RXD 1494
1533MX6Q_PAD_SD4_DAT4__USBOH3_UH2_DFD_OUT28 1495
1534MX6Q_PAD_SD4_DAT4__USBOH3_UH3_DFD_OUT28 1496
1535MX6Q_PAD_SD4_DAT4__GPIO_2_12 1497
1536MX6Q_PAD_SD4_DAT4__IPU1_IPU_DIAG_BUS_12 1498
1537MX6Q_PAD_SD4_DAT4__IPU2_IPU_DIAG_BUS_12 1499
1538MX6Q_PAD_SD4_DAT5__RAWNAND_D13 1500
1539MX6Q_PAD_SD4_DAT5__USDHC4_DAT5 1501
1540MX6Q_PAD_SD4_DAT5__UART2_RTS 1502
1541MX6Q_PAD_SD4_DAT5__USBOH3_UH2_DFD_OUT29 1503
1542MX6Q_PAD_SD4_DAT5__USBOH3_UH3_DFD_OUT29 1504
1543MX6Q_PAD_SD4_DAT5__GPIO_2_13 1505
1544MX6Q_PAD_SD4_DAT5__IPU1_IPU_DIAG_BUS_13 1506
1545MX6Q_PAD_SD4_DAT5__IPU2_IPU_DIAG_BUS_13 1507
1546MX6Q_PAD_SD4_DAT6__RAWNAND_D14 1508
1547MX6Q_PAD_SD4_DAT6__USDHC4_DAT6 1509
1548MX6Q_PAD_SD4_DAT6__UART2_CTS 1510
1549MX6Q_PAD_SD4_DAT6__USBOH3_UH2_DFD_OUT30 1511
1550MX6Q_PAD_SD4_DAT6__USBOH3_UH3_DFD_OUT30 1512
1551MX6Q_PAD_SD4_DAT6__GPIO_2_14 1513
1552MX6Q_PAD_SD4_DAT6__IPU1_IPU_DIAG_BUS_14 1514
1553MX6Q_PAD_SD4_DAT6__IPU2_IPU_DIAG_BUS_14 1515
1554MX6Q_PAD_SD4_DAT7__RAWNAND_D15 1516
1555MX6Q_PAD_SD4_DAT7__USDHC4_DAT7 1517
1556MX6Q_PAD_SD4_DAT7__UART2_TXD 1518
1557MX6Q_PAD_SD4_DAT7__USBOH3_UH2_DFD_OUT31 1519
1558MX6Q_PAD_SD4_DAT7__USBOH3_UH3_DFD_OUT31 1520
1559MX6Q_PAD_SD4_DAT7__GPIO_2_15 1521
1560MX6Q_PAD_SD4_DAT7__IPU1_IPU_DIAG_BUS_15 1522
1561MX6Q_PAD_SD4_DAT7__IPU2_IPU_DIAG_BUS_15 1523
1562MX6Q_PAD_SD1_DAT1__USDHC1_DAT1 1524
1563MX6Q_PAD_SD1_DAT1__ECSPI5_SS0 1525
1564MX6Q_PAD_SD1_DAT1__PWM3_PWMO 1526
1565MX6Q_PAD_SD1_DAT1__GPT_CAPIN2 1527
1566MX6Q_PAD_SD1_DAT1__PCIE_CTRL_MUX_7 1528
1567MX6Q_PAD_SD1_DAT1__GPIO_1_17 1529
1568MX6Q_PAD_SD1_DAT1__HDMI_TX_OPHYDTB_0 1530
1569MX6Q_PAD_SD1_DAT1__ANATOP_TESTO_8 1531
1570MX6Q_PAD_SD1_DAT0__USDHC1_DAT0 1532
1571MX6Q_PAD_SD1_DAT0__ECSPI5_MISO 1533
1572MX6Q_PAD_SD1_DAT0__CAAM_WRAP_RNG_OSCOBS 1534
1573MX6Q_PAD_SD1_DAT0__GPT_CAPIN1 1535
1574MX6Q_PAD_SD1_DAT0__PCIE_CTRL_MUX_8 1536
1575MX6Q_PAD_SD1_DAT0__GPIO_1_16 1537
1576MX6Q_PAD_SD1_DAT0__HDMI_TX_OPHYDTB_1 1538
1577MX6Q_PAD_SD1_DAT0__ANATOP_TESTO_7 1539
1578MX6Q_PAD_SD1_DAT3__USDHC1_DAT3 1540
1579MX6Q_PAD_SD1_DAT3__ECSPI5_SS2 1541
1580MX6Q_PAD_SD1_DAT3__GPT_CMPOUT3 1542
1581MX6Q_PAD_SD1_DAT3__PWM1_PWMO 1543
1582MX6Q_PAD_SD1_DAT3__WDOG2_WDOG_B 1544
1583MX6Q_PAD_SD1_DAT3__GPIO_1_21 1545
1584MX6Q_PAD_SD1_DAT3__WDOG2_WDOG_RST_B_DEB 1546
1585MX6Q_PAD_SD1_DAT3__ANATOP_TESTO_6 1547
1586MX6Q_PAD_SD1_CMD__USDHC1_CMD 1548
1587MX6Q_PAD_SD1_CMD__ECSPI5_MOSI 1549
1588MX6Q_PAD_SD1_CMD__PWM4_PWMO 1550
1589MX6Q_PAD_SD1_CMD__GPT_CMPOUT1 1551
1590MX6Q_PAD_SD1_CMD__GPIO_1_18 1552
1591MX6Q_PAD_SD1_CMD__ANATOP_TESTO_5 1553
1592MX6Q_PAD_SD1_DAT2__USDHC1_DAT2 1554
1593MX6Q_PAD_SD1_DAT2__ECSPI5_SS1 1555
1594MX6Q_PAD_SD1_DAT2__GPT_CMPOUT2 1556
1595MX6Q_PAD_SD1_DAT2__PWM2_PWMO 1557
1596MX6Q_PAD_SD1_DAT2__WDOG1_WDOG_B 1558
1597MX6Q_PAD_SD1_DAT2__GPIO_1_19 1559
1598MX6Q_PAD_SD1_DAT2__WDOG1_WDOG_RST_B_DEB 1560
1599MX6Q_PAD_SD1_DAT2__ANATOP_TESTO_4 1561
1600MX6Q_PAD_SD1_CLK__USDHC1_CLK 1562
1601MX6Q_PAD_SD1_CLK__ECSPI5_SCLK 1563
1602MX6Q_PAD_SD1_CLK__OSC32K_32K_OUT 1564
1603MX6Q_PAD_SD1_CLK__GPT_CLKIN 1565
1604MX6Q_PAD_SD1_CLK__GPIO_1_20 1566
1605MX6Q_PAD_SD1_CLK__PHY_DTB_0 1567
1606MX6Q_PAD_SD1_CLK__SATA_PHY_DTB_0 1568
1607MX6Q_PAD_SD2_CLK__USDHC2_CLK 1569
1608MX6Q_PAD_SD2_CLK__ECSPI5_SCLK 1570
1609MX6Q_PAD_SD2_CLK__KPP_COL_5 1571
1610MX6Q_PAD_SD2_CLK__AUDMUX_AUD4_RXFS 1572
1611MX6Q_PAD_SD2_CLK__PCIE_CTRL_MUX_9 1573
1612MX6Q_PAD_SD2_CLK__GPIO_1_10 1574
1613MX6Q_PAD_SD2_CLK__PHY_DTB_1 1575
1614MX6Q_PAD_SD2_CLK__SATA_PHY_DTB_1 1576
1615MX6Q_PAD_SD2_CMD__USDHC2_CMD 1577
1616MX6Q_PAD_SD2_CMD__ECSPI5_MOSI 1578
1617MX6Q_PAD_SD2_CMD__KPP_ROW_5 1579
1618MX6Q_PAD_SD2_CMD__AUDMUX_AUD4_RXC 1580
1619MX6Q_PAD_SD2_CMD__PCIE_CTRL_MUX_10 1581
1620MX6Q_PAD_SD2_CMD__GPIO_1_11 1582
1621MX6Q_PAD_SD2_DAT3__USDHC2_DAT3 1583
1622MX6Q_PAD_SD2_DAT3__ECSPI5_SS3 1584
1623MX6Q_PAD_SD2_DAT3__KPP_COL_6 1585
1624MX6Q_PAD_SD2_DAT3__AUDMUX_AUD4_TXC 1586
1625MX6Q_PAD_SD2_DAT3__PCIE_CTRL_MUX_11 1587
1626MX6Q_PAD_SD2_DAT3__GPIO_1_12 1588
1627MX6Q_PAD_SD2_DAT3__SJC_DONE 1589
1628MX6Q_PAD_SD2_DAT3__ANATOP_TESTO_3 1590
1629MX6Q_PAD_ENET_RX_ER__ANATOP_USBOTG_ID 1591
1630MX6Q_PAD_GPIO_1__ANATOP_USBOTG_ID 1592
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt
new file mode 100644
index 000000000000..f7e8e8f4d9a3
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt
@@ -0,0 +1,918 @@
1* Freescale MXS Pin Controller
2
3The pins controlled by mxs pin controller are organized in banks, each bank
4has 32 pins. Each pin has 4 multiplexing functions, and generally, the 4th
5function is GPIO. The configuration on the pins includes drive strength,
6voltage and pull-up.
7
8Required properties:
9- compatible: "fsl,imx23-pinctrl" or "fsl,imx28-pinctrl"
10- reg: Should contain the register physical address and length for the
11 pin controller.
12
13Please refer to pinctrl-bindings.txt in this directory for details of the
14common pinctrl bindings used by client devices.
15
16The node of mxs pin controller acts as a container for an arbitrary number of
17subnodes. Each of these subnodes represents some desired configuration for
18a group of pins, and only affects those parameters that are explicitly listed.
19In other words, a subnode that describes a drive strength parameter implies no
20information about pull-up. For this reason, even seemingly boolean values are
21actually tristates in this binding: unspecified, off, or on. Unspecified is
22represented as an absent property, and off/on are represented as integer
23values 0 and 1.
24
25Those subnodes under mxs pin controller node will fall into two categories.
26One is to set up a group of pins for a function, both mux selection and pin
27configurations, and it's called group node in the binding document. The other
28one is to adjust the pin configuration for some particular pins that need a
29different configuration than what is defined in group node. The binding
30document calls this type of node config node.
31
32On mxs, there is no hardware pin group. The pin group in this binding only
33means a group of pins put together for particular peripheral to work in
34particular function, like SSP0 functioning as mmc0-8bit. That said, the
35group node should include all the pins needed for one function rather than
36having these pins defined in several group nodes. It also means each of
37"pinctrl-*" phandle in client device node should only have one group node
38pointed in there, while the phandle can have multiple config node referenced
39there to adjust configurations for some pins in the group.
40
41Required subnode-properties:
42- fsl,pinmux-ids: An integer array. Each integer in the array specify a pin
43 with given mux function, with bank, pin and mux packed as below.
44
45 [15..12] : bank number
46 [11..4] : pin number
47 [3..0] : mux selection
48
49 This integer with mux selection packed is used as an entity by both group
50 and config nodes to identify a pin. The mux selection in the integer takes
51 effects only on group node, and will get ignored by driver with config node,
52 since config node is only meant to set up pin configurations.
53
54 Valid values for these integers are listed below.
55
56- reg: Should be the index of the group nodes for same function. This property
57 is required only for group nodes, and should not be present in any config
58 nodes.
59
60Optional subnode-properties:
61- fsl,drive-strength: Integer.
62 0: 4 mA
63 1: 8 mA
64 2: 12 mA
65 3: 16 mA
66- fsl,voltage: Integer.
67 0: 1.8 V
68 1: 3.3 V
69- fsl,pull-up: Integer.
70 0: Disable the internal pull-up
71 1: Enable the internal pull-up
72
73Examples:
74
75pinctrl@80018000 {
76 #address-cells = <1>;
77 #size-cells = <0>;
78 compatible = "fsl,imx28-pinctrl";
79 reg = <0x80018000 2000>;
80
81 mmc0_8bit_pins_a: mmc0-8bit@0 {
82 reg = <0>;
83 fsl,pinmux-ids = <
84 0x2000 0x2010 0x2020 0x2030
85 0x2040 0x2050 0x2060 0x2070
86 0x2080 0x2090 0x20a0>;
87 fsl,drive-strength = <1>;
88 fsl,voltage = <1>;
89 fsl,pull-up = <1>;
90 };
91
92 mmc_cd_cfg: mmc-cd-cfg {
93 fsl,pinmux-ids = <0x2090>;
94 fsl,pull-up = <0>;
95 };
96
97 mmc_sck_cfg: mmc-sck-cfg {
98 fsl,pinmux-ids = <0x20a0>;
99 fsl,drive-strength = <2>;
100 fsl,pull-up = <0>;
101 };
102};
103
104In this example, group node mmc0-8bit defines a group of pins for mxs SSP0
105to function as a 8-bit mmc device, with 8mA, 3.3V and pull-up configurations
106applied on all these pins. And config nodes mmc-cd-cfg and mmc-sck-cfg are
107adjusting the configuration for pins card-detection and clock from what group
108node mmc0-8bit defines. Only the configuration properties to be adjusted need
109to be listed in the config nodes.
110
111Valid values for i.MX28 pinmux-id:
112
113pinmux id
114------ --
115MX28_PAD_GPMI_D00__GPMI_D0 0x0000
116MX28_PAD_GPMI_D01__GPMI_D1 0x0010
117MX28_PAD_GPMI_D02__GPMI_D2 0x0020
118MX28_PAD_GPMI_D03__GPMI_D3 0x0030
119MX28_PAD_GPMI_D04__GPMI_D4 0x0040
120MX28_PAD_GPMI_D05__GPMI_D5 0x0050
121MX28_PAD_GPMI_D06__GPMI_D6 0x0060
122MX28_PAD_GPMI_D07__GPMI_D7 0x0070
123MX28_PAD_GPMI_CE0N__GPMI_CE0N 0x0100
124MX28_PAD_GPMI_CE1N__GPMI_CE1N 0x0110
125MX28_PAD_GPMI_CE2N__GPMI_CE2N 0x0120
126MX28_PAD_GPMI_CE3N__GPMI_CE3N 0x0130
127MX28_PAD_GPMI_RDY0__GPMI_READY0 0x0140
128MX28_PAD_GPMI_RDY1__GPMI_READY1 0x0150
129MX28_PAD_GPMI_RDY2__GPMI_READY2 0x0160
130MX28_PAD_GPMI_RDY3__GPMI_READY3 0x0170
131MX28_PAD_GPMI_RDN__GPMI_RDN 0x0180
132MX28_PAD_GPMI_WRN__GPMI_WRN 0x0190
133MX28_PAD_GPMI_ALE__GPMI_ALE 0x01a0
134MX28_PAD_GPMI_CLE__GPMI_CLE 0x01b0
135MX28_PAD_GPMI_RESETN__GPMI_RESETN 0x01c0
136MX28_PAD_LCD_D00__LCD_D0 0x1000
137MX28_PAD_LCD_D01__LCD_D1 0x1010
138MX28_PAD_LCD_D02__LCD_D2 0x1020
139MX28_PAD_LCD_D03__LCD_D3 0x1030
140MX28_PAD_LCD_D04__LCD_D4 0x1040
141MX28_PAD_LCD_D05__LCD_D5 0x1050
142MX28_PAD_LCD_D06__LCD_D6 0x1060
143MX28_PAD_LCD_D07__LCD_D7 0x1070
144MX28_PAD_LCD_D08__LCD_D8 0x1080
145MX28_PAD_LCD_D09__LCD_D9 0x1090
146MX28_PAD_LCD_D10__LCD_D10 0x10a0
147MX28_PAD_LCD_D11__LCD_D11 0x10b0
148MX28_PAD_LCD_D12__LCD_D12 0x10c0
149MX28_PAD_LCD_D13__LCD_D13 0x10d0
150MX28_PAD_LCD_D14__LCD_D14 0x10e0
151MX28_PAD_LCD_D15__LCD_D15 0x10f0
152MX28_PAD_LCD_D16__LCD_D16 0x1100
153MX28_PAD_LCD_D17__LCD_D17 0x1110
154MX28_PAD_LCD_D18__LCD_D18 0x1120
155MX28_PAD_LCD_D19__LCD_D19 0x1130
156MX28_PAD_LCD_D20__LCD_D20 0x1140
157MX28_PAD_LCD_D21__LCD_D21 0x1150
158MX28_PAD_LCD_D22__LCD_D22 0x1160
159MX28_PAD_LCD_D23__LCD_D23 0x1170
160MX28_PAD_LCD_RD_E__LCD_RD_E 0x1180
161MX28_PAD_LCD_WR_RWN__LCD_WR_RWN 0x1190
162MX28_PAD_LCD_RS__LCD_RS 0x11a0
163MX28_PAD_LCD_CS__LCD_CS 0x11b0
164MX28_PAD_LCD_VSYNC__LCD_VSYNC 0x11c0
165MX28_PAD_LCD_HSYNC__LCD_HSYNC 0x11d0
166MX28_PAD_LCD_DOTCLK__LCD_DOTCLK 0x11e0
167MX28_PAD_LCD_ENABLE__LCD_ENABLE 0x11f0
168MX28_PAD_SSP0_DATA0__SSP0_D0 0x2000
169MX28_PAD_SSP0_DATA1__SSP0_D1 0x2010
170MX28_PAD_SSP0_DATA2__SSP0_D2 0x2020
171MX28_PAD_SSP0_DATA3__SSP0_D3 0x2030
172MX28_PAD_SSP0_DATA4__SSP0_D4 0x2040
173MX28_PAD_SSP0_DATA5__SSP0_D5 0x2050
174MX28_PAD_SSP0_DATA6__SSP0_D6 0x2060
175MX28_PAD_SSP0_DATA7__SSP0_D7 0x2070
176MX28_PAD_SSP0_CMD__SSP0_CMD 0x2080
177MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT 0x2090
178MX28_PAD_SSP0_SCK__SSP0_SCK 0x20a0
179MX28_PAD_SSP1_SCK__SSP1_SCK 0x20c0
180MX28_PAD_SSP1_CMD__SSP1_CMD 0x20d0
181MX28_PAD_SSP1_DATA0__SSP1_D0 0x20e0
182MX28_PAD_SSP1_DATA3__SSP1_D3 0x20f0
183MX28_PAD_SSP2_SCK__SSP2_SCK 0x2100
184MX28_PAD_SSP2_MOSI__SSP2_CMD 0x2110
185MX28_PAD_SSP2_MISO__SSP2_D0 0x2120
186MX28_PAD_SSP2_SS0__SSP2_D3 0x2130
187MX28_PAD_SSP2_SS1__SSP2_D4 0x2140
188MX28_PAD_SSP2_SS2__SSP2_D5 0x2150
189MX28_PAD_SSP3_SCK__SSP3_SCK 0x2180
190MX28_PAD_SSP3_MOSI__SSP3_CMD 0x2190
191MX28_PAD_SSP3_MISO__SSP3_D0 0x21a0
192MX28_PAD_SSP3_SS0__SSP3_D3 0x21b0
193MX28_PAD_AUART0_RX__AUART0_RX 0x3000
194MX28_PAD_AUART0_TX__AUART0_TX 0x3010
195MX28_PAD_AUART0_CTS__AUART0_CTS 0x3020
196MX28_PAD_AUART0_RTS__AUART0_RTS 0x3030
197MX28_PAD_AUART1_RX__AUART1_RX 0x3040
198MX28_PAD_AUART1_TX__AUART1_TX 0x3050
199MX28_PAD_AUART1_CTS__AUART1_CTS 0x3060
200MX28_PAD_AUART1_RTS__AUART1_RTS 0x3070
201MX28_PAD_AUART2_RX__AUART2_RX 0x3080
202MX28_PAD_AUART2_TX__AUART2_TX 0x3090
203MX28_PAD_AUART2_CTS__AUART2_CTS 0x30a0
204MX28_PAD_AUART2_RTS__AUART2_RTS 0x30b0
205MX28_PAD_AUART3_RX__AUART3_RX 0x30c0
206MX28_PAD_AUART3_TX__AUART3_TX 0x30d0
207MX28_PAD_AUART3_CTS__AUART3_CTS 0x30e0
208MX28_PAD_AUART3_RTS__AUART3_RTS 0x30f0
209MX28_PAD_PWM0__PWM_0 0x3100
210MX28_PAD_PWM1__PWM_1 0x3110
211MX28_PAD_PWM2__PWM_2 0x3120
212MX28_PAD_SAIF0_MCLK__SAIF0_MCLK 0x3140
213MX28_PAD_SAIF0_LRCLK__SAIF0_LRCLK 0x3150
214MX28_PAD_SAIF0_BITCLK__SAIF0_BITCLK 0x3160
215MX28_PAD_SAIF0_SDATA0__SAIF0_SDATA0 0x3170
216MX28_PAD_I2C0_SCL__I2C0_SCL 0x3180
217MX28_PAD_I2C0_SDA__I2C0_SDA 0x3190
218MX28_PAD_SAIF1_SDATA0__SAIF1_SDATA0 0x31a0
219MX28_PAD_SPDIF__SPDIF_TX 0x31b0
220MX28_PAD_PWM3__PWM_3 0x31c0
221MX28_PAD_PWM4__PWM_4 0x31d0
222MX28_PAD_LCD_RESET__LCD_RESET 0x31e0
223MX28_PAD_ENET0_MDC__ENET0_MDC 0x4000
224MX28_PAD_ENET0_MDIO__ENET0_MDIO 0x4010
225MX28_PAD_ENET0_RX_EN__ENET0_RX_EN 0x4020
226MX28_PAD_ENET0_RXD0__ENET0_RXD0 0x4030
227MX28_PAD_ENET0_RXD1__ENET0_RXD1 0x4040
228MX28_PAD_ENET0_TX_CLK__ENET0_TX_CLK 0x4050
229MX28_PAD_ENET0_TX_EN__ENET0_TX_EN 0x4060
230MX28_PAD_ENET0_TXD0__ENET0_TXD0 0x4070
231MX28_PAD_ENET0_TXD1__ENET0_TXD1 0x4080
232MX28_PAD_ENET0_RXD2__ENET0_RXD2 0x4090
233MX28_PAD_ENET0_RXD3__ENET0_RXD3 0x40a0
234MX28_PAD_ENET0_TXD2__ENET0_TXD2 0x40b0
235MX28_PAD_ENET0_TXD3__ENET0_TXD3 0x40c0
236MX28_PAD_ENET0_RX_CLK__ENET0_RX_CLK 0x40d0
237MX28_PAD_ENET0_COL__ENET0_COL 0x40e0
238MX28_PAD_ENET0_CRS__ENET0_CRS 0x40f0
239MX28_PAD_ENET_CLK__CLKCTRL_ENET 0x4100
240MX28_PAD_JTAG_RTCK__JTAG_RTCK 0x4140
241MX28_PAD_EMI_D00__EMI_DATA0 0x5000
242MX28_PAD_EMI_D01__EMI_DATA1 0x5010
243MX28_PAD_EMI_D02__EMI_DATA2 0x5020
244MX28_PAD_EMI_D03__EMI_DATA3 0x5030
245MX28_PAD_EMI_D04__EMI_DATA4 0x5040
246MX28_PAD_EMI_D05__EMI_DATA5 0x5050
247MX28_PAD_EMI_D06__EMI_DATA6 0x5060
248MX28_PAD_EMI_D07__EMI_DATA7 0x5070
249MX28_PAD_EMI_D08__EMI_DATA8 0x5080
250MX28_PAD_EMI_D09__EMI_DATA9 0x5090
251MX28_PAD_EMI_D10__EMI_DATA10 0x50a0
252MX28_PAD_EMI_D11__EMI_DATA11 0x50b0
253MX28_PAD_EMI_D12__EMI_DATA12 0x50c0
254MX28_PAD_EMI_D13__EMI_DATA13 0x50d0
255MX28_PAD_EMI_D14__EMI_DATA14 0x50e0
256MX28_PAD_EMI_D15__EMI_DATA15 0x50f0
257MX28_PAD_EMI_ODT0__EMI_ODT0 0x5100
258MX28_PAD_EMI_DQM0__EMI_DQM0 0x5110
259MX28_PAD_EMI_ODT1__EMI_ODT1 0x5120
260MX28_PAD_EMI_DQM1__EMI_DQM1 0x5130
261MX28_PAD_EMI_DDR_OPEN_FB__EMI_DDR_OPEN_FEEDBACK 0x5140
262MX28_PAD_EMI_CLK__EMI_CLK 0x5150
263MX28_PAD_EMI_DQS0__EMI_DQS0 0x5160
264MX28_PAD_EMI_DQS1__EMI_DQS1 0x5170
265MX28_PAD_EMI_DDR_OPEN__EMI_DDR_OPEN 0x51a0
266MX28_PAD_EMI_A00__EMI_ADDR0 0x6000
267MX28_PAD_EMI_A01__EMI_ADDR1 0x6010
268MX28_PAD_EMI_A02__EMI_ADDR2 0x6020
269MX28_PAD_EMI_A03__EMI_ADDR3 0x6030
270MX28_PAD_EMI_A04__EMI_ADDR4 0x6040
271MX28_PAD_EMI_A05__EMI_ADDR5 0x6050
272MX28_PAD_EMI_A06__EMI_ADDR6 0x6060
273MX28_PAD_EMI_A07__EMI_ADDR7 0x6070
274MX28_PAD_EMI_A08__EMI_ADDR8 0x6080
275MX28_PAD_EMI_A09__EMI_ADDR9 0x6090
276MX28_PAD_EMI_A10__EMI_ADDR10 0x60a0
277MX28_PAD_EMI_A11__EMI_ADDR11 0x60b0
278MX28_PAD_EMI_A12__EMI_ADDR12 0x60c0
279MX28_PAD_EMI_A13__EMI_ADDR13 0x60d0
280MX28_PAD_EMI_A14__EMI_ADDR14 0x60e0
281MX28_PAD_EMI_BA0__EMI_BA0 0x6100
282MX28_PAD_EMI_BA1__EMI_BA1 0x6110
283MX28_PAD_EMI_BA2__EMI_BA2 0x6120
284MX28_PAD_EMI_CASN__EMI_CASN 0x6130
285MX28_PAD_EMI_RASN__EMI_RASN 0x6140
286MX28_PAD_EMI_WEN__EMI_WEN 0x6150
287MX28_PAD_EMI_CE0N__EMI_CE0N 0x6160
288MX28_PAD_EMI_CE1N__EMI_CE1N 0x6170
289MX28_PAD_EMI_CKE__EMI_CKE 0x6180
290MX28_PAD_GPMI_D00__SSP1_D0 0x0001
291MX28_PAD_GPMI_D01__SSP1_D1 0x0011
292MX28_PAD_GPMI_D02__SSP1_D2 0x0021
293MX28_PAD_GPMI_D03__SSP1_D3 0x0031
294MX28_PAD_GPMI_D04__SSP1_D4 0x0041
295MX28_PAD_GPMI_D05__SSP1_D5 0x0051
296MX28_PAD_GPMI_D06__SSP1_D6 0x0061
297MX28_PAD_GPMI_D07__SSP1_D7 0x0071
298MX28_PAD_GPMI_CE0N__SSP3_D0 0x0101
299MX28_PAD_GPMI_CE1N__SSP3_D3 0x0111
300MX28_PAD_GPMI_CE2N__CAN1_TX 0x0121
301MX28_PAD_GPMI_CE3N__CAN1_RX 0x0131
302MX28_PAD_GPMI_RDY0__SSP1_CARD_DETECT 0x0141
303MX28_PAD_GPMI_RDY1__SSP1_CMD 0x0151
304MX28_PAD_GPMI_RDY2__CAN0_TX 0x0161
305MX28_PAD_GPMI_RDY3__CAN0_RX 0x0171
306MX28_PAD_GPMI_RDN__SSP3_SCK 0x0181
307MX28_PAD_GPMI_WRN__SSP1_SCK 0x0191
308MX28_PAD_GPMI_ALE__SSP3_D1 0x01a1
309MX28_PAD_GPMI_CLE__SSP3_D2 0x01b1
310MX28_PAD_GPMI_RESETN__SSP3_CMD 0x01c1
311MX28_PAD_LCD_D03__ETM_DA8 0x1031
312MX28_PAD_LCD_D04__ETM_DA9 0x1041
313MX28_PAD_LCD_D08__ETM_DA3 0x1081
314MX28_PAD_LCD_D09__ETM_DA4 0x1091
315MX28_PAD_LCD_D20__ENET1_1588_EVENT2_OUT 0x1141
316MX28_PAD_LCD_D21__ENET1_1588_EVENT2_IN 0x1151
317MX28_PAD_LCD_D22__ENET1_1588_EVENT3_OUT 0x1161
318MX28_PAD_LCD_D23__ENET1_1588_EVENT3_IN 0x1171
319MX28_PAD_LCD_RD_E__LCD_VSYNC 0x1181
320MX28_PAD_LCD_WR_RWN__LCD_HSYNC 0x1191
321MX28_PAD_LCD_RS__LCD_DOTCLK 0x11a1
322MX28_PAD_LCD_CS__LCD_ENABLE 0x11b1
323MX28_PAD_LCD_VSYNC__SAIF1_SDATA0 0x11c1
324MX28_PAD_LCD_HSYNC__SAIF1_SDATA1 0x11d1
325MX28_PAD_LCD_DOTCLK__SAIF1_MCLK 0x11e1
326MX28_PAD_SSP0_DATA4__SSP2_D0 0x2041
327MX28_PAD_SSP0_DATA5__SSP2_D3 0x2051
328MX28_PAD_SSP0_DATA6__SSP2_CMD 0x2061
329MX28_PAD_SSP0_DATA7__SSP2_SCK 0x2071
330MX28_PAD_SSP1_SCK__SSP2_D1 0x20c1
331MX28_PAD_SSP1_CMD__SSP2_D2 0x20d1
332MX28_PAD_SSP1_DATA0__SSP2_D6 0x20e1
333MX28_PAD_SSP1_DATA3__SSP2_D7 0x20f1
334MX28_PAD_SSP2_SCK__AUART2_RX 0x2101
335MX28_PAD_SSP2_MOSI__AUART2_TX 0x2111
336MX28_PAD_SSP2_MISO__AUART3_RX 0x2121
337MX28_PAD_SSP2_SS0__AUART3_TX 0x2131
338MX28_PAD_SSP2_SS1__SSP2_D1 0x2141
339MX28_PAD_SSP2_SS2__SSP2_D2 0x2151
340MX28_PAD_SSP3_SCK__AUART4_TX 0x2181
341MX28_PAD_SSP3_MOSI__AUART4_RX 0x2191
342MX28_PAD_SSP3_MISO__AUART4_RTS 0x21a1
343MX28_PAD_SSP3_SS0__AUART4_CTS 0x21b1
344MX28_PAD_AUART0_RX__I2C0_SCL 0x3001
345MX28_PAD_AUART0_TX__I2C0_SDA 0x3011
346MX28_PAD_AUART0_CTS__AUART4_RX 0x3021
347MX28_PAD_AUART0_RTS__AUART4_TX 0x3031
348MX28_PAD_AUART1_RX__SSP2_CARD_DETECT 0x3041
349MX28_PAD_AUART1_TX__SSP3_CARD_DETECT 0x3051
350MX28_PAD_AUART1_CTS__USB0_OVERCURRENT 0x3061
351MX28_PAD_AUART1_RTS__USB0_ID 0x3071
352MX28_PAD_AUART2_RX__SSP3_D1 0x3081
353MX28_PAD_AUART2_TX__SSP3_D2 0x3091
354MX28_PAD_AUART2_CTS__I2C1_SCL 0x30a1
355MX28_PAD_AUART2_RTS__I2C1_SDA 0x30b1
356MX28_PAD_AUART3_RX__CAN0_TX 0x30c1
357MX28_PAD_AUART3_TX__CAN0_RX 0x30d1
358MX28_PAD_AUART3_CTS__CAN1_TX 0x30e1
359MX28_PAD_AUART3_RTS__CAN1_RX 0x30f1
360MX28_PAD_PWM0__I2C1_SCL 0x3101
361MX28_PAD_PWM1__I2C1_SDA 0x3111
362MX28_PAD_PWM2__USB0_ID 0x3121
363MX28_PAD_SAIF0_MCLK__PWM_3 0x3141
364MX28_PAD_SAIF0_LRCLK__PWM_4 0x3151
365MX28_PAD_SAIF0_BITCLK__PWM_5 0x3161
366MX28_PAD_SAIF0_SDATA0__PWM_6 0x3171
367MX28_PAD_I2C0_SCL__TIMROT_ROTARYA 0x3181
368MX28_PAD_I2C0_SDA__TIMROT_ROTARYB 0x3191
369MX28_PAD_SAIF1_SDATA0__PWM_7 0x31a1
370MX28_PAD_LCD_RESET__LCD_VSYNC 0x31e1
371MX28_PAD_ENET0_MDC__GPMI_CE4N 0x4001
372MX28_PAD_ENET0_MDIO__GPMI_CE5N 0x4011
373MX28_PAD_ENET0_RX_EN__GPMI_CE6N 0x4021
374MX28_PAD_ENET0_RXD0__GPMI_CE7N 0x4031
375MX28_PAD_ENET0_RXD1__GPMI_READY4 0x4041
376MX28_PAD_ENET0_TX_CLK__HSADC_TRIGGER 0x4051
377MX28_PAD_ENET0_TX_EN__GPMI_READY5 0x4061
378MX28_PAD_ENET0_TXD0__GPMI_READY6 0x4071
379MX28_PAD_ENET0_TXD1__GPMI_READY7 0x4081
380MX28_PAD_ENET0_RXD2__ENET1_RXD0 0x4091
381MX28_PAD_ENET0_RXD3__ENET1_RXD1 0x40a1
382MX28_PAD_ENET0_TXD2__ENET1_TXD0 0x40b1
383MX28_PAD_ENET0_TXD3__ENET1_TXD1 0x40c1
384MX28_PAD_ENET0_RX_CLK__ENET0_RX_ER 0x40d1
385MX28_PAD_ENET0_COL__ENET1_TX_EN 0x40e1
386MX28_PAD_ENET0_CRS__ENET1_RX_EN 0x40f1
387MX28_PAD_GPMI_CE2N__ENET0_RX_ER 0x0122
388MX28_PAD_GPMI_CE3N__SAIF1_MCLK 0x0132
389MX28_PAD_GPMI_RDY0__USB0_ID 0x0142
390MX28_PAD_GPMI_RDY2__ENET0_TX_ER 0x0162
391MX28_PAD_GPMI_RDY3__HSADC_TRIGGER 0x0172
392MX28_PAD_GPMI_ALE__SSP3_D4 0x01a2
393MX28_PAD_GPMI_CLE__SSP3_D5 0x01b2
394MX28_PAD_LCD_D00__ETM_DA0 0x1002
395MX28_PAD_LCD_D01__ETM_DA1 0x1012
396MX28_PAD_LCD_D02__ETM_DA2 0x1022
397MX28_PAD_LCD_D03__ETM_DA3 0x1032
398MX28_PAD_LCD_D04__ETM_DA4 0x1042
399MX28_PAD_LCD_D05__ETM_DA5 0x1052
400MX28_PAD_LCD_D06__ETM_DA6 0x1062
401MX28_PAD_LCD_D07__ETM_DA7 0x1072
402MX28_PAD_LCD_D08__ETM_DA8 0x1082
403MX28_PAD_LCD_D09__ETM_DA9 0x1092
404MX28_PAD_LCD_D10__ETM_DA10 0x10a2
405MX28_PAD_LCD_D11__ETM_DA11 0x10b2
406MX28_PAD_LCD_D12__ETM_DA12 0x10c2
407MX28_PAD_LCD_D13__ETM_DA13 0x10d2
408MX28_PAD_LCD_D14__ETM_DA14 0x10e2
409MX28_PAD_LCD_D15__ETM_DA15 0x10f2
410MX28_PAD_LCD_D16__ETM_DA7 0x1102
411MX28_PAD_LCD_D17__ETM_DA6 0x1112
412MX28_PAD_LCD_D18__ETM_DA5 0x1122
413MX28_PAD_LCD_D19__ETM_DA4 0x1132
414MX28_PAD_LCD_D20__ETM_DA3 0x1142
415MX28_PAD_LCD_D21__ETM_DA2 0x1152
416MX28_PAD_LCD_D22__ETM_DA1 0x1162
417MX28_PAD_LCD_D23__ETM_DA0 0x1172
418MX28_PAD_LCD_RD_E__ETM_TCTL 0x1182
419MX28_PAD_LCD_WR_RWN__ETM_TCLK 0x1192
420MX28_PAD_LCD_HSYNC__ETM_TCTL 0x11d2
421MX28_PAD_LCD_DOTCLK__ETM_TCLK 0x11e2
422MX28_PAD_SSP1_SCK__ENET0_1588_EVENT2_OUT 0x20c2
423MX28_PAD_SSP1_CMD__ENET0_1588_EVENT2_IN 0x20d2
424MX28_PAD_SSP1_DATA0__ENET0_1588_EVENT3_OUT 0x20e2
425MX28_PAD_SSP1_DATA3__ENET0_1588_EVENT3_IN 0x20f2
426MX28_PAD_SSP2_SCK__SAIF0_SDATA1 0x2102
427MX28_PAD_SSP2_MOSI__SAIF0_SDATA2 0x2112
428MX28_PAD_SSP2_MISO__SAIF1_SDATA1 0x2122
429MX28_PAD_SSP2_SS0__SAIF1_SDATA2 0x2132
430MX28_PAD_SSP2_SS1__USB1_OVERCURRENT 0x2142
431MX28_PAD_SSP2_SS2__USB0_OVERCURRENT 0x2152
432MX28_PAD_SSP3_SCK__ENET1_1588_EVENT0_OUT 0x2182
433MX28_PAD_SSP3_MOSI__ENET1_1588_EVENT0_IN 0x2192
434MX28_PAD_SSP3_MISO__ENET1_1588_EVENT1_OUT 0x21a2
435MX28_PAD_SSP3_SS0__ENET1_1588_EVENT1_IN 0x21b2
436MX28_PAD_AUART0_RX__DUART_CTS 0x3002
437MX28_PAD_AUART0_TX__DUART_RTS 0x3012
438MX28_PAD_AUART0_CTS__DUART_RX 0x3022
439MX28_PAD_AUART0_RTS__DUART_TX 0x3032
440MX28_PAD_AUART1_RX__PWM_0 0x3042
441MX28_PAD_AUART1_TX__PWM_1 0x3052
442MX28_PAD_AUART1_CTS__TIMROT_ROTARYA 0x3062
443MX28_PAD_AUART1_RTS__TIMROT_ROTARYB 0x3072
444MX28_PAD_AUART2_RX__SSP3_D4 0x3082
445MX28_PAD_AUART2_TX__SSP3_D5 0x3092
446MX28_PAD_AUART2_CTS__SAIF1_BITCLK 0x30a2
447MX28_PAD_AUART2_RTS__SAIF1_LRCLK 0x30b2
448MX28_PAD_AUART3_RX__ENET0_1588_EVENT0_OUT 0x30c2
449MX28_PAD_AUART3_TX__ENET0_1588_EVENT0_IN 0x30d2
450MX28_PAD_AUART3_CTS__ENET0_1588_EVENT1_OUT 0x30e2
451MX28_PAD_AUART3_RTS__ENET0_1588_EVENT1_IN 0x30f2
452MX28_PAD_PWM0__DUART_RX 0x3102
453MX28_PAD_PWM1__DUART_TX 0x3112
454MX28_PAD_PWM2__USB1_OVERCURRENT 0x3122
455MX28_PAD_SAIF0_MCLK__AUART4_CTS 0x3142
456MX28_PAD_SAIF0_LRCLK__AUART4_RTS 0x3152
457MX28_PAD_SAIF0_BITCLK__AUART4_RX 0x3162
458MX28_PAD_SAIF0_SDATA0__AUART4_TX 0x3172
459MX28_PAD_I2C0_SCL__DUART_RX 0x3182
460MX28_PAD_I2C0_SDA__DUART_TX 0x3192
461MX28_PAD_SAIF1_SDATA0__SAIF0_SDATA1 0x31a2
462MX28_PAD_SPDIF__ENET1_RX_ER 0x31b2
463MX28_PAD_ENET0_MDC__SAIF0_SDATA1 0x4002
464MX28_PAD_ENET0_MDIO__SAIF0_SDATA2 0x4012
465MX28_PAD_ENET0_RX_EN__SAIF1_SDATA1 0x4022
466MX28_PAD_ENET0_RXD0__SAIF1_SDATA2 0x4032
467MX28_PAD_ENET0_TX_CLK__ENET0_1588_EVENT2_OUT 0x4052
468MX28_PAD_ENET0_RXD2__ENET0_1588_EVENT0_OUT 0x4092
469MX28_PAD_ENET0_RXD3__ENET0_1588_EVENT0_IN 0x40a2
470MX28_PAD_ENET0_TXD2__ENET0_1588_EVENT1_OUT 0x40b2
471MX28_PAD_ENET0_TXD3__ENET0_1588_EVENT1_IN 0x40c2
472MX28_PAD_ENET0_RX_CLK__ENET0_1588_EVENT2_IN 0x40d2
473MX28_PAD_ENET0_COL__ENET0_1588_EVENT3_OUT 0x40e2
474MX28_PAD_ENET0_CRS__ENET0_1588_EVENT3_IN 0x40f2
475MX28_PAD_GPMI_D00__GPIO_0_0 0x0003
476MX28_PAD_GPMI_D01__GPIO_0_1 0x0013
477MX28_PAD_GPMI_D02__GPIO_0_2 0x0023
478MX28_PAD_GPMI_D03__GPIO_0_3 0x0033
479MX28_PAD_GPMI_D04__GPIO_0_4 0x0043
480MX28_PAD_GPMI_D05__GPIO_0_5 0x0053
481MX28_PAD_GPMI_D06__GPIO_0_6 0x0063
482MX28_PAD_GPMI_D07__GPIO_0_7 0x0073
483MX28_PAD_GPMI_CE0N__GPIO_0_16 0x0103
484MX28_PAD_GPMI_CE1N__GPIO_0_17 0x0113
485MX28_PAD_GPMI_CE2N__GPIO_0_18 0x0123
486MX28_PAD_GPMI_CE3N__GPIO_0_19 0x0133
487MX28_PAD_GPMI_RDY0__GPIO_0_20 0x0143
488MX28_PAD_GPMI_RDY1__GPIO_0_21 0x0153
489MX28_PAD_GPMI_RDY2__GPIO_0_22 0x0163
490MX28_PAD_GPMI_RDY3__GPIO_0_23 0x0173
491MX28_PAD_GPMI_RDN__GPIO_0_24 0x0183
492MX28_PAD_GPMI_WRN__GPIO_0_25 0x0193
493MX28_PAD_GPMI_ALE__GPIO_0_26 0x01a3
494MX28_PAD_GPMI_CLE__GPIO_0_27 0x01b3
495MX28_PAD_GPMI_RESETN__GPIO_0_28 0x01c3
496MX28_PAD_LCD_D00__GPIO_1_0 0x1003
497MX28_PAD_LCD_D01__GPIO_1_1 0x1013
498MX28_PAD_LCD_D02__GPIO_1_2 0x1023
499MX28_PAD_LCD_D03__GPIO_1_3 0x1033
500MX28_PAD_LCD_D04__GPIO_1_4 0x1043
501MX28_PAD_LCD_D05__GPIO_1_5 0x1053
502MX28_PAD_LCD_D06__GPIO_1_6 0x1063
503MX28_PAD_LCD_D07__GPIO_1_7 0x1073
504MX28_PAD_LCD_D08__GPIO_1_8 0x1083
505MX28_PAD_LCD_D09__GPIO_1_9 0x1093
506MX28_PAD_LCD_D10__GPIO_1_10 0x10a3
507MX28_PAD_LCD_D11__GPIO_1_11 0x10b3
508MX28_PAD_LCD_D12__GPIO_1_12 0x10c3
509MX28_PAD_LCD_D13__GPIO_1_13 0x10d3
510MX28_PAD_LCD_D14__GPIO_1_14 0x10e3
511MX28_PAD_LCD_D15__GPIO_1_15 0x10f3
512MX28_PAD_LCD_D16__GPIO_1_16 0x1103
513MX28_PAD_LCD_D17__GPIO_1_17 0x1113
514MX28_PAD_LCD_D18__GPIO_1_18 0x1123
515MX28_PAD_LCD_D19__GPIO_1_19 0x1133
516MX28_PAD_LCD_D20__GPIO_1_20 0x1143
517MX28_PAD_LCD_D21__GPIO_1_21 0x1153
518MX28_PAD_LCD_D22__GPIO_1_22 0x1163
519MX28_PAD_LCD_D23__GPIO_1_23 0x1173
520MX28_PAD_LCD_RD_E__GPIO_1_24 0x1183
521MX28_PAD_LCD_WR_RWN__GPIO_1_25 0x1193
522MX28_PAD_LCD_RS__GPIO_1_26 0x11a3
523MX28_PAD_LCD_CS__GPIO_1_27 0x11b3
524MX28_PAD_LCD_VSYNC__GPIO_1_28 0x11c3
525MX28_PAD_LCD_HSYNC__GPIO_1_29 0x11d3
526MX28_PAD_LCD_DOTCLK__GPIO_1_30 0x11e3
527MX28_PAD_LCD_ENABLE__GPIO_1_31 0x11f3
528MX28_PAD_SSP0_DATA0__GPIO_2_0 0x2003
529MX28_PAD_SSP0_DATA1__GPIO_2_1 0x2013
530MX28_PAD_SSP0_DATA2__GPIO_2_2 0x2023
531MX28_PAD_SSP0_DATA3__GPIO_2_3 0x2033
532MX28_PAD_SSP0_DATA4__GPIO_2_4 0x2043
533MX28_PAD_SSP0_DATA5__GPIO_2_5 0x2053
534MX28_PAD_SSP0_DATA6__GPIO_2_6 0x2063
535MX28_PAD_SSP0_DATA7__GPIO_2_7 0x2073
536MX28_PAD_SSP0_CMD__GPIO_2_8 0x2083
537MX28_PAD_SSP0_DETECT__GPIO_2_9 0x2093
538MX28_PAD_SSP0_SCK__GPIO_2_10 0x20a3
539MX28_PAD_SSP1_SCK__GPIO_2_12 0x20c3
540MX28_PAD_SSP1_CMD__GPIO_2_13 0x20d3
541MX28_PAD_SSP1_DATA0__GPIO_2_14 0x20e3
542MX28_PAD_SSP1_DATA3__GPIO_2_15 0x20f3
543MX28_PAD_SSP2_SCK__GPIO_2_16 0x2103
544MX28_PAD_SSP2_MOSI__GPIO_2_17 0x2113
545MX28_PAD_SSP2_MISO__GPIO_2_18 0x2123
546MX28_PAD_SSP2_SS0__GPIO_2_19 0x2133
547MX28_PAD_SSP2_SS1__GPIO_2_20 0x2143
548MX28_PAD_SSP2_SS2__GPIO_2_21 0x2153
549MX28_PAD_SSP3_SCK__GPIO_2_24 0x2183
550MX28_PAD_SSP3_MOSI__GPIO_2_25 0x2193
551MX28_PAD_SSP3_MISO__GPIO_2_26 0x21a3
552MX28_PAD_SSP3_SS0__GPIO_2_27 0x21b3
553MX28_PAD_AUART0_RX__GPIO_3_0 0x3003
554MX28_PAD_AUART0_TX__GPIO_3_1 0x3013
555MX28_PAD_AUART0_CTS__GPIO_3_2 0x3023
556MX28_PAD_AUART0_RTS__GPIO_3_3 0x3033
557MX28_PAD_AUART1_RX__GPIO_3_4 0x3043
558MX28_PAD_AUART1_TX__GPIO_3_5 0x3053
559MX28_PAD_AUART1_CTS__GPIO_3_6 0x3063
560MX28_PAD_AUART1_RTS__GPIO_3_7 0x3073
561MX28_PAD_AUART2_RX__GPIO_3_8 0x3083
562MX28_PAD_AUART2_TX__GPIO_3_9 0x3093
563MX28_PAD_AUART2_CTS__GPIO_3_10 0x30a3
564MX28_PAD_AUART2_RTS__GPIO_3_11 0x30b3
565MX28_PAD_AUART3_RX__GPIO_3_12 0x30c3
566MX28_PAD_AUART3_TX__GPIO_3_13 0x30d3
567MX28_PAD_AUART3_CTS__GPIO_3_14 0x30e3
568MX28_PAD_AUART3_RTS__GPIO_3_15 0x30f3
569MX28_PAD_PWM0__GPIO_3_16 0x3103
570MX28_PAD_PWM1__GPIO_3_17 0x3113
571MX28_PAD_PWM2__GPIO_3_18 0x3123
572MX28_PAD_SAIF0_MCLK__GPIO_3_20 0x3143
573MX28_PAD_SAIF0_LRCLK__GPIO_3_21 0x3153
574MX28_PAD_SAIF0_BITCLK__GPIO_3_22 0x3163
575MX28_PAD_SAIF0_SDATA0__GPIO_3_23 0x3173
576MX28_PAD_I2C0_SCL__GPIO_3_24 0x3183
577MX28_PAD_I2C0_SDA__GPIO_3_25 0x3193
578MX28_PAD_SAIF1_SDATA0__GPIO_3_26 0x31a3
579MX28_PAD_SPDIF__GPIO_3_27 0x31b3
580MX28_PAD_PWM3__GPIO_3_28 0x31c3
581MX28_PAD_PWM4__GPIO_3_29 0x31d3
582MX28_PAD_LCD_RESET__GPIO_3_30 0x31e3
583MX28_PAD_ENET0_MDC__GPIO_4_0 0x4003
584MX28_PAD_ENET0_MDIO__GPIO_4_1 0x4013
585MX28_PAD_ENET0_RX_EN__GPIO_4_2 0x4023
586MX28_PAD_ENET0_RXD0__GPIO_4_3 0x4033
587MX28_PAD_ENET0_RXD1__GPIO_4_4 0x4043
588MX28_PAD_ENET0_TX_CLK__GPIO_4_5 0x4053
589MX28_PAD_ENET0_TX_EN__GPIO_4_6 0x4063
590MX28_PAD_ENET0_TXD0__GPIO_4_7 0x4073
591MX28_PAD_ENET0_TXD1__GPIO_4_8 0x4083
592MX28_PAD_ENET0_RXD2__GPIO_4_9 0x4093
593MX28_PAD_ENET0_RXD3__GPIO_4_10 0x40a3
594MX28_PAD_ENET0_TXD2__GPIO_4_11 0x40b3
595MX28_PAD_ENET0_TXD3__GPIO_4_12 0x40c3
596MX28_PAD_ENET0_RX_CLK__GPIO_4_13 0x40d3
597MX28_PAD_ENET0_COL__GPIO_4_14 0x40e3
598MX28_PAD_ENET0_CRS__GPIO_4_15 0x40f3
599MX28_PAD_ENET_CLK__GPIO_4_16 0x4103
600MX28_PAD_JTAG_RTCK__GPIO_4_20 0x4143
601
602Valid values for i.MX23 pinmux-id:
603
604pinmux id
605------ --
606MX23_PAD_GPMI_D00__GPMI_D00 0x0000
607MX23_PAD_GPMI_D01__GPMI_D01 0x0010
608MX23_PAD_GPMI_D02__GPMI_D02 0x0020
609MX23_PAD_GPMI_D03__GPMI_D03 0x0030
610MX23_PAD_GPMI_D04__GPMI_D04 0x0040
611MX23_PAD_GPMI_D05__GPMI_D05 0x0050
612MX23_PAD_GPMI_D06__GPMI_D06 0x0060
613MX23_PAD_GPMI_D07__GPMI_D07 0x0070
614MX23_PAD_GPMI_D08__GPMI_D08 0x0080
615MX23_PAD_GPMI_D09__GPMI_D09 0x0090
616MX23_PAD_GPMI_D10__GPMI_D10 0x00a0
617MX23_PAD_GPMI_D11__GPMI_D11 0x00b0
618MX23_PAD_GPMI_D12__GPMI_D12 0x00c0
619MX23_PAD_GPMI_D13__GPMI_D13 0x00d0
620MX23_PAD_GPMI_D14__GPMI_D14 0x00e0
621MX23_PAD_GPMI_D15__GPMI_D15 0x00f0
622MX23_PAD_GPMI_CLE__GPMI_CLE 0x0100
623MX23_PAD_GPMI_ALE__GPMI_ALE 0x0110
624MX23_PAD_GPMI_CE2N__GPMI_CE2N 0x0120
625MX23_PAD_GPMI_RDY0__GPMI_RDY0 0x0130
626MX23_PAD_GPMI_RDY1__GPMI_RDY1 0x0140
627MX23_PAD_GPMI_RDY2__GPMI_RDY2 0x0150
628MX23_PAD_GPMI_RDY3__GPMI_RDY3 0x0160
629MX23_PAD_GPMI_WPN__GPMI_WPN 0x0170
630MX23_PAD_GPMI_WRN__GPMI_WRN 0x0180
631MX23_PAD_GPMI_RDN__GPMI_RDN 0x0190
632MX23_PAD_AUART1_CTS__AUART1_CTS 0x01a0
633MX23_PAD_AUART1_RTS__AUART1_RTS 0x01b0
634MX23_PAD_AUART1_RX__AUART1_RX 0x01c0
635MX23_PAD_AUART1_TX__AUART1_TX 0x01d0
636MX23_PAD_I2C_SCL__I2C_SCL 0x01e0
637MX23_PAD_I2C_SDA__I2C_SDA 0x01f0
638MX23_PAD_LCD_D00__LCD_D00 0x1000
639MX23_PAD_LCD_D01__LCD_D01 0x1010
640MX23_PAD_LCD_D02__LCD_D02 0x1020
641MX23_PAD_LCD_D03__LCD_D03 0x1030
642MX23_PAD_LCD_D04__LCD_D04 0x1040
643MX23_PAD_LCD_D05__LCD_D05 0x1050
644MX23_PAD_LCD_D06__LCD_D06 0x1060
645MX23_PAD_LCD_D07__LCD_D07 0x1070
646MX23_PAD_LCD_D08__LCD_D08 0x1080
647MX23_PAD_LCD_D09__LCD_D09 0x1090
648MX23_PAD_LCD_D10__LCD_D10 0x10a0
649MX23_PAD_LCD_D11__LCD_D11 0x10b0
650MX23_PAD_LCD_D12__LCD_D12 0x10c0
651MX23_PAD_LCD_D13__LCD_D13 0x10d0
652MX23_PAD_LCD_D14__LCD_D14 0x10e0
653MX23_PAD_LCD_D15__LCD_D15 0x10f0
654MX23_PAD_LCD_D16__LCD_D16 0x1100
655MX23_PAD_LCD_D17__LCD_D17 0x1110
656MX23_PAD_LCD_RESET__LCD_RESET 0x1120
657MX23_PAD_LCD_RS__LCD_RS 0x1130
658MX23_PAD_LCD_WR__LCD_WR 0x1140
659MX23_PAD_LCD_CS__LCD_CS 0x1150
660MX23_PAD_LCD_DOTCK__LCD_DOTCK 0x1160
661MX23_PAD_LCD_ENABLE__LCD_ENABLE 0x1170
662MX23_PAD_LCD_HSYNC__LCD_HSYNC 0x1180
663MX23_PAD_LCD_VSYNC__LCD_VSYNC 0x1190
664MX23_PAD_PWM0__PWM0 0x11a0
665MX23_PAD_PWM1__PWM1 0x11b0
666MX23_PAD_PWM2__PWM2 0x11c0
667MX23_PAD_PWM3__PWM3 0x11d0
668MX23_PAD_PWM4__PWM4 0x11e0
669MX23_PAD_SSP1_CMD__SSP1_CMD 0x2000
670MX23_PAD_SSP1_DETECT__SSP1_DETECT 0x2010
671MX23_PAD_SSP1_DATA0__SSP1_DATA0 0x2020
672MX23_PAD_SSP1_DATA1__SSP1_DATA1 0x2030
673MX23_PAD_SSP1_DATA2__SSP1_DATA2 0x2040
674MX23_PAD_SSP1_DATA3__SSP1_DATA3 0x2050
675MX23_PAD_SSP1_SCK__SSP1_SCK 0x2060
676MX23_PAD_ROTARYA__ROTARYA 0x2070
677MX23_PAD_ROTARYB__ROTARYB 0x2080
678MX23_PAD_EMI_A00__EMI_A00 0x2090
679MX23_PAD_EMI_A01__EMI_A01 0x20a0
680MX23_PAD_EMI_A02__EMI_A02 0x20b0
681MX23_PAD_EMI_A03__EMI_A03 0x20c0
682MX23_PAD_EMI_A04__EMI_A04 0x20d0
683MX23_PAD_EMI_A05__EMI_A05 0x20e0
684MX23_PAD_EMI_A06__EMI_A06 0x20f0
685MX23_PAD_EMI_A07__EMI_A07 0x2100
686MX23_PAD_EMI_A08__EMI_A08 0x2110
687MX23_PAD_EMI_A09__EMI_A09 0x2120
688MX23_PAD_EMI_A10__EMI_A10 0x2130
689MX23_PAD_EMI_A11__EMI_A11 0x2140
690MX23_PAD_EMI_A12__EMI_A12 0x2150
691MX23_PAD_EMI_BA0__EMI_BA0 0x2160
692MX23_PAD_EMI_BA1__EMI_BA1 0x2170
693MX23_PAD_EMI_CASN__EMI_CASN 0x2180
694MX23_PAD_EMI_CE0N__EMI_CE0N 0x2190
695MX23_PAD_EMI_CE1N__EMI_CE1N 0x21a0
696MX23_PAD_GPMI_CE1N__GPMI_CE1N 0x21b0
697MX23_PAD_GPMI_CE0N__GPMI_CE0N 0x21c0
698MX23_PAD_EMI_CKE__EMI_CKE 0x21d0
699MX23_PAD_EMI_RASN__EMI_RASN 0x21e0
700MX23_PAD_EMI_WEN__EMI_WEN 0x21f0
701MX23_PAD_EMI_D00__EMI_D00 0x3000
702MX23_PAD_EMI_D01__EMI_D01 0x3010
703MX23_PAD_EMI_D02__EMI_D02 0x3020
704MX23_PAD_EMI_D03__EMI_D03 0x3030
705MX23_PAD_EMI_D04__EMI_D04 0x3040
706MX23_PAD_EMI_D05__EMI_D05 0x3050
707MX23_PAD_EMI_D06__EMI_D06 0x3060
708MX23_PAD_EMI_D07__EMI_D07 0x3070
709MX23_PAD_EMI_D08__EMI_D08 0x3080
710MX23_PAD_EMI_D09__EMI_D09 0x3090
711MX23_PAD_EMI_D10__EMI_D10 0x30a0
712MX23_PAD_EMI_D11__EMI_D11 0x30b0
713MX23_PAD_EMI_D12__EMI_D12 0x30c0
714MX23_PAD_EMI_D13__EMI_D13 0x30d0
715MX23_PAD_EMI_D14__EMI_D14 0x30e0
716MX23_PAD_EMI_D15__EMI_D15 0x30f0
717MX23_PAD_EMI_DQM0__EMI_DQM0 0x3100
718MX23_PAD_EMI_DQM1__EMI_DQM1 0x3110
719MX23_PAD_EMI_DQS0__EMI_DQS0 0x3120
720MX23_PAD_EMI_DQS1__EMI_DQS1 0x3130
721MX23_PAD_EMI_CLK__EMI_CLK 0x3140
722MX23_PAD_EMI_CLKN__EMI_CLKN 0x3150
723MX23_PAD_GPMI_D00__LCD_D8 0x0001
724MX23_PAD_GPMI_D01__LCD_D9 0x0011
725MX23_PAD_GPMI_D02__LCD_D10 0x0021
726MX23_PAD_GPMI_D03__LCD_D11 0x0031
727MX23_PAD_GPMI_D04__LCD_D12 0x0041
728MX23_PAD_GPMI_D05__LCD_D13 0x0051
729MX23_PAD_GPMI_D06__LCD_D14 0x0061
730MX23_PAD_GPMI_D07__LCD_D15 0x0071
731MX23_PAD_GPMI_D08__LCD_D18 0x0081
732MX23_PAD_GPMI_D09__LCD_D19 0x0091
733MX23_PAD_GPMI_D10__LCD_D20 0x00a1
734MX23_PAD_GPMI_D11__LCD_D21 0x00b1
735MX23_PAD_GPMI_D12__LCD_D22 0x00c1
736MX23_PAD_GPMI_D13__LCD_D23 0x00d1
737MX23_PAD_GPMI_D14__AUART2_RX 0x00e1
738MX23_PAD_GPMI_D15__AUART2_TX 0x00f1
739MX23_PAD_GPMI_CLE__LCD_D16 0x0101
740MX23_PAD_GPMI_ALE__LCD_D17 0x0111
741MX23_PAD_GPMI_CE2N__ATA_A2 0x0121
742MX23_PAD_AUART1_RTS__IR_CLK 0x01b1
743MX23_PAD_AUART1_RX__IR_RX 0x01c1
744MX23_PAD_AUART1_TX__IR_TX 0x01d1
745MX23_PAD_I2C_SCL__GPMI_RDY2 0x01e1
746MX23_PAD_I2C_SDA__GPMI_CE2N 0x01f1
747MX23_PAD_LCD_D00__ETM_DA8 0x1001
748MX23_PAD_LCD_D01__ETM_DA9 0x1011
749MX23_PAD_LCD_D02__ETM_DA10 0x1021
750MX23_PAD_LCD_D03__ETM_DA11 0x1031
751MX23_PAD_LCD_D04__ETM_DA12 0x1041
752MX23_PAD_LCD_D05__ETM_DA13 0x1051
753MX23_PAD_LCD_D06__ETM_DA14 0x1061
754MX23_PAD_LCD_D07__ETM_DA15 0x1071
755MX23_PAD_LCD_D08__ETM_DA0 0x1081
756MX23_PAD_LCD_D09__ETM_DA1 0x1091
757MX23_PAD_LCD_D10__ETM_DA2 0x10a1
758MX23_PAD_LCD_D11__ETM_DA3 0x10b1
759MX23_PAD_LCD_D12__ETM_DA4 0x10c1
760MX23_PAD_LCD_D13__ETM_DA5 0x10d1
761MX23_PAD_LCD_D14__ETM_DA6 0x10e1
762MX23_PAD_LCD_D15__ETM_DA7 0x10f1
763MX23_PAD_LCD_RESET__ETM_TCTL 0x1121
764MX23_PAD_LCD_RS__ETM_TCLK 0x1131
765MX23_PAD_LCD_DOTCK__GPMI_RDY3 0x1161
766MX23_PAD_LCD_ENABLE__I2C_SCL 0x1171
767MX23_PAD_LCD_HSYNC__I2C_SDA 0x1181
768MX23_PAD_LCD_VSYNC__LCD_BUSY 0x1191
769MX23_PAD_PWM0__ROTARYA 0x11a1
770MX23_PAD_PWM1__ROTARYB 0x11b1
771MX23_PAD_PWM2__GPMI_RDY3 0x11c1
772MX23_PAD_PWM3__ETM_TCTL 0x11d1
773MX23_PAD_PWM4__ETM_TCLK 0x11e1
774MX23_PAD_SSP1_DETECT__GPMI_CE3N 0x2011
775MX23_PAD_SSP1_DATA1__I2C_SCL 0x2031
776MX23_PAD_SSP1_DATA2__I2C_SDA 0x2041
777MX23_PAD_ROTARYA__AUART2_RTS 0x2071
778MX23_PAD_ROTARYB__AUART2_CTS 0x2081
779MX23_PAD_GPMI_D00__SSP2_DATA0 0x0002
780MX23_PAD_GPMI_D01__SSP2_DATA1 0x0012
781MX23_PAD_GPMI_D02__SSP2_DATA2 0x0022
782MX23_PAD_GPMI_D03__SSP2_DATA3 0x0032
783MX23_PAD_GPMI_D04__SSP2_DATA4 0x0042
784MX23_PAD_GPMI_D05__SSP2_DATA5 0x0052
785MX23_PAD_GPMI_D06__SSP2_DATA6 0x0062
786MX23_PAD_GPMI_D07__SSP2_DATA7 0x0072
787MX23_PAD_GPMI_D08__SSP1_DATA4 0x0082
788MX23_PAD_GPMI_D09__SSP1_DATA5 0x0092
789MX23_PAD_GPMI_D10__SSP1_DATA6 0x00a2
790MX23_PAD_GPMI_D11__SSP1_DATA7 0x00b2
791MX23_PAD_GPMI_D15__GPMI_CE3N 0x00f2
792MX23_PAD_GPMI_RDY0__SSP2_DETECT 0x0132
793MX23_PAD_GPMI_RDY1__SSP2_CMD 0x0142
794MX23_PAD_GPMI_WRN__SSP2_SCK 0x0182
795MX23_PAD_AUART1_CTS__SSP1_DATA4 0x01a2
796MX23_PAD_AUART1_RTS__SSP1_DATA5 0x01b2
797MX23_PAD_AUART1_RX__SSP1_DATA6 0x01c2
798MX23_PAD_AUART1_TX__SSP1_DATA7 0x01d2
799MX23_PAD_I2C_SCL__AUART1_TX 0x01e2
800MX23_PAD_I2C_SDA__AUART1_RX 0x01f2
801MX23_PAD_LCD_D08__SAIF2_SDATA0 0x1082
802MX23_PAD_LCD_D09__SAIF1_SDATA0 0x1092
803MX23_PAD_LCD_D10__SAIF_MCLK_BITCLK 0x10a2
804MX23_PAD_LCD_D11__SAIF_LRCLK 0x10b2
805MX23_PAD_LCD_D12__SAIF2_SDATA1 0x10c2
806MX23_PAD_LCD_D13__SAIF2_SDATA2 0x10d2
807MX23_PAD_LCD_D14__SAIF1_SDATA2 0x10e2
808MX23_PAD_LCD_D15__SAIF1_SDATA1 0x10f2
809MX23_PAD_LCD_D16__SAIF_ALT_BITCLK 0x1102
810MX23_PAD_LCD_RESET__GPMI_CE3N 0x1122
811MX23_PAD_PWM0__DUART_RX 0x11a2
812MX23_PAD_PWM1__DUART_TX 0x11b2
813MX23_PAD_PWM3__AUART1_CTS 0x11d2
814MX23_PAD_PWM4__AUART1_RTS 0x11e2
815MX23_PAD_SSP1_CMD__JTAG_TDO 0x2002
816MX23_PAD_SSP1_DETECT__USB_OTG_ID 0x2012
817MX23_PAD_SSP1_DATA0__JTAG_TDI 0x2022
818MX23_PAD_SSP1_DATA1__JTAG_TCLK 0x2032
819MX23_PAD_SSP1_DATA2__JTAG_RTCK 0x2042
820MX23_PAD_SSP1_DATA3__JTAG_TMS 0x2052
821MX23_PAD_SSP1_SCK__JTAG_TRST 0x2062
822MX23_PAD_ROTARYA__SPDIF 0x2072
823MX23_PAD_ROTARYB__GPMI_CE3N 0x2082
824MX23_PAD_GPMI_D00__GPIO_0_0 0x0003
825MX23_PAD_GPMI_D01__GPIO_0_1 0x0013
826MX23_PAD_GPMI_D02__GPIO_0_2 0x0023
827MX23_PAD_GPMI_D03__GPIO_0_3 0x0033
828MX23_PAD_GPMI_D04__GPIO_0_4 0x0043
829MX23_PAD_GPMI_D05__GPIO_0_5 0x0053
830MX23_PAD_GPMI_D06__GPIO_0_6 0x0063
831MX23_PAD_GPMI_D07__GPIO_0_7 0x0073
832MX23_PAD_GPMI_D08__GPIO_0_8 0x0083
833MX23_PAD_GPMI_D09__GPIO_0_9 0x0093
834MX23_PAD_GPMI_D10__GPIO_0_10 0x00a3
835MX23_PAD_GPMI_D11__GPIO_0_11 0x00b3
836MX23_PAD_GPMI_D12__GPIO_0_12 0x00c3
837MX23_PAD_GPMI_D13__GPIO_0_13 0x00d3
838MX23_PAD_GPMI_D14__GPIO_0_14 0x00e3
839MX23_PAD_GPMI_D15__GPIO_0_15 0x00f3
840MX23_PAD_GPMI_CLE__GPIO_0_16 0x0103
841MX23_PAD_GPMI_ALE__GPIO_0_17 0x0113
842MX23_PAD_GPMI_CE2N__GPIO_0_18 0x0123
843MX23_PAD_GPMI_RDY0__GPIO_0_19 0x0133
844MX23_PAD_GPMI_RDY1__GPIO_0_20 0x0143
845MX23_PAD_GPMI_RDY2__GPIO_0_21 0x0153
846MX23_PAD_GPMI_RDY3__GPIO_0_22 0x0163
847MX23_PAD_GPMI_WPN__GPIO_0_23 0x0173
848MX23_PAD_GPMI_WRN__GPIO_0_24 0x0183
849MX23_PAD_GPMI_RDN__GPIO_0_25 0x0193
850MX23_PAD_AUART1_CTS__GPIO_0_26 0x01a3
851MX23_PAD_AUART1_RTS__GPIO_0_27 0x01b3
852MX23_PAD_AUART1_RX__GPIO_0_28 0x01c3
853MX23_PAD_AUART1_TX__GPIO_0_29 0x01d3
854MX23_PAD_I2C_SCL__GPIO_0_30 0x01e3
855MX23_PAD_I2C_SDA__GPIO_0_31 0x01f3
856MX23_PAD_LCD_D00__GPIO_1_0 0x1003
857MX23_PAD_LCD_D01__GPIO_1_1 0x1013
858MX23_PAD_LCD_D02__GPIO_1_2 0x1023
859MX23_PAD_LCD_D03__GPIO_1_3 0x1033
860MX23_PAD_LCD_D04__GPIO_1_4 0x1043
861MX23_PAD_LCD_D05__GPIO_1_5 0x1053
862MX23_PAD_LCD_D06__GPIO_1_6 0x1063
863MX23_PAD_LCD_D07__GPIO_1_7 0x1073
864MX23_PAD_LCD_D08__GPIO_1_8 0x1083
865MX23_PAD_LCD_D09__GPIO_1_9 0x1093
866MX23_PAD_LCD_D10__GPIO_1_10 0x10a3
867MX23_PAD_LCD_D11__GPIO_1_11 0x10b3
868MX23_PAD_LCD_D12__GPIO_1_12 0x10c3
869MX23_PAD_LCD_D13__GPIO_1_13 0x10d3
870MX23_PAD_LCD_D14__GPIO_1_14 0x10e3
871MX23_PAD_LCD_D15__GPIO_1_15 0x10f3
872MX23_PAD_LCD_D16__GPIO_1_16 0x1103
873MX23_PAD_LCD_D17__GPIO_1_17 0x1113
874MX23_PAD_LCD_RESET__GPIO_1_18 0x1123
875MX23_PAD_LCD_RS__GPIO_1_19 0x1133
876MX23_PAD_LCD_WR__GPIO_1_20 0x1143
877MX23_PAD_LCD_CS__GPIO_1_21 0x1153
878MX23_PAD_LCD_DOTCK__GPIO_1_22 0x1163
879MX23_PAD_LCD_ENABLE__GPIO_1_23 0x1173
880MX23_PAD_LCD_HSYNC__GPIO_1_24 0x1183
881MX23_PAD_LCD_VSYNC__GPIO_1_25 0x1193
882MX23_PAD_PWM0__GPIO_1_26 0x11a3
883MX23_PAD_PWM1__GPIO_1_27 0x11b3
884MX23_PAD_PWM2__GPIO_1_28 0x11c3
885MX23_PAD_PWM3__GPIO_1_29 0x11d3
886MX23_PAD_PWM4__GPIO_1_30 0x11e3
887MX23_PAD_SSP1_CMD__GPIO_2_0 0x2003
888MX23_PAD_SSP1_DETECT__GPIO_2_1 0x2013
889MX23_PAD_SSP1_DATA0__GPIO_2_2 0x2023
890MX23_PAD_SSP1_DATA1__GPIO_2_3 0x2033
891MX23_PAD_SSP1_DATA2__GPIO_2_4 0x2043
892MX23_PAD_SSP1_DATA3__GPIO_2_5 0x2053
893MX23_PAD_SSP1_SCK__GPIO_2_6 0x2063
894MX23_PAD_ROTARYA__GPIO_2_7 0x2073
895MX23_PAD_ROTARYB__GPIO_2_8 0x2083
896MX23_PAD_EMI_A00__GPIO_2_9 0x2093
897MX23_PAD_EMI_A01__GPIO_2_10 0x20a3
898MX23_PAD_EMI_A02__GPIO_2_11 0x20b3
899MX23_PAD_EMI_A03__GPIO_2_12 0x20c3
900MX23_PAD_EMI_A04__GPIO_2_13 0x20d3
901MX23_PAD_EMI_A05__GPIO_2_14 0x20e3
902MX23_PAD_EMI_A06__GPIO_2_15 0x20f3
903MX23_PAD_EMI_A07__GPIO_2_16 0x2103
904MX23_PAD_EMI_A08__GPIO_2_17 0x2113
905MX23_PAD_EMI_A09__GPIO_2_18 0x2123
906MX23_PAD_EMI_A10__GPIO_2_19 0x2133
907MX23_PAD_EMI_A11__GPIO_2_20 0x2143
908MX23_PAD_EMI_A12__GPIO_2_21 0x2153
909MX23_PAD_EMI_BA0__GPIO_2_22 0x2163
910MX23_PAD_EMI_BA1__GPIO_2_23 0x2173
911MX23_PAD_EMI_CASN__GPIO_2_24 0x2183
912MX23_PAD_EMI_CE0N__GPIO_2_25 0x2193
913MX23_PAD_EMI_CE1N__GPIO_2_26 0x21a3
914MX23_PAD_GPMI_CE1N__GPIO_2_27 0x21b3
915MX23_PAD_GPMI_CE0N__GPIO_2_28 0x21c3
916MX23_PAD_EMI_CKE__GPIO_2_29 0x21d3
917MX23_PAD_EMI_RASN__GPIO_2_30 0x21e3
918MX23_PAD_EMI_WEN__GPIO_2_31 0x21f3
diff --git a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra20-pinmux.txt b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra20-pinmux.txt
new file mode 100644
index 000000000000..c8e578263ce2
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra20-pinmux.txt
@@ -0,0 +1,132 @@
1NVIDIA Tegra20 pinmux controller
2
3Required properties:
4- compatible: "nvidia,tegra20-pinmux"
5- reg: Should contain the register physical address and length for each of
6 the tri-state, mux, pull-up/down, and pad control register sets.
7
8Please refer to pinctrl-bindings.txt in this directory for details of the
9common pinctrl bindings used by client devices, including the meaning of the
10phrase "pin configuration node".
11
12Tegra's pin configuration nodes act as a container for an abitrary number of
13subnodes. Each of these subnodes represents some desired configuration for a
14pin, a group, or a list of pins or groups. This configuration can include the
15mux function to select on those pin(s)/group(s), and various pin configuration
16parameters, such as pull-up, tristate, drive strength, etc.
17
18The name of each subnode is not important; all subnodes should be enumerated
19and processed purely based on their content.
20
21Each subnode only affects those parameters that are explicitly listed. In
22other words, a subnode that lists a mux function but no pin configuration
23parameters implies no information about any pin configuration parameters.
24Similarly, a pin subnode that describes a pullup parameter implies no
25information about e.g. the mux function or tristate parameter. For this
26reason, even seemingly boolean values are actually tristates in this binding:
27unspecified, off, or on. Unspecified is represented as an absent property,
28and off/on are represented as integer values 0 and 1.
29
30Required subnode-properties:
31- nvidia,pins : An array of strings. Each string contains the name of a pin or
32 group. Valid values for these names are listed below.
33
34Optional subnode-properties:
35- nvidia,function: A string containing the name of the function to mux to the
36 pin or group. Valid values for function names are listed below. See the Tegra
37 TRM to determine which are valid for each pin or group.
38- nvidia,pull: Integer, representing the pull-down/up to apply to the pin.
39 0: none, 1: down, 2: up.
40- nvidia,tristate: Integer.
41 0: drive, 1: tristate.
42- nvidia,high-speed-mode: Integer. Enable high speed mode the pins.
43 0: no, 1: yes.
44- nvidia,schmitt: Integer. Enables Schmitt Trigger on the input.
45 0: no, 1: yes.
46- nvidia,low-power-mode: Integer. Valid values 0-3. 0 is least power, 3 is
47 most power. Controls the drive power or current. See "Low Power Mode"
48 or "LPMD1" and "LPMD0" in the Tegra TRM.
49- nvidia,pull-down-strength: Integer. Controls drive strength. 0 is weakest.
50 The range of valid values depends on the pingroup. See "CAL_DRVDN" in the
51 Tegra TRM.
52- nvidia,pull-up-strength: Integer. Controls drive strength. 0 is weakest.
53 The range of valid values depends on the pingroup. See "CAL_DRVUP" in the
54 Tegra TRM.
55- nvidia,slew-rate-rising: Integer. Controls rising signal slew rate. 0 is
56 fastest. The range of valid values depends on the pingroup. See
57 "DRVDN_SLWR" in the Tegra TRM.
58- nvidia,slew-rate-falling: Integer. Controls falling signal slew rate. 0 is
59 fastest. The range of valid values depends on the pingroup. See
60 "DRVUP_SLWF" in the Tegra TRM.
61
62Note that many of these properties are only valid for certain specific pins
63or groups. See the Tegra TRM and various pinmux spreadsheets for complete
64details regarding which groups support which functionality. The Linux pinctrl
65driver may also be a useful reference, since it consolidates, disambiguates,
66and corrects data from all those sources.
67
68Valid values for pin and group names are:
69
70 mux groups:
71
72 These all support nvidia,function, nvidia,tristate, and many support
73 nvidia,pull.
74
75 ata, atb, atc, atd, ate, cdev1, cdev2, crtp, csus, dap1, dap2, dap3, dap4,
76 ddc, dta, dtb, dtc, dtd, dte, dtf, gma, gmb, gmc, gmd, gme, gpu, gpu7,
77 gpv, hdint, i2cp, irrx, irtx, kbca, kbcb, kbcc, kbcd, kbce, kbcf, lcsn,
78 ld0, ld1, ld2, ld3, ld4, ld5, ld6, ld7, ld8, ld9, ld10, ld11, ld12, ld13,
79 ld14, ld15, ld16, ld17, ldc, ldi, lhp0, lhp1, lhp2, lhs, lm0, lm1, lpp,
80 lpw0, lpw1, lpw2, lsc0, lsc1, lsck, lsda, lsdi, lspi, lvp0, lvp1, lvs,
81 owc, pmc, pta, rm, sdb, sdc, sdd, sdio1, slxa, slxc, slxd, slxk, spdi,
82 spdo, spia, spib, spic, spid, spie, spif, spig, spih, uaa, uab, uac, uad,
83 uca, ucb, uda.
84
85 tristate groups:
86
87 These only support nvidia,pull.
88
89 ck32, ddrc, pmca, pmcb, pmcc, pmcd, pmce, xm2c, xm2d, ls, lc, ld17_0,
90 ld19_18, ld21_20, ld23_22.
91
92 drive groups:
93
94 With some exceptions, these support nvidia,high-speed-mode,
95 nvidia,schmitt, nvidia,low-power-mode, nvidia,pull-down-strength,
96 nvidia,pull-up-strength, nvidia,slew_rate-rising, nvidia,slew_rate-falling.
97
98 drive_ao1, drive_ao2, drive_at1, drive_at2, drive_cdev1, drive_cdev2,
99 drive_csus, drive_dap1, drive_dap2, drive_dap3, drive_dap4, drive_dbg,
100 drive_lcd1, drive_lcd2, drive_sdmmc2, drive_sdmmc3, drive_spi, drive_uaa,
101 drive_uab, drive_uart2, drive_uart3, drive_vi1, drive_vi2, drive_xm2a,
102 drive_xm2c, drive_xm2d, drive_xm2clk, drive_sdio1, drive_crt, drive_ddc,
103 drive_gma, drive_gmb, drive_gmc, drive_gmd, drive_gme, drive_owr,
104 drive_uda.
105
106Example:
107
108 pinctrl@70000000 {
109 compatible = "nvidia,tegra20-pinmux";
110 reg = < 0x70000014 0x10 /* Tri-state registers */
111 0x70000080 0x20 /* Mux registers */
112 0x700000a0 0x14 /* Pull-up/down registers */
113 0x70000868 0xa8 >; /* Pad control registers */
114 };
115
116Example board file extract:
117
118 pinctrl@70000000 {
119 sdio4_default: sdio4_default {
120 atb {
121 nvidia,pins = "atb", "gma", "gme";
122 nvidia,function = "sdio4";
123 nvidia,pull = <0>;
124 nvidia,tristate = <0>;
125 };
126 };
127 };
128
129 sdhci@c8000600 {
130 pinctrl-names = "default";
131 pinctrl-0 = <&sdio4_default>;
132 };
diff --git a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra30-pinmux.txt b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra30-pinmux.txt
new file mode 100644
index 000000000000..c275b70349c1
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra30-pinmux.txt
@@ -0,0 +1,132 @@
1NVIDIA Tegra30 pinmux controller
2
3The Tegra30 pinctrl binding is very similar to the Tegra20 pinctrl binding,
4as described in nvidia,tegra20-pinmux.txt. In fact, this document assumes
5that binding as a baseline, and only documents the differences between the
6two bindings.
7
8Required properties:
9- compatible: "nvidia,tegra30-pinmux"
10- reg: Should contain the register physical address and length for each of
11 the pad control and mux registers.
12
13Tegra30 adds the following optional properties for pin configuration subnodes:
14- nvidia,enable-input: Integer. Enable the pin's input path. 0: no, 1: yes.
15- nvidia,open-drain: Integer. Enable open drain mode. 0: no, 1: yes.
16- nvidia,lock: Integer. Lock the pin configuration against further changes
17 until reset. 0: no, 1: yes.
18- nvidia,io-reset: Integer. Reset the IO path. 0: no, 1: yes.
19
20As with Tegra20, see the Tegra TRM for complete details regarding which groups
21support which functionality.
22
23Valid values for pin and group names are:
24
25 per-pin mux groups:
26
27 These all support nvidia,function, nvidia,tristate, nvidia,pull,
28 nvidia,enable-input, nvidia,lock. Some support nvidia,open-drain,
29 nvidia,io-reset.
30
31 clk_32k_out_pa0, uart3_cts_n_pa1, dap2_fs_pa2, dap2_sclk_pa3,
32 dap2_din_pa4, dap2_dout_pa5, sdmmc3_clk_pa6, sdmmc3_cmd_pa7, gmi_a17_pb0,
33 gmi_a18_pb1, lcd_pwr0_pb2, lcd_pclk_pb3, sdmmc3_dat3_pb4, sdmmc3_dat2_pb5,
34 sdmmc3_dat1_pb6, sdmmc3_dat0_pb7, uart3_rts_n_pc0, lcd_pwr1_pc1,
35 uart2_txd_pc2, uart2_rxd_pc3, gen1_i2c_scl_pc4, gen1_i2c_sda_pc5,
36 lcd_pwr2_pc6, gmi_wp_n_pc7, sdmmc3_dat5_pd0, sdmmc3_dat4_pd1, lcd_dc1_pd2,
37 sdmmc3_dat6_pd3, sdmmc3_dat7_pd4, vi_d1_pd5, vi_vsync_pd6, vi_hsync_pd7,
38 lcd_d0_pe0, lcd_d1_pe1, lcd_d2_pe2, lcd_d3_pe3, lcd_d4_pe4, lcd_d5_pe5,
39 lcd_d6_pe6, lcd_d7_pe7, lcd_d8_pf0, lcd_d9_pf1, lcd_d10_pf2, lcd_d11_pf3,
40 lcd_d12_pf4, lcd_d13_pf5, lcd_d14_pf6, lcd_d15_pf7, gmi_ad0_pg0,
41 gmi_ad1_pg1, gmi_ad2_pg2, gmi_ad3_pg3, gmi_ad4_pg4, gmi_ad5_pg5,
42 gmi_ad6_pg6, gmi_ad7_pg7, gmi_ad8_ph0, gmi_ad9_ph1, gmi_ad10_ph2,
43 gmi_ad11_ph3, gmi_ad12_ph4, gmi_ad13_ph5, gmi_ad14_ph6, gmi_ad15_ph7,
44 gmi_wr_n_pi0, gmi_oe_n_pi1, gmi_dqs_pi2, gmi_cs6_n_pi3, gmi_rst_n_pi4,
45 gmi_iordy_pi5, gmi_cs7_n_pi6, gmi_wait_pi7, gmi_cs0_n_pj0, lcd_de_pj1,
46 gmi_cs1_n_pj2, lcd_hsync_pj3, lcd_vsync_pj4, uart2_cts_n_pj5,
47 uart2_rts_n_pj6, gmi_a16_pj7, gmi_adv_n_pk0, gmi_clk_pk1, gmi_cs4_n_pk2,
48 gmi_cs2_n_pk3, gmi_cs3_n_pk4, spdif_out_pk5, spdif_in_pk6, gmi_a19_pk7,
49 vi_d2_pl0, vi_d3_pl1, vi_d4_pl2, vi_d5_pl3, vi_d6_pl4, vi_d7_pl5,
50 vi_d8_pl6, vi_d9_pl7, lcd_d16_pm0, lcd_d17_pm1, lcd_d18_pm2, lcd_d19_pm3,
51 lcd_d20_pm4, lcd_d21_pm5, lcd_d22_pm6, lcd_d23_pm7, dap1_fs_pn0,
52 dap1_din_pn1, dap1_dout_pn2, dap1_sclk_pn3, lcd_cs0_n_pn4, lcd_sdout_pn5,
53 lcd_dc0_pn6, hdmi_int_pn7, ulpi_data7_po0, ulpi_data0_po1, ulpi_data1_po2,
54 ulpi_data2_po3, ulpi_data3_po4, ulpi_data4_po5, ulpi_data5_po6,
55 ulpi_data6_po7, dap3_fs_pp0, dap3_din_pp1, dap3_dout_pp2, dap3_sclk_pp3,
56 dap4_fs_pp4, dap4_din_pp5, dap4_dout_pp6, dap4_sclk_pp7, kb_col0_pq0,
57 kb_col1_pq1, kb_col2_pq2, kb_col3_pq3, kb_col4_pq4, kb_col5_pq5,
58 kb_col6_pq6, kb_col7_pq7, kb_row0_pr0, kb_row1_pr1, kb_row2_pr2,
59 kb_row3_pr3, kb_row4_pr4, kb_row5_pr5, kb_row6_pr6, kb_row7_pr7,
60 kb_row8_ps0, kb_row9_ps1, kb_row10_ps2, kb_row11_ps3, kb_row12_ps4,
61 kb_row13_ps5, kb_row14_ps6, kb_row15_ps7, vi_pclk_pt0, vi_mclk_pt1,
62 vi_d10_pt2, vi_d11_pt3, vi_d0_pt4, gen2_i2c_scl_pt5, gen2_i2c_sda_pt6,
63 sdmmc4_cmd_pt7, pu0, pu1, pu2, pu3, pu4, pu5, pu6, jtag_rtck_pu7, pv0,
64 pv1, pv2, pv3, ddc_scl_pv4, ddc_sda_pv5, crt_hsync_pv6, crt_vsync_pv7,
65 lcd_cs1_n_pw0, lcd_m1_pw1, spi2_cs1_n_pw2, spi2_cs2_n_pw3, clk1_out_pw4,
66 clk2_out_pw5, uart3_txd_pw6, uart3_rxd_pw7, spi2_mosi_px0, spi2_miso_px1,
67 spi2_sck_px2, spi2_cs0_n_px3, spi1_mosi_px4, spi1_sck_px5, spi1_cs0_n_px6,
68 spi1_miso_px7, ulpi_clk_py0, ulpi_dir_py1, ulpi_nxt_py2, ulpi_stp_py3,
69 sdmmc1_dat3_py4, sdmmc1_dat2_py5, sdmmc1_dat1_py6, sdmmc1_dat0_py7,
70 sdmmc1_clk_pz0, sdmmc1_cmd_pz1, lcd_sdin_pz2, lcd_wr_n_pz3, lcd_sck_pz4,
71 sys_clk_req_pz5, pwr_i2c_scl_pz6, pwr_i2c_sda_pz7, sdmmc4_dat0_paa0,
72 sdmmc4_dat1_paa1, sdmmc4_dat2_paa2, sdmmc4_dat3_paa3, sdmmc4_dat4_paa4,
73 sdmmc4_dat5_paa5, sdmmc4_dat6_paa6, sdmmc4_dat7_paa7, pbb0,
74 cam_i2c_scl_pbb1, cam_i2c_sda_pbb2, pbb3, pbb4, pbb5, pbb6, pbb7,
75 cam_mclk_pcc0, pcc1, pcc2, sdmmc4_rst_n_pcc3, sdmmc4_clk_pcc4,
76 clk2_req_pcc5, pex_l2_rst_n_pcc6, pex_l2_clkreq_n_pcc7,
77 pex_l0_prsnt_n_pdd0, pex_l0_rst_n_pdd1, pex_l0_clkreq_n_pdd2,
78 pex_wake_n_pdd3, pex_l1_prsnt_n_pdd4, pex_l1_rst_n_pdd5,
79 pex_l1_clkreq_n_pdd6, pex_l2_prsnt_n_pdd7, clk3_out_pee0, clk3_req_pee1,
80 clk1_req_pee2, hdmi_cec_pee3, clk_32k_in, core_pwr_req, cpu_pwr_req, owr,
81 pwr_int_n.
82
83 drive groups:
84
85 These all support nvidia,pull-down-strength, nvidia,pull-up-strength,
86 nvidia,slew_rate-rising, nvidia,slew_rate-falling. Most but not all
87 support nvidia,high-speed-mode, nvidia,schmitt, nvidia,low-power-mode.
88
89 ao1, ao2, at1, at2, at3, at4, at5, cdev1, cdev2, cec, crt, csus, dap1,
90 dap2, dap3, dap4, dbg, ddc, dev3, gma, gmb, gmc, gmd, gme, gmf, gmg,
91 gmh, gpv, lcd1, lcd2, owr, sdio1, sdio2, sdio3, spi, uaa, uab, uart2,
92 uart3, uda, vi1.
93
94Example:
95
96 pinctrl@70000000 {
97 compatible = "nvidia,tegra30-pinmux";
98 reg = < 0x70000868 0xd0 /* Pad control registers */
99 0x70003000 0x3e0 >; /* Mux registers */
100 };
101
102Example board file extract:
103
104 pinctrl@70000000 {
105 sdmmc4_default: pinmux {
106 sdmmc4_clk_pcc4 {
107 nvidia,pins = "sdmmc4_clk_pcc4",
108 "sdmmc4_rst_n_pcc3";
109 nvidia,function = "sdmmc4";
110 nvidia,pull = <0>;
111 nvidia,tristate = <0>;
112 };
113 sdmmc4_dat0_paa0 {
114 nvidia,pins = "sdmmc4_dat0_paa0",
115 "sdmmc4_dat1_paa1",
116 "sdmmc4_dat2_paa2",
117 "sdmmc4_dat3_paa3",
118 "sdmmc4_dat4_paa4",
119 "sdmmc4_dat5_paa5",
120 "sdmmc4_dat6_paa6",
121 "sdmmc4_dat7_paa7";
122 nvidia,function = "sdmmc4";
123 nvidia,pull = <2>;
124 nvidia,tristate = <0>;
125 };
126 };
127 };
128
129 sdhci@78000400 {
130 pinctrl-names = "default";
131 pinctrl-0 = <&sdmmc4_default>;
132 };
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
new file mode 100644
index 000000000000..c95ea8278f87
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
@@ -0,0 +1,128 @@
1== Introduction ==
2
3Hardware modules that control pin multiplexing or configuration parameters
4such as pull-up/down, tri-state, drive-strength etc are designated as pin
5controllers. Each pin controller must be represented as a node in device tree,
6just like any other hardware module.
7
8Hardware modules whose signals are affected by pin configuration are
9designated client devices. Again, each client device must be represented as a
10node in device tree, just like any other hardware module.
11
12For a client device to operate correctly, certain pin controllers must
13set up certain specific pin configurations. Some client devices need a
14single static pin configuration, e.g. set up during initialization. Others
15need to reconfigure pins at run-time, for example to tri-state pins when the
16device is inactive. Hence, each client device can define a set of named
17states. The number and names of those states is defined by the client device's
18own binding.
19
20The common pinctrl bindings defined in this file provide an infrastructure
21for client device device tree nodes to map those state names to the pin
22configuration used by those states.
23
24Note that pin controllers themselves may also be client devices of themselves.
25For example, a pin controller may set up its own "active" state when the
26driver loads. This would allow representing a board's static pin configuration
27in a single place, rather than splitting it across multiple client device
28nodes. The decision to do this or not somewhat rests with the author of
29individual board device tree files, and any requirements imposed by the
30bindings for the individual client devices in use by that board, i.e. whether
31they require certain specific named states for dynamic pin configuration.
32
33== Pinctrl client devices ==
34
35For each client device individually, every pin state is assigned an integer
36ID. These numbers start at 0, and are contiguous. For each state ID, a unique
37property exists to define the pin configuration. Each state may also be
38assigned a name. When names are used, another property exists to map from
39those names to the integer IDs.
40
41Each client device's own binding determines the set of states the must be
42defined in its device tree node, and whether to define the set of state
43IDs that must be provided, or whether to define the set of state names that
44must be provided.
45
46Required properties:
47pinctrl-0: List of phandles, each pointing at a pin configuration
48 node. These referenced pin configuration nodes must be child
49 nodes of the pin controller that they configure. Multiple
50 entries may exist in this list so that multiple pin
51 controllers may be configured, or so that a state may be built
52 from multiple nodes for a single pin controller, each
53 contributing part of the overall configuration. See the next
54 section of this document for details of the format of these
55 pin configuration nodes.
56
57 In some cases, it may be useful to define a state, but for it
58 to be empty. This may be required when a common IP block is
59 used in an SoC either without a pin controller, or where the
60 pin controller does not affect the HW module in question. If
61 the binding for that IP block requires certain pin states to
62 exist, they must still be defined, but may be left empty.
63
64Optional properties:
65pinctrl-1: List of phandles, each pointing at a pin configuration
66 node within a pin controller.
67...
68pinctrl-n: List of phandles, each pointing at a pin configuration
69 node within a pin controller.
70pinctrl-names: The list of names to assign states. List entry 0 defines the
71 name for integer state ID 0, list entry 1 for state ID 1, and
72 so on.
73
74For example:
75
76 /* For a client device requiring named states */
77 device {
78 pinctrl-names = "active", "idle";
79 pinctrl-0 = <&state_0_node_a>;
80 pinctrl-1 = <&state_1_node_a &state_1_node_b>;
81 };
82
83 /* For the same device if using state IDs */
84 device {
85 pinctrl-0 = <&state_0_node_a>;
86 pinctrl-1 = <&state_1_node_a &state_1_node_b>;
87 };
88
89 /*
90 * For an IP block whose binding supports pin configuration,
91 * but in use on an SoC that doesn't have any pin control hardware
92 */
93 device {
94 pinctrl-names = "active", "idle";
95 pinctrl-0 = <>;
96 pinctrl-1 = <>;
97 };
98
99== Pin controller devices ==
100
101Pin controller devices should contain the pin configuration nodes that client
102devices reference.
103
104For example:
105
106 pincontroller {
107 ... /* Standard DT properties for the device itself elided */
108
109 state_0_node_a {
110 ...
111 };
112 state_1_node_a {
113 ...
114 };
115 state_1_node_b {
116 ...
117 };
118 }
119
120The contents of each of those pin configuration child nodes is defined
121entirely by the binding for the individual pin controller device. There
122exists no common standard for this content.
123
124The pin configuration nodes need not be direct children of the pin controller
125device; they may be grandchildren, for example. Whether this is legal, and
126whether there is any interaction between the child and intermediate parent
127nodes, is again defined entirely by the binding for the individual pin
128controller device.
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl_spear.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl_spear.txt
new file mode 100644
index 000000000000..b4480d5c3aca
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/pinctrl_spear.txt
@@ -0,0 +1,155 @@
1ST Microelectronics, SPEAr pinmux controller
2
3Required properties:
4- compatible : "st,spear300-pinmux"
5 : "st,spear310-pinmux"
6 : "st,spear320-pinmux"
7 : "st,spear1310-pinmux"
8 : "st,spear1340-pinmux"
9- reg : Address range of the pinctrl registers
10- st,pinmux-mode: Mandatory for SPEAr300 and SPEAr320 and invalid for others.
11 - Its values for SPEAr300:
12 - NAND_MODE : <0>
13 - NOR_MODE : <1>
14 - PHOTO_FRAME_MODE : <2>
15 - LEND_IP_PHONE_MODE : <3>
16 - HEND_IP_PHONE_MODE : <4>
17 - LEND_WIFI_PHONE_MODE : <5>
18 - HEND_WIFI_PHONE_MODE : <6>
19 - ATA_PABX_WI2S_MODE : <7>
20 - ATA_PABX_I2S_MODE : <8>
21 - CAML_LCDW_MODE : <9>
22 - CAMU_LCD_MODE : <10>
23 - CAMU_WLCD_MODE : <11>
24 - CAML_LCD_MODE : <12>
25 - Its values for SPEAr320:
26 - AUTO_NET_SMII_MODE : <0>
27 - AUTO_NET_MII_MODE : <1>
28 - AUTO_EXP_MODE : <2>
29 - SMALL_PRINTERS_MODE : <3>
30 - EXTENDED_MODE : <4>
31
32Please refer to pinctrl-bindings.txt in this directory for details of the common
33pinctrl bindings used by client devices.
34
35SPEAr's pinmux nodes act as a container for an abitrary number of subnodes. Each
36of these subnodes represents muxing for a pin, a group, or a list of pins or
37groups.
38
39The name of each subnode is not important; all subnodes should be enumerated
40and processed purely based on their content.
41
42Required subnode-properties:
43- st,pins : An array of strings. Each string contains the name of a pin or
44 group.
45- st,function: A string containing the name of the function to mux to the pin or
46 group. See the SPEAr's TRM to determine which are valid for each pin or group.
47
48 Valid values for group and function names can be found from looking at the
49 group and function arrays in driver files:
50 drivers/pinctrl/spear/pinctrl-spear3*0.c
51
52Valid values for group names are:
53For All SPEAr3xx machines:
54 "firda_grp", "i2c0_grp", "ssp_cs_grp", "ssp0_grp", "mii0_grp",
55 "gpio0_pin0_grp", "gpio0_pin1_grp", "gpio0_pin2_grp", "gpio0_pin3_grp",
56 "gpio0_pin4_grp", "gpio0_pin5_grp", "uart0_ext_grp", "uart0_grp",
57 "timer_0_1_grp", timer_0_1_pins, "timer_2_3_grp"
58
59For SPEAr300 machines:
60 "fsmc_2chips_grp", "fsmc_4chips_grp", "clcd_lcdmode_grp",
61 "clcd_pfmode_grp", "tdm_grp", "i2c_clk_grp_grp", "caml_grp", "camu_grp",
62 "dac_grp", "i2s_grp", "sdhci_4bit_grp", "sdhci_8bit_grp",
63 "gpio1_0_to_3_grp", "gpio1_4_to_7_grp"
64
65For SPEAr310 machines:
66 "emi_cs_0_to_5_grp", "uart1_grp", "uart2_grp", "uart3_grp", "uart4_grp",
67 "uart5_grp", "fsmc_grp", "rs485_0_grp", "rs485_1_grp", "tdm_grp"
68
69For SPEAr320 machines:
70 "clcd_grp", "emi_grp", "fsmc_8bit_grp", "fsmc_16bit_grp", "spp_grp",
71 "sdhci_led_grp", "sdhci_cd_12_grp", "sdhci_cd_51_grp", "i2s_grp",
72 "uart1_grp", "uart1_modem_2_to_7_grp", "uart1_modem_31_to_36_grp",
73 "uart1_modem_34_to_45_grp", "uart1_modem_80_to_85_grp", "uart2_grp",
74 "uart3_8_9_grp", "uart3_15_16_grp", "uart3_41_42_grp",
75 "uart3_52_53_grp", "uart3_73_74_grp", "uart3_94_95_grp",
76 "uart3_98_99_grp", "uart4_6_7_grp", "uart4_13_14_grp",
77 "uart4_39_40_grp", "uart4_71_72_grp", "uart4_92_93_grp",
78 "uart4_100_101_grp", "uart5_4_5_grp", "uart5_37_38_grp",
79 "uart5_69_70_grp", "uart5_90_91_grp", "uart6_2_3_grp",
80 "uart6_88_89_grp", "rs485_grp", "touchscreen_grp", "can0_grp",
81 "can1_grp", "pwm0_1_pin_8_9_grp", "pwm0_1_pin_14_15_grp",
82 "pwm0_1_pin_30_31_grp", "pwm0_1_pin_37_38_grp", "pwm0_1_pin_42_43_grp",
83 "pwm0_1_pin_59_60_grp", "pwm0_1_pin_88_89_grp", "pwm2_pin_7_grp",
84 "pwm2_pin_13_grp", "pwm2_pin_29_grp", "pwm2_pin_34_grp",
85 "pwm2_pin_41_grp", "pwm2_pin_58_grp", "pwm2_pin_87_grp",
86 "pwm3_pin_6_grp", "pwm3_pin_12_grp", "pwm3_pin_28_grp",
87 "pwm3_pin_40_grp", "pwm3_pin_57_grp", "pwm3_pin_86_grp",
88 "ssp1_17_20_grp", "ssp1_36_39_grp", "ssp1_48_51_grp", "ssp1_65_68_grp",
89 "ssp1_94_97_grp", "ssp2_13_16_grp", "ssp2_32_35_grp", "ssp2_44_47_grp",
90 "ssp2_61_64_grp", "ssp2_90_93_grp", "mii2_grp", "smii0_1_grp",
91 "rmii0_1_grp", "i2c1_8_9_grp", "i2c1_98_99_grp", "i2c2_0_1_grp",
92 "i2c2_2_3_grp", "i2c2_19_20_grp", "i2c2_75_76_grp", "i2c2_96_97_grp"
93
94For SPEAr1310 machines:
95 "i2c0_grp", "ssp0_grp", "ssp0_cs0_grp", "ssp0_cs1_2_grp", "i2s0_grp",
96 "i2s1_grp", "clcd_grp", "clcd_high_res_grp", "arm_gpio_grp",
97 "smi_2_chips_grp", "smi_4_chips_grp", "gmii_grp", "rgmii_grp",
98 "smii_0_1_2_grp", "ras_mii_txclk_grp", "nand_8bit_grp",
99 "nand_16bit_grp", "nand_4_chips_grp", "keyboard_6x6_grp",
100 "keyboard_rowcol6_8_grp", "uart0_grp", "uart0_modem_grp",
101 "gpt0_tmr0_grp", "gpt0_tmr1_grp", "gpt1_tmr0_grp", "gpt1_tmr1_grp",
102 "sdhci_grp", "cf_grp", "xd_grp", "touch_xy_grp",
103 "uart1_disable_i2c_grp", "uart1_disable_sd_grp", "uart2_3_grp",
104 "uart4_grp", "uart5_grp", "rs485_0_1_tdm_0_1_grp", "i2c_1_2_grp",
105 "i2c3_dis_smi_clcd_grp", "i2c3_dis_sd_i2s0_grp", "i2c_4_5_dis_smi_grp",
106 "i2c4_dis_sd_grp", "i2c5_dis_sd_grp", "i2c_6_7_dis_kbd_grp",
107 "i2c6_dis_sd_grp", "i2c7_dis_sd_grp", "can0_dis_nor_grp",
108 "can0_dis_sd_grp", "can1_dis_sd_grp", "can1_dis_kbd_grp", "pcie0_grp",
109 "pcie1_grp", "pcie2_grp", "sata0_grp", "sata1_grp", "sata2_grp",
110 "ssp1_dis_kbd_grp", "ssp1_dis_sd_grp", "gpt64_grp"
111
112For SPEAr1340 machines:
113 "pads_as_gpio_grp", "fsmc_8bit_grp", "fsmc_16bit_grp", "fsmc_pnor_grp",
114 "keyboard_row_col_grp", "keyboard_col5_grp", "spdif_in_grp",
115 "spdif_out_grp", "gpt_0_1_grp", "pwm0_grp", "pwm1_grp", "pwm2_grp",
116 "pwm3_grp", "vip_mux_grp", "vip_mux_cam0_grp", "vip_mux_cam1_grp",
117 "vip_mux_cam2_grp", "vip_mux_cam3_grp", "cam0_grp", "cam1_grp",
118 "cam2_grp", "cam3_grp", "smi_grp", "ssp0_grp", "ssp0_cs1_grp",
119 "ssp0_cs2_grp", "ssp0_cs3_grp", "uart0_grp", "uart0_enh_grp",
120 "uart1_grp", "i2s_in_grp", "i2s_out_grp", "gmii_grp", "rgmii_grp",
121 "rmii_grp", "sgmii_grp", "i2c0_grp", "i2c1_grp", "cec0_grp", "cec1_grp",
122 "sdhci_grp", "cf_grp", "xd_grp", "clcd_grp", "arm_trace_grp",
123 "miphy_dbg_grp", "pcie_grp", "sata_grp"
124
125Valid values for function names are:
126For All SPEAr3xx machines:
127 "firda", "i2c0", "ssp_cs", "ssp0", "mii0", "gpio0", "uart0_ext",
128 "uart0", "timer_0_1", "timer_2_3"
129
130For SPEAr300 machines:
131 "fsmc", "clcd", "tdm", "i2c1", "cam", "dac", "i2s", "sdhci", "gpio1"
132
133For SPEAr310 machines:
134 "emi", "uart1", "uart2", "uart3", "uart4", "uart5", "fsmc", "rs485_0",
135 "rs485_1", "tdm"
136
137For SPEAr320 machines:
138 "clcd", "emi", "fsmc", "spp", "sdhci", "i2s", "uart1", "uart1_modem",
139 "uart2", "uart3", "uart4", "uart5", "uart6", "rs485", "touchscreen",
140 "can0", "can1", "pwm0_1", "pwm2", "pwm3", "ssp1", "ssp2", "mii2",
141 "mii0_1", "i2c1", "i2c2"
142
143
144For SPEAr1310 machines:
145 "i2c0", "ssp0", "i2s0", "i2s1", "clcd", "arm_gpio", "smi", "gmii",
146 "rgmii", "smii_0_1_2", "ras_mii_txclk", "nand", "keyboard", "uart0",
147 "gpt0", "gpt1", "sdhci", "cf", "xd", "touchscreen", "uart1", "uart2_3",
148 "uart4", "uart5", "rs485_0_1_tdm_0_1", "i2c_1_2", "i2c3_i2s1",
149 "i2c_4_5", "i2c_6_7", "can0", "can1", "pci", "sata", "ssp1", "gpt64"
150
151For SPEAr1340 machines:
152 "pads_as_gpio", "fsmc", "keyboard", "spdif_in", "spdif_out", "gpt_0_1",
153 "pwm", "vip", "cam0", "cam1", "cam2", "cam3", "smi", "ssp0", "uart0",
154 "uart1", "i2s", "gmac", "i2c0", "i2c1", "cec0", "cec1", "sdhci", "cf",
155 "xd", "clcd", "arm_trace", "miphy_dbg", "pcie", "sata"
diff --git a/Documentation/devicetree/bindings/pinmux/pinmux_nvidia.txt b/Documentation/devicetree/bindings/pinmux/pinmux_nvidia.txt
deleted file mode 100644
index 36f82dbdd14d..000000000000
--- a/Documentation/devicetree/bindings/pinmux/pinmux_nvidia.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1NVIDIA Tegra 2 pinmux controller
2
3Required properties:
4- compatible : "nvidia,tegra20-pinmux"
5
diff --git a/Documentation/devicetree/bindings/regulator/fixed-regulator.txt b/Documentation/devicetree/bindings/regulator/fixed-regulator.txt
index 9cf57fd042d2..2f5b6b1ba15f 100644
--- a/Documentation/devicetree/bindings/regulator/fixed-regulator.txt
+++ b/Documentation/devicetree/bindings/regulator/fixed-regulator.txt
@@ -8,6 +8,8 @@ Optional properties:
8- startup-delay-us: startup time in microseconds 8- startup-delay-us: startup time in microseconds
9- enable-active-high: Polarity of GPIO is Active high 9- enable-active-high: Polarity of GPIO is Active high
10If this property is missing, the default assumed is Active low. 10If this property is missing, the default assumed is Active low.
11- gpio-open-drain: GPIO is open drain type.
12 If this property is missing then default assumption is false.
11 13
12Any property defined as part of the core regulator 14Any property defined as part of the core regulator
13binding, defined in regulator.txt, can also be used. 15binding, defined in regulator.txt, can also be used.
@@ -25,5 +27,6 @@ Example:
25 gpio = <&gpio1 16 0>; 27 gpio = <&gpio1 16 0>;
26 startup-delay-us = <70000>; 28 startup-delay-us = <70000>;
27 enable-active-high; 29 enable-active-high;
28 regulator-boot-on 30 regulator-boot-on;
31 gpio-open-drain;
29 }; 32 };
diff --git a/Documentation/devicetree/bindings/regulator/tps62360-regulator.txt b/Documentation/devicetree/bindings/regulator/tps62360-regulator.txt
new file mode 100644
index 000000000000..c8ca6b8f6582
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/tps62360-regulator.txt
@@ -0,0 +1,44 @@
1TPS62360 Voltage regulators
2
3Required properties:
4- compatible: Must be one of the following.
5 "ti,tps62360"
6 "ti,tps62361",
7 "ti,tps62362",
8 "ti,tps62363",
9- reg: I2C slave address
10
11Optional properties:
12- ti,enable-vout-discharge: Enable output discharge. This is boolean value.
13- ti,enable-pull-down: Enable pull down. This is boolean value.
14- ti,vsel0-gpio: GPIO for controlling VSEL0 line.
15 If this property is missing, then assume that there is no GPIO
16 for vsel0 control.
17- ti,vsel1-gpio: Gpio for controlling VSEL1 line.
18 If this property is missing, then assume that there is no GPIO
19 for vsel1 control.
20- ti,vsel0-state-high: Inital state of vsel0 input is high.
21 If this property is missing, then assume the state as low (0).
22- ti,vsel1-state-high: Inital state of vsel1 input is high.
23 If this property is missing, then assume the state as low (0).
24
25Any property defined as part of the core regulator binding, defined in
26regulator.txt, can also be used.
27
28Example:
29
30 abc: tps62360 {
31 compatible = "ti,tps62361";
32 reg = <0x60>;
33 regulator-name = "tps62361-vout";
34 regulator-min-microvolt = <500000>;
35 regulator-max-microvolt = <1500000>;
36 regulator-boot-on
37 ti,vsel0-gpio = <&gpio1 16 0>;
38 ti,vsel1-gpio = <&gpio1 17 0>;
39 ti,vsel0-state-high;
40 ti,vsel1-state-high;
41 ti,enable-pull-down;
42 ti,enable-force-pwm;
43 ti,enable-vout-discharge;
44 };
diff --git a/Documentation/devicetree/bindings/regulator/tps6586x.txt b/Documentation/devicetree/bindings/regulator/tps6586x.txt
new file mode 100644
index 000000000000..0fcabaa3baa3
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/tps6586x.txt
@@ -0,0 +1,97 @@
1TPS6586x family of regulators
2
3Required properties:
4- compatible: "ti,tps6586x"
5- reg: I2C slave address
6- interrupts: the interrupt outputs of the controller
7- #gpio-cells: number of cells to describe a GPIO
8- gpio-controller: mark the device as a GPIO controller
9- regulators: list of regulators provided by this controller, must be named
10 after their hardware counterparts: sm[0-2], ldo[0-9] and ldo_rtc
11
12Each regulator is defined using the standard binding for regulators.
13
14Example:
15
16 pmu: tps6586x@34 {
17 compatible = "ti,tps6586x";
18 reg = <0x34>;
19 interrupts = <0 88 0x4>;
20
21 #gpio-cells = <2>;
22 gpio-controller;
23
24 regulators {
25 sm0_reg: sm0 {
26 regulator-min-microvolt = < 725000>;
27 regulator-max-microvolt = <1500000>;
28 regulator-boot-on;
29 regulator-always-on;
30 };
31
32 sm1_reg: sm1 {
33 regulator-min-microvolt = < 725000>;
34 regulator-max-microvolt = <1500000>;
35 regulator-boot-on;
36 regulator-always-on;
37 };
38
39 sm2_reg: sm2 {
40 regulator-min-microvolt = <3000000>;
41 regulator-max-microvolt = <4550000>;
42 regulator-boot-on;
43 regulator-always-on;
44 };
45
46 ldo0_reg: ldo0 {
47 regulator-name = "PCIE CLK";
48 regulator-min-microvolt = <3300000>;
49 regulator-max-microvolt = <3300000>;
50 };
51
52 ldo1_reg: ldo1 {
53 regulator-min-microvolt = < 725000>;
54 regulator-max-microvolt = <1500000>;
55 };
56
57 ldo2_reg: ldo2 {
58 regulator-min-microvolt = < 725000>;
59 regulator-max-microvolt = <1500000>;
60 };
61
62 ldo3_reg: ldo3 {
63 regulator-min-microvolt = <1250000>;
64 regulator-max-microvolt = <3300000>;
65 };
66
67 ldo4_reg: ldo4 {
68 regulator-min-microvolt = <1700000>;
69 regulator-max-microvolt = <2475000>;
70 };
71
72 ldo5_reg: ldo5 {
73 regulator-min-microvolt = <1250000>;
74 regulator-max-microvolt = <3300000>;
75 };
76
77 ldo6_reg: ldo6 {
78 regulator-min-microvolt = <1250000>;
79 regulator-max-microvolt = <3300000>;
80 };
81
82 ldo7_reg: ldo7 {
83 regulator-min-microvolt = <1250000>;
84 regulator-max-microvolt = <3300000>;
85 };
86
87 ldo8_reg: ldo8 {
88 regulator-min-microvolt = <1250000>;
89 regulator-max-microvolt = <3300000>;
90 };
91
92 ldo9_reg: ldo9 {
93 regulator-min-microvolt = <1250000>;
94 regulator-max-microvolt = <3300000>;
95 };
96 };
97 };
diff --git a/Documentation/devicetree/bindings/rtc/lpc32xx-rtc.txt b/Documentation/devicetree/bindings/rtc/lpc32xx-rtc.txt
new file mode 100644
index 000000000000..a87a1e9bc060
--- /dev/null
+++ b/Documentation/devicetree/bindings/rtc/lpc32xx-rtc.txt
@@ -0,0 +1,15 @@
1* NXP LPC32xx SoC Real Time Clock controller
2
3Required properties:
4- compatible: must be "nxp,lpc3220-rtc"
5- reg: physical base address of the controller and length of memory mapped
6 region.
7- interrupts: The RTC interrupt
8
9Example:
10
11 rtc@40024000 {
12 compatible = "nxp,lpc3220-rtc";
13 reg = <0x40024000 0x1000>;
14 interrupts = <52 0>;
15 };
diff --git a/Documentation/devicetree/bindings/rtc/spear-rtc.txt b/Documentation/devicetree/bindings/rtc/spear-rtc.txt
new file mode 100644
index 000000000000..ca67ac62108e
--- /dev/null
+++ b/Documentation/devicetree/bindings/rtc/spear-rtc.txt
@@ -0,0 +1,17 @@
1* SPEAr RTC
2
3Required properties:
4- compatible : "st,spear600-rtc"
5- reg : Address range of the rtc registers
6- interrupt-parent: Should be the phandle for the interrupt controller
7 that services interrupts for this device
8- interrupt: Should contain the rtc interrupt number
9
10Example:
11
12 rtc@fc000000 {
13 compatible = "st,spear600-rtc";
14 reg = <0xfc000000 0x1000>;
15 interrupt-parent = <&vic1>;
16 interrupts = <12>;
17 };
diff --git a/Documentation/devicetree/bindings/sound/imx-audio-sgtl5000.txt b/Documentation/devicetree/bindings/sound/imx-audio-sgtl5000.txt
new file mode 100644
index 000000000000..e4acdd891e49
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/imx-audio-sgtl5000.txt
@@ -0,0 +1,49 @@
1Freescale i.MX audio complex with SGTL5000 codec
2
3Required properties:
4- compatible : "fsl,imx-audio-sgtl5000"
5- model : The user-visible name of this sound complex
6- ssi-controller : The phandle of the i.MX SSI controller
7- audio-codec : The phandle of the SGTL5000 audio codec
8- audio-routing : A list of the connections between audio components.
9 Each entry is a pair of strings, the first being the connection's sink,
10 the second being the connection's source. Valid names could be power
11 supplies, SGTL5000 pins, and the jacks on the board:
12
13 Power supplies:
14 * Mic Bias
15
16 SGTL5000 pins:
17 * MIC_IN
18 * LINE_IN
19 * HP_OUT
20 * LINE_OUT
21
22 Board connectors:
23 * Mic Jack
24 * Line In Jack
25 * Headphone Jack
26 * Line Out Jack
27 * Ext Spk
28
29- mux-int-port : The internal port of the i.MX audio muxer (AUDMUX)
30- mux-ext-port : The external port of the i.MX audio muxer
31
32Note: The AUDMUX port numbering should start at 1, which is consistent with
33hardware manual.
34
35Example:
36
37sound {
38 compatible = "fsl,imx51-babbage-sgtl5000",
39 "fsl,imx-audio-sgtl5000";
40 model = "imx51-babbage-sgtl5000";
41 ssi-controller = <&ssi1>;
42 audio-codec = <&sgtl5000>;
43 audio-routing =
44 "MIC_IN", "Mic Jack",
45 "Mic Jack", "Mic Bias",
46 "Headphone Jack", "HP_OUT";
47 mux-int-port = <1>;
48 mux-ext-port = <3>;
49};
diff --git a/Documentation/devicetree/bindings/sound/mxs-audio-sgtl5000.txt b/Documentation/devicetree/bindings/sound/mxs-audio-sgtl5000.txt
new file mode 100644
index 000000000000..601c518eddaa
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/mxs-audio-sgtl5000.txt
@@ -0,0 +1,17 @@
1* Freescale MXS audio complex with SGTL5000 codec
2
3Required properties:
4- compatible: "fsl,mxs-audio-sgtl5000"
5- model: The user-visible name of this sound complex
6- saif-controllers: The phandle list of the MXS SAIF controller
7- audio-codec: The phandle of the SGTL5000 audio codec
8
9Example:
10
11sound {
12 compatible = "fsl,imx28-evk-sgtl5000",
13 "fsl,mxs-audio-sgtl5000";
14 model = "imx28-evk-sgtl5000";
15 saif-controllers = <&saif0 &saif1>;
16 audio-codec = <&sgtl5000>;
17};
diff --git a/Documentation/devicetree/bindings/sound/mxs-saif.txt b/Documentation/devicetree/bindings/sound/mxs-saif.txt
new file mode 100644
index 000000000000..c37ba6143d9b
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/mxs-saif.txt
@@ -0,0 +1,36 @@
1* Freescale MXS Serial Audio Interface (SAIF)
2
3Required properties:
4- compatible: Should be "fsl,<chip>-saif"
5- reg: Should contain registers location and length
6- interrupts: Should contain ERROR and DMA interrupts
7- fsl,saif-dma-channel: APBX DMA channel for the SAIF
8
9Optional properties:
10- fsl,saif-master: phandle to the master SAIF. It's only required for
11 the slave SAIF.
12
13Note: Each SAIF controller should have an alias correctly numbered
14in "aliases" node.
15
16Example:
17
18aliases {
19 saif0 = &saif0;
20 saif1 = &saif1;
21};
22
23saif0: saif@80042000 {
24 compatible = "fsl,imx28-saif";
25 reg = <0x80042000 2000>;
26 interrupts = <59 80>;
27 fsl,saif-dma-channel = <4>;
28};
29
30saif1: saif@80046000 {
31 compatible = "fsl,imx28-saif";
32 reg = <0x80046000 2000>;
33 interrupts = <58 81>;
34 fsl,saif-dma-channel = <5>;
35 fsl,saif-master = <&saif0>;
36};
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt
new file mode 100644
index 000000000000..1ac7b1642186
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt
@@ -0,0 +1,32 @@
1NVIDIA Tegra30 AHUB (Audio Hub)
2
3Required properties:
4- compatible : "nvidia,tegra30-ahub"
5- reg : Should contain the register physical address and length for each of
6 the AHUB's APBIF registers and the AHUB's own registers.
7- interrupts : Should contain AHUB interrupt
8- nvidia,dma-request-selector : The Tegra DMA controller's phandle and
9 request selector for the first APBIF channel.
10- ranges : The bus address mapping for the configlink register bus.
11 Can be empty since the mapping is 1:1.
12- #address-cells : For the configlink bus. Should be <1>;
13- #size-cells : For the configlink bus. Should be <1>.
14
15AHUB client modules need to specify the IDs of their CIFs (Client InterFaces).
16For RX CIFs, the numbers indicate the register number within AHUB routing
17register space (APBIF 0..3 RX, I2S 0..5 RX, DAM 0..2 RX 0..1, SPDIF RX 0..1).
18For TX CIFs, the numbers indicate the bit position within the AHUB routing
19registers (APBIF 0..3 TX, I2S 0..5 TX, DAM 0..2 TX, SPDIF TX 0..1).
20
21Example:
22
23ahub@70080000 {
24 compatible = "nvidia,tegra30-ahub";
25 reg = <0x70080000 0x200 0x70080200 0x100>;
26 interrupts = < 0 103 0x04 >;
27 nvidia,dma-request-selector = <&apbdma 1>;
28
29 ranges;
30 #address-cells = <1>;
31 #size-cells = <1>;
32};
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt
new file mode 100644
index 000000000000..dfa6c037124a
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt
@@ -0,0 +1,15 @@
1NVIDIA Tegra30 I2S controller
2
3Required properties:
4- compatible : "nvidia,tegra30-i2s"
5- reg : Should contain I2S registers location and length
6- nvidia,ahub-cif-ids : The list of AHUB CIF IDs for this port, rx (playback)
7 first, tx (capture) second. See nvidia,tegra30-ahub.txt for values.
8
9Example:
10
11i2s@70002800 {
12 compatible = "nvidia,tegra30-i2s";
13 reg = <0x70080300 0x100>;
14 nvidia,ahub-cif-ids = <4 4>;
15};
diff --git a/Documentation/devicetree/bindings/sound/omap-dmic.txt b/Documentation/devicetree/bindings/sound/omap-dmic.txt
new file mode 100644
index 000000000000..fd8105f18978
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/omap-dmic.txt
@@ -0,0 +1,21 @@
1* Texas Instruments OMAP4+ Digital Microphone Module
2
3Required properties:
4- compatible: "ti,omap4-dmic"
5- reg: Register location and size as an array:
6 <MPU access base address, size>,
7 <L3 interconnect address, size>;
8- interrupts: Interrupt number for DMIC
9- interrupt-parent: The parent interrupt controller
10- ti,hwmods: Name of the hwmod associated with OMAP dmic IP
11
12Example:
13
14dmic: dmic@4012e000 {
15 compatible = "ti,omap4-dmic";
16 reg = <0x4012e000 0x7f>, /* MPU private access */
17 <0x4902e000 0x7f>; /* L3 Interconnect */
18 interrupts = <0 114 0x4>;
19 interrupt-parent = <&gic>;
20 ti,hwmods = "dmic";
21};
diff --git a/Documentation/devicetree/bindings/sound/omap-mcpdm.txt b/Documentation/devicetree/bindings/sound/omap-mcpdm.txt
new file mode 100644
index 000000000000..0741dff048dd
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/omap-mcpdm.txt
@@ -0,0 +1,21 @@
1* Texas Instruments OMAP4+ McPDM
2
3Required properties:
4- compatible: "ti,omap4-mcpdm"
5- reg: Register location and size as an array:
6 <MPU access base address, size>,
7 <L3 interconnect address, size>;
8- interrupts: Interrupt number for McPDM
9- interrupt-parent: The parent interrupt controller
10- ti,hwmods: Name of the hwmod associated to the McPDM
11
12Example:
13
14mcpdm: mcpdm@40132000 {
15 compatible = "ti,omap4-mcpdm";
16 reg = <0x40132000 0x7f>, /* MPU private access */
17 <0x49032000 0x7f>; /* L3 Interconnect */
18 interrupts = <0 112 0x4>;
19 interrupt-parent = <&gic>;
20 ti,hwmods = "mcpdm";
21};
diff --git a/Documentation/devicetree/bindings/sound/tegra-audio-trimslice.txt b/Documentation/devicetree/bindings/sound/tegra-audio-trimslice.txt
new file mode 100644
index 000000000000..04b14cfb1f16
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/tegra-audio-trimslice.txt
@@ -0,0 +1,14 @@
1NVIDIA Tegra audio complex for TrimSlice
2
3Required properties:
4- compatible : "nvidia,tegra-audio-trimslice"
5- nvidia,i2s-controller : The phandle of the Tegra I2S1 controller
6- nvidia,audio-codec : The phandle of the WM8903 audio codec
7
8Example:
9
10sound {
11 compatible = "nvidia,tegra-audio-trimslice";
12 nvidia,i2s-controller = <&tegra_i2s1>;
13 nvidia,audio-codec = <&codec>;
14};
diff --git a/Documentation/devicetree/bindings/sound/tegra-audio-wm8753.txt b/Documentation/devicetree/bindings/sound/tegra-audio-wm8753.txt
new file mode 100644
index 000000000000..c4dd39ce6165
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/tegra-audio-wm8753.txt
@@ -0,0 +1,54 @@
1NVIDIA Tegra audio complex
2
3Required properties:
4- compatible : "nvidia,tegra-audio-wm8753"
5- nvidia,model : The user-visible name of this sound complex.
6- nvidia,audio-routing : A list of the connections between audio components.
7 Each entry is a pair of strings, the first being the connection's sink,
8 the second being the connection's source. Valid names for sources and
9 sinks are the WM8753's pins, and the jacks on the board:
10
11 WM8753 pins:
12
13 * LOUT1
14 * LOUT2
15 * ROUT1
16 * ROUT2
17 * MONO1
18 * MONO2
19 * OUT3
20 * OUT4
21 * LINE1
22 * LINE2
23 * RXP
24 * RXN
25 * ACIN
26 * ACOP
27 * MIC1N
28 * MIC1
29 * MIC2N
30 * MIC2
31 * Mic Bias
32
33 Board connectors:
34
35 * Headphone Jack
36 * Mic Jack
37
38- nvidia,i2s-controller : The phandle of the Tegra I2S1 controller
39- nvidia,audio-codec : The phandle of the WM8753 audio codec
40Example:
41
42sound {
43 compatible = "nvidia,tegra-audio-wm8753-whistler",
44 "nvidia,tegra-audio-wm8753"
45 nvidia,model = "tegra-wm8753-harmony";
46
47 nvidia,audio-routing =
48 "Headphone Jack", "LOUT1",
49 "Headphone Jack", "ROUT1";
50
51 nvidia,i2s-controller = <&i2s1>;
52 nvidia,audio-codec = <&wm8753>;
53};
54
diff --git a/Documentation/devicetree/bindings/spi/fsl-imx-cspi.txt b/Documentation/devicetree/bindings/spi/fsl-imx-cspi.txt
index 9841057d112b..4256a6df9b79 100644
--- a/Documentation/devicetree/bindings/spi/fsl-imx-cspi.txt
+++ b/Documentation/devicetree/bindings/spi/fsl-imx-cspi.txt
@@ -17,6 +17,6 @@ ecspi@70010000 {
17 reg = <0x70010000 0x4000>; 17 reg = <0x70010000 0x4000>;
18 interrupts = <36>; 18 interrupts = <36>;
19 fsl,spi-num-chipselects = <2>; 19 fsl,spi-num-chipselects = <2>;
20 cs-gpios = <&gpio3 24 0>, /* GPIO4_24 */ 20 cs-gpios = <&gpio3 24 0>, /* GPIO3_24 */
21 <&gpio3 25 0>; /* GPIO4_25 */ 21 <&gpio3 25 0>; /* GPIO3_25 */
22}; 22};
diff --git a/Documentation/devicetree/bindings/staging/iio/adc/lpc32xx-adc.txt b/Documentation/devicetree/bindings/staging/iio/adc/lpc32xx-adc.txt
new file mode 100644
index 000000000000..b3629d3a9adf
--- /dev/null
+++ b/Documentation/devicetree/bindings/staging/iio/adc/lpc32xx-adc.txt
@@ -0,0 +1,16 @@
1* NXP LPC32xx SoC ADC controller
2
3Required properties:
4- compatible: must be "nxp,lpc3220-adc"
5- reg: physical base address of the controller and length of memory mapped
6 region.
7- interrupts: The ADC interrupt
8
9Example:
10
11 adc@40048000 {
12 compatible = "nxp,lpc3220-adc";
13 reg = <0x40048000 0x1000>;
14 interrupt-parent = <&mic>;
15 interrupts = <39 0>;
16 };
diff --git a/Documentation/devicetree/bindings/staging/iio/adc/spear-adc.txt b/Documentation/devicetree/bindings/staging/iio/adc/spear-adc.txt
new file mode 100644
index 000000000000..02ea23a63f20
--- /dev/null
+++ b/Documentation/devicetree/bindings/staging/iio/adc/spear-adc.txt
@@ -0,0 +1,26 @@
1* ST SPEAr ADC device driver
2
3Required properties:
4- compatible: Should be "st,spear600-adc"
5- reg: Address and length of the register set for the device
6- interrupt-parent: Should be the phandle for the interrupt controller
7 that services interrupts for this device
8- interrupts: Should contain the ADC interrupt
9- sampling-frequency: Default sampling frequency
10
11Optional properties:
12- vref-external: External voltage reference in milli-volts. If omitted
13 the internal voltage reference will be used.
14- average-samples: Number of samples to generate an average value. If
15 omitted, single data conversion will be used.
16
17Examples:
18
19 adc: adc@d8200000 {
20 compatible = "st,spear600-adc";
21 reg = <0xd8200000 0x1000>;
22 interrupt-parent = <&vic1>;
23 interrupts = <6>;
24 sampling-frequency = <5000000>;
25 vref-external = <2500>; /* 2.5V VRef */
26 };
diff --git a/Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt b/Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt
index a9c0406280e8..b462d0c54823 100644
--- a/Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt
+++ b/Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt
@@ -11,7 +11,7 @@ Optional properties:
11 11
12Example: 12Example:
13 13
14uart@73fbc000 { 14serial@73fbc000 {
15 compatible = "fsl,imx51-uart", "fsl,imx21-uart"; 15 compatible = "fsl,imx51-uart", "fsl,imx21-uart";
16 reg = <0x73fbc000 0x4000>; 16 reg = <0x73fbc000 0x4000>;
17 interrupts = <31>; 17 interrupts = <31>;
diff --git a/Documentation/devicetree/bindings/usb/isp1301.txt b/Documentation/devicetree/bindings/usb/isp1301.txt
new file mode 100644
index 000000000000..5405d99d9aaa
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/isp1301.txt
@@ -0,0 +1,25 @@
1* NXP ISP1301 USB transceiver
2
3Required properties:
4- compatible: must be "nxp,isp1301"
5- reg: I2C address of the ISP1301 device
6
7Optional properties of devices using ISP1301:
8- transceiver: phandle of isp1301 - this helps the ISP1301 driver to find the
9 ISP1301 instance associated with the respective USB driver
10
11Example:
12
13 isp1301: usb-transceiver@2c {
14 compatible = "nxp,isp1301";
15 reg = <0x2c>;
16 };
17
18 usbd@31020000 {
19 compatible = "nxp,lpc3220-udc";
20 reg = <0x31020000 0x300>;
21 interrupt-parent = <&mic>;
22 interrupts = <0x3d 0>, <0x3e 0>, <0x3c 0>, <0x3a 0>;
23 transceiver = <&isp1301>;
24 status = "okay";
25 };
diff --git a/Documentation/devicetree/bindings/usb/lpc32xx-udc.txt b/Documentation/devicetree/bindings/usb/lpc32xx-udc.txt
new file mode 100644
index 000000000000..29f12a533f66
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/lpc32xx-udc.txt
@@ -0,0 +1,28 @@
1* NXP LPC32xx SoC USB Device Controller (UDC)
2
3Required properties:
4- compatible: Must be "nxp,lpc3220-udc"
5- reg: Physical base address of the controller and length of memory mapped
6 region.
7- interrupts: The USB interrupts:
8 * USB Device Low Priority Interrupt
9 * USB Device High Priority Interrupt
10 * USB Device DMA Interrupt
11 * External USB Transceiver Interrupt (OTG ATX)
12- transceiver: phandle of the associated ISP1301 device - this is necessary for
13 the UDC controller for connecting to the USB physical layer
14
15Example:
16
17 isp1301: usb-transceiver@2c {
18 compatible = "nxp,isp1301";
19 reg = <0x2c>;
20 };
21
22 usbd@31020000 {
23 compatible = "nxp,lpc3220-udc";
24 reg = <0x31020000 0x300>;
25 interrupt-parent = <&mic>;
26 interrupts = <0x3d 0>, <0x3e 0>, <0x3c 0>, <0x3a 0>;
27 transceiver = <&isp1301>;
28 };
diff --git a/Documentation/devicetree/bindings/usb/ohci-nxp.txt b/Documentation/devicetree/bindings/usb/ohci-nxp.txt
new file mode 100644
index 000000000000..71e28c1017ed
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/ohci-nxp.txt
@@ -0,0 +1,24 @@
1* OHCI controller, NXP ohci-nxp variant
2
3Required properties:
4- compatible: must be "nxp,ohci-nxp"
5- reg: physical base address of the controller and length of memory mapped
6 region.
7- interrupts: The OHCI interrupt
8- transceiver: phandle of the associated ISP1301 device - this is necessary for
9 the UDC controller for connecting to the USB physical layer
10
11Example (LPC32xx):
12
13 isp1301: usb-transceiver@2c {
14 compatible = "nxp,isp1301";
15 reg = <0x2c>;
16 };
17
18 ohci@31020000 {
19 compatible = "nxp,ohci-nxp";
20 reg = <0x31020000 0x300>;
21 interrupt-parent = <&mic>;
22 interrupts = <0x3b 0>;
23 transceiver = <&isp1301>;
24 };
diff --git a/Documentation/devicetree/bindings/usb/spear-usb.txt b/Documentation/devicetree/bindings/usb/spear-usb.txt
new file mode 100644
index 000000000000..f8a464a25653
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/spear-usb.txt
@@ -0,0 +1,39 @@
1ST SPEAr SoC USB controllers:
2-----------------------------
3
4EHCI:
5-----
6
7Required properties:
8- compatible: "st,spear600-ehci"
9- interrupt-parent: Should be the phandle for the interrupt controller
10 that services interrupts for this device
11- interrupts: Should contain the EHCI interrupt
12
13Example:
14
15 ehci@e1800000 {
16 compatible = "st,spear600-ehci", "usb-ehci";
17 reg = <0xe1800000 0x1000>;
18 interrupt-parent = <&vic1>;
19 interrupts = <27>;
20 };
21
22
23OHCI:
24-----
25
26Required properties:
27- compatible: "st,spear600-ohci"
28- interrupt-parent: Should be the phandle for the interrupt controller
29 that services interrupts for this device
30- interrupts: Should contain the OHCI interrupt
31
32Example:
33
34 ohci@e1900000 {
35 compatible = "st,spear600-ohci", "usb-ohci";
36 reg = <0xe1800000 0x1000>;
37 interrupt-parent = <&vic1>;
38 interrupts = <26>;
39 };
diff --git a/Documentation/devicetree/bindings/usb/tegra-usb.txt b/Documentation/devicetree/bindings/usb/tegra-usb.txt
index 007005ddbe12..e9b005dc7625 100644
--- a/Documentation/devicetree/bindings/usb/tegra-usb.txt
+++ b/Documentation/devicetree/bindings/usb/tegra-usb.txt
@@ -12,6 +12,9 @@ Required properties :
12 - nvidia,vbus-gpio : If present, specifies a gpio that needs to be 12 - nvidia,vbus-gpio : If present, specifies a gpio that needs to be
13 activated for the bus to be powered. 13 activated for the bus to be powered.
14 14
15Required properties for phy_type == ulpi:
16 - nvidia,phy-reset-gpio : The GPIO used to reset the PHY.
17
15Optional properties: 18Optional properties:
16 - dr_mode : dual role mode. Indicates the working mode for 19 - dr_mode : dual role mode. Indicates the working mode for
17 nvidia,tegra20-ehci compatible controllers. Can be "host", "peripheral", 20 nvidia,tegra20-ehci compatible controllers. Can be "host", "peripheral",
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
index 82ac057a24a9..db4d3af3643c 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -3,16 +3,19 @@ Device tree binding vendor prefix registry. Keep list in alphabetical order.
3This isn't an exhaustive list, but you should add new prefixes to it before 3This isn't an exhaustive list, but you should add new prefixes to it before
4using them to avoid name-space collisions. 4using them to avoid name-space collisions.
5 5
6ad Avionic Design GmbH
6adi Analog Devices, Inc. 7adi Analog Devices, Inc.
7amcc Applied Micro Circuits Corporation (APM, formally AMCC) 8amcc Applied Micro Circuits Corporation (APM, formally AMCC)
8apm Applied Micro Circuits Corporation (APM) 9apm Applied Micro Circuits Corporation (APM)
9arm ARM Ltd. 10arm ARM Ltd.
10atmel Atmel Corporation 11atmel Atmel Corporation
12bosch Bosch Sensortec GmbH
11cavium Cavium, Inc. 13cavium Cavium, Inc.
12chrp Common Hardware Reference Platform 14chrp Common Hardware Reference Platform
13cortina Cortina Systems, Inc. 15cortina Cortina Systems, Inc.
14dallas Maxim Integrated Products (formerly Dallas Semiconductor) 16dallas Maxim Integrated Products (formerly Dallas Semiconductor)
15denx Denx Software Engineering 17denx Denx Software Engineering
18emmicro EM Microelectronic
16epson Seiko Epson Corp. 19epson Seiko Epson Corp.
17est ESTeem Wireless Modems 20est ESTeem Wireless Modems
18fsl Freescale Semiconductor 21fsl Freescale Semiconductor
diff --git a/Documentation/devicetree/bindings/watchdog/pnx4008-wdt.txt b/Documentation/devicetree/bindings/watchdog/pnx4008-wdt.txt
new file mode 100644
index 000000000000..7c7f6887c796
--- /dev/null
+++ b/Documentation/devicetree/bindings/watchdog/pnx4008-wdt.txt
@@ -0,0 +1,13 @@
1* NXP PNX watchdog timer
2
3Required properties:
4- compatible: must be "nxp,pnx4008-wdt"
5- reg: physical base address of the controller and length of memory mapped
6 region.
7
8Example:
9
10 watchdog@4003C000 {
11 compatible = "nxp,pnx4008-wdt";
12 reg = <0x4003C000 0x1000>;
13 };
diff --git a/Documentation/devicetree/booting-without-of.txt b/Documentation/devicetree/booting-without-of.txt
index da0bfeb4253d..d4d66757354e 100644
--- a/Documentation/devicetree/booting-without-of.txt
+++ b/Documentation/devicetree/booting-without-of.txt
@@ -551,12 +551,13 @@ Here is an example of a simple device-tree. In this example, an "o"
551designates a node followed by the node unit name. Properties are 551designates a node followed by the node unit name. Properties are
552presented with their name followed by their content. "content" 552presented with their name followed by their content. "content"
553represents an ASCII string (zero terminated) value, while <content> 553represents an ASCII string (zero terminated) value, while <content>
554represents a 32-bit hexadecimal value. The various nodes in this 554represents a 32-bit value, specified in decimal or hexadecimal (the
555example will be discussed in a later chapter. At this point, it is 555latter prefixed 0x). The various nodes in this example will be
556only meant to give you a idea of what a device-tree looks like. I have 556discussed in a later chapter. At this point, it is only meant to give
557purposefully kept the "name" and "linux,phandle" properties which 557you a idea of what a device-tree looks like. I have purposefully kept
558aren't necessary in order to give you a better idea of what the tree 558the "name" and "linux,phandle" properties which aren't necessary in
559looks like in practice. 559order to give you a better idea of what the tree looks like in
560practice.
560 561
561 / o device-tree 562 / o device-tree
562 |- name = "device-tree" 563 |- name = "device-tree"
@@ -576,14 +577,14 @@ looks like in practice.
576 | |- name = "PowerPC,970" 577 | |- name = "PowerPC,970"
577 | |- device_type = "cpu" 578 | |- device_type = "cpu"
578 | |- reg = <0> 579 | |- reg = <0>
579 | |- clock-frequency = <5f5e1000> 580 | |- clock-frequency = <0x5f5e1000>
580 | |- 64-bit 581 | |- 64-bit
581 | |- linux,phandle = <2> 582 | |- linux,phandle = <2>
582 | 583 |
583 o memory@0 584 o memory@0
584 | |- name = "memory" 585 | |- name = "memory"
585 | |- device_type = "memory" 586 | |- device_type = "memory"
586 | |- reg = <00000000 00000000 00000000 20000000> 587 | |- reg = <0x00000000 0x00000000 0x00000000 0x20000000>
587 | |- linux,phandle = <3> 588 | |- linux,phandle = <3>
588 | 589 |
589 o chosen 590 o chosen
@@ -1010,8 +1011,8 @@ compatibility.
1010 #size-cells = <1>; 1011 #size-cells = <1>;
1011 #interrupt-cells = <2>; 1012 #interrupt-cells = <2>;
1012 device_type = "soc"; 1013 device_type = "soc";
1013 ranges = <00000000 e0000000 00100000> 1014 ranges = <0x00000000 0xe0000000 0x00100000>
1014 reg = <e0000000 00003000>; 1015 reg = <0xe0000000 0x00003000>;
1015 bus-frequency = <0>; 1016 bus-frequency = <0>;
1016 } 1017 }
1017 1018
@@ -1085,16 +1086,16 @@ supported currently at the toplevel.
1085 * terminated string 1086 * terminated string
1086 */ 1087 */
1087 1088
1088 property2 = <1234abcd>; /* define a property containing a 1089 property2 = <0x1234abcd>; /* define a property containing a
1089 * numerical 32-bit value (hexadecimal) 1090 * numerical 32-bit value (hexadecimal)
1090 */ 1091 */
1091 1092
1092 property3 = <12345678 12345678 deadbeef>; 1093 property3 = <0x12345678 0x12345678 0xdeadbeef>;
1093 /* define a property containing 3 1094 /* define a property containing 3
1094 * numerical 32-bit values (cells) in 1095 * numerical 32-bit values (cells) in
1095 * hexadecimal 1096 * hexadecimal
1096 */ 1097 */
1097 property4 = [0a 0b 0c 0d de ea ad be ef]; 1098 property4 = [0x0a 0x0b 0x0c 0x0d 0xde 0xea 0xad 0xbe 0xef];
1098 /* define a property whose content is 1099 /* define a property whose content is
1099 * an arbitrary array of bytes 1100 * an arbitrary array of bytes
1100 */ 1101 */
@@ -1350,10 +1351,10 @@ Appendix A - Sample SOC node for MPC8540
1350 model = "TSEC"; 1351 model = "TSEC";
1351 compatible = "gianfar", "simple-bus"; 1352 compatible = "gianfar", "simple-bus";
1352 reg = <0x24000 0x1000>; 1353 reg = <0x24000 0x1000>;
1353 local-mac-address = [ 00 E0 0C 00 73 00 ]; 1354 local-mac-address = [ 0x00 0xE0 0x0C 0x00 0x73 0x00 ];
1354 interrupts = <29 2 30 2 34 2>; 1355 interrupts = <0x29 2 0x30 2 0x34 2>;
1355 phy-handle = <&phy0>; 1356 phy-handle = <&phy0>;
1356 sleep = <&pmc 00000080>; 1357 sleep = <&pmc 0x00000080>;
1357 ranges; 1358 ranges;
1358 1359
1359 mdio@24520 { 1360 mdio@24520 {
@@ -1385,10 +1386,10 @@ Appendix A - Sample SOC node for MPC8540
1385 model = "TSEC"; 1386 model = "TSEC";
1386 compatible = "gianfar"; 1387 compatible = "gianfar";
1387 reg = <0x25000 0x1000>; 1388 reg = <0x25000 0x1000>;
1388 local-mac-address = [ 00 E0 0C 00 73 01 ]; 1389 local-mac-address = [ 0x00 0xE0 0x0C 0x00 0x73 0x01 ];
1389 interrupts = <13 2 14 2 18 2>; 1390 interrupts = <0x13 2 0x14 2 0x18 2>;
1390 phy-handle = <&phy1>; 1391 phy-handle = <&phy1>;
1391 sleep = <&pmc 00000040>; 1392 sleep = <&pmc 0x00000040>;
1392 }; 1393 };
1393 1394
1394 ethernet@26000 { 1395 ethernet@26000 {
@@ -1396,17 +1397,17 @@ Appendix A - Sample SOC node for MPC8540
1396 model = "FEC"; 1397 model = "FEC";
1397 compatible = "gianfar"; 1398 compatible = "gianfar";
1398 reg = <0x26000 0x1000>; 1399 reg = <0x26000 0x1000>;
1399 local-mac-address = [ 00 E0 0C 00 73 02 ]; 1400 local-mac-address = [ 0x00 0xE0 0x0C 0x00 0x73 0x02 ];
1400 interrupts = <41 2>; 1401 interrupts = <0x41 2>;
1401 phy-handle = <&phy3>; 1402 phy-handle = <&phy3>;
1402 sleep = <&pmc 00000020>; 1403 sleep = <&pmc 0x00000020>;
1403 }; 1404 };
1404 1405
1405 serial@4500 { 1406 serial@4500 {
1406 #address-cells = <1>; 1407 #address-cells = <1>;
1407 #size-cells = <1>; 1408 #size-cells = <1>;
1408 compatible = "fsl,mpc8540-duart", "simple-bus"; 1409 compatible = "fsl,mpc8540-duart", "simple-bus";
1409 sleep = <&pmc 00000002>; 1410 sleep = <&pmc 0x00000002>;
1410 ranges; 1411 ranges;
1411 1412
1412 serial@4500 { 1413 serial@4500 {
@@ -1414,7 +1415,7 @@ Appendix A - Sample SOC node for MPC8540
1414 compatible = "ns16550"; 1415 compatible = "ns16550";
1415 reg = <0x4500 0x100>; 1416 reg = <0x4500 0x100>;
1416 clock-frequency = <0>; 1417 clock-frequency = <0>;
1417 interrupts = <42 2>; 1418 interrupts = <0x42 2>;
1418 }; 1419 };
1419 1420
1420 serial@4600 { 1421 serial@4600 {
@@ -1422,7 +1423,7 @@ Appendix A - Sample SOC node for MPC8540
1422 compatible = "ns16550"; 1423 compatible = "ns16550";
1423 reg = <0x4600 0x100>; 1424 reg = <0x4600 0x100>;
1424 clock-frequency = <0>; 1425 clock-frequency = <0>;
1425 interrupts = <42 2>; 1426 interrupts = <0x42 2>;
1426 }; 1427 };
1427 }; 1428 };
1428 1429
@@ -1436,11 +1437,11 @@ Appendix A - Sample SOC node for MPC8540
1436 }; 1437 };
1437 1438
1438 i2c@3000 { 1439 i2c@3000 {
1439 interrupts = <43 2>; 1440 interrupts = <0x43 2>;
1440 reg = <0x3000 0x100>; 1441 reg = <0x3000 0x100>;
1441 compatible = "fsl-i2c"; 1442 compatible = "fsl-i2c";
1442 dfsrr; 1443 dfsrr;
1443 sleep = <&pmc 00000004>; 1444 sleep = <&pmc 0x00000004>;
1444 }; 1445 };
1445 1446
1446 pmc: power@e0070 { 1447 pmc: power@e0070 {
diff --git a/Documentation/dma-buf-sharing.txt b/Documentation/dma-buf-sharing.txt
index 3bbd5c51605a..ad86fb86c9a0 100644
--- a/Documentation/dma-buf-sharing.txt
+++ b/Documentation/dma-buf-sharing.txt
@@ -29,13 +29,6 @@ The buffer-user
29 in memory, mapped into its own address space, so it can access the same area 29 in memory, mapped into its own address space, so it can access the same area
30 of memory. 30 of memory.
31 31
32*IMPORTANT*: [see https://lkml.org/lkml/2011/12/20/211 for more details]
33For this first version, A buffer shared using the dma_buf sharing API:
34- *may* be exported to user space using "mmap" *ONLY* by exporter, outside of
35 this framework.
36- with this new iteration of the dma-buf api cpu access from the kernel has been
37 enable, see below for the details.
38
39dma-buf operations for device dma only 32dma-buf operations for device dma only
40-------------------------------------- 33--------------------------------------
41 34
@@ -300,6 +293,17 @@ Access to a dma_buf from the kernel context involves three steps:
300 Note that these calls need to always succeed. The exporter needs to complete 293 Note that these calls need to always succeed. The exporter needs to complete
301 any preparations that might fail in begin_cpu_access. 294 any preparations that might fail in begin_cpu_access.
302 295
296 For some cases the overhead of kmap can be too high, a vmap interface
297 is introduced. This interface should be used very carefully, as vmalloc
298 space is a limited resources on many architectures.
299
300 Interfaces:
301 void *dma_buf_vmap(struct dma_buf *dmabuf)
302 void dma_buf_vunmap(struct dma_buf *dmabuf, void *vaddr)
303
304 The vmap call can fail if there is no vmap support in the exporter, or if it
305 runs out of vmalloc space. Fallback to kmap should be implemented.
306
3033. Finish access 3073. Finish access
304 308
305 When the importer is done accessing the range specified in begin_cpu_access, 309 When the importer is done accessing the range specified in begin_cpu_access,
@@ -313,6 +317,83 @@ Access to a dma_buf from the kernel context involves three steps:
313 enum dma_data_direction dir); 317 enum dma_data_direction dir);
314 318
315 319
320Direct Userspace Access/mmap Support
321------------------------------------
322
323Being able to mmap an export dma-buf buffer object has 2 main use-cases:
324- CPU fallback processing in a pipeline and
325- supporting existing mmap interfaces in importers.
326
3271. CPU fallback processing in a pipeline
328
329 In many processing pipelines it is sometimes required that the cpu can access
330 the data in a dma-buf (e.g. for thumbnail creation, snapshots, ...). To avoid
331 the need to handle this specially in userspace frameworks for buffer sharing
332 it's ideal if the dma_buf fd itself can be used to access the backing storage
333 from userspace using mmap.
334
335 Furthermore Android's ION framework already supports this (and is otherwise
336 rather similar to dma-buf from a userspace consumer side with using fds as
337 handles, too). So it's beneficial to support this in a similar fashion on
338 dma-buf to have a good transition path for existing Android userspace.
339
340 No special interfaces, userspace simply calls mmap on the dma-buf fd.
341
3422. Supporting existing mmap interfaces in exporters
343
344 Similar to the motivation for kernel cpu access it is again important that
345 the userspace code of a given importing subsystem can use the same interfaces
346 with a imported dma-buf buffer object as with a native buffer object. This is
347 especially important for drm where the userspace part of contemporary OpenGL,
348 X, and other drivers is huge, and reworking them to use a different way to
349 mmap a buffer rather invasive.
350
351 The assumption in the current dma-buf interfaces is that redirecting the
352 initial mmap is all that's needed. A survey of some of the existing
353 subsystems shows that no driver seems to do any nefarious thing like syncing
354 up with outstanding asynchronous processing on the device or allocating
355 special resources at fault time. So hopefully this is good enough, since
356 adding interfaces to intercept pagefaults and allow pte shootdowns would
357 increase the complexity quite a bit.
358
359 Interface:
360 int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *,
361 unsigned long);
362
363 If the importing subsystem simply provides a special-purpose mmap call to set
364 up a mapping in userspace, calling do_mmap with dma_buf->file will equally
365 achieve that for a dma-buf object.
366
3673. Implementation notes for exporters
368
369 Because dma-buf buffers have invariant size over their lifetime, the dma-buf
370 core checks whether a vma is too large and rejects such mappings. The
371 exporter hence does not need to duplicate this check.
372
373 Because existing importing subsystems might presume coherent mappings for
374 userspace, the exporter needs to set up a coherent mapping. If that's not
375 possible, it needs to fake coherency by manually shooting down ptes when
376 leaving the cpu domain and flushing caches at fault time. Note that all the
377 dma_buf files share the same anon inode, hence the exporter needs to replace
378 the dma_buf file stored in vma->vm_file with it's own if pte shootdown is
379 requred. This is because the kernel uses the underlying inode's address_space
380 for vma tracking (and hence pte tracking at shootdown time with
381 unmap_mapping_range).
382
383 If the above shootdown dance turns out to be too expensive in certain
384 scenarios, we can extend dma-buf with a more explicit cache tracking scheme
385 for userspace mappings. But the current assumption is that using mmap is
386 always a slower path, so some inefficiencies should be acceptable.
387
388 Exporters that shoot down mappings (for any reasons) shall not do any
389 synchronization at fault time with outstanding device operations.
390 Synchronization is an orthogonal issue to sharing the backing storage of a
391 buffer and hence should not be handled by dma-buf itself. This is explictly
392 mentioned here because many people seem to want something like this, but if
393 different exporters handle this differently, buffer sharing can fail in
394 interesting ways depending upong the exporter (if userspace starts depending
395 upon this implicit synchronization).
396
316Miscellaneous notes 397Miscellaneous notes
317------------------- 398-------------------
318 399
@@ -336,6 +417,20 @@ Miscellaneous notes
336 the exporting driver to create a dmabuf fd must provide a way to let 417 the exporting driver to create a dmabuf fd must provide a way to let
337 userspace control setting of O_CLOEXEC flag passed in to dma_buf_fd(). 418 userspace control setting of O_CLOEXEC flag passed in to dma_buf_fd().
338 419
420- If an exporter needs to manually flush caches and hence needs to fake
421 coherency for mmap support, it needs to be able to zap all the ptes pointing
422 at the backing storage. Now linux mm needs a struct address_space associated
423 with the struct file stored in vma->vm_file to do that with the function
424 unmap_mapping_range. But the dma_buf framework only backs every dma_buf fd
425 with the anon_file struct file, i.e. all dma_bufs share the same file.
426
427 Hence exporters need to setup their own file (and address_space) association
428 by setting vma->vm_file and adjusting vma->vm_pgoff in the dma_buf mmap
429 callback. In the specific case of a gem driver the exporter could use the
430 shmem file already provided by gem (and set vm_pgoff = 0). Exporters can then
431 zap ptes by unmapping the corresponding range of the struct address_space
432 associated with their own file.
433
339References: 434References:
340[1] struct dma_buf_ops in include/linux/dma-buf.h 435[1] struct dma_buf_ops in include/linux/dma-buf.h
341[2] All interfaces mentioned above defined in include/linux/dma-buf.h 436[2] All interfaces mentioned above defined in include/linux/dma-buf.h
diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt
index 2a596a4fc23e..950856bd2e39 100644
--- a/Documentation/driver-model/devres.txt
+++ b/Documentation/driver-model/devres.txt
@@ -276,3 +276,11 @@ REGULATOR
276 devm_regulator_get() 276 devm_regulator_get()
277 devm_regulator_put() 277 devm_regulator_put()
278 devm_regulator_bulk_get() 278 devm_regulator_bulk_get()
279
280CLOCK
281 devm_clk_get()
282 devm_clk_put()
283
284PINCTRL
285 devm_pinctrl_get()
286 devm_pinctrl_put()
diff --git a/Documentation/dvb/get_dvb_firmware b/Documentation/dvb/get_dvb_firmware
index d1d4a179a382..fbb241174486 100755
--- a/Documentation/dvb/get_dvb_firmware
+++ b/Documentation/dvb/get_dvb_firmware
@@ -28,7 +28,8 @@ use IO::Handle;
28 "opera1", "cx231xx", "cx18", "cx23885", "pvrusb2", "mpc718", 28 "opera1", "cx231xx", "cx18", "cx23885", "pvrusb2", "mpc718",
29 "af9015", "ngene", "az6027", "lme2510_lg", "lme2510c_s7395", 29 "af9015", "ngene", "az6027", "lme2510_lg", "lme2510c_s7395",
30 "lme2510c_s7395_old", "drxk", "drxk_terratec_h5", 30 "lme2510c_s7395_old", "drxk", "drxk_terratec_h5",
31 "drxk_hauppauge_hvr930c", "tda10071", "it9135", "it9137"); 31 "drxk_hauppauge_hvr930c", "tda10071", "it9135", "it9137",
32 "drxk_pctv");
32 33
33# Check args 34# Check args
34syntax() if (scalar(@ARGV) != 1); 35syntax() if (scalar(@ARGV) != 1);
@@ -730,6 +731,23 @@ sub tda10071 {
730 "$fwfile"; 731 "$fwfile";
731} 732}
732 733
734sub drxk_pctv {
735 my $sourcefile = "PCTV_460e_reference.zip";
736 my $url = "ftp://ftp.pctvsystems.com/TV/driver/PCTV%2070e%2080e%20100e%20320e%20330e%20800e/";
737 my $hash = "4403de903bf2593464c8d74bbc200a57";
738 my $fwfile = "dvb-demod-drxk-pctv.fw";
739 my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
740
741 checkstandard();
742
743 wgetfile($sourcefile, $url . $sourcefile);
744 verify($sourcefile, $hash);
745 unzip($sourcefile, $tmpdir);
746 extract("$tmpdir/PCTV\ 70e\ 80e\ 100e\ 320e\ 330e\ 800e/32\ bit/emOEM.sys", 0x72b80, 42692, $fwfile);
747
748 "$fwfile";
749}
750
733# --------------------------------------------------------------- 751# ---------------------------------------------------------------
734# Utilities 752# Utilities
735 753
diff --git a/Documentation/dvb/opera-firmware.txt b/Documentation/dvb/opera-firmware.txt
index 93e784c2607b..fb6683188ef7 100644
--- a/Documentation/dvb/opera-firmware.txt
+++ b/Documentation/dvb/opera-firmware.txt
@@ -8,7 +8,7 @@ from the windriver disk into this directory.
8 8
9Then run 9Then run
10 10
11./get_dvb_firware opera1 11./get_dvb_firmware opera1
12 12
13and after that you have 2 files: 13and after that you have 2 files:
14 14
@@ -24,4 +24,4 @@ After that the driver can load the firmware
24in kernel config and have hotplug running). 24in kernel config and have hotplug running).
25 25
26 26
27Marco Gittler <g.marco@freenet.de> \ No newline at end of file 27Marco Gittler <g.marco@freenet.de>
diff --git a/Documentation/dynamic-debug-howto.txt b/Documentation/dynamic-debug-howto.txt
index 74e6c7782678..6e1684981da2 100644
--- a/Documentation/dynamic-debug-howto.txt
+++ b/Documentation/dynamic-debug-howto.txt
@@ -2,17 +2,17 @@
2Introduction 2Introduction
3============ 3============
4 4
5This document describes how to use the dynamic debug (ddebug) feature. 5This document describes how to use the dynamic debug (dyndbg) feature.
6 6
7Dynamic debug is designed to allow you to dynamically enable/disable kernel 7Dynamic debug is designed to allow you to dynamically enable/disable
8code to obtain additional kernel information. Currently, if 8kernel code to obtain additional kernel information. Currently, if
9CONFIG_DYNAMIC_DEBUG is set, then all pr_debug()/dev_dbg() calls can be 9CONFIG_DYNAMIC_DEBUG is set, then all pr_debug()/dev_dbg() calls can
10dynamically enabled per-callsite. 10be dynamically enabled per-callsite.
11 11
12Dynamic debug has even more useful features: 12Dynamic debug has even more useful features:
13 13
14 * Simple query language allows turning on and off debugging statements by 14 * Simple query language allows turning on and off debugging
15 matching any combination of 0 or 1 of: 15 statements by matching any combination of 0 or 1 of:
16 16
17 - source filename 17 - source filename
18 - function name 18 - function name
@@ -20,17 +20,19 @@ Dynamic debug has even more useful features:
20 - module name 20 - module name
21 - format string 21 - format string
22 22
23 * Provides a debugfs control file: <debugfs>/dynamic_debug/control which can be 23 * Provides a debugfs control file: <debugfs>/dynamic_debug/control
24 read to display the complete list of known debug statements, to help guide you 24 which can be read to display the complete list of known debug
25 statements, to help guide you
25 26
26Controlling dynamic debug Behaviour 27Controlling dynamic debug Behaviour
27=================================== 28===================================
28 29
29The behaviour of pr_debug()/dev_dbg()s are controlled via writing to a 30The behaviour of pr_debug()/dev_dbg()s are controlled via writing to a
30control file in the 'debugfs' filesystem. Thus, you must first mount the debugfs 31control file in the 'debugfs' filesystem. Thus, you must first mount
31filesystem, in order to make use of this feature. Subsequently, we refer to the 32the debugfs filesystem, in order to make use of this feature.
32control file as: <debugfs>/dynamic_debug/control. For example, if you want to 33Subsequently, we refer to the control file as:
33enable printing from source file 'svcsock.c', line 1603 you simply do: 34<debugfs>/dynamic_debug/control. For example, if you want to enable
35printing from source file 'svcsock.c', line 1603 you simply do:
34 36
35nullarbor:~ # echo 'file svcsock.c line 1603 +p' > 37nullarbor:~ # echo 'file svcsock.c line 1603 +p' >
36 <debugfs>/dynamic_debug/control 38 <debugfs>/dynamic_debug/control
@@ -44,15 +46,15 @@ nullarbor:~ # echo 'file svcsock.c wtf 1 +p' >
44Viewing Dynamic Debug Behaviour 46Viewing Dynamic Debug Behaviour
45=========================== 47===========================
46 48
47You can view the currently configured behaviour of all the debug statements 49You can view the currently configured behaviour of all the debug
48via: 50statements via:
49 51
50nullarbor:~ # cat <debugfs>/dynamic_debug/control 52nullarbor:~ # cat <debugfs>/dynamic_debug/control
51# filename:lineno [module]function flags format 53# filename:lineno [module]function flags format
52/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:323 [svcxprt_rdma]svc_rdma_cleanup - "SVCRDMA Module Removed, deregister RPC RDMA transport\012" 54/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:323 [svcxprt_rdma]svc_rdma_cleanup =_ "SVCRDMA Module Removed, deregister RPC RDMA transport\012"
53/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:341 [svcxprt_rdma]svc_rdma_init - "\011max_inline : %d\012" 55/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:341 [svcxprt_rdma]svc_rdma_init =_ "\011max_inline : %d\012"
54/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:340 [svcxprt_rdma]svc_rdma_init - "\011sq_depth : %d\012" 56/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:340 [svcxprt_rdma]svc_rdma_init =_ "\011sq_depth : %d\012"
55/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:338 [svcxprt_rdma]svc_rdma_init - "\011max_requests : %d\012" 57/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:338 [svcxprt_rdma]svc_rdma_init =_ "\011max_requests : %d\012"
56... 58...
57 59
58 60
@@ -65,12 +67,12 @@ nullarbor:~ # grep -i rdma <debugfs>/dynamic_debug/control | wc -l
65nullarbor:~ # grep -i tcp <debugfs>/dynamic_debug/control | wc -l 67nullarbor:~ # grep -i tcp <debugfs>/dynamic_debug/control | wc -l
6642 6842
67 69
68Note in particular that the third column shows the enabled behaviour 70The third column shows the currently enabled flags for each debug
69flags for each debug statement callsite (see below for definitions of the 71statement callsite (see below for definitions of the flags). The
70flags). The default value, no extra behaviour enabled, is "-". So 72default value, with no flags enabled, is "=_". So you can view all
71you can view all the debug statement callsites with any non-default flags: 73the debug statement callsites with any non-default flags:
72 74
73nullarbor:~ # awk '$3 != "-"' <debugfs>/dynamic_debug/control 75nullarbor:~ # awk '$3 != "=_"' <debugfs>/dynamic_debug/control
74# filename:lineno [module]function flags format 76# filename:lineno [module]function flags format
75/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svcsock.c:1603 [sunrpc]svc_send p "svc_process: st_sendto returned %d\012" 77/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svcsock.c:1603 [sunrpc]svc_send p "svc_process: st_sendto returned %d\012"
76 78
@@ -103,15 +105,14 @@ specifications, followed by a flags change specification.
103 105
104command ::= match-spec* flags-spec 106command ::= match-spec* flags-spec
105 107
106The match-spec's are used to choose a subset of the known dprintk() 108The match-spec's are used to choose a subset of the known pr_debug()
107callsites to which to apply the flags-spec. Think of them as a query 109callsites to which to apply the flags-spec. Think of them as a query
108with implicit ANDs between each pair. Note that an empty list of 110with implicit ANDs between each pair. Note that an empty list of
109match-specs is possible, but is not very useful because it will not 111match-specs will select all debug statement callsites.
110match any debug statement callsites.
111 112
112A match specification comprises a keyword, which controls the attribute 113A match specification comprises a keyword, which controls the
113of the callsite to be compared, and a value to compare against. Possible 114attribute of the callsite to be compared, and a value to compare
114keywords are: 115against. Possible keywords are:
115 116
116match-spec ::= 'func' string | 117match-spec ::= 'func' string |
117 'file' string | 118 'file' string |
@@ -164,15 +165,15 @@ format
164 characters (") or single quote characters ('). 165 characters (") or single quote characters (').
165 Examples: 166 Examples:
166 167
167 format svcrdma: // many of the NFS/RDMA server dprintks 168 format svcrdma: // many of the NFS/RDMA server pr_debugs
168 format readahead // some dprintks in the readahead cache 169 format readahead // some pr_debugs in the readahead cache
169 format nfsd:\040SETATTR // one way to match a format with whitespace 170 format nfsd:\040SETATTR // one way to match a format with whitespace
170 format "nfsd: SETATTR" // a neater way to match a format with whitespace 171 format "nfsd: SETATTR" // a neater way to match a format with whitespace
171 format 'nfsd: SETATTR' // yet another way to match a format with whitespace 172 format 'nfsd: SETATTR' // yet another way to match a format with whitespace
172 173
173line 174line
174 The given line number or range of line numbers is compared 175 The given line number or range of line numbers is compared
175 against the line number of each dprintk() callsite. A single 176 against the line number of each pr_debug() callsite. A single
176 line number matches the callsite line number exactly. A 177 line number matches the callsite line number exactly. A
177 range of line numbers matches any callsite between the first 178 range of line numbers matches any callsite between the first
178 and last line number inclusive. An empty first number means 179 and last line number inclusive. An empty first number means
@@ -188,51 +189,93 @@ The flags specification comprises a change operation followed
188by one or more flag characters. The change operation is one 189by one or more flag characters. The change operation is one
189of the characters: 190of the characters:
190 191
191- 192 - remove the given flags
192 remove the given flags 193 + add the given flags
193 194 = set the flags to the given flags
194+
195 add the given flags
196
197=
198 set the flags to the given flags
199 195
200The flags are: 196The flags are:
201 197
202f 198 p enables the pr_debug() callsite.
203 Include the function name in the printed message 199 f Include the function name in the printed message
204l 200 l Include line number in the printed message
205 Include line number in the printed message 201 m Include module name in the printed message
206m 202 t Include thread ID in messages not generated from interrupt context
207 Include module name in the printed message 203 _ No flags are set. (Or'd with others on input)
208p 204
209 Causes a printk() message to be emitted to dmesg 205For display, the flags are preceded by '='
210t 206(mnemonic: what the flags are currently equal to).
211 Include thread ID in messages not generated from interrupt context
212 207
213Note the regexp ^[-+=][flmpt]+$ matches a flags specification. 208Note the regexp ^[-+=][flmpt_]+$ matches a flags specification.
214Note also that there is no convenient syntax to remove all 209To clear all flags at once, use "=_" or "-flmpt".
215the flags at once, you need to use "-flmpt".
216 210
217 211
218Debug messages during boot process 212Debug messages during Boot Process
219================================== 213==================================
220 214
221To be able to activate debug messages during the boot process, 215To activate debug messages for core code and built-in modules during
222even before userspace and debugfs exists, use the boot parameter: 216the boot process, even before userspace and debugfs exists, use
223ddebug_query="QUERY" 217dyndbg="QUERY", module.dyndbg="QUERY", or ddebug_query="QUERY"
218(ddebug_query is obsoleted by dyndbg, and deprecated). QUERY follows
219the syntax described above, but must not exceed 1023 characters. Your
220bootloader may impose lower limits.
221
222These dyndbg params are processed just after the ddebug tables are
223processed, as part of the arch_initcall. Thus you can enable debug
224messages in all code run after this arch_initcall via this boot
225parameter.
224 226
225QUERY follows the syntax described above, but must not exceed 1023
226characters. The enablement of debug messages is done as an arch_initcall.
227Thus you can enable debug messages in all code processed after this
228arch_initcall via this boot parameter.
229On an x86 system for example ACPI enablement is a subsys_initcall and 227On an x86 system for example ACPI enablement is a subsys_initcall and
230ddebug_query="file ec.c +p" 228 dyndbg="file ec.c +p"
231will show early Embedded Controller transactions during ACPI setup if 229will show early Embedded Controller transactions during ACPI setup if
232your machine (typically a laptop) has an Embedded Controller. 230your machine (typically a laptop) has an Embedded Controller.
233PCI (or other devices) initialization also is a hot candidate for using 231PCI (or other devices) initialization also is a hot candidate for using
234this boot parameter for debugging purposes. 232this boot parameter for debugging purposes.
235 233
234If foo module is not built-in, foo.dyndbg will still be processed at
235boot time, without effect, but will be reprocessed when module is
236loaded later. dyndbg_query= and bare dyndbg= are only processed at
237boot.
238
239
240Debug Messages at Module Initialization Time
241============================================
242
243When "modprobe foo" is called, modprobe scans /proc/cmdline for
244foo.params, strips "foo.", and passes them to the kernel along with
245params given in modprobe args or /etc/modprob.d/*.conf files,
246in the following order:
247
2481. # parameters given via /etc/modprobe.d/*.conf
249 options foo dyndbg=+pt
250 options foo dyndbg # defaults to +p
251
2522. # foo.dyndbg as given in boot args, "foo." is stripped and passed
253 foo.dyndbg=" func bar +p; func buz +mp"
254
2553. # args to modprobe
256 modprobe foo dyndbg==pmf # override previous settings
257
258These dyndbg queries are applied in order, with last having final say.
259This allows boot args to override or modify those from /etc/modprobe.d
260(sensible, since 1 is system wide, 2 is kernel or boot specific), and
261modprobe args to override both.
262
263In the foo.dyndbg="QUERY" form, the query must exclude "module foo".
264"foo" is extracted from the param-name, and applied to each query in
265"QUERY", and only 1 match-spec of each type is allowed.
266
267The dyndbg option is a "fake" module parameter, which means:
268
269- modules do not need to define it explicitly
270- every module gets it tacitly, whether they use pr_debug or not
271- it doesnt appear in /sys/module/$module/parameters/
272 To see it, grep the control file, or inspect /proc/cmdline.
273
274For CONFIG_DYNAMIC_DEBUG kernels, any settings given at boot-time (or
275enabled by -DDEBUG flag during compilation) can be disabled later via
276the sysfs interface if the debug messages are no longer needed:
277
278 echo "module module_name -p" > <debugfs>/dynamic_debug/control
236 279
237Examples 280Examples
238======== 281========
@@ -260,3 +303,18 @@ nullarbor:~ # echo -n 'func svc_process -p' >
260// enable messages for NFS calls READ, READLINK, READDIR and READDIR+. 303// enable messages for NFS calls READ, READLINK, READDIR and READDIR+.
261nullarbor:~ # echo -n 'format "nfsd: READ" +p' > 304nullarbor:~ # echo -n 'format "nfsd: READ" +p' >
262 <debugfs>/dynamic_debug/control 305 <debugfs>/dynamic_debug/control
306
307// enable all messages
308nullarbor:~ # echo -n '+p' > <debugfs>/dynamic_debug/control
309
310// add module, function to all enabled messages
311nullarbor:~ # echo -n '+mf' > <debugfs>/dynamic_debug/control
312
313// boot-args example, with newlines and comments for readability
314Kernel command line: ...
315 // see whats going on in dyndbg=value processing
316 dynamic_debug.verbose=1
317 // enable pr_debugs in 2 builtins, #cmt is stripped
318 dyndbg="module params +p #cmt ; module sys +p"
319 // enable pr_debugs in 2 functions in a module loaded later
320 pc87360.dyndbg="func pc87360_init_device +p; func pc87360_find +p"
diff --git a/Documentation/edac.txt b/Documentation/edac.txt
index c25f086a6960..56c7e936430f 100644
--- a/Documentation/edac.txt
+++ b/Documentation/edac.txt
@@ -638,7 +638,7 @@ were done at i7core_edac driver. This chapter will cover those differences
638 associated with a physical CPU socket. 638 associated with a physical CPU socket.
639 639
640 Each MC have 3 physical read channels, 3 physical write channels and 640 Each MC have 3 physical read channels, 3 physical write channels and
641 3 logic channels. The driver currenty sees it as just 3 channels. 641 3 logic channels. The driver currently sees it as just 3 channels.
642 Each channel can have up to 3 DIMMs. 642 Each channel can have up to 3 DIMMs.
643 643
644 The minimum known unity is DIMMs. There are no information about csrows. 644 The minimum known unity is DIMMs. There are no information about csrows.
diff --git a/Documentation/eisa.txt b/Documentation/eisa.txt
index 38cf0c7b559f..a55e4910924e 100644
--- a/Documentation/eisa.txt
+++ b/Documentation/eisa.txt
@@ -179,7 +179,7 @@ CONFIG_ALPHA_JENSEN or CONFIG_EISA_VLB_PRIMING are set.
179 179
180Converting an EISA driver to the new API mostly involves *deleting* 180Converting an EISA driver to the new API mostly involves *deleting*
181code (since probing is now in the core EISA code). Unfortunately, most 181code (since probing is now in the core EISA code). Unfortunately, most
182drivers share their probing routine between ISA, MCA and EISA. Special 182drivers share their probing routine between ISA, and EISA. Special
183care must be taken when ripping out the EISA code, so other busses 183care must be taken when ripping out the EISA code, so other busses
184won't suffer from these surgical strikes... 184won't suffer from these surgical strikes...
185 185
diff --git a/Documentation/extcon/porting-android-switch-class b/Documentation/extcon/porting-android-switch-class
new file mode 100644
index 000000000000..eb0fa5f4fe88
--- /dev/null
+++ b/Documentation/extcon/porting-android-switch-class
@@ -0,0 +1,124 @@
1
2 Staging/Android Switch Class Porting Guide
3 (linux/drivers/staging/android/switch)
4 (c) Copyright 2012 Samsung Electronics
5
6AUTHORS
7MyungJoo Ham <myungjoo.ham@samsung.com>
8
9/*****************************************************************
10 * CHAPTER 1. *
11 * PORTING SWITCH CLASS DEVICE DRIVERS *
12 *****************************************************************/
13
14****** STEP 1. Basic Functionality
15 No extcon extended feature, but switch features only.
16
17- struct switch_dev (fed to switch_dev_register/unregister)
18 @name: no change
19 @dev: no change
20 @index: drop (not used in switch device driver side anyway)
21 @state: no change
22 If you have used @state with magic numbers, keep it
23 at this step.
24 @print_name: no change but type change (switch_dev->extcon_dev)
25 @print_state: no change but type change (switch_dev->extcon_dev)
26
27- switch_dev_register(sdev, dev)
28 => extcon_dev_register(edev, dev)
29 : no change but type change (sdev->edev)
30- switch_dev_unregister(sdev)
31 => extcon_dev_unregister(edev)
32 : no change but type change (sdev->edev)
33- switch_get_state(sdev)
34 => extcon_get_state(edev)
35 : no change but type change (sdev->edev) and (return: int->u32)
36- switch_set_state(sdev, state)
37 => extcon_set_state(edev, state)
38 : no change but type change (sdev->edev) and (state: int->u32)
39
40With this changes, the ex-switch extcon class device works as it once
41worked as switch class device. However, it will now have additional
42interfaces (both ABI and in-kernel API) and different ABI locations.
43However, if CONFIG_ANDROID is enabled without CONFIG_ANDROID_SWITCH,
44/sys/class/switch/* will be symbolically linked to /sys/class/extcon/
45so that they are still compatible with legacy userspace processes.
46
47****** STEP 2. Multistate (no more magic numbers in state value)
48 Extcon's extended features for switch device drivers with
49 complex features usually required magic numbers in state
50 value of switch_dev. With extcon, such magic numbers that
51 support multiple cables (
52
53 1. Define cable names at edev->supported_cable.
54 2. (Recommended) remove print_state callback.
55 3. Use extcon_get_cable_state_(edev, index) or
56 extcon_get_cable_state(edev, cable_name) instead of
57 extcon_get_state(edev) if you intend to get a state of a specific
58 cable. Same for set_state. This way, you can remove the usage of
59 magic numbers in state value.
60 4. Use extcon_update_state() if you are updating specific bits of
61 the state value.
62
63Example: a switch device driver w/ magic numbers for two cables.
64 "0x00": no cables connected.
65 "0x01": cable 1 connected
66 "0x02": cable 2 connected
67 "0x03": cable 1 and 2 connected
68 1. edev->supported_cable = {"1", "2", NULL};
69 2. edev->print_state = NULL;
70 3. extcon_get_cable_state_(edev, 0) shows cable 1's state.
71 extcon_get_cable_state(edev, "1") shows cable 1's state.
72 extcon_set_cable_state_(edev, 1) sets cable 2's state.
73 extcon_set_cable_state(edev, "2") sets cable 2's state
74 4. extcon_update_state(edev, 0x01, 0) sets the least bit's 0.
75
76****** STEP 3. Notify other device drivers
77
78 You can notify others of the cable attach/detach events with
79notifier chains.
80
81 At the side of other device drivers (the extcon device itself
82does not need to get notified of its own events), there are two
83methods to register notifier_block for cable events:
84(a) for a specific cable or (b) for every cable.
85
86 (a) extcon_register_interest(obj, extcon_name, cable_name, nb)
87 Example: want to get news of "MAX8997_MUIC"'s "USB" cable
88
89 obj = kzalloc(sizeof(struct extcon_specific_cable_nb),
90 GFP_KERNEL);
91 nb->notifier_call = the_callback_to_handle_usb;
92
93 extcon_register_intereset(obj, "MAX8997_MUIC", "USB", nb);
94
95 (b) extcon_register_notifier(edev, nb)
96 Call nb for any changes in edev.
97
98 Please note that in order to properly behave with method (a),
99the extcon device driver should support multistate feature (STEP 2).
100
101****** STEP 4. Inter-cable relation (mutually exclusive)
102
103 You can provide inter-cable mutually exclusiveness information
104for an extcon device. When cables A and B are declared to be mutually
105exclusive, the two cables cannot be in ATTACHED state simulteneously.
106
107
108/*****************************************************************
109 * CHAPTER 2. *
110 * PORTING USERSPACE w/ SWITCH CLASS DEVICE SUPPORT *
111 *****************************************************************/
112
113****** ABI Location
114
115 If "CONFIG_ANDROID" is enabled and "CONFIG_ANDROID_SWITCH" is
116disabled, /sys/class/switch/* are created as symbolic links to
117/sys/class/extcon/*. Because CONFIG_ANDROID_SWITCH creates
118/sys/class/switch directory, we disable symboling linking if
119CONFIG_ANDROID_SWITCH is enabled.
120
121 The two files of switch class, name and state, are provided with
122extcon, too. When the multistate support (STEP 2 of CHAPTER 1.) is
123not enabled or print_state callback is supplied, the output of
124state ABI is same with switch class.
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index e4b57756b9f5..56000b33340b 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -2,7 +2,14 @@ The following is a list of files and features that are going to be
2removed in the kernel source tree. Every entry should contain what 2removed in the kernel source tree. Every entry should contain what
3exactly is going away, why it is happening, and who is going to be doing 3exactly is going away, why it is happening, and who is going to be doing
4the work. When the feature is removed from the kernel, it should also 4the work. When the feature is removed from the kernel, it should also
5be removed from this file. 5be removed from this file. The suggested deprecation period is 3 releases.
6
7---------------------------
8
9What: ddebug_query="query" boot cmdline param
10When: v3.8
11Why: obsoleted by dyndbg="query" and module.dyndbg="query"
12Who: Jim Cromie <jim.cromie@gmail.com>, Jason Baron <jbaron@redhat.com>
6 13
7--------------------------- 14---------------------------
8 15
@@ -534,6 +541,18 @@ Who: Kees Cook <keescook@chromium.org>
534 541
535---------------------------- 542----------------------------
536 543
544What: Removing the pn544 raw driver.
545When: 3.6
546Why: With the introduction of the NFC HCI and SHDL kernel layers, pn544.c
547 is being replaced by pn544_hci.c which is accessible through the netlink
548 and socket NFC APIs. Moreover, pn544.c is outdated and does not seem to
549 work properly with the latest Android stacks.
550 Having 2 drivers for the same hardware is confusing and as such we
551 should only keep the one following the kernel NFC APIs.
552Who: Samuel Ortiz <sameo@linux.intel.com>
553
554----------------------------
555
537What: setitimer accepts user NULL pointer (value) 556What: setitimer accepts user NULL pointer (value)
538When: 3.6 557When: 3.6
539Why: setitimer is not returning -EFAULT if user pointer is NULL. This 558Why: setitimer is not returning -EFAULT if user pointer is NULL. This
@@ -542,6 +561,15 @@ Who: Sasikantha Babu <sasikanth.v19@gmail.com>
542 561
543---------------------------- 562----------------------------
544 563
564What: remove bogus DV presets V4L2_DV_1080I29_97, V4L2_DV_1080I30 and
565 V4L2_DV_1080I25
566When: 3.6
567Why: These HDTV formats do not exist and were added by a confused mind
568 (that was me, to be precise...)
569Who: Hans Verkuil <hans.verkuil@cisco.com>
570
571----------------------------
572
545What: V4L2_CID_HCENTER, V4L2_CID_VCENTER V4L2 controls 573What: V4L2_CID_HCENTER, V4L2_CID_VCENTER V4L2 controls
546When: 3.7 574When: 3.7
547Why: The V4L2_CID_VCENTER, V4L2_CID_HCENTER controls have been deprecated 575Why: The V4L2_CID_VCENTER, V4L2_CID_HCENTER controls have been deprecated
@@ -549,3 +577,38 @@ Why: The V4L2_CID_VCENTER, V4L2_CID_HCENTER controls have been deprecated
549 There are newer controls (V4L2_CID_PAN*, V4L2_CID_TILT*) that provide 577 There are newer controls (V4L2_CID_PAN*, V4L2_CID_TILT*) that provide
550 similar functionality. 578 similar functionality.
551Who: Sylwester Nawrocki <sylvester.nawrocki@gmail.com> 579Who: Sylwester Nawrocki <sylvester.nawrocki@gmail.com>
580
581----------------------------
582
583What: cgroup option updates via remount
584When: March 2013
585Why: Remount currently allows changing bound subsystems and
586 release_agent. Rebinding is hardly useful as it only works
587 when the hierarchy is empty and release_agent itself should be
588 replaced with conventional fsnotify.
589
590----------------------------
591
592What: KVM debugfs statistics
593When: 2013
594Why: KVM tracepoints provide mostly equivalent information in a much more
595 flexible fashion.
596
597----------------------------
598
599What: at91-mci driver ("CONFIG_MMC_AT91")
600When: 3.7
601Why: There are two mci drivers: at91-mci and atmel-mci. The PDC support
602 was added to atmel-mci as a first step to support more chips.
603 Then at91-mci was kept only for old IP versions (on at91rm9200 and
604 at91sam9261). The support of these IP versions has just been added
605 to atmel-mci, so atmel-mci can be used for all chips.
606Who: Ludovic Desroches <ludovic.desroches@atmel.com>
607
608----------------------------
609
610What: net/wanrouter/
611When: June 2013
612Why: Unsupported/unmaintained/unused since 2.6
613
614----------------------------
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking
index 4fca82e5276e..8e2da1e06e3b 100644
--- a/Documentation/filesystems/Locking
+++ b/Documentation/filesystems/Locking
@@ -60,8 +60,8 @@ ata *);
60 ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t); 60 ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t);
61 ssize_t (*listxattr) (struct dentry *, char *, size_t); 61 ssize_t (*listxattr) (struct dentry *, char *, size_t);
62 int (*removexattr) (struct dentry *, const char *); 62 int (*removexattr) (struct dentry *, const char *);
63 void (*truncate_range)(struct inode *, loff_t, loff_t);
64 int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len); 63 int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len);
64 void (*update_time)(struct inode *, struct timespec *, int);
65 65
66locking rules: 66locking rules:
67 all may block 67 all may block
@@ -87,8 +87,9 @@ setxattr: yes
87getxattr: no 87getxattr: no
88listxattr: no 88listxattr: no
89removexattr: yes 89removexattr: yes
90truncate_range: yes
91fiemap: no 90fiemap: no
91update_time: no
92
92 Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on 93 Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on
93victim. 94victim.
94 cross-directory ->rename() has (per-superblock) ->s_vfs_rename_sem. 95 cross-directory ->rename() has (per-superblock) ->s_vfs_rename_sem.
diff --git a/Documentation/filesystems/ext3.txt b/Documentation/filesystems/ext3.txt
index b100adc38adb..293855e95000 100644
--- a/Documentation/filesystems/ext3.txt
+++ b/Documentation/filesystems/ext3.txt
@@ -59,9 +59,9 @@ commit=nrsec (*) Ext3 can be told to sync all its data and metadata
59 Setting it to very large values will improve 59 Setting it to very large values will improve
60 performance. 60 performance.
61 61
62barrier=<0(*)|1> This enables/disables the use of write barriers in 62barrier=<0|1(*)> This enables/disables the use of write barriers in
63barrier the jbd code. barrier=0 disables, barrier=1 enables. 63barrier (*) the jbd code. barrier=0 disables, barrier=1 enables.
64nobarrier (*) This also requires an IO stack which can support 64nobarrier This also requires an IO stack which can support
65 barriers, and if jbd gets an error on a barrier 65 barriers, and if jbd gets an error on a barrier
66 write, it will disable again with a warning. 66 write, it will disable again with a warning.
67 Write barriers enforce proper on-disk ordering 67 Write barriers enforce proper on-disk ordering
diff --git a/Documentation/filesystems/gfs2-glocks.txt b/Documentation/filesystems/gfs2-glocks.txt
index 0494f78d87e4..fcc79957be63 100644
--- a/Documentation/filesystems/gfs2-glocks.txt
+++ b/Documentation/filesystems/gfs2-glocks.txt
@@ -61,7 +61,9 @@ go_unlock | Called on the final local unlock of a lock
61go_dump | Called to print content of object for debugfs file, or on 61go_dump | Called to print content of object for debugfs file, or on
62 | error to dump glock to the log. 62 | error to dump glock to the log.
63go_type | The type of the glock, LM_TYPE_..... 63go_type | The type of the glock, LM_TYPE_.....
64go_min_hold_time | The minimum hold time 64go_callback | Called if the DLM sends a callback to drop this lock
65go_flags | GLOF_ASPACE is set, if the glock has an address space
66 | associated with it
65 67
66The minimum hold time for each lock is the time after a remote lock 68The minimum hold time for each lock is the time after a remote lock
67grant for which we ignore remote demote requests. This is in order to 69grant for which we ignore remote demote requests. This is in order to
@@ -89,6 +91,7 @@ go_demote_ok | Sometimes | Yes
89go_lock | Yes | No 91go_lock | Yes | No
90go_unlock | Yes | No 92go_unlock | Yes | No
91go_dump | Sometimes | Yes 93go_dump | Sometimes | Yes
94go_callback | Sometimes (N/A) | Yes
92 95
93N.B. Operations must not drop either the bit lock or the spinlock 96N.B. Operations must not drop either the bit lock or the spinlock
94if its held on entry. go_dump and do_demote_ok must never block. 97if its held on entry. go_dump and do_demote_ok must never block.
@@ -111,4 +114,118 @@ itself (locking order as above), and the other, known as the iopen
111glock is used in conjunction with the i_nlink field in the inode to 114glock is used in conjunction with the i_nlink field in the inode to
112determine the lifetime of the inode in question. Locking of inodes 115determine the lifetime of the inode in question. Locking of inodes
113is on a per-inode basis. Locking of rgrps is on a per rgrp basis. 116is on a per-inode basis. Locking of rgrps is on a per rgrp basis.
117In general we prefer to lock local locks prior to cluster locks.
118
119 Glock Statistics
120 ------------------
121
122The stats are divided into two sets: those relating to the
123super block and those relating to an individual glock. The
124super block stats are done on a per cpu basis in order to
125try and reduce the overhead of gathering them. They are also
126further divided by glock type. All timings are in nanoseconds.
127
128In the case of both the super block and glock statistics,
129the same information is gathered in each case. The super
130block timing statistics are used to provide default values for
131the glock timing statistics, so that newly created glocks
132should have, as far as possible, a sensible starting point.
133The per-glock counters are initialised to zero when the
134glock is created. The per-glock statistics are lost when
135the glock is ejected from memory.
136
137The statistics are divided into three pairs of mean and
138variance, plus two counters. The mean/variance pairs are
139smoothed exponential estimates and the algorithm used is
140one which will be very familiar to those used to calculation
141of round trip times in network code. See "TCP/IP Illustrated,
142Volume 1", W. Richard Stevens, sect 21.3, "Round-Trip Time Measurement",
143p. 299 and onwards. Also, Volume 2, Sect. 25.10, p. 838 and onwards.
144Unlike the TCP/IP Illustrated case, the mean and variance are
145not scaled, but are in units of integer nanoseconds.
146
147The three pairs of mean/variance measure the following
148things:
149
150 1. DLM lock time (non-blocking requests)
151 2. DLM lock time (blocking requests)
152 3. Inter-request time (again to the DLM)
153
154A non-blocking request is one which will complete right
155away, whatever the state of the DLM lock in question. That
156currently means any requests when (a) the current state of
157the lock is exclusive, i.e. a lock demotion (b) the requested
158state is either null or unlocked (again, a demotion) or (c) the
159"try lock" flag is set. A blocking request covers all the other
160lock requests.
161
162There are two counters. The first is there primarily to show
163how many lock requests have been made, and thus how much data
164has gone into the mean/variance calculations. The other counter
165is counting queuing of holders at the top layer of the glock
166code. Hopefully that number will be a lot larger than the number
167of dlm lock requests issued.
168
169So why gather these statistics? There are several reasons
170we'd like to get a better idea of these timings:
171
1721. To be able to better set the glock "min hold time"
1732. To spot performance issues more easily
1743. To improve the algorithm for selecting resource groups for
175allocation (to base it on lock wait time, rather than blindly
176using a "try lock")
177
178Due to the smoothing action of the updates, a step change in
179some input quantity being sampled will only fully be taken
180into account after 8 samples (or 4 for the variance) and this
181needs to be carefully considered when interpreting the
182results.
183
184Knowing both the time it takes a lock request to complete and
185the average time between lock requests for a glock means we
186can compute the total percentage of the time for which the
187node is able to use a glock vs. time that the rest of the
188cluster has its share. That will be very useful when setting
189the lock min hold time.
190
191Great care has been taken to ensure that we
192measure exactly the quantities that we want, as accurately
193as possible. There are always inaccuracies in any
194measuring system, but I hope this is as accurate as we
195can reasonably make it.
196
197Per sb stats can be found here:
198/sys/kernel/debug/gfs2/<fsname>/sbstats
199Per glock stats can be found here:
200/sys/kernel/debug/gfs2/<fsname>/glstats
201
202Assuming that debugfs is mounted on /sys/kernel/debug and also
203that <fsname> is replaced with the name of the gfs2 filesystem
204in question.
205
206The abbreviations used in the output as are follows:
207
208srtt - Smoothed round trip time for non-blocking dlm requests
209srttvar - Variance estimate for srtt
210srttb - Smoothed round trip time for (potentially) blocking dlm requests
211srttvarb - Variance estimate for srttb
212sirt - Smoothed inter-request time (for dlm requests)
213sirtvar - Variance estimate for sirt
214dlm - Number of dlm requests made (dcnt in glstats file)
215queue - Number of glock requests queued (qcnt in glstats file)
216
217The sbstats file contains a set of these stats for each glock type (so 8 lines
218for each type) and for each cpu (one column per cpu). The glstats file contains
219a set of these stats for each glock in a similar format to the glocks file, but
220using the format mean/variance for each of the timing stats.
221
222The gfs2_glock_lock_time tracepoint prints out the current values of the stats
223for the glock in question, along with some addition information on each dlm
224reply that is received:
225
226status - The status of the dlm request
227flags - The dlm request flags
228tdiff - The time taken by this specific request
229(remaining fields as per above list)
230
114 231
diff --git a/Documentation/filesystems/gfs2.txt b/Documentation/filesystems/gfs2.txt
index 4cda926628aa..cc4f2306609e 100644
--- a/Documentation/filesystems/gfs2.txt
+++ b/Documentation/filesystems/gfs2.txt
@@ -1,7 +1,7 @@
1Global File System 1Global File System
2------------------ 2------------------
3 3
4http://sources.redhat.com/cluster/wiki/ 4https://fedorahosted.org/cluster/wiki/HomePage
5 5
6GFS is a cluster file system. It allows a cluster of computers to 6GFS is a cluster file system. It allows a cluster of computers to
7simultaneously use a block device that is shared between them (with FC, 7simultaneously use a block device that is shared between them (with FC,
@@ -30,7 +30,8 @@ needed, simply:
30 30
31If you are using Fedora, you need to install the gfs2-utils package 31If you are using Fedora, you need to install the gfs2-utils package
32and, for lock_dlm, you will also need to install the cman package 32and, for lock_dlm, you will also need to install the cman package
33and write a cluster.conf as per the documentation. 33and write a cluster.conf as per the documentation. For F17 and above
34cman has been replaced by the dlm package.
34 35
35GFS2 is not on-disk compatible with previous versions of GFS, but it 36GFS2 is not on-disk compatible with previous versions of GFS, but it
36is pretty close. 37is pretty close.
@@ -39,8 +40,6 @@ The following man pages can be found at the URL above:
39 fsck.gfs2 to repair a filesystem 40 fsck.gfs2 to repair a filesystem
40 gfs2_grow to expand a filesystem online 41 gfs2_grow to expand a filesystem online
41 gfs2_jadd to add journals to a filesystem online 42 gfs2_jadd to add journals to a filesystem online
42 gfs2_tool to manipulate, examine and tune a filesystem 43 tunegfs2 to manipulate, examine and tune a filesystem
43 gfs2_quota to examine and change quota values in a filesystem
44 gfs2_convert to convert a gfs filesystem to gfs2 in-place 44 gfs2_convert to convert a gfs filesystem to gfs2 in-place
45 mount.gfs2 to help mount(8) mount a filesystem
46 mkfs.gfs2 to make a filesystem 45 mkfs.gfs2 to make a filesystem
diff --git a/Documentation/filesystems/nfs/pnfs.txt b/Documentation/filesystems/nfs/pnfs.txt
index c7919c6e3bea..52ae07f5f578 100644
--- a/Documentation/filesystems/nfs/pnfs.txt
+++ b/Documentation/filesystems/nfs/pnfs.txt
@@ -93,7 +93,7 @@ The API to the login script is as follows:
93 (allways exists) 93 (allways exists)
94 (More protocols can be defined in the future. 94 (More protocols can be defined in the future.
95 The client does not interpret this string it is 95 The client does not interpret this string it is
96 passed unchanged as recieved from the Server) 96 passed unchanged as received from the Server)
97 -o osdname of the requested target OSD 97 -o osdname of the requested target OSD
98 (Might be empty) 98 (Might be empty)
99 (A string which denotes the OSD name, there is a 99 (A string which denotes the OSD name, there is a
diff --git a/Documentation/filesystems/porting b/Documentation/filesystems/porting
index 74acd9618819..8c91d1057d9a 100644
--- a/Documentation/filesystems/porting
+++ b/Documentation/filesystems/porting
@@ -297,7 +297,8 @@ in the beginning of ->setattr unconditionally.
297be used instead. It gets called whenever the inode is evicted, whether it has 297be used instead. It gets called whenever the inode is evicted, whether it has
298remaining links or not. Caller does *not* evict the pagecache or inode-associated 298remaining links or not. Caller does *not* evict the pagecache or inode-associated
299metadata buffers; getting rid of those is responsibility of method, as it had 299metadata buffers; getting rid of those is responsibility of method, as it had
300been for ->delete_inode(). 300been for ->delete_inode(). Caller makes sure async writeback cannot be running
301for the inode while (or after) ->evict_inode() is called.
301 302
302 ->drop_inode() returns int now; it's called on final iput() with 303 ->drop_inode() returns int now; it's called on final iput() with
303inode->i_lock held and it returns true if filesystems wants the inode to be 304inode->i_lock held and it returns true if filesystems wants the inode to be
@@ -306,14 +307,11 @@ updated appropriately. generic_delete_inode() is also alive and it consists
306simply of return 1. Note that all actual eviction work is done by caller after 307simply of return 1. Note that all actual eviction work is done by caller after
307->drop_inode() returns. 308->drop_inode() returns.
308 309
309 clear_inode() is gone; use end_writeback() instead. As before, it must 310 As before, clear_inode() must be called exactly once on each call of
310be called exactly once on each call of ->evict_inode() (as it used to be for 311->evict_inode() (as it used to be for each call of ->delete_inode()). Unlike
311each call of ->delete_inode()). Unlike before, if you are using inode-associated 312before, if you are using inode-associated metadata buffers (i.e.
312metadata buffers (i.e. mark_buffer_dirty_inode()), it's your responsibility to 313mark_buffer_dirty_inode()), it's your responsibility to call
313call invalidate_inode_buffers() before end_writeback(). 314invalidate_inode_buffers() before clear_inode().
314 No async writeback (and thus no calls of ->write_inode()) will happen
315after end_writeback() returns, so actions that should not overlap with ->write_inode()
316(e.g. freeing on-disk inode if i_nlink is 0) ought to be done after that call.
317 315
318 NOTE: checking i_nlink in the beginning of ->write_inode() and bailing out 316 NOTE: checking i_nlink in the beginning of ->write_inode() and bailing out
319if it's zero is not *and* *never* *had* *been* enough. Final unlink() and iput() 317if it's zero is not *and* *never* *had* *been* enough. Final unlink() and iput()
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt
index b7413cb46dcb..fb0a6aeb936c 100644
--- a/Documentation/filesystems/proc.txt
+++ b/Documentation/filesystems/proc.txt
@@ -40,6 +40,7 @@ Table of Contents
40 3.4 /proc/<pid>/coredump_filter - Core dump filtering settings 40 3.4 /proc/<pid>/coredump_filter - Core dump filtering settings
41 3.5 /proc/<pid>/mountinfo - Information about mounts 41 3.5 /proc/<pid>/mountinfo - Information about mounts
42 3.6 /proc/<pid>/comm & /proc/<pid>/task/<tid>/comm 42 3.6 /proc/<pid>/comm & /proc/<pid>/task/<tid>/comm
43 3.7 /proc/<pid>/task/<tid>/children - Information about task children
43 44
44 4 Configuring procfs 45 4 Configuring procfs
45 4.1 Mount options 46 4.1 Mount options
@@ -310,6 +311,11 @@ Table 1-4: Contents of the stat files (as of 2.6.30-rc7)
310 start_data address above which program data+bss is placed 311 start_data address above which program data+bss is placed
311 end_data address below which program data+bss is placed 312 end_data address below which program data+bss is placed
312 start_brk address above which program heap can be expanded with brk() 313 start_brk address above which program heap can be expanded with brk()
314 arg_start address above which program command line is placed
315 arg_end address below which program command line is placed
316 env_start address above which program environment is placed
317 env_end address below which program environment is placed
318 exit_code the thread's exit_code in the form reported by the waitpid system call
313.............................................................................. 319..............................................................................
314 320
315The /proc/PID/maps file containing the currently mapped memory regions and 321The /proc/PID/maps file containing the currently mapped memory regions and
@@ -743,6 +749,7 @@ Committed_AS: 100056 kB
743VmallocTotal: 112216 kB 749VmallocTotal: 112216 kB
744VmallocUsed: 428 kB 750VmallocUsed: 428 kB
745VmallocChunk: 111088 kB 751VmallocChunk: 111088 kB
752AnonHugePages: 49152 kB
746 753
747 MemTotal: Total usable ram (i.e. physical ram minus a few reserved 754 MemTotal: Total usable ram (i.e. physical ram minus a few reserved
748 bits and the kernel binary code) 755 bits and the kernel binary code)
@@ -776,6 +783,7 @@ VmallocChunk: 111088 kB
776 Dirty: Memory which is waiting to get written back to the disk 783 Dirty: Memory which is waiting to get written back to the disk
777 Writeback: Memory which is actively being written back to the disk 784 Writeback: Memory which is actively being written back to the disk
778 AnonPages: Non-file backed pages mapped into userspace page tables 785 AnonPages: Non-file backed pages mapped into userspace page tables
786AnonHugePages: Non-file backed huge pages mapped into userspace page tables
779 Mapped: files which have been mmaped, such as libraries 787 Mapped: files which have been mmaped, such as libraries
780 Slab: in-kernel data structures cache 788 Slab: in-kernel data structures cache
781SReclaimable: Part of Slab, that might be reclaimed, such as caches 789SReclaimable: Part of Slab, that might be reclaimed, such as caches
@@ -996,7 +1004,6 @@ Table 1-9: Network info in /proc/net
996 snmp SNMP data 1004 snmp SNMP data
997 sockstat Socket statistics 1005 sockstat Socket statistics
998 tcp TCP sockets 1006 tcp TCP sockets
999 tr_rif Token ring RIF routing table
1000 udp UDP sockets 1007 udp UDP sockets
1001 unix UNIX domain sockets 1008 unix UNIX domain sockets
1002 wireless Wireless interface data (Wavelan etc) 1009 wireless Wireless interface data (Wavelan etc)
@@ -1577,6 +1584,23 @@ then the kernel's TASK_COMM_LEN (currently 16 chars) will result in a truncated
1577comm value. 1584comm value.
1578 1585
1579 1586
15873.7 /proc/<pid>/task/<tid>/children - Information about task children
1588-------------------------------------------------------------------------
1589This file provides a fast way to retrieve first level children pids
1590of a task pointed by <pid>/<tid> pair. The format is a space separated
1591stream of pids.
1592
1593Note the "first level" here -- if a child has own children they will
1594not be listed here, one needs to read /proc/<children-pid>/task/<tid>/children
1595to obtain the descendants.
1596
1597Since this interface is intended to be fast and cheap it doesn't
1598guarantee to provide precise results and some children might be
1599skipped, especially if they've exited right after we printed their
1600pids, so one need to either stop or freeze processes being inspected
1601if precise results are needed.
1602
1603
1580------------------------------------------------------------------------------ 1604------------------------------------------------------------------------------
1581Configuring procfs 1605Configuring procfs
1582------------------------------------------------------------------------------ 1606------------------------------------------------------------------------------
diff --git a/Documentation/filesystems/qnx6.txt b/Documentation/filesystems/qnx6.txt
index 050223ea03c7..e59f2f09f56e 100644
--- a/Documentation/filesystems/qnx6.txt
+++ b/Documentation/filesystems/qnx6.txt
@@ -17,7 +17,7 @@ concepts of blocks, inodes and directories.
17On QNX it is possible to create little endian and big endian qnx6 filesystems. 17On QNX it is possible to create little endian and big endian qnx6 filesystems.
18This feature makes it possible to create and use a different endianness fs 18This feature makes it possible to create and use a different endianness fs
19for the target (QNX is used on quite a range of embedded systems) plattform 19for the target (QNX is used on quite a range of embedded systems) plattform
20running on a different endianess. 20running on a different endianness.
21The Linux driver handles endianness transparently. (LE and BE) 21The Linux driver handles endianness transparently. (LE and BE)
22 22
23Blocks 23Blocks
@@ -26,7 +26,7 @@ Blocks
26The space in the device or file is split up into blocks. These are a fixed 26The space in the device or file is split up into blocks. These are a fixed
27size of 512, 1024, 2048 or 4096, which is decided when the filesystem is 27size of 512, 1024, 2048 or 4096, which is decided when the filesystem is
28created. 28created.
29Blockpointers are 32bit, so the maximum space that can be adressed is 29Blockpointers are 32bit, so the maximum space that can be addressed is
302^32 * 4096 bytes or 16TB 302^32 * 4096 bytes or 16TB
31 31
32The superblocks 32The superblocks
@@ -47,16 +47,16 @@ inactive superblock.
47Each superblock holds a set of root inodes for the different filesystem 47Each superblock holds a set of root inodes for the different filesystem
48parts. (Inode, Bitmap and Longfilenames) 48parts. (Inode, Bitmap and Longfilenames)
49Each of these root nodes holds information like total size of the stored 49Each of these root nodes holds information like total size of the stored
50data and the adressing levels in that specific tree. 50data and the addressing levels in that specific tree.
51If the level value is 0, up to 16 direct blocks can be adressed by each 51If the level value is 0, up to 16 direct blocks can be addressed by each
52node. 52node.
53Level 1 adds an additional indirect adressing level where each indirect 53Level 1 adds an additional indirect addressing level where each indirect
54adressing block holds up to blocksize / 4 bytes pointers to data blocks. 54addressing block holds up to blocksize / 4 bytes pointers to data blocks.
55Level 2 adds an additional indirect adressig block level (so, already up 55Level 2 adds an additional indirect addressing block level (so, already up
56to 16 * 256 * 256 = 1048576 blocks that can be adressed by such a tree)a 56to 16 * 256 * 256 = 1048576 blocks that can be addressed by such a tree).
57 57
58Unused block pointers are always set to ~0 - regardless of root node, 58Unused block pointers are always set to ~0 - regardless of root node,
59indirect adressing blocks or inodes. 59indirect addressing blocks or inodes.
60Data leaves are always on the lowest level. So no data is stored on upper 60Data leaves are always on the lowest level. So no data is stored on upper
61tree levels. 61tree levels.
62 62
@@ -64,7 +64,7 @@ The first Superblock is located at 0x2000. (0x2000 is the bootblock size)
64The Audi MMI 3G first superblock directly starts at byte 0. 64The Audi MMI 3G first superblock directly starts at byte 0.
65Second superblock position can either be calculated from the superblock 65Second superblock position can either be calculated from the superblock
66information (total number of filesystem blocks) or by taking the highest 66information (total number of filesystem blocks) or by taking the highest
67device address, zeroing the last 3 bytes and then substracting 0x1000 from 67device address, zeroing the last 3 bytes and then subtracting 0x1000 from
68that address. 68that address.
69 69
700x1000 is the size reserved for each superblock - regardless of the 700x1000 is the size reserved for each superblock - regardless of the
@@ -83,8 +83,8 @@ size, number of blocks used, access time, change time and modification time.
83Object mode field is POSIX format. (which makes things easier) 83Object mode field is POSIX format. (which makes things easier)
84 84
85There are also pointers to the first 16 blocks, if the object data can be 85There are also pointers to the first 16 blocks, if the object data can be
86adressed with 16 direct blocks. 86addressed with 16 direct blocks.
87For more than 16 blocks an indirect adressing in form of another tree is 87For more than 16 blocks an indirect addressing in form of another tree is
88used. (scheme is the same as the one used for the superblock root nodes) 88used. (scheme is the same as the one used for the superblock root nodes)
89 89
90The filesize is stored 64bit. Inode counting starts with 1. (whilst long 90The filesize is stored 64bit. Inode counting starts with 1. (whilst long
@@ -118,13 +118,13 @@ no block pointers and the directory file record pointing to the target file
118inode. 118inode.
119 119
120Character and block special devices do not exist in QNX as those files 120Character and block special devices do not exist in QNX as those files
121are handled by the QNX kernel/drivers and created in /dev independant of the 121are handled by the QNX kernel/drivers and created in /dev independent of the
122underlaying filesystem. 122underlaying filesystem.
123 123
124Long filenames 124Long filenames
125-------------- 125--------------
126 126
127Long filenames are stored in a seperate adressing tree. The staring point 127Long filenames are stored in a separate addressing tree. The staring point
128is the longfilename root node in the active superblock. 128is the longfilename root node in the active superblock.
129Each data block (tree leaves) holds one long filename. That filename is 129Each data block (tree leaves) holds one long filename. That filename is
130limited to 510 bytes. The first two starting bytes are used as length field 130limited to 510 bytes. The first two starting bytes are used as length field
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt
index 0d0492028082..efd23f481704 100644
--- a/Documentation/filesystems/vfs.txt
+++ b/Documentation/filesystems/vfs.txt
@@ -363,7 +363,7 @@ struct inode_operations {
363 ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t); 363 ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t);
364 ssize_t (*listxattr) (struct dentry *, char *, size_t); 364 ssize_t (*listxattr) (struct dentry *, char *, size_t);
365 int (*removexattr) (struct dentry *, const char *); 365 int (*removexattr) (struct dentry *, const char *);
366 void (*truncate_range)(struct inode *, loff_t, loff_t); 366 void (*update_time)(struct inode *, struct timespec *, int);
367}; 367};
368 368
369Again, all methods are called without any locks being held, unless 369Again, all methods are called without any locks being held, unless
@@ -472,9 +472,9 @@ otherwise noted.
472 removexattr: called by the VFS to remove an extended attribute from 472 removexattr: called by the VFS to remove an extended attribute from
473 a file. This method is called by removexattr(2) system call. 473 a file. This method is called by removexattr(2) system call.
474 474
475 truncate_range: a method provided by the underlying filesystem to truncate a 475 update_time: called by the VFS to update a specific time or the i_version of
476 range of blocks , i.e. punch a hole somewhere in a file. 476 an inode. If this is not defined the VFS will update the inode itself
477 477 and call mark_inode_dirty_sync.
478 478
479The Address Space Object 479The Address Space Object
480======================== 480========================
@@ -760,7 +760,7 @@ struct file_operations
760---------------------- 760----------------------
761 761
762This describes how the VFS can manipulate an open file. As of kernel 762This describes how the VFS can manipulate an open file. As of kernel
7632.6.22, the following members are defined: 7633.5, the following members are defined:
764 764
765struct file_operations { 765struct file_operations {
766 struct module *owner; 766 struct module *owner;
@@ -790,6 +790,8 @@ struct file_operations {
790 int (*flock) (struct file *, int, struct file_lock *); 790 int (*flock) (struct file *, int, struct file_lock *);
791 ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, size_t, unsigned int); 791 ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, size_t, unsigned int);
792 ssize_t (*splice_read)(struct file *, struct pipe_inode_info *, size_t, unsigned int); 792 ssize_t (*splice_read)(struct file *, struct pipe_inode_info *, size_t, unsigned int);
793 int (*setlease)(struct file *, long arg, struct file_lock **);
794 long (*fallocate)(struct file *, int mode, loff_t offset, loff_t len);
793}; 795};
794 796
795Again, all methods are called without any locks being held, unless 797Again, all methods are called without any locks being held, unless
@@ -858,6 +860,11 @@ otherwise noted.
858 splice_read: called by the VFS to splice data from file to a pipe. This 860 splice_read: called by the VFS to splice data from file to a pipe. This
859 method is used by the splice(2) system call 861 method is used by the splice(2) system call
860 862
863 setlease: called by the VFS to set or release a file lock lease.
864 setlease has the file_lock_lock held and must not sleep.
865
866 fallocate: called by the VFS to preallocate blocks or punch a hole.
867
861Note that the file operations are implemented by the specific 868Note that the file operations are implemented by the specific
862filesystem in which the inode resides. When opening a device node 869filesystem in which the inode resides. When opening a device node
863(character or block special) most filesystems will call special 870(character or block special) most filesystems will call special
diff --git a/Documentation/gpio.txt b/Documentation/gpio.txt
index 620a07844e8c..e08a883de36e 100644
--- a/Documentation/gpio.txt
+++ b/Documentation/gpio.txt
@@ -322,6 +322,9 @@ where 'flags' is currently defined to specify the following properties:
322 * GPIOF_OPEN_DRAIN - gpio pin is open drain type. 322 * GPIOF_OPEN_DRAIN - gpio pin is open drain type.
323 * GPIOF_OPEN_SOURCE - gpio pin is open source type. 323 * GPIOF_OPEN_SOURCE - gpio pin is open source type.
324 324
325 * GPIOF_EXPORT_DIR_FIXED - export gpio to sysfs, keep direction
326 * GPIOF_EXPORT_DIR_CHANGEABLE - also export, allow changing direction
327
325since GPIOF_INIT_* are only valid when configured as output, so group valid 328since GPIOF_INIT_* are only valid when configured as output, so group valid
326combinations as: 329combinations as:
327 330
diff --git a/Documentation/hwmon/coretemp b/Documentation/hwmon/coretemp
index 84d46c0c71a3..c86b50c03ea8 100644
--- a/Documentation/hwmon/coretemp
+++ b/Documentation/hwmon/coretemp
@@ -6,7 +6,9 @@ Supported chips:
6 Prefix: 'coretemp' 6 Prefix: 'coretemp'
7 CPUID: family 0x6, models 0xe (Pentium M DC), 0xf (Core 2 DC 65nm), 7 CPUID: family 0x6, models 0xe (Pentium M DC), 0xf (Core 2 DC 65nm),
8 0x16 (Core 2 SC 65nm), 0x17 (Penryn 45nm), 8 0x16 (Core 2 SC 65nm), 0x17 (Penryn 45nm),
9 0x1a (Nehalem), 0x1c (Atom), 0x1e (Lynnfield) 9 0x1a (Nehalem), 0x1c (Atom), 0x1e (Lynnfield),
10 0x26 (Tunnel Creek Atom), 0x27 (Medfield Atom),
11 0x36 (Cedar Trail Atom)
10 Datasheet: Intel 64 and IA-32 Architectures Software Developer's Manual 12 Datasheet: Intel 64 and IA-32 Architectures Software Developer's Manual
11 Volume 3A: System Programming Guide 13 Volume 3A: System Programming Guide
12 http://softwarecommunity.intel.com/Wiki/Mobility/720.htm 14 http://softwarecommunity.intel.com/Wiki/Mobility/720.htm
@@ -52,6 +54,17 @@ Some information comes from ark.intel.com
52 54
53Process Processor TjMax(C) 55Process Processor TjMax(C)
54 56
5722nm Core i5/i7 Processors
58 i7 3920XM, 3820QM, 3720QM, 3667U, 3520M 105
59 i5 3427U, 3360M/3320M 105
60 i7 3770/3770K 105
61 i5 3570/3570K, 3550, 3470/3450 105
62 i7 3770S 103
63 i5 3570S/3550S, 3475S/3470S/3450S 103
64 i7 3770T 94
65 i5 3570T 94
66 i5 3470T 91
67
5532nm Core i3/i5/i7 Processors 6832nm Core i3/i5/i7 Processors
56 i7 660UM/640/620, 640LM/620, 620M, 610E 105 69 i7 660UM/640/620, 640LM/620, 620M, 610E 105
57 i5 540UM/520/430, 540M/520/450/430 105 70 i5 540UM/520/430, 540M/520/450/430 105
@@ -65,6 +78,11 @@ Process Processor TjMax(C)
65 U3400 105 78 U3400 105
66 P4505/P4500 90 79 P4505/P4500 90
67 80
8132nm Atom Processors
82 Z2460 90
83 D2700/2550/2500 100
84 N2850/2800/2650/2600 100
85
6845nm Xeon Processors 5400 Quad-Core 8645nm Xeon Processors 5400 Quad-Core
69 X5492, X5482, X5472, X5470, X5460, X5450 85 87 X5492, X5482, X5472, X5470, X5460, X5450 85
70 E5472, E5462, E5450/40/30/20/10/05 85 88 E5472, E5462, E5450/40/30/20/10/05 85
@@ -85,6 +103,8 @@ Process Processor TjMax(C)
85 N475/470/455/450 100 103 N475/470/455/450 100
86 N280/270 90 104 N280/270 90
87 330/230 125 105 330/230 125
106 E680/660/640/620 90
107 E680T/660T/640T/620T 110
88 108
8945nm Core2 Processors 10945nm Core2 Processors
90 Solo ULV SU3500/3300 100 110 Solo ULV SU3500/3300 100
diff --git a/Documentation/hwmon/ina2xx b/Documentation/hwmon/ina2xx
new file mode 100644
index 000000000000..f50a6cc27616
--- /dev/null
+++ b/Documentation/hwmon/ina2xx
@@ -0,0 +1,29 @@
1Kernel driver ina2xx
2====================
3
4Supported chips:
5 * Texas Instruments INA219
6 Prefix: 'ina219'
7 Addresses: I2C 0x40 - 0x4f
8 Datasheet: Publicly available at the Texas Instruments website
9 http://www.ti.com/
10
11 * Texas Instruments INA226
12 Prefix: 'ina226'
13 Addresses: I2C 0x40 - 0x4f
14 Datasheet: Publicly available at the Texas Instruments website
15 http://www.ti.com/
16
17Author: Lothar Felten <l-felten@ti.com>
18
19Description
20-----------
21
22The INA219 is a high-side current shunt and power monitor with an I2C
23interface. The INA219 monitors both shunt drop and supply voltage, with
24programmable conversion times and filtering.
25
26The INA226 is a current shunt and power monitor with an I2C interface.
27The INA226 monitors both a shunt voltage drop and bus supply voltage.
28
29The shunt value in micro-ohms can be set via platform data.
diff --git a/Documentation/hwmon/it87 b/Documentation/hwmon/it87
index 23b7def21ba8..87850d86c559 100644
--- a/Documentation/hwmon/it87
+++ b/Documentation/hwmon/it87
@@ -30,6 +30,14 @@ Supported chips:
30 Prefix: 'it8728' 30 Prefix: 'it8728'
31 Addresses scanned: from Super I/O config space (8 I/O ports) 31 Addresses scanned: from Super I/O config space (8 I/O ports)
32 Datasheet: Not publicly available 32 Datasheet: Not publicly available
33 * IT8782F
34 Prefix: 'it8782'
35 Addresses scanned: from Super I/O config space (8 I/O ports)
36 Datasheet: Not publicly available
37 * IT8783E/F
38 Prefix: 'it8783'
39 Addresses scanned: from Super I/O config space (8 I/O ports)
40 Datasheet: Not publicly available
33 * SiS950 [clone of IT8705F] 41 * SiS950 [clone of IT8705F]
34 Prefix: 'it87' 42 Prefix: 'it87'
35 Addresses scanned: from Super I/O config space (8 I/O ports) 43 Addresses scanned: from Super I/O config space (8 I/O ports)
@@ -63,7 +71,7 @@ Module Parameters
63Hardware Interfaces 71Hardware Interfaces
64------------------- 72-------------------
65 73
66All the chips suported by this driver are LPC Super-I/O chips, accessed 74All the chips supported by this driver are LPC Super-I/O chips, accessed
67through the LPC bus (ISA-like I/O ports). The IT8712F additionally has an 75through the LPC bus (ISA-like I/O ports). The IT8712F additionally has an
68SMBus interface to the hardware monitoring functions. This driver no 76SMBus interface to the hardware monitoring functions. This driver no
69longer supports this interface though, as it is slower and less reliable 77longer supports this interface though, as it is slower and less reliable
@@ -75,7 +83,8 @@ Description
75----------- 83-----------
76 84
77This driver implements support for the IT8705F, IT8712F, IT8716F, 85This driver implements support for the IT8705F, IT8712F, IT8716F,
78IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E and SiS950 chips. 86IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E, IT8781F, IT8782F,
87IT8783E/F, and SiS950 chips.
79 88
80These chips are 'Super I/O chips', supporting floppy disks, infrared ports, 89These chips are 'Super I/O chips', supporting floppy disks, infrared ports,
81joysticks and other miscellaneous stuff. For hardware monitoring, they 90joysticks and other miscellaneous stuff. For hardware monitoring, they
@@ -99,11 +108,11 @@ The IT8716F, IT8718F, IT8720F, IT8721F/IT8758E and later IT8712F revisions
99have support for 2 additional fans. The additional fans are supported by the 108have support for 2 additional fans. The additional fans are supported by the
100driver. 109driver.
101 110
102The IT8716F, IT8718F, IT8720F and IT8721F/IT8758E, and late IT8712F and 111The IT8716F, IT8718F, IT8720F, IT8721F/IT8758E, IT8782F, IT8783E/F, and late
103IT8705F also have optional 16-bit tachometer counters for fans 1 to 3. This 112IT8712F and IT8705F also have optional 16-bit tachometer counters for fans 1 to
104is better (no more fan clock divider mess) but not compatible with the older 1133. This is better (no more fan clock divider mess) but not compatible with the
105chips and revisions. The 16-bit tachometer mode is enabled by the driver when 114older chips and revisions. The 16-bit tachometer mode is enabled by the driver
106one of the above chips is detected. 115when one of the above chips is detected.
107 116
108The IT8726F is just bit enhanced IT8716F with additional hardware 117The IT8726F is just bit enhanced IT8716F with additional hardware
109for AMD power sequencing. Therefore the chip will appear as IT8716F 118for AMD power sequencing. Therefore the chip will appear as IT8716F
@@ -131,9 +140,10 @@ inputs can measure voltages between 0 and 4.08 volts, with a resolution of
1310.016 volt (except IT8721F/IT8758E and IT8728F: 0.012 volt.) The battery 1400.016 volt (except IT8721F/IT8758E and IT8728F: 0.012 volt.) The battery
132voltage in8 does not have limit registers. 141voltage in8 does not have limit registers.
133 142
134On the IT8721F/IT8758E, some voltage inputs are internal and scaled inside 143On the IT8721F/IT8758E, IT8782F, and IT8783E/F, some voltage inputs are
135the chip (in7, in8 and optionally in3). The driver handles this transparently 144internal and scaled inside the chip (in7 (optional for IT8782F and IT8783E/F),
136so user-space doesn't have to care. 145in8 and optionally in3). The driver handles this transparently so user-space
146doesn't have to care.
137 147
138The VID lines (IT8712F/IT8716F/IT8718F/IT8720F) encode the core voltage value: 148The VID lines (IT8712F/IT8716F/IT8718F/IT8720F) encode the core voltage value:
139the voltage level your processor should work with. This is hardcoded by 149the voltage level your processor should work with. This is hardcoded by
diff --git a/Documentation/hwmon/wm831x b/Documentation/hwmon/wm831x
index 24f47d8f6a42..11446757c8c8 100644
--- a/Documentation/hwmon/wm831x
+++ b/Documentation/hwmon/wm831x
@@ -22,7 +22,7 @@ reporting of all the input values but does not provide any alarms.
22Voltage Monitoring 22Voltage Monitoring
23------------------ 23------------------
24 24
25Voltages are sampled by a 12 bit ADC. Voltages in milivolts are 1.465 25Voltages are sampled by a 12 bit ADC. Voltages in millivolts are 1.465
26times the ADC value. 26times the ADC value.
27 27
28Temperature Monitoring 28Temperature Monitoring
diff --git a/Documentation/i2c/functionality b/Documentation/i2c/functionality
index 42c17c1fb3cd..b0ff2ab596ce 100644
--- a/Documentation/i2c/functionality
+++ b/Documentation/i2c/functionality
@@ -18,9 +18,9 @@ For the most up-to-date list of functionality constants, please check
18 adapters typically can not do these) 18 adapters typically can not do these)
19 I2C_FUNC_10BIT_ADDR Handles the 10-bit address extensions 19 I2C_FUNC_10BIT_ADDR Handles the 10-bit address extensions
20 I2C_FUNC_PROTOCOL_MANGLING Knows about the I2C_M_IGNORE_NAK, 20 I2C_FUNC_PROTOCOL_MANGLING Knows about the I2C_M_IGNORE_NAK,
21 I2C_M_REV_DIR_ADDR, I2C_M_NOSTART and 21 I2C_M_REV_DIR_ADDR and I2C_M_NO_RD_ACK
22 I2C_M_NO_RD_ACK flags (which modify the 22 flags (which modify the I2C protocol!)
23 I2C protocol!) 23 I2C_FUNC_NOSTART Can skip repeated start sequence
24 I2C_FUNC_SMBUS_QUICK Handles the SMBus write_quick command 24 I2C_FUNC_SMBUS_QUICK Handles the SMBus write_quick command
25 I2C_FUNC_SMBUS_READ_BYTE Handles the SMBus read_byte command 25 I2C_FUNC_SMBUS_READ_BYTE Handles the SMBus read_byte command
26 I2C_FUNC_SMBUS_WRITE_BYTE Handles the SMBus write_byte command 26 I2C_FUNC_SMBUS_WRITE_BYTE Handles the SMBus write_byte command
@@ -50,6 +50,9 @@ A few combinations of the above flags are also defined for your convenience:
50 emulated by a real I2C adapter (using 50 emulated by a real I2C adapter (using
51 the transparent emulation layer) 51 the transparent emulation layer)
52 52
53In kernel versions prior to 3.5 I2C_FUNC_NOSTART was implemented as
54part of I2C_FUNC_PROTOCOL_MANGLING.
55
53 56
54ADAPTER IMPLEMENTATION 57ADAPTER IMPLEMENTATION
55---------------------- 58----------------------
diff --git a/Documentation/i2c/i2c-protocol b/Documentation/i2c/i2c-protocol
index 10518dd58814..0b3e62d1f77a 100644
--- a/Documentation/i2c/i2c-protocol
+++ b/Documentation/i2c/i2c-protocol
@@ -49,7 +49,9 @@ a byte read, followed by a byte write:
49Modified transactions 49Modified transactions
50===================== 50=====================
51 51
52We have found some I2C devices that needs the following modifications: 52The following modifications to the I2C protocol can also be generated,
53with the exception of I2C_M_NOSTART these are usually only needed to
54work around device issues:
53 55
54 Flag I2C_M_NOSTART: 56 Flag I2C_M_NOSTART:
55 In a combined transaction, no 'S Addr Wr/Rd [A]' is generated at some 57 In a combined transaction, no 'S Addr Wr/Rd [A]' is generated at some
@@ -60,6 +62,11 @@ We have found some I2C devices that needs the following modifications:
60 we do not generate Addr, but we do generate the startbit S. This will 62 we do not generate Addr, but we do generate the startbit S. This will
61 probably confuse all other clients on your bus, so don't try this. 63 probably confuse all other clients on your bus, so don't try this.
62 64
65 This is often used to gather transmits from multiple data buffers in
66 system memory into something that appears as a single transfer to the
67 I2C device but may also be used between direction changes by some
68 rare devices.
69
63 Flags I2C_M_REV_DIR_ADDR 70 Flags I2C_M_REV_DIR_ADDR
64 This toggles the Rd/Wr flag. That is, if you want to do a write, but 71 This toggles the Rd/Wr flag. That is, if you want to do a write, but
65 need to emit an Rd instead of a Wr, or vice versa, you set this 72 need to emit an Rd instead of a Wr, or vice versa, you set this
diff --git a/Documentation/i2c/muxes/gpio-i2cmux b/Documentation/i2c/muxes/i2c-mux-gpio
index 811cd78d4cdc..bd9b2299b739 100644
--- a/Documentation/i2c/muxes/gpio-i2cmux
+++ b/Documentation/i2c/muxes/i2c-mux-gpio
@@ -1,11 +1,11 @@
1Kernel driver gpio-i2cmux 1Kernel driver i2c-gpio-mux
2 2
3Author: Peter Korsgaard <peter.korsgaard@barco.com> 3Author: Peter Korsgaard <peter.korsgaard@barco.com>
4 4
5Description 5Description
6----------- 6-----------
7 7
8gpio-i2cmux is an i2c mux driver providing access to I2C bus segments 8i2c-gpio-mux is an i2c mux driver providing access to I2C bus segments
9from a master I2C bus and a hardware MUX controlled through GPIO pins. 9from a master I2C bus and a hardware MUX controlled through GPIO pins.
10 10
11E.G.: 11E.G.:
@@ -26,16 +26,16 @@ according to the settings of the GPIO pins 1..N.
26Usage 26Usage
27----- 27-----
28 28
29gpio-i2cmux uses the platform bus, so you need to provide a struct 29i2c-gpio-mux uses the platform bus, so you need to provide a struct
30platform_device with the platform_data pointing to a struct 30platform_device with the platform_data pointing to a struct
31gpio_i2cmux_platform_data with the I2C adapter number of the master 31gpio_i2cmux_platform_data with the I2C adapter number of the master
32bus, the number of bus segments to create and the GPIO pins used 32bus, the number of bus segments to create and the GPIO pins used
33to control it. See include/linux/gpio-i2cmux.h for details. 33to control it. See include/linux/i2c-gpio-mux.h for details.
34 34
35E.G. something like this for a MUX providing 4 bus segments 35E.G. something like this for a MUX providing 4 bus segments
36controlled through 3 GPIO pins: 36controlled through 3 GPIO pins:
37 37
38#include <linux/gpio-i2cmux.h> 38#include <linux/i2c-gpio-mux.h>
39#include <linux/platform_device.h> 39#include <linux/platform_device.h>
40 40
41static const unsigned myboard_gpiomux_gpios[] = { 41static const unsigned myboard_gpiomux_gpios[] = {
@@ -57,7 +57,7 @@ static struct gpio_i2cmux_platform_data myboard_i2cmux_data = {
57}; 57};
58 58
59static struct platform_device myboard_i2cmux = { 59static struct platform_device myboard_i2cmux = {
60 .name = "gpio-i2cmux", 60 .name = "i2c-gpio-mux",
61 .id = 0, 61 .id = 0,
62 .dev = { 62 .dev = {
63 .platform_data = &myboard_i2cmux_data, 63 .platform_data = &myboard_i2cmux_data,
diff --git a/Documentation/initrd.txt b/Documentation/initrd.txt
index 1ba84f3584e3..4e1839ccb555 100644
--- a/Documentation/initrd.txt
+++ b/Documentation/initrd.txt
@@ -362,5 +362,5 @@ Resources
362 http://www.almesberger.net/cv/papers/ols2k-9.ps.gz 362 http://www.almesberger.net/cv/papers/ols2k-9.ps.gz
363[2] newlib package (experimental), with initrd example 363[2] newlib package (experimental), with initrd example
364 http://sources.redhat.com/newlib/ 364 http://sources.redhat.com/newlib/
365[3] Brouwer, Andries; "util-linux: Miscellaneous utilities for Linux" 365[3] util-linux: Miscellaneous utilities for Linux
366 ftp://ftp.win.tue.nl/pub/linux-local/utils/util-linux/ 366 http://www.kernel.org/pub/linux/utils/util-linux/
diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt
index e34b531dc316..915f28c470e9 100644
--- a/Documentation/ioctl/ioctl-number.txt
+++ b/Documentation/ioctl/ioctl-number.txt
@@ -120,6 +120,7 @@ Code Seq#(hex) Include File Comments
120'G' 00-0F linux/gigaset_dev.h conflict! 120'G' 00-0F linux/gigaset_dev.h conflict!
121'H' 00-7F linux/hiddev.h conflict! 121'H' 00-7F linux/hiddev.h conflict!
122'H' 00-0F linux/hidraw.h conflict! 122'H' 00-0F linux/hidraw.h conflict!
123'H' 01 linux/mei.h conflict!
123'H' 00-0F sound/asound.h conflict! 124'H' 00-0F sound/asound.h conflict!
124'H' 20-40 sound/asound_fm.h conflict! 125'H' 20-40 sound/asound_fm.h conflict!
125'H' 80-8F sound/sfnt_info.h conflict! 126'H' 80-8F sound/sfnt_info.h conflict!
diff --git a/Documentation/kbuild/kbuild.txt b/Documentation/kbuild/kbuild.txt
index 68e32bb6bd80..6466704d47b5 100644
--- a/Documentation/kbuild/kbuild.txt
+++ b/Documentation/kbuild/kbuild.txt
@@ -50,6 +50,10 @@ LDFLAGS_MODULE
50-------------------------------------------------- 50--------------------------------------------------
51Additional options used for $(LD) when linking modules. 51Additional options used for $(LD) when linking modules.
52 52
53LDFLAGS_vmlinux
54--------------------------------------------------
55Additional options passed to final link of vmlinux.
56
53KBUILD_VERBOSE 57KBUILD_VERBOSE
54-------------------------------------------------- 58--------------------------------------------------
55Set the kbuild verbosity. Can be assigned same values as "V=...". 59Set the kbuild verbosity. Can be assigned same values as "V=...".
@@ -214,3 +218,18 @@ KBUILD_BUILD_USER, KBUILD_BUILD_HOST
214These two variables allow to override the user@host string displayed during 218These two variables allow to override the user@host string displayed during
215boot and in /proc/version. The default value is the output of the commands 219boot and in /proc/version. The default value is the output of the commands
216whoami and host, respectively. 220whoami and host, respectively.
221
222KBUILD_LDS
223--------------------------------------------------
224The linker script with full path. Assigned by the top-level Makefile.
225
226KBUILD_VMLINUX_INIT
227--------------------------------------------------
228All object files for the init (first) part of vmlinux.
229Files specified with KBUILD_VMLINUX_INIT are linked first.
230
231KBUILD_VMLINUX_MAIN
232--------------------------------------------------
233All object files for the main part of vmlinux.
234KBUILD_VMLINUX_INIT and KBUILD_VMLINUX_MAIN together specify
235all the object files used to link vmlinux.
diff --git a/Documentation/kbuild/kconfig.txt b/Documentation/kbuild/kconfig.txt
index 9d5f2a90dca9..a09f1a6a830c 100644
--- a/Documentation/kbuild/kconfig.txt
+++ b/Documentation/kbuild/kconfig.txt
@@ -53,15 +53,15 @@ KCONFIG_ALLCONFIG
53-------------------------------------------------- 53--------------------------------------------------
54(partially based on lkml email from/by Rob Landley, re: miniconfig) 54(partially based on lkml email from/by Rob Landley, re: miniconfig)
55-------------------------------------------------- 55--------------------------------------------------
56The allyesconfig/allmodconfig/allnoconfig/randconfig variants can 56The allyesconfig/allmodconfig/allnoconfig/randconfig variants can also
57also use the environment variable KCONFIG_ALLCONFIG as a flag or a 57use the environment variable KCONFIG_ALLCONFIG as a flag or a filename
58filename that contains config symbols that the user requires to be 58that contains config symbols that the user requires to be set to a
59set to a specific value. If KCONFIG_ALLCONFIG is used without a 59specific value. If KCONFIG_ALLCONFIG is used without a filename where
60filename, "make *config" checks for a file named 60KCONFIG_ALLCONFIG == "" or KCONFIG_ALLCONFIG == "1", "make *config"
61"all{yes/mod/no/def/random}.config" (corresponding to the *config command 61checks for a file named "all{yes/mod/no/def/random}.config"
62that was used) for symbol values that are to be forced. If this file 62(corresponding to the *config command that was used) for symbol values
63is not found, it checks for a file named "all.config" to contain forced 63that are to be forced. If this file is not found, it checks for a
64values. 64file named "all.config" to contain forced values.
65 65
66This enables you to create "miniature" config (miniconfig) or custom 66This enables you to create "miniature" config (miniconfig) or custom
67config files containing just the config symbols that you are interested 67config files containing just the config symbols that you are interested
diff --git a/Documentation/kdump/kdump.txt b/Documentation/kdump/kdump.txt
index 506c7390c2b9..13f1aa09b938 100644
--- a/Documentation/kdump/kdump.txt
+++ b/Documentation/kdump/kdump.txt
@@ -86,7 +86,7 @@ There is also a gitweb interface available at
86http://www.kernel.org/git/?p=utils/kernel/kexec/kexec-tools.git 86http://www.kernel.org/git/?p=utils/kernel/kexec/kexec-tools.git
87 87
88More information about kexec-tools can be found at 88More information about kexec-tools can be found at
89http://www.kernel.org/pub/linux/utils/kernel/kexec/README.html 89http://horms.net/projects/kexec/
90 90
913) Unpack the tarball with the tar command, as follows: 913) Unpack the tarball with the tar command, as follows:
92 92
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index c1601e5a8b71..a92c5ebf373e 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -70,7 +70,6 @@ parameter is applicable:
70 M68k M68k architecture is enabled. 70 M68k M68k architecture is enabled.
71 These options have more detailed description inside of 71 These options have more detailed description inside of
72 Documentation/m68k/kernel-options.txt. 72 Documentation/m68k/kernel-options.txt.
73 MCA MCA bus support is enabled.
74 MDA MDA console support is enabled. 73 MDA MDA console support is enabled.
75 MIPS MIPS architecture is enabled. 74 MIPS MIPS architecture is enabled.
76 MOUSE Appropriate mouse support is enabled. 75 MOUSE Appropriate mouse support is enabled.
@@ -110,6 +109,7 @@ parameter is applicable:
110 USB USB support is enabled. 109 USB USB support is enabled.
111 USBHID USB Human Interface Device support is enabled. 110 USBHID USB Human Interface Device support is enabled.
112 V4L Video For Linux support is enabled. 111 V4L Video For Linux support is enabled.
112 VMMIO Driver for memory mapped virtio devices is enabled.
113 VGA The VGA console has been enabled. 113 VGA The VGA console has been enabled.
114 VT Virtual terminal support is enabled. 114 VT Virtual terminal support is enabled.
115 WDT Watchdog support is enabled. 115 WDT Watchdog support is enabled.
@@ -335,6 +335,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
335 requirements as needed. This option 335 requirements as needed. This option
336 does not override iommu=pt 336 does not override iommu=pt
337 337
338 amd_iommu_dump= [HW,X86-64]
339 Enable AMD IOMMU driver option to dump the ACPI table
340 for AMD IOMMU. With this option enabled, AMD IOMMU
341 driver will print ACPI tables for AMD IOMMU during
342 IOMMU initialization.
343
338 amijoy.map= [HW,JOY] Amiga joystick support 344 amijoy.map= [HW,JOY] Amiga joystick support
339 Map of devices attached to JOY0DAT and JOY1DAT 345 Map of devices attached to JOY0DAT and JOY1DAT
340 Format: <a>,<b> 346 Format: <a>,<b>
@@ -397,8 +403,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
397 atkbd.softrepeat= [HW] 403 atkbd.softrepeat= [HW]
398 Use software keyboard repeat 404 Use software keyboard repeat
399 405
400 autotest [IA-64]
401
402 baycom_epp= [HW,AX25] 406 baycom_epp= [HW,AX25]
403 Format: <io>,<mode> 407 Format: <io>,<mode>
404 408
@@ -508,6 +512,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
508 Also note the kernel might malfunction if you disable 512 Also note the kernel might malfunction if you disable
509 some critical bits. 513 some critical bits.
510 514
515 cma=nn[MG] [ARM,KNL]
516 Sets the size of kernel global memory area for contiguous
517 memory allocations. For more information, see
518 include/linux/dma-contiguous.h
519
511 cmo_free_hint= [PPC] Format: { yes | no } 520 cmo_free_hint= [PPC] Format: { yes | no }
512 Specify whether pages are marked as being inactive 521 Specify whether pages are marked as being inactive
513 when they are freed. This is used in CMO environments 522 when they are freed. This is used in CMO environments
@@ -515,6 +524,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
515 a hypervisor. 524 a hypervisor.
516 Default: yes 525 Default: yes
517 526
527 coherent_pool=nn[KMG] [ARM,KNL]
528 Sets the size of memory pool for coherent, atomic dma
529 allocations if Contiguous Memory Allocator (CMA) is used.
530
518 code_bytes [X86] How many bytes of object code to print 531 code_bytes [X86] How many bytes of object code to print
519 in an oops report. 532 in an oops report.
520 Range: 0 - 8192 533 Range: 0 - 8192
@@ -610,7 +623,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
610 623
611 ddebug_query= [KNL,DYNAMIC_DEBUG] Enable debug messages at early boot 624 ddebug_query= [KNL,DYNAMIC_DEBUG] Enable debug messages at early boot
612 time. See Documentation/dynamic-debug-howto.txt for 625 time. See Documentation/dynamic-debug-howto.txt for
613 details. 626 details. Deprecated, see dyndbg.
614 627
615 debug [KNL] Enable kernel debugging (events log level). 628 debug [KNL] Enable kernel debugging (events log level).
616 629
@@ -730,6 +743,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
730 743
731 dscc4.setup= [NET] 744 dscc4.setup= [NET]
732 745
746 dyndbg[="val"] [KNL,DYNAMIC_DEBUG]
747 module.dyndbg[="val"]
748 Enable debug messages at boot time. See
749 Documentation/dynamic-debug-howto.txt for details.
750
733 earlycon= [KNL] Output early console device and options. 751 earlycon= [KNL] Output early console device and options.
734 uart[8250],io,<addr>[,options] 752 uart[8250],io,<addr>[,options]
735 uart[8250],mmio,<addr>[,options] 753 uart[8250],mmio,<addr>[,options]
@@ -982,6 +1000,20 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
982 i8k.restricted [HW] Allow controlling fans only if SYS_ADMIN 1000 i8k.restricted [HW] Allow controlling fans only if SYS_ADMIN
983 capability is set. 1001 capability is set.
984 1002
1003 i915.invert_brightness=
1004 [DRM] Invert the sense of the variable that is used to
1005 set the brightness of the panel backlight. Normally a
1006 brightness value of 0 indicates backlight switched off,
1007 and the maximum of the brightness value sets the backlight
1008 to maximum brightness. If this parameter is set to 0
1009 (default) and the machine requires it, or this parameter
1010 is set to 1, a brightness value of 0 sets the backlight
1011 to maximum brightness, and the maximum of the brightness
1012 value switches the backlight off.
1013 -1 -- never invert brightness
1014 0 -- machine default
1015 1 -- force brightness inversion
1016
985 icn= [HW,ISDN] 1017 icn= [HW,ISDN]
986 Format: <io>[,<membase>[,<icn_id>[,<icn_id2>]]] 1018 Format: <io>[,<membase>[,<icn_id>[,<icn_id2>]]]
987 1019
@@ -1425,8 +1457,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
1425 devices can be requested on-demand with the 1457 devices can be requested on-demand with the
1426 /dev/loop-control interface. 1458 /dev/loop-control interface.
1427 1459
1428 mcatest= [IA-64]
1429
1430 mce [X86-32] Machine Check Exception 1460 mce [X86-32] Machine Check Exception
1431 1461
1432 mce=option [X86-64] See Documentation/x86/x86_64/boot-options.txt 1462 mce=option [X86-64] See Documentation/x86/x86_64/boot-options.txt
@@ -2161,6 +2191,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2161 on: Turn realloc on 2191 on: Turn realloc on
2162 realloc same as realloc=on 2192 realloc same as realloc=on
2163 noari do not use PCIe ARI. 2193 noari do not use PCIe ARI.
2194 pcie_scan_all Scan all possible PCIe devices. Otherwise we
2195 only look for one device below a PCIe downstream
2196 port.
2164 2197
2165 pcie_aspm= [PCIE] Forcibly enable or disable PCIe Active State Power 2198 pcie_aspm= [PCIE] Forcibly enable or disable PCIe Active State Power
2166 Management. 2199 Management.
@@ -2330,18 +2363,100 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2330 ramdisk_size= [RAM] Sizes of RAM disks in kilobytes 2363 ramdisk_size= [RAM] Sizes of RAM disks in kilobytes
2331 See Documentation/blockdev/ramdisk.txt. 2364 See Documentation/blockdev/ramdisk.txt.
2332 2365
2333 rcupdate.blimit= [KNL,BOOT] 2366 rcutree.blimit= [KNL,BOOT]
2334 Set maximum number of finished RCU callbacks to process 2367 Set maximum number of finished RCU callbacks to process
2335 in one batch. 2368 in one batch.
2336 2369
2337 rcupdate.qhimark= [KNL,BOOT] 2370 rcutree.qhimark= [KNL,BOOT]
2338 Set threshold of queued 2371 Set threshold of queued
2339 RCU callbacks over which batch limiting is disabled. 2372 RCU callbacks over which batch limiting is disabled.
2340 2373
2341 rcupdate.qlowmark= [KNL,BOOT] 2374 rcutree.qlowmark= [KNL,BOOT]
2342 Set threshold of queued RCU callbacks below which 2375 Set threshold of queued RCU callbacks below which
2343 batch limiting is re-enabled. 2376 batch limiting is re-enabled.
2344 2377
2378 rcutree.rcu_cpu_stall_suppress= [KNL,BOOT]
2379 Suppress RCU CPU stall warning messages.
2380
2381 rcutree.rcu_cpu_stall_timeout= [KNL,BOOT]
2382 Set timeout for RCU CPU stall warning messages.
2383
2384 rcutorture.fqs_duration= [KNL,BOOT]
2385 Set duration of force_quiescent_state bursts.
2386
2387 rcutorture.fqs_holdoff= [KNL,BOOT]
2388 Set holdoff time within force_quiescent_state bursts.
2389
2390 rcutorture.fqs_stutter= [KNL,BOOT]
2391 Set wait time between force_quiescent_state bursts.
2392
2393 rcutorture.irqreader= [KNL,BOOT]
2394 Test RCU readers from irq handlers.
2395
2396 rcutorture.n_barrier_cbs= [KNL,BOOT]
2397 Set callbacks/threads for rcu_barrier() testing.
2398
2399 rcutorture.nfakewriters= [KNL,BOOT]
2400 Set number of concurrent RCU writers. These just
2401 stress RCU, they don't participate in the actual
2402 test, hence the "fake".
2403
2404 rcutorture.nreaders= [KNL,BOOT]
2405 Set number of RCU readers.
2406
2407 rcutorture.onoff_holdoff= [KNL,BOOT]
2408 Set time (s) after boot for CPU-hotplug testing.
2409
2410 rcutorture.onoff_interval= [KNL,BOOT]
2411 Set time (s) between CPU-hotplug operations, or
2412 zero to disable CPU-hotplug testing.
2413
2414 rcutorture.shuffle_interval= [KNL,BOOT]
2415 Set task-shuffle interval (s). Shuffling tasks
2416 allows some CPUs to go into dyntick-idle mode
2417 during the rcutorture test.
2418
2419 rcutorture.shutdown_secs= [KNL,BOOT]
2420 Set time (s) after boot system shutdown. This
2421 is useful for hands-off automated testing.
2422
2423 rcutorture.stall_cpu= [KNL,BOOT]
2424 Duration of CPU stall (s) to test RCU CPU stall
2425 warnings, zero to disable.
2426
2427 rcutorture.stall_cpu_holdoff= [KNL,BOOT]
2428 Time to wait (s) after boot before inducing stall.
2429
2430 rcutorture.stat_interval= [KNL,BOOT]
2431 Time (s) between statistics printk()s.
2432
2433 rcutorture.stutter= [KNL,BOOT]
2434 Time (s) to stutter testing, for example, specifying
2435 five seconds causes the test to run for five seconds,
2436 wait for five seconds, and so on. This tests RCU's
2437 ability to transition abruptly to and from idle.
2438
2439 rcutorture.test_boost= [KNL,BOOT]
2440 Test RCU priority boosting? 0=no, 1=maybe, 2=yes.
2441 "Maybe" means test if the RCU implementation
2442 under test support RCU priority boosting.
2443
2444 rcutorture.test_boost_duration= [KNL,BOOT]
2445 Duration (s) of each individual boost test.
2446
2447 rcutorture.test_boost_interval= [KNL,BOOT]
2448 Interval (s) between each boost test.
2449
2450 rcutorture.test_no_idle_hz= [KNL,BOOT]
2451 Test RCU's dyntick-idle handling. See also the
2452 rcutorture.shuffle_interval parameter.
2453
2454 rcutorture.torture_type= [KNL,BOOT]
2455 Specify the RCU implementation to test.
2456
2457 rcutorture.verbose= [KNL,BOOT]
2458 Enable additional printk() statements.
2459
2345 rdinit= [KNL] 2460 rdinit= [KNL]
2346 Format: <full_path> 2461 Format: <full_path>
2347 Run specified binary instead of /init from the ramdisk, 2462 Run specified binary instead of /init from the ramdisk,
@@ -2372,6 +2487,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2372 2487
2373 resume= [SWSUSP] 2488 resume= [SWSUSP]
2374 Specify the partition device for software suspend 2489 Specify the partition device for software suspend
2490 Format:
2491 {/dev/<dev> | PARTUUID=<uuid> | <int>:<int> | <hex>}
2375 2492
2376 resume_offset= [SWSUSP] 2493 resume_offset= [SWSUSP]
2377 Specify the offset from the beginning of the partition 2494 Specify the offset from the beginning of the partition
@@ -2426,6 +2543,15 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2426 2543
2427 sched_debug [KNL] Enables verbose scheduler debug messages. 2544 sched_debug [KNL] Enables verbose scheduler debug messages.
2428 2545
2546 skew_tick= [KNL] Offset the periodic timer tick per cpu to mitigate
2547 xtime_lock contention on larger systems, and/or RCU lock
2548 contention on all systems with CONFIG_MAXSMP set.
2549 Format: { "0" | "1" }
2550 0 -- disable. (may be 1 via CONFIG_CMDLINE="skew_tick=1"
2551 1 -- enable.
2552 Note: increases power consumption, thus should only be
2553 enabled if running jitter sensitive (HPC/RT) workloads.
2554
2429 security= [SECURITY] Choose a security module to enable at boot. 2555 security= [SECURITY] Choose a security module to enable at boot.
2430 If this boot parameter is not specified, only the first 2556 If this boot parameter is not specified, only the first
2431 security module asking for security registration will be 2557 security module asking for security registration will be
@@ -2847,6 +2973,22 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2847 video= [FB] Frame buffer configuration 2973 video= [FB] Frame buffer configuration
2848 See Documentation/fb/modedb.txt. 2974 See Documentation/fb/modedb.txt.
2849 2975
2976 virtio_mmio.device=
2977 [VMMIO] Memory mapped virtio (platform) device.
2978
2979 <size>@<baseaddr>:<irq>[:<id>]
2980 where:
2981 <size> := size (can use standard suffixes
2982 like K, M and G)
2983 <baseaddr> := physical base address
2984 <irq> := interrupt number (as passed to
2985 request_irq())
2986 <id> := (optional) platform device id
2987 example:
2988 virtio_mmio.device=1K@0x100b0000:48:7
2989
2990 Can be used multiple times for multiple devices.
2991
2850 vga= [BOOT,X86-32] Select a particular video mode 2992 vga= [BOOT,X86-32] Select a particular video mode
2851 See Documentation/x86/boot.txt and 2993 See Documentation/x86/boot.txt and
2852 Documentation/svga.txt. 2994 Documentation/svga.txt.
diff --git a/Documentation/leds/ledtrig-transient.txt b/Documentation/leds/ledtrig-transient.txt
new file mode 100644
index 000000000000..3bd38b487df1
--- /dev/null
+++ b/Documentation/leds/ledtrig-transient.txt
@@ -0,0 +1,152 @@
1LED Transient Trigger
2=====================
3
4The leds timer trigger does not currently have an interface to activate
5a one shot timer. The current support allows for setting two timers, one for
6specifying how long a state to be on, and the second for how long the state
7to be off. The delay_on value specifies the time period an LED should stay
8in on state, followed by a delay_off value that specifies how long the LED
9should stay in off state. The on and off cycle repeats until the trigger
10gets deactivated. There is no provision for one time activation to implement
11features that require an on or off state to be held just once and then stay in
12the original state forever.
13
14Without one shot timer interface, user space can still use timer trigger to
15set a timer to hold a state, however when user space application crashes or
16goes away without deactivating the timer, the hardware will be left in that
17state permanently.
18
19As a specific example of this use-case, let's look at vibrate feature on
20phones. Vibrate function on phones is implemented using PWM pins on SoC or
21PMIC. There is a need to activate one shot timer to control the vibrate
22feature, to prevent user space crashes leaving the phone in vibrate mode
23permanently causing the battery to drain.
24
25Transient trigger addresses the need for one shot timer activation. The
26transient trigger can be enabled and disabled just like the other leds
27triggers.
28
29When an led class device driver registers itself, it can specify all leds
30triggers it supports and a default trigger. During registration, activation
31routine for the default trigger gets called. During registration of an led
32class device, the LED state does not change.
33
34When the driver unregisters, deactivation routine for the currently active
35trigger will be called, and LED state is changed to LED_OFF.
36
37Driver suspend changes the LED state to LED_OFF and resume doesn't change
38the state. Please note that there is no explicit interaction between the
39suspend and resume actions and the currently enabled trigger. LED state
40changes are suspended while the driver is in suspend state. Any timers
41that are active at the time driver gets suspended, continue to run, without
42being able to actually change the LED state. Once driver is resumed, triggers
43start functioning again.
44
45LED state changes are controlled using brightness which is a common led
46class device property. When brightness is set to 0 from user space via
47echo 0 > brightness, it will result in deactivating the current trigger.
48
49Transient trigger uses standard register and unregister interfaces. During
50trigger registration, for each led class device that specifies this trigger
51as its default trigger, trigger activation routine will get called. During
52registration, the LED state does not change, unless there is another trigger
53active, in which case LED state changes to LED_OFF.
54
55During trigger unregistration, LED state gets changed to LED_OFF.
56
57Transient trigger activation routine doesn't change the LED state. It
58creates its properties and does its initialization. Transient trigger
59deactivation routine, will cancel any timer that is active before it cleans
60up and removes the properties it created. It will restore the LED state to
61non-transient state. When driver gets suspended, irrespective of the transient
62state, the LED state changes to LED_OFF.
63
64Transient trigger can be enabled and disabled from user space on led class
65devices, that support this trigger as shown below:
66
67echo transient > trigger
68echo none > trigger
69
70NOTE: Add a new property trigger state to control the state.
71
72This trigger exports three properties, activate, state, and duration. When
73transient trigger is activated these properties are set to default values.
74
75- duration allows setting timer value in msecs. The initial value is 0.
76- activate allows activating and deactivating the timer specified by
77 duration as needed. The initial and default value is 0. This will allow
78 duration to be set after trigger activation.
79- state allows user to specify a transient state to be held for the specified
80 duration.
81
82 activate - one shot timer activate mechanism.
83 1 when activated, 0 when deactivated.
84 default value is zero when transient trigger is enabled,
85 to allow duration to be set.
86
87 activate state indicates a timer with a value of specified
88 duration running.
89 deactivated state indicates that there is no active timer
90 running.
91
92 duration - one shot timer value. When activate is set, duration value
93 is used to start a timer that runs once. This value doesn't
94 get changed by the trigger unless user does a set via
95 echo new_value > duration
96
97 state - transient state to be held. It has two values 0 or 1. 0 maps
98 to LED_OFF and 1 maps to LED_FULL. The specified state is
99 held for the duration of the one shot timer and then the
100 state gets changed to the non-transient state which is the
101 inverse of transient state.
102 If state = LED_FULL, when the timer runs out the state will
103 go back to LED_OFF.
104 If state = LED_OFF, when the timer runs out the state will
105 go back to LED_FULL.
106 Please note that current LED state is not checked prior to
107 changing the state to the specified state.
108 Driver could map these values to inverted depending on the
109 default states it defines for the LED in its brightness_set()
110 interface which is called from the led brightness_set()
111 interfaces to control the LED state.
112
113When timer expires activate goes back to deactivated state, duration is left
114at the set value to be used when activate is set at a future time. This will
115allow user app to set the time once and activate it to run it once for the
116specified value as needed. When timer expires, state is restored to the
117non-transient state which is the inverse of the transient state.
118
119 echo 1 > activate - starts timer = duration when duration is not 0.
120 echo 0 > activate - cancels currently running timer.
121 echo n > duration - stores timer value to be used upon next
122 activate. Currently active timer if
123 any, continues to run for the specified time.
124 echo 0 > duration - stores timer value to be used upon next
125 activate. Currently active timer if any,
126 continues to run for the specified time.
127 echo 1 > state - stores desired transient state LED_FULL to be
128 held for the specified duration.
129 echo 0 > state - stores desired transient state LED_OFF to be
130 held for the specified duration.
131
132What is not supported:
133======================
134- Timer activation is one shot and extending and/or shortening the timer
135 is not supported.
136
137Example use-case 1:
138 echo transient > trigger
139 echo n > duration
140 echo 1 > state
141repeat the following step as needed:
142 echo 1 > activate - start timer = duration to run once
143 echo 1 > activate - start timer = duration to run once
144 echo none > trigger
145
146This trigger is intended to be used for for the following example use cases:
147 - Control of vibrate (phones, tablets etc.) hardware by user space app.
148 - Use of LED by user space app as activity indicator.
149 - Use of LED by user space app as a kind of watchdog indicator -- as
150 long as the app is alive, it can keep the LED illuminated, if it dies
151 the LED will be extinguished automatically.
152 - Use by any user space app that needs a transient GPIO output.
diff --git a/Documentation/mca.txt b/Documentation/mca.txt
deleted file mode 100644
index dfd130c2207d..000000000000
--- a/Documentation/mca.txt
+++ /dev/null
@@ -1,313 +0,0 @@
1i386 Micro Channel Architecture Support
2=======================================
3
4MCA support is enabled using the CONFIG_MCA define. A machine with a MCA
5bus will have the kernel variable MCA_bus set, assuming the BIOS feature
6bits are set properly (see arch/i386/boot/setup.S for information on
7how this detection is done).
8
9Adapter Detection
10=================
11
12The ideal MCA adapter detection is done through the use of the
13Programmable Option Select registers. Generic functions for doing
14this have been added in include/linux/mca.h and arch/x86/kernel/mca_32.c.
15Everything needed to detect adapters and read (and write) configuration
16information is there. A number of MCA-specific drivers already use
17this. The typical probe code looks like the following:
18
19 #include <linux/mca.h>
20
21 unsigned char pos2, pos3, pos4, pos5;
22 struct net_device* dev;
23 int slot;
24
25 if( MCA_bus ) {
26 slot = mca_find_adapter( ADAPTER_ID, 0 );
27 if( slot == MCA_NOTFOUND ) {
28 return -ENODEV;
29 }
30 /* optional - see below */
31 mca_set_adapter_name( slot, "adapter name & description" );
32 mca_set_adapter_procfn( slot, dev_getinfo, dev );
33
34 /* read the POS registers. Most devices only use 2 and 3 */
35 pos2 = mca_read_stored_pos( slot, 2 );
36 pos3 = mca_read_stored_pos( slot, 3 );
37 pos4 = mca_read_stored_pos( slot, 4 );
38 pos5 = mca_read_stored_pos( slot, 5 );
39 } else {
40 return -ENODEV;
41 }
42
43 /* extract configuration from pos[2345] and set everything up */
44
45Loadable modules should modify this to test that the specified IRQ and
46IO ports (plus whatever other stuff) match. See 3c523.c for example
47code (actually, smc-mca.c has a slightly more complex example that can
48handle a list of adapter ids).
49
50Keep in mind that devices should never directly access the POS registers
51(via inb(), outb(), etc). While it's generally safe, there is a small
52potential for blowing up hardware when it's done at the wrong time.
53Furthermore, accessing a POS register disables a device temporarily.
54This is usually okay during startup, but do _you_ want to rely on it?
55During initial configuration, mca_init() reads all the POS registers
56into memory. mca_read_stored_pos() accesses that data. mca_read_pos()
57and mca_write_pos() are also available for (safer) direct POS access,
58but their use is _highly_ discouraged. mca_write_pos() is particularly
59dangerous, as it is possible for adapters to be put in inconsistent
60states (i.e. sharing IO address, etc) and may result in crashes, toasted
61hardware, and blindness.
62
63User level drivers (such as the AGX X server) can use /proc/mca/pos to
64find adapters (see below).
65
66Some MCA adapters can also be detected via the usual ISA-style device
67probing (many SCSI adapters, for example). This sort of thing is highly
68discouraged. Perfectly good information is available telling you what's
69there, so there's no excuse for messing with random IO ports. However,
70we MCA people still appreciate any ISA-style driver that will work with
71our hardware. You take what you can get...
72
73Level-Triggered Interrupts
74==========================
75
76Because MCA uses level-triggered interrupts, a few problems arise with
77what might best be described as the ISA mindset and its effects on
78drivers. These sorts of problems are expected to become less common as
79more people use shared IRQs on PCI machines.
80
81In general, an interrupt must be acknowledged not only at the ICU (which
82is done automagically by the kernel), but at the device level. In
83particular, IRQ 0 must be reset after a timer interrupt (now done in
84arch/x86/kernel/time.c) or the first timer interrupt hangs the system.
85There were also problems with the 1.3.x floppy drivers, but that seems
86to have been fixed.
87
88IRQs are also shareable, and most MCA-specific devices should be coded
89with shared IRQs in mind.
90
91/proc/mca
92=========
93
94/proc/mca is a directory containing various files for adapters and
95other stuff.
96
97 /proc/mca/pos Straight listing of POS registers
98 /proc/mca/slot[1-8] Information on adapter in specific slot
99 /proc/mca/video Same for integrated video
100 /proc/mca/scsi Same for integrated SCSI
101 /proc/mca/machine Machine information
102
103See Appendix A for a sample.
104
105Device drivers can easily add their own information function for
106specific slots (including integrated ones) via the
107mca_set_adapter_procfn() call. Drivers that support this are ESDI, IBM
108SCSI, and 3c523. If a device is also a module, make sure that the proc
109function is removed in the module cleanup. This will require storing
110the slot information in a private structure somewhere. See the 3c523
111driver for details.
112
113Your typical proc function will look something like this:
114
115 static int
116 dev_getinfo( char* buf, int slot, void* d ) {
117 struct net_device* dev = (struct net_device*) d;
118 int len = 0;
119
120 len += sprintf( buf+len, "Device: %s\n", dev->name );
121 len += sprintf( buf+len, "IRQ: %d\n", dev->irq );
122 len += sprintf( buf+len, "IO Port: %#lx-%#lx\n", ... );
123 ...
124
125 return len;
126 }
127
128Some of the standard MCA information will already be printed, so don't
129bother repeating it. Don't try putting in more than 3K of information.
130
131Enable this function with:
132 mca_set_adapter_procfn( slot, dev_getinfo, dev );
133
134Disable it with:
135 mca_set_adapter_procfn( slot, NULL, NULL );
136
137It is also recommended that, even if you don't write a proc function, to
138set the name of the adapter (i.e. "PS/2 ESDI Controller") via
139mca_set_adapter_name( int slot, char* name ).
140
141MCA Device Drivers
142==================
143
144Currently, there are a number of MCA-specific device drivers.
145
1461) PS/2 SCSI
147 drivers/scsi/ibmmca.c
148 drivers/scsi/ibmmca.h
149 The driver for the IBM SCSI subsystem. Includes both integrated
150 controllers and adapter cards. May require command-line arg
151 "ibmmcascsi=io_port" to force detection of an adapter. If you have a
152 machine with a front-panel display (i.e. model 95), you can use
153 "ibmmcascsi=display" to enable a drive activity indicator.
154
1552) 3c523
156 drivers/net/3c523.c
157 drivers/net/3c523.h
158 3Com 3c523 Etherlink/MC ethernet driver.
159
1603) SMC Ultra/MCA and IBM Adapter/A
161 drivers/net/smc-mca.c
162 drivers/net/smc-mca.h
163 Driver for the MCA version of the SMC Ultra and various other
164 OEM'ed and work-alike cards (Elite, Adapter/A, etc).
165
1664) NE/2
167 driver/net/ne2.c
168 driver/net/ne2.h
169 The NE/2 is the MCA version of the NE2000. This may not work
170 with clones that have a different adapter id than the original
171 NE/2.
172
1735) Future Domain MCS-600/700, OEM'd IBM Fast SCSI Adapter/A and
174 Reply Sound Blaster/SCSI (SCSI part)
175 Better support for these cards than the driver for ISA.
176 Supports multiple cards with IRQ sharing.
177
178Also added boot time option of scsi-probe, which can do reordering of
179SCSI host adapters. This will direct the kernel on the order which
180SCSI adapter should be detected. Example:
181 scsi-probe=ibmmca,fd_mcs,adaptec1542,buslogic
182
183The serial drivers were modified to support the extended IO port range
184of the typical MCA system (also #ifdef CONFIG_MCA).
185
186The following devices work with existing drivers:
1871) Token-ring
1882) Future Domain SCSI (MCS-600, MCS-700, not MCS-350, OEM'ed IBM SCSI)
1893) Adaptec 1640 SCSI (using the aha1542 driver)
1904) Bustek/Buslogic SCSI (various)
1915) Probably all Arcnet cards.
1926) Some, possibly all, MCA IDE controllers.
1937) 3Com 3c529 (MCA version of 3c509) (patched)
194
1958) Intel EtherExpressMC (patched version)
196 You need to have CONFIG_MCA defined to have EtherExpressMC support.
1979) Reply Sound Blaster/SCSI (SB part) (patched version)
198
199Bugs & Other Weirdness
200======================
201
202NMIs tend to occur with MCA machines because of various hardware
203weirdness, bus timeouts, and many other non-critical things. Some basic
204code to handle them (inspired by the NetBSD MCA code) has been added to
205detect the guilty device, but it's pretty incomplete. If NMIs are a
206persistent problem (on some model 70 or 80s, they occur every couple
207shell commands), the CONFIG_IGNORE_NMI flag will take care of that.
208
209Various Pentium machines have had serious problems with the FPU test in
210bugs.h. Basically, the machine hangs after the HLT test. This occurs,
211as far as we know, on the Pentium-equipped 85s, 95s, and some PC Servers.
212The PCI/MCA PC 750s are fine as far as I can tell. The ``mca-pentium''
213boot-prompt flag will disable the FPU bug check if this is a problem
214with your machine.
215
216The model 80 has a raft of problems that are just too weird and unique
217to get into here. Some people have no trouble while others have nothing
218but problems. I'd suspect some problems are related to the age of the
219average 80 and accompanying hardware deterioration, although others
220are definitely design problems with the hardware. Among the problems
221include SCSI controller problems, ESDI controller problems, and serious
222screw-ups in the floppy controller. Oh, and the parallel port is also
223pretty flaky. There were about 5 or 6 different model 80 motherboards
224produced to fix various obscure problems. As far as I know, it's pretty
225much impossible to tell which bugs a particular model 80 has (other than
226triggering them, that is).
227
228Drivers are required for some MCA memory adapters. If you're suddenly
229short a few megs of RAM, this might be the reason. The (I think) Enhanced
230Memory Adapter commonly found on the model 70 is one. There's a very
231alpha driver floating around, but it's pretty ugly (disassembled from
232the DOS driver, actually). See the MCA Linux web page (URL below)
233for more current memory info.
234
235The Thinkpad 700 and 720 will work, but various components are either
236non-functional, flaky, or we don't know anything about them. The
237graphics controller is supposed to be some WD, but we can't get things
238working properly. The PCMCIA slots don't seem to work. Ditto for APM.
239The serial ports work, but detection seems to be flaky.
240
241Credits
242=======
243A whole pile of people have contributed to the MCA code. I'd include
244their names here, but I don't have a list handy. Check the MCA Linux
245home page (URL below) for a perpetually out-of-date list.
246
247=====================================================================
248MCA Linux Home Page: http://www.dgmicro.com/mca/
249
250Christophe Beauregard
251chrisb@truespectra.com
252cpbeaure@calum.csclub.uwaterloo.ca
253
254=====================================================================
255Appendix A: Sample /proc/mca
256
257This is from my model 8595. Slot 1 contains the standard IBM SCSI
258adapter, slot 3 is an Adaptec AHA-1640, slot 5 is a XGA-1 video adapter,
259and slot 7 is the 3c523 Etherlink/MC.
260
261/proc/mca/machine:
262Model Id: 0xf8
263Submodel Id: 0x14
264BIOS Revision: 0x5
265
266/proc/mca/pos:
267Slot 1: ff 8e f1 fc a0 ff ff ff IBM SCSI Adapter w/Cache
268Slot 2: ff ff ff ff ff ff ff ff
269Slot 3: 1f 0f 81 3b bf b6 ff ff
270Slot 4: ff ff ff ff ff ff ff ff
271Slot 5: db 8f 1d 5e fd c0 00 00
272Slot 6: ff ff ff ff ff ff ff ff
273Slot 7: 42 60 ff 08 ff ff ff ff 3Com 3c523 Etherlink/MC
274Slot 8: ff ff ff ff ff ff ff ff
275Video : ff ff ff ff ff ff ff ff
276SCSI : ff ff ff ff ff ff ff ff
277
278/proc/mca/slot1:
279Slot: 1
280Adapter Name: IBM SCSI Adapter w/Cache
281Id: 8eff
282Enabled: Yes
283POS: ff 8e f1 fc a0 ff ff ff
284Subsystem PUN: 7
285Detected at boot: Yes
286
287/proc/mca/slot3:
288Slot: 3
289Adapter Name: Unknown
290Id: 0f1f
291Enabled: Yes
292POS: 1f 0f 81 3b bf b6 ff ff
293
294/proc/mca/slot5:
295Slot: 5
296Adapter Name: Unknown
297Id: 8fdb
298Enabled: Yes
299POS: db 8f 1d 5e fd c0 00 00
300
301/proc/mca/slot7:
302Slot: 7
303Adapter Name: 3Com 3c523 Etherlink/MC
304Id: 6042
305Enabled: Yes
306POS: 42 60 ff 08 ff ff ff ff
307Revision: 0xe
308IRQ: 9
309IO Address: 0x3300-0x3308
310Memory: 0xd8000-0xdbfff
311Transceiver: External
312Device: eth0
313Hardware Address: 02 60 8c 45 c4 2a
diff --git a/Documentation/media-framework.txt b/Documentation/media-framework.txt
index 3a0f879533ce..802875413873 100644
--- a/Documentation/media-framework.txt
+++ b/Documentation/media-framework.txt
@@ -335,6 +335,9 @@ the media_entity pipe field.
335Calls to media_entity_pipeline_start() can be nested. The pipeline pointer must 335Calls to media_entity_pipeline_start() can be nested. The pipeline pointer must
336be identical for all nested calls to the function. 336be identical for all nested calls to the function.
337 337
338media_entity_pipeline_start() may return an error. In that case, it will
339clean up any the changes it did by itself.
340
338When stopping the stream, drivers must notify the entities with 341When stopping the stream, drivers must notify the entities with
339 342
340 media_entity_pipeline_stop(struct media_entity *entity); 343 media_entity_pipeline_stop(struct media_entity *entity);
@@ -351,3 +354,19 @@ If other operations need to be disallowed on streaming entities (such as
351changing entities configuration parameters) drivers can explicitly check the 354changing entities configuration parameters) drivers can explicitly check the
352media_entity stream_count field to find out if an entity is streaming. This 355media_entity stream_count field to find out if an entity is streaming. This
353operation must be done with the media_device graph_mutex held. 356operation must be done with the media_device graph_mutex held.
357
358
359Link validation
360---------------
361
362Link validation is performed by media_entity_pipeline_start() for any
363entity which has sink pads in the pipeline. The
364media_entity::link_validate() callback is used for that purpose. In
365link_validate() callback, entity driver should check that the properties of
366the source pad of the connected entity and its own sink pad match. It is up
367to the type of the entity (and in the end, the properties of the hardware)
368what matching actually means.
369
370Subsystems should facilitate link validation by providing subsystem specific
371helper functions to provide easy access for commonly needed information, and
372in the end provide a way to use driver-specific callbacks.
diff --git a/Documentation/memory-devices/ti-emif.txt b/Documentation/memory-devices/ti-emif.txt
new file mode 100644
index 000000000000..f4ad9a7d0f4b
--- /dev/null
+++ b/Documentation/memory-devices/ti-emif.txt
@@ -0,0 +1,57 @@
1TI EMIF SDRAM Controller Driver:
2
3Author
4========
5Aneesh V <aneesh@ti.com>
6
7Location
8============
9driver/memory/emif.c
10
11Supported SoCs:
12===================
13TI OMAP44xx
14TI OMAP54xx
15
16Menuconfig option:
17==========================
18Device Drivers
19 Memory devices
20 Texas Instruments EMIF driver
21
22Description
23===========
24This driver is for the EMIF module available in Texas Instruments
25SoCs. EMIF is an SDRAM controller that, based on its revision,
26supports one or more of DDR2, DDR3, and LPDDR2 SDRAM protocols.
27This driver takes care of only LPDDR2 memories presently. The
28functions of the driver includes re-configuring AC timing
29parameters and other settings during frequency, voltage and
30temperature changes
31
32Platform Data (see include/linux/platform_data/emif_plat.h):
33=====================================================================
34DDR device details and other board dependent and SoC dependent
35information can be passed through platform data (struct emif_platform_data)
36- DDR device details: 'struct ddr_device_info'
37- Device AC timings: 'struct lpddr2_timings' and 'struct lpddr2_min_tck'
38- Custom configurations: customizable policy options through
39 'struct emif_custom_configs'
40- IP revision
41- PHY type
42
43Interface to the external world:
44================================
45EMIF driver registers notifiers for voltage and frequency changes
46affecting EMIF and takes appropriate actions when these are invoked.
47- freq_pre_notify_handling()
48- freq_post_notify_handling()
49- volt_notify_handling()
50
51Debugfs
52========
53The driver creates two debugfs entries per device.
54- regcache_dump : dump of register values calculated and saved for all
55 frequencies used so far.
56- mr4 : last polled value of MR4 register in the LPDDR2 device. MR4
57 indicates the current temperature level of the device.
diff --git a/Documentation/memory-hotplug.txt b/Documentation/memory-hotplug.txt
index 8f485d72cf25..6d0c2519cf47 100644
--- a/Documentation/memory-hotplug.txt
+++ b/Documentation/memory-hotplug.txt
@@ -341,7 +341,7 @@ Need more implementation yet....
341-------------------------------- 341--------------------------------
3428. Memory hotplug event notifier 3428. Memory hotplug event notifier
343-------------------------------- 343--------------------------------
344Memory hotplug has event notifer. There are 6 types of notification. 344Memory hotplug has event notifier. There are 6 types of notification.
345 345
346MEMORY_GOING_ONLINE 346MEMORY_GOING_ONLINE
347 Generated before new memory becomes available in order to be able to 347 Generated before new memory becomes available in order to be able to
diff --git a/Documentation/misc-devices/mei/.gitignore b/Documentation/misc-devices/mei/.gitignore
new file mode 100644
index 000000000000..f356b81ca1ec
--- /dev/null
+++ b/Documentation/misc-devices/mei/.gitignore
@@ -0,0 +1 @@
mei-amt-version
diff --git a/Documentation/misc-devices/mei/Makefile b/Documentation/misc-devices/mei/Makefile
new file mode 100644
index 000000000000..00e8c3e836ff
--- /dev/null
+++ b/Documentation/misc-devices/mei/Makefile
@@ -0,0 +1,8 @@
1# kbuild trick to avoid linker error. Can be omitted if a module is built.
2obj- := dummy.o
3
4# List of programs to build
5hostprogs-y := mei-amt-version
6HOSTCFLAGS_mei-amt-version.o += -I$(objtree)/usr/include
7# Tell kbuild to always build the programs
8always := $(hostprogs-y)
diff --git a/Documentation/misc-devices/mei/TODO b/Documentation/misc-devices/mei/TODO
new file mode 100644
index 000000000000..6b3625d3058c
--- /dev/null
+++ b/Documentation/misc-devices/mei/TODO
@@ -0,0 +1,2 @@
1TODO:
2 - Cleanup and split the timer function
diff --git a/Documentation/misc-devices/mei/mei-amt-version.c b/Documentation/misc-devices/mei/mei-amt-version.c
new file mode 100644
index 000000000000..01804f216312
--- /dev/null
+++ b/Documentation/misc-devices/mei/mei-amt-version.c
@@ -0,0 +1,481 @@
1/******************************************************************************
2 * Intel Management Engine Interface (Intel MEI) Linux driver
3 * Intel MEI Interface Header
4 *
5 * This file is provided under a dual BSD/GPLv2 license. When using or
6 * redistributing this file, you may do so under either license.
7 *
8 * GPL LICENSE SUMMARY
9 *
10 * Copyright(c) 2012 Intel Corporation. All rights reserved.
11 *
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of version 2 of the GNU General Public License as
14 * published by the Free Software Foundation.
15 *
16 * This program is distributed in the hope that it will be useful, but
17 * WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 * General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110,
24 * USA
25 *
26 * The full GNU General Public License is included in this distribution
27 * in the file called LICENSE.GPL.
28 *
29 * Contact Information:
30 * Intel Corporation.
31 * linux-mei@linux.intel.com
32 * http://www.intel.com
33 *
34 * BSD LICENSE
35 *
36 * Copyright(c) 2003 - 2012 Intel Corporation. All rights reserved.
37 * All rights reserved.
38 *
39 * Redistribution and use in source and binary forms, with or without
40 * modification, are permitted provided that the following conditions
41 * are met:
42 *
43 * * Redistributions of source code must retain the above copyright
44 * notice, this list of conditions and the following disclaimer.
45 * * Redistributions in binary form must reproduce the above copyright
46 * notice, this list of conditions and the following disclaimer in
47 * the documentation and/or other materials provided with the
48 * distribution.
49 * * Neither the name Intel Corporation nor the names of its
50 * contributors may be used to endorse or promote products derived
51 * from this software without specific prior written permission.
52 *
53 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
54 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
55 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
56 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
57 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
58 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
59 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
60 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
61 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
62 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
63 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
64 *
65 *****************************************************************************/
66
67#include <stdio.h>
68#include <stdlib.h>
69#include <string.h>
70#include <fcntl.h>
71#include <sys/ioctl.h>
72#include <unistd.h>
73#include <errno.h>
74#include <stdint.h>
75#include <stdbool.h>
76#include <bits/wordsize.h>
77#include <linux/mei.h>
78
79/*****************************************************************************
80 * Intel Management Engine Interface
81 *****************************************************************************/
82
83#define mei_msg(_me, fmt, ARGS...) do { \
84 if (_me->verbose) \
85 fprintf(stderr, fmt, ##ARGS); \
86} while (0)
87
88#define mei_err(_me, fmt, ARGS...) do { \
89 fprintf(stderr, "Error: " fmt, ##ARGS); \
90} while (0)
91
92struct mei {
93 uuid_le guid;
94 bool initialized;
95 bool verbose;
96 unsigned int buf_size;
97 unsigned char prot_ver;
98 int fd;
99};
100
101static void mei_deinit(struct mei *cl)
102{
103 if (cl->fd != -1)
104 close(cl->fd);
105 cl->fd = -1;
106 cl->buf_size = 0;
107 cl->prot_ver = 0;
108 cl->initialized = false;
109}
110
111static bool mei_init(struct mei *me, const uuid_le *guid,
112 unsigned char req_protocol_version, bool verbose)
113{
114 int result;
115 struct mei_client *cl;
116 struct mei_connect_client_data data;
117
118 mei_deinit(me);
119
120 me->verbose = verbose;
121
122 me->fd = open("/dev/mei", O_RDWR);
123 if (me->fd == -1) {
124 mei_err(me, "Cannot establish a handle to the Intel MEI driver\n");
125 goto err;
126 }
127 memcpy(&me->guid, guid, sizeof(*guid));
128 memset(&data, 0, sizeof(data));
129 me->initialized = true;
130
131 memcpy(&data.in_client_uuid, &me->guid, sizeof(me->guid));
132 result = ioctl(me->fd, IOCTL_MEI_CONNECT_CLIENT, &data);
133 if (result) {
134 mei_err(me, "IOCTL_MEI_CONNECT_CLIENT receive message. err=%d\n", result);
135 goto err;
136 }
137 cl = &data.out_client_properties;
138 mei_msg(me, "max_message_length %d\n", cl->max_msg_length);
139 mei_msg(me, "protocol_version %d\n", cl->protocol_version);
140
141 if ((req_protocol_version > 0) &&
142 (cl->protocol_version != req_protocol_version)) {
143 mei_err(me, "Intel MEI protocol version not supported\n");
144 goto err;
145 }
146
147 me->buf_size = cl->max_msg_length;
148 me->prot_ver = cl->protocol_version;
149
150 return true;
151err:
152 mei_deinit(me);
153 return false;
154}
155
156static ssize_t mei_recv_msg(struct mei *me, unsigned char *buffer,
157 ssize_t len, unsigned long timeout)
158{
159 ssize_t rc;
160
161 mei_msg(me, "call read length = %zd\n", len);
162
163 rc = read(me->fd, buffer, len);
164 if (rc < 0) {
165 mei_err(me, "read failed with status %zd %s\n",
166 rc, strerror(errno));
167 mei_deinit(me);
168 } else {
169 mei_msg(me, "read succeeded with result %zd\n", rc);
170 }
171 return rc;
172}
173
174static ssize_t mei_send_msg(struct mei *me, const unsigned char *buffer,
175 ssize_t len, unsigned long timeout)
176{
177 struct timeval tv;
178 ssize_t written;
179 ssize_t rc;
180 fd_set set;
181
182 tv.tv_sec = timeout / 1000;
183 tv.tv_usec = (timeout % 1000) * 1000000;
184
185 mei_msg(me, "call write length = %zd\n", len);
186
187 written = write(me->fd, buffer, len);
188 if (written < 0) {
189 rc = -errno;
190 mei_err(me, "write failed with status %zd %s\n",
191 written, strerror(errno));
192 goto out;
193 }
194
195 FD_ZERO(&set);
196 FD_SET(me->fd, &set);
197 rc = select(me->fd + 1 , &set, NULL, NULL, &tv);
198 if (rc > 0 && FD_ISSET(me->fd, &set)) {
199 mei_msg(me, "write success\n");
200 } else if (rc == 0) {
201 mei_err(me, "write failed on timeout with status\n");
202 goto out;
203 } else { /* rc < 0 */
204 mei_err(me, "write failed on select with status %zd\n", rc);
205 goto out;
206 }
207
208 rc = written;
209out:
210 if (rc < 0)
211 mei_deinit(me);
212
213 return rc;
214}
215
216/***************************************************************************
217 * Intel Advanced Management Technolgy ME Client
218 ***************************************************************************/
219
220#define AMT_MAJOR_VERSION 1
221#define AMT_MINOR_VERSION 1
222
223#define AMT_STATUS_SUCCESS 0x0
224#define AMT_STATUS_INTERNAL_ERROR 0x1
225#define AMT_STATUS_NOT_READY 0x2
226#define AMT_STATUS_INVALID_AMT_MODE 0x3
227#define AMT_STATUS_INVALID_MESSAGE_LENGTH 0x4
228
229#define AMT_STATUS_HOST_IF_EMPTY_RESPONSE 0x4000
230#define AMT_STATUS_SDK_RESOURCES 0x1004
231
232
233#define AMT_BIOS_VERSION_LEN 65
234#define AMT_VERSIONS_NUMBER 50
235#define AMT_UNICODE_STRING_LEN 20
236
237struct amt_unicode_string {
238 uint16_t length;
239 char string[AMT_UNICODE_STRING_LEN];
240} __attribute__((packed));
241
242struct amt_version_type {
243 struct amt_unicode_string description;
244 struct amt_unicode_string version;
245} __attribute__((packed));
246
247struct amt_version {
248 uint8_t major;
249 uint8_t minor;
250} __attribute__((packed));
251
252struct amt_code_versions {
253 uint8_t bios[AMT_BIOS_VERSION_LEN];
254 uint32_t count;
255 struct amt_version_type versions[AMT_VERSIONS_NUMBER];
256} __attribute__((packed));
257
258/***************************************************************************
259 * Intel Advanced Management Technolgy Host Interface
260 ***************************************************************************/
261
262struct amt_host_if_msg_header {
263 struct amt_version version;
264 uint16_t _reserved;
265 uint32_t command;
266 uint32_t length;
267} __attribute__((packed));
268
269struct amt_host_if_resp_header {
270 struct amt_host_if_msg_header header;
271 uint32_t status;
272 unsigned char data[0];
273} __attribute__((packed));
274
275const uuid_le MEI_IAMTHIF = UUID_LE(0x12f80028, 0xb4b7, 0x4b2d, \
276 0xac, 0xa8, 0x46, 0xe0, 0xff, 0x65, 0x81, 0x4c);
277
278#define AMT_HOST_IF_CODE_VERSIONS_REQUEST 0x0400001A
279#define AMT_HOST_IF_CODE_VERSIONS_RESPONSE 0x0480001A
280
281const struct amt_host_if_msg_header CODE_VERSION_REQ = {
282 .version = {AMT_MAJOR_VERSION, AMT_MINOR_VERSION},
283 ._reserved = 0,
284 .command = AMT_HOST_IF_CODE_VERSIONS_REQUEST,
285 .length = 0
286};
287
288
289struct amt_host_if {
290 struct mei mei_cl;
291 unsigned long send_timeout;
292 bool initialized;
293};
294
295
296static bool amt_host_if_init(struct amt_host_if *acmd,
297 unsigned long send_timeout, bool verbose)
298{
299 acmd->send_timeout = (send_timeout) ? send_timeout : 20000;
300 acmd->initialized = mei_init(&acmd->mei_cl, &MEI_IAMTHIF, 0, verbose);
301 return acmd->initialized;
302}
303
304static void amt_host_if_deinit(struct amt_host_if *acmd)
305{
306 mei_deinit(&acmd->mei_cl);
307 acmd->initialized = false;
308}
309
310static uint32_t amt_verify_code_versions(const struct amt_host_if_resp_header *resp)
311{
312 uint32_t status = AMT_STATUS_SUCCESS;
313 struct amt_code_versions *code_ver;
314 size_t code_ver_len;
315 uint32_t ver_type_cnt;
316 uint32_t len;
317 uint32_t i;
318
319 code_ver = (struct amt_code_versions *)resp->data;
320 /* length - sizeof(status) */
321 code_ver_len = resp->header.length - sizeof(uint32_t);
322 ver_type_cnt = code_ver_len -
323 sizeof(code_ver->bios) -
324 sizeof(code_ver->count);
325 if (code_ver->count != ver_type_cnt / sizeof(struct amt_version_type)) {
326 status = AMT_STATUS_INTERNAL_ERROR;
327 goto out;
328 }
329
330 for (i = 0; i < code_ver->count; i++) {
331 len = code_ver->versions[i].description.length;
332
333 if (len > AMT_UNICODE_STRING_LEN) {
334 status = AMT_STATUS_INTERNAL_ERROR;
335 goto out;
336 }
337
338 len = code_ver->versions[i].version.length;
339 if (code_ver->versions[i].version.string[len] != '\0' ||
340 len != strlen(code_ver->versions[i].version.string)) {
341 status = AMT_STATUS_INTERNAL_ERROR;
342 goto out;
343 }
344 }
345out:
346 return status;
347}
348
349static uint32_t amt_verify_response_header(uint32_t command,
350 const struct amt_host_if_msg_header *resp_hdr,
351 uint32_t response_size)
352{
353 if (response_size < sizeof(struct amt_host_if_resp_header)) {
354 return AMT_STATUS_INTERNAL_ERROR;
355 } else if (response_size != (resp_hdr->length +
356 sizeof(struct amt_host_if_msg_header))) {
357 return AMT_STATUS_INTERNAL_ERROR;
358 } else if (resp_hdr->command != command) {
359 return AMT_STATUS_INTERNAL_ERROR;
360 } else if (resp_hdr->_reserved != 0) {
361 return AMT_STATUS_INTERNAL_ERROR;
362 } else if (resp_hdr->version.major != AMT_MAJOR_VERSION ||
363 resp_hdr->version.minor < AMT_MINOR_VERSION) {
364 return AMT_STATUS_INTERNAL_ERROR;
365 }
366 return AMT_STATUS_SUCCESS;
367}
368
369static uint32_t amt_host_if_call(struct amt_host_if *acmd,
370 const unsigned char *command, ssize_t command_sz,
371 uint8_t **read_buf, uint32_t rcmd,
372 unsigned int expected_sz)
373{
374 uint32_t in_buf_sz;
375 uint32_t out_buf_sz;
376 ssize_t written;
377 uint32_t status;
378 struct amt_host_if_resp_header *msg_hdr;
379
380 in_buf_sz = acmd->mei_cl.buf_size;
381 *read_buf = (uint8_t *)malloc(sizeof(uint8_t) * in_buf_sz);
382 if (*read_buf == NULL)
383 return AMT_STATUS_SDK_RESOURCES;
384 memset(*read_buf, 0, in_buf_sz);
385 msg_hdr = (struct amt_host_if_resp_header *)*read_buf;
386
387 written = mei_send_msg(&acmd->mei_cl,
388 command, command_sz, acmd->send_timeout);
389 if (written != command_sz)
390 return AMT_STATUS_INTERNAL_ERROR;
391
392 out_buf_sz = mei_recv_msg(&acmd->mei_cl, *read_buf, in_buf_sz, 2000);
393 if (out_buf_sz <= 0)
394 return AMT_STATUS_HOST_IF_EMPTY_RESPONSE;
395
396 status = msg_hdr->status;
397 if (status != AMT_STATUS_SUCCESS)
398 return status;
399
400 status = amt_verify_response_header(rcmd,
401 &msg_hdr->header, out_buf_sz);
402 if (status != AMT_STATUS_SUCCESS)
403 return status;
404
405 if (expected_sz && expected_sz != out_buf_sz)
406 return AMT_STATUS_INTERNAL_ERROR;
407
408 return AMT_STATUS_SUCCESS;
409}
410
411
412static uint32_t amt_get_code_versions(struct amt_host_if *cmd,
413 struct amt_code_versions *versions)
414{
415 struct amt_host_if_resp_header *response = NULL;
416 uint32_t status;
417
418 status = amt_host_if_call(cmd,
419 (const unsigned char *)&CODE_VERSION_REQ,
420 sizeof(CODE_VERSION_REQ),
421 (uint8_t **)&response,
422 AMT_HOST_IF_CODE_VERSIONS_RESPONSE, 0);
423
424 if (status != AMT_STATUS_SUCCESS)
425 goto out;
426
427 status = amt_verify_code_versions(response);
428 if (status != AMT_STATUS_SUCCESS)
429 goto out;
430
431 memcpy(versions, response->data, sizeof(struct amt_code_versions));
432out:
433 if (response != NULL)
434 free(response);
435
436 return status;
437}
438
439/************************** end of amt_host_if_command ***********************/
440int main(int argc, char **argv)
441{
442 struct amt_code_versions ver;
443 struct amt_host_if acmd;
444 unsigned int i;
445 uint32_t status;
446 int ret;
447 bool verbose;
448
449 verbose = (argc > 1 && strcmp(argv[1], "-v") == 0);
450
451 if (!amt_host_if_init(&acmd, 5000, verbose)) {
452 ret = 1;
453 goto out;
454 }
455
456 status = amt_get_code_versions(&acmd, &ver);
457
458 amt_host_if_deinit(&acmd);
459
460 switch (status) {
461 case AMT_STATUS_HOST_IF_EMPTY_RESPONSE:
462 printf("Intel AMT: DISABLED\n");
463 ret = 0;
464 break;
465 case AMT_STATUS_SUCCESS:
466 printf("Intel AMT: ENABLED\n");
467 for (i = 0; i < ver.count; i++) {
468 printf("%s:\t%s\n", ver.versions[i].description.string,
469 ver.versions[i].version.string);
470 }
471 ret = 0;
472 break;
473 default:
474 printf("An error has occurred\n");
475 ret = 1;
476 break;
477 }
478
479out:
480 return ret;
481}
diff --git a/Documentation/misc-devices/mei/mei.txt b/Documentation/misc-devices/mei/mei.txt
new file mode 100644
index 000000000000..2785697da59d
--- /dev/null
+++ b/Documentation/misc-devices/mei/mei.txt
@@ -0,0 +1,215 @@
1Intel(R) Management Engine Interface (Intel(R) MEI)
2=======================
3
4Introduction
5=======================
6
7The Intel Management Engine (Intel ME) is an isolated and protected computing
8resource (Co-processor) residing inside certain Intel chipsets. The Intel ME
9provides support for computer/IT management features. The feature set
10depends on the Intel chipset SKU.
11
12The Intel Management Engine Interface (Intel MEI, previously known as HECI)
13is the interface between the Host and Intel ME. This interface is exposed
14to the host as a PCI device. The Intel MEI Driver is in charge of the
15communication channel between a host application and the Intel ME feature.
16
17Each Intel ME feature (Intel ME Client) is addressed by a GUID/UUID and
18each client has its own protocol. The protocol is message-based with a
19header and payload up to 512 bytes.
20
21Prominent usage of the Intel ME Interface is to communicate with Intel(R)
22Active Management Technology (Intel AMT)implemented in firmware running on
23the Intel ME.
24
25Intel AMT provides the ability to manage a host remotely out-of-band (OOB)
26even when the operating system running on the host processor has crashed or
27is in a sleep state.
28
29Some examples of Intel AMT usage are:
30 - Monitoring hardware state and platform components
31 - Remote power off/on (useful for green computing or overnight IT
32 maintenance)
33 - OS updates
34 - Storage of useful platform information such as software assets
35 - Built-in hardware KVM
36 - Selective network isolation of Ethernet and IP protocol flows based
37 on policies set by a remote management console
38 - IDE device redirection from remote management console
39
40Intel AMT (OOB) communication is based on SOAP (deprecated
41starting with Release 6.0) over HTTP/S or WS-Management protocol over
42HTTP/S that are received from a remote management console application.
43
44For more information about Intel AMT:
45http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
46
47Intel MEI Driver
48=======================
49
50The driver exposes a misc device called /dev/mei.
51
52An application maintains communication with an Intel ME feature while
53/dev/mei is open. The binding to a specific features is performed by calling
54MEI_CONNECT_CLIENT_IOCTL, which passes the desired UUID.
55The number of instances of an Intel ME feature that can be opened
56at the same time depends on the Intel ME feature, but most of the
57features allow only a single instance.
58
59The Intel AMT Host Interface (Intel AMTHI) feature supports multiple
60simultaneous user applications. Therefore, the Intel MEI driver handles
61this internally by maintaining request queues for the applications.
62
63The driver is oblivious to data that is passed between firmware feature
64and host application.
65
66Because some of the Intel ME features can change the system
67configuration, the driver by default allows only a privileged
68user to access it.
69
70A code snippet for an application communicating with
71Intel AMTHI client:
72 struct mei_connect_client_data data;
73 fd = open(MEI_DEVICE);
74
75 data.d.in_client_uuid = AMTHI_UUID;
76
77 ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &data);
78
79 printf("Ver=%d, MaxLen=%ld\n",
80 data.d.in_client_uuid.protocol_version,
81 data.d.in_client_uuid.max_msg_length);
82
83 [...]
84
85 write(fd, amthi_req_data, amthi_req_data_len);
86
87 [...]
88
89 read(fd, &amthi_res_data, amthi_res_data_len);
90
91 [...]
92 close(fd);
93
94IOCTL:
95======
96The Intel MEI Driver supports the following IOCTL command:
97 IOCTL_MEI_CONNECT_CLIENT Connect to firmware Feature (client).
98
99 usage:
100 struct mei_connect_client_data clientData;
101 ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &clientData);
102
103 inputs:
104 mei_connect_client_data struct contain the following
105 input field:
106
107 in_client_uuid - UUID of the FW Feature that needs
108 to connect to.
109 outputs:
110 out_client_properties - Client Properties: MTU and Protocol Version.
111
112 error returns:
113 EINVAL Wrong IOCTL Number
114 ENODEV Device or Connection is not initialized or ready.
115 (e.g. Wrong UUID)
116 ENOMEM Unable to allocate memory to client internal data.
117 EFAULT Fatal Error (e.g. Unable to access user input data)
118 EBUSY Connection Already Open
119
120 Notes:
121 max_msg_length (MTU) in client properties describes the maximum
122 data that can be sent or received. (e.g. if MTU=2K, can send
123 requests up to bytes 2k and received responses upto 2k bytes).
124
125Intel ME Applications:
126==============
127
1281) Intel Local Management Service (Intel LMS)
129
130 Applications running locally on the platform communicate with Intel AMT Release
131 2.0 and later releases in the same way that network applications do via SOAP
132 over HTTP (deprecated starting with Release 6.0) or with WS-Management over
133 SOAP over HTTP. This means that some Intel AMT features can be accessed from a
134 local application using the same network interface as a remote application
135 communicating with Intel AMT over the network.
136
137 When a local application sends a message addressed to the local Intel AMT host
138 name, the Intel LMS, which listens for traffic directed to the host name,
139 intercepts the message and routes it to the Intel MEI.
140 For more information:
141 http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
142 Under "About Intel AMT" => "Local Access"
143
144 For downloading Intel LMS:
145 http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/
146
147 The Intel LMS opens a connection using the Intel MEI driver to the Intel LMS
148 firmware feature using a defined UUID and then communicates with the feature
149 using a protocol called Intel AMT Port Forwarding Protocol(Intel APF protocol).
150 The protocol is used to maintain multiple sessions with Intel AMT from a
151 single application.
152
153 See the protocol specification in the Intel AMT Software Development Kit(SDK)
154 http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
155 Under "SDK Resources" => "Intel(R) vPro(TM) Gateway(MPS)"
156 => "Information for Intel(R) vPro(TM) Gateway Developers"
157 => "Description of the Intel AMT Port Forwarding (APF)Protocol"
158
159 2) Intel AMT Remote configuration using a Local Agent
160 A Local Agent enables IT personnel to configure Intel AMT out-of-the-box
161 without requiring installing additional data to enable setup. The remote
162 configuration process may involve an ISV-developed remote configuration
163 agent that runs on the host.
164 For more information:
165 http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
166 Under "Setup and Configuration of Intel AMT" =>
167 "SDK Tools Supporting Setup and Configuration" =>
168 "Using the Local Agent Sample"
169
170 An open source Intel AMT configuration utility, implementing a local agent
171 that accesses the Intel MEI driver, can be found here:
172 http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/
173
174
175Intel AMT OS Health Watchdog:
176=============================
177The Intel AMT Watchdog is an OS Health (Hang/Crash) watchdog.
178Whenever the OS hangs or crashes, Intel AMT will send an event
179to any subscriber to this event. This mechanism means that
180IT knows when a platform crashes even when there is a hard failure on the host.
181
182The Intel AMT Watchdog is composed of two parts:
183 1) Firmware feature - receives the heartbeats
184 and sends an event when the heartbeats stop.
185 2) Intel MEI driver - connects to the watchdog feature, configures the
186 watchdog and sends the heartbeats.
187
188The Intel MEI driver uses the kernel watchdog to configure the Intel AMT
189Watchdog and to send heartbeats to it. The default timeout of the
190watchdog is 120 seconds.
191
192If the Intel AMT Watchdog feature does not exist (i.e. the connection failed),
193the Intel MEI driver will disable the sending of heartbeats.
194
195Supported Chipsets:
196==================
1977 Series Chipset Family
1986 Series Chipset Family
1995 Series Chipset Family
2004 Series Chipset Family
201Mobile 4 Series Chipset Family
202ICH9
20382946GZ/GL
20482G35 Express
20582Q963/Q965
20682P965/G965
207Mobile PM965/GM965
208Mobile GME965/GLE960
20982Q35 Express
21082G33/G31/P35/P31 Express
21182Q33 Express
21282X38/X48 Express
213
214---
215linux-mei@linux.intel.com
diff --git a/Documentation/networking/00-INDEX b/Documentation/networking/00-INDEX
index 9ad9ddeb384c..2cc3c7733a2f 100644
--- a/Documentation/networking/00-INDEX
+++ b/Documentation/networking/00-INDEX
@@ -1,7 +1,5 @@
100-INDEX 100-INDEX
2 - this file 2 - this file
33c359.txt
4 - information on the 3Com TokenLink Velocity XL (3c5359) driver.
53c505.txt 33c505.txt
6 - information on the 3Com EtherLink Plus (3c505) driver. 4 - information on the 3Com EtherLink Plus (3c505) driver.
73c509.txt 53c509.txt
@@ -142,8 +140,6 @@ netif-msg.txt
142 - Design of the network interface message level setting (NETIF_MSG_*). 140 - Design of the network interface message level setting (NETIF_MSG_*).
143nfc.txt 141nfc.txt
144 - The Linux Near Field Communication (NFS) subsystem. 142 - The Linux Near Field Communication (NFS) subsystem.
145olympic.txt
146 - IBM PCI Pit/Pit-Phy/Olympic Token Ring driver info.
147openvswitch.txt 143openvswitch.txt
148 - Open vSwitch developer documentation. 144 - Open vSwitch developer documentation.
149operstates.txt 145operstates.txt
@@ -184,8 +180,6 @@ skfp.txt
184 - SysKonnect FDDI (SK-5xxx, Compaq Netelligent) driver info. 180 - SysKonnect FDDI (SK-5xxx, Compaq Netelligent) driver info.
185smc9.txt 181smc9.txt
186 - the driver for SMC's 9000 series of Ethernet cards 182 - the driver for SMC's 9000 series of Ethernet cards
187smctr.txt
188 - SMC TokenCard TokenRing Linux driver info.
189spider-net.txt 183spider-net.txt
190 - README for the Spidernet Driver (as found in PS3 / Cell BE). 184 - README for the Spidernet Driver (as found in PS3 / Cell BE).
191stmmac.txt 185stmmac.txt
@@ -200,8 +194,6 @@ tcp-thin.txt
200 - kernel tuning options for low rate 'thin' TCP streams. 194 - kernel tuning options for low rate 'thin' TCP streams.
201tlan.txt 195tlan.txt
202 - ThunderLAN (Compaq Netelligent 10/100, Olicom OC-2xxx) driver info. 196 - ThunderLAN (Compaq Netelligent 10/100, Olicom OC-2xxx) driver info.
203tms380tr.txt
204 - SysKonnect Token Ring ISA/PCI adapter driver info.
205tproxy.txt 197tproxy.txt
206 - Transparent proxy support user guide. 198 - Transparent proxy support user guide.
207tuntap.txt 199tuntap.txt
diff --git a/Documentation/networking/3c359.txt b/Documentation/networking/3c359.txt
deleted file mode 100644
index dadfe8147ab8..000000000000
--- a/Documentation/networking/3c359.txt
+++ /dev/null
@@ -1,58 +0,0 @@
1
23COM PCI TOKEN LINK VELOCITY XL TOKEN RING CARDS README
3
4Release 0.9.0 - Release
5 Jul 17th 2000 Mike Phillips
6
7 1.2.0 - Final
8 Feb 17th 2002 Mike Phillips
9 Updated for submission to the 2.4.x kernel.
10
11Thanks:
12 Terry Murphy from 3Com for tech docs and support,
13 Adam D. Ligas for testing the driver.
14
15Note:
16 This driver will NOT work with the 3C339 Token Ring cards, you need
17to use the tms380 driver instead.
18
19Options:
20
21The driver accepts three options: ringspeed, pkt_buf_sz and message_level.
22
23These options can be specified differently for each card found.
24
25ringspeed: Has one of three settings 0 (default), 4 or 16. 0 will
26make the card autosense the ringspeed and join at the appropriate speed,
27this will be the default option for most people. 4 or 16 allow you to
28explicitly force the card to operate at a certain speed. The card will fail
29if you try to insert it at the wrong speed. (Although some hubs will allow
30this so be *very* careful). The main purpose for explicitly setting the ring
31speed is for when the card is first on the ring. In autosense mode, if the card
32cannot detect any active monitors on the ring it will open at the same speed as
33its last opening. This can be hazardous if this speed does not match the speed
34you want the ring to operate at.
35
36pkt_buf_sz: This is this initial receive buffer allocation size. This will
37default to 4096 if no value is entered. You may increase performance of the
38driver by setting this to a value larger than the network packet size, although
39the driver now re-sizes buffers based on MTU settings as well.
40
41message_level: Controls level of messages created by the driver. Defaults to 0:
42which only displays start-up and critical messages. Presently any non-zero
43value will display all soft messages as well. NB This does not turn
44debugging messages on, that must be done by modified the source code.
45
46Variable MTU size:
47
48The driver can handle a MTU size up to either 4500 or 18000 depending upon
49ring speed. The driver also changes the size of the receive buffers as part
50of the mtu re-sizing, so if you set mtu = 18000, you will need to be able
51to allocate 16 * (sk_buff with 18000 buffer size) call it 18500 bytes per ring
52position = 296,000 bytes of memory space, plus of course anything
53necessary for the tx sk_buff's. Remember this is per card, so if you are
54building routers, gateway's etc, you could start to use a lot of memory
55real fast.
56
572/17/02 Mike Phillips
58
diff --git a/Documentation/networking/3c509.txt b/Documentation/networking/3c509.txt
index dcc9eaf59395..fbf722e15ac3 100644
--- a/Documentation/networking/3c509.txt
+++ b/Documentation/networking/3c509.txt
@@ -25,7 +25,6 @@ models:
25 3c509B (later revision of the ISA card; supports full-duplex) 25 3c509B (later revision of the ISA card; supports full-duplex)
26 3c589 (PCMCIA) 26 3c589 (PCMCIA)
27 3c589B (later revision of the 3c589; supports full-duplex) 27 3c589B (later revision of the 3c589; supports full-duplex)
28 3c529 (MCA)
29 3c579 (EISA) 28 3c579 (EISA)
30 29
31Large portions of this documentation were heavily borrowed from the guide 30Large portions of this documentation were heavily borrowed from the guide
diff --git a/Documentation/networking/batman-adv.txt b/Documentation/networking/batman-adv.txt
index 221ad0cdf11f..75a592365af9 100644
--- a/Documentation/networking/batman-adv.txt
+++ b/Documentation/networking/batman-adv.txt
@@ -1,5 +1,3 @@
1[state: 21-08-2011]
2
3BATMAN-ADV 1BATMAN-ADV
4---------- 2----------
5 3
@@ -67,18 +65,19 @@ To deactivate an interface you have to write "none" into its
67All mesh wide settings can be found in batman's own interface 65All mesh wide settings can be found in batman's own interface
68folder: 66folder:
69 67
70# ls /sys/class/net/bat0/mesh/ 68# ls /sys/class/net/bat0/mesh/
71# aggregated_ogms fragmentation gw_sel_class vis_mode 69# aggregated_ogms gw_bandwidth log_level
72# ap_isolation gw_bandwidth hop_penalty 70# ap_isolation gw_mode orig_interval
73# bonding gw_mode orig_interval 71# bonding gw_sel_class routing_algo
72# bridge_loop_avoidance hop_penalty vis_mode
73# fragmentation
74 74
75 75
76There is a special folder for debugging information: 76There is a special folder for debugging information:
77 77
78# ls /sys/kernel/debug/batman_adv/bat0/ 78# ls /sys/kernel/debug/batman_adv/bat0/
79# gateways socket transtable_global vis_data 79# bla_claim_table log socket transtable_local
80# originators softif_neigh transtable_local 80# gateways originators transtable_global vis_data
81
82 81
83Some of the files contain all sort of status information regard- 82Some of the files contain all sort of status information regard-
84ing the mesh network. For example, you can view the table of 83ing the mesh network. For example, you can view the table of
@@ -202,12 +201,13 @@ abled during run time. Following log_levels are defined:
2021 - Enable messages related to routing / flooding / broadcasting 2011 - Enable messages related to routing / flooding / broadcasting
2032 - Enable messages related to route added / changed / deleted 2022 - Enable messages related to route added / changed / deleted
2044 - Enable messages related to translation table operations 2034 - Enable messages related to translation table operations
2057 - Enable all messages 2048 - Enable messages related to bridge loop avoidance
20515 - enable all messages
206 206
207The debug output can be changed at runtime using the file 207The debug output can be changed at runtime using the file
208/sys/class/net/bat0/mesh/log_level. e.g. 208/sys/class/net/bat0/mesh/log_level. e.g.
209 209
210# echo 2 > /sys/class/net/bat0/mesh/log_level 210# echo 6 > /sys/class/net/bat0/mesh/log_level
211 211
212will enable debug messages for when routes change. 212will enable debug messages for when routes change.
213 213
diff --git a/Documentation/networking/can.txt b/Documentation/networking/can.txt
index 56ca3b75376e..ac295399f0d4 100644
--- a/Documentation/networking/can.txt
+++ b/Documentation/networking/can.txt
@@ -649,7 +649,7 @@ solution for a couple of reasons:
649 The CAN device must be configured via netlink interface. The supported 649 The CAN device must be configured via netlink interface. The supported
650 netlink message types are defined and briefly described in 650 netlink message types are defined and briefly described in
651 "include/linux/can/netlink.h". CAN link support for the program "ip" 651 "include/linux/can/netlink.h". CAN link support for the program "ip"
652 of the IPROUTE2 utility suite is avaiable and it can be used as shown 652 of the IPROUTE2 utility suite is available and it can be used as shown
653 below: 653 below:
654 654
655 - Setting CAN device properties: 655 - Setting CAN device properties:
diff --git a/Documentation/networking/fore200e.txt b/Documentation/networking/fore200e.txt
index f648eb265188..d52af53efdc5 100644
--- a/Documentation/networking/fore200e.txt
+++ b/Documentation/networking/fore200e.txt
@@ -11,12 +11,10 @@ i386, alpha (untested), powerpc, sparc and sparc64 archs.
11 11
12The intent is to enable the use of different models of FORE adapters at the 12The intent is to enable the use of different models of FORE adapters at the
13same time, by hosts that have several bus interfaces (such as PCI+SBUS, 13same time, by hosts that have several bus interfaces (such as PCI+SBUS,
14PCI+MCA or PCI+EISA). 14or PCI+EISA).
15 15
16Only PCI and SBUS devices are currently supported by the driver, but support 16Only PCI and SBUS devices are currently supported by the driver, but support
17for other bus interfaces such as EISA should not be too hard to add (this may 17for other bus interfaces such as EISA should not be too hard to add.
18be more tricky for the MCA bus, though, as FORE made some MCA-specific
19modifications to the adapter's AALI interface).
20 18
21 19
22Firmware Copyright Notice 20Firmware Copyright Notice
diff --git a/Documentation/networking/ieee802154.txt b/Documentation/networking/ieee802154.txt
index 1dc1c24a7547..703cf4370c79 100644
--- a/Documentation/networking/ieee802154.txt
+++ b/Documentation/networking/ieee802154.txt
@@ -4,15 +4,22 @@
4 4
5Introduction 5Introduction
6============ 6============
7The IEEE 802.15.4 working group focuses on standartization of bottom
8two layers: Medium Accsess Control (MAC) and Physical (PHY). And there
9are mainly two options available for upper layers:
10 - ZigBee - proprietary protocol from ZigBee Alliance
11 - 6LowPAN - IPv6 networking over low rate personal area networks
7 12
8The Linux-ZigBee project goal is to provide complete implementation 13The Linux-ZigBee project goal is to provide complete implementation
9of IEEE 802.15.4 / ZigBee / 6LoWPAN protocols. IEEE 802.15.4 is a stack 14of IEEE 802.15.4 and 6LoWPAN protocols. IEEE 802.15.4 is a stack
10of protocols for organizing Low-Rate Wireless Personal Area Networks. 15of protocols for organizing Low-Rate Wireless Personal Area Networks.
11 16
12Currently only IEEE 802.15.4 layer is implemented. We have chosen 17The stack is composed of three main parts:
13to use plain Berkeley socket API, the generic Linux networking stack 18 - IEEE 802.15.4 layer; We have chosen to use plain Berkeley socket API,
14to transfer IEEE 802.15.4 messages and a special protocol over genetlink 19 the generic Linux networking stack to transfer IEEE 802.15.4 messages
15for configuration/management 20 and a special protocol over genetlink for configuration/management
21 - MAC - provides access to shared channel and reliable data delivery
22 - PHY - represents device drivers
16 23
17 24
18Socket API 25Socket API
@@ -29,15 +36,6 @@ or git tree at git://linux-zigbee.git.sourceforge.net/gitroot/linux-zigbee).
29One can use SOCK_RAW for passing raw data towards device xmit function. YMMV. 36One can use SOCK_RAW for passing raw data towards device xmit function. YMMV.
30 37
31 38
32MLME - MAC Level Management
33============================
34
35Most of IEEE 802.15.4 MLME interfaces are directly mapped on netlink commands.
36See the include/net/nl802154.h header. Our userspace tools package
37(see above) provides CLI configuration utility for radio interfaces and simple
38coordinator for IEEE 802.15.4 networks as an example users of MLME protocol.
39
40
41Kernel side 39Kernel side
42============= 40=============
43 41
@@ -51,6 +49,15 @@ Like with WiFi, there are several types of devices implementing IEEE 802.15.4.
51Those types of devices require different approach to be hooked into Linux kernel. 49Those types of devices require different approach to be hooked into Linux kernel.
52 50
53 51
52MLME - MAC Level Management
53============================
54
55Most of IEEE 802.15.4 MLME interfaces are directly mapped on netlink commands.
56See the include/net/nl802154.h header. Our userspace tools package
57(see above) provides CLI configuration utility for radio interfaces and simple
58coordinator for IEEE 802.15.4 networks as an example users of MLME protocol.
59
60
54HardMAC 61HardMAC
55======= 62=======
56 63
@@ -73,11 +80,47 @@ We provide an example of simple HardMAC driver at drivers/ieee802154/fakehard.c
73SoftMAC 80SoftMAC
74======= 81=======
75 82
76We are going to provide intermediate layer implementing IEEE 802.15.4 MAC 83The MAC is the middle layer in the IEEE 802.15.4 Linux stack. This moment it
77in software. This is currently WIP. 84provides interface for drivers registration and management of slave interfaces.
85
86NOTE: Currently the only monitor device type is supported - it's IEEE 802.15.4
87stack interface for network sniffers (e.g. WireShark).
88
89This layer is going to be extended soon.
78 90
79See header include/net/mac802154.h and several drivers in drivers/ieee802154/. 91See header include/net/mac802154.h and several drivers in drivers/ieee802154/.
80 92
93
94Device drivers API
95==================
96
97The include/net/mac802154.h defines following functions:
98 - struct ieee802154_dev *ieee802154_alloc_device
99 (size_t priv_size, struct ieee802154_ops *ops):
100 allocation of IEEE 802.15.4 compatible device
101
102 - void ieee802154_free_device(struct ieee802154_dev *dev):
103 freeing allocated device
104
105 - int ieee802154_register_device(struct ieee802154_dev *dev):
106 register PHY in the system
107
108 - void ieee802154_unregister_device(struct ieee802154_dev *dev):
109 freeing registered PHY
110
111Moreover IEEE 802.15.4 device operations structure should be filled.
112
113Fake drivers
114============
115
116In addition there are two drivers available which simulate real devices with
117HardMAC (fakehard) and SoftMAC (fakelb - IEEE 802.15.4 loopback driver)
118interfaces. This option provides possibility to test and debug stack without
119usage of real hardware.
120
121See sources in drivers/ieee802154 folder for more details.
122
123
816LoWPAN Linux implementation 1246LoWPAN Linux implementation
82============================ 125============================
83 126
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
index 1619a8c80873..6f896b94abdc 100644
--- a/Documentation/networking/ip-sysctl.txt
+++ b/Documentation/networking/ip-sysctl.txt
@@ -190,6 +190,20 @@ tcp_cookie_size - INTEGER
190tcp_dsack - BOOLEAN 190tcp_dsack - BOOLEAN
191 Allows TCP to send "duplicate" SACKs. 191 Allows TCP to send "duplicate" SACKs.
192 192
193tcp_early_retrans - INTEGER
194 Enable Early Retransmit (ER), per RFC 5827. ER lowers the threshold
195 for triggering fast retransmit when the amount of outstanding data is
196 small and when no previously unsent data can be transmitted (such
197 that limited transmit could be used).
198 Possible values:
199 0 disables ER
200 1 enables ER
201 2 enables ER but delays fast recovery and fast retransmit
202 by a fourth of RTT. This mitigates connection falsely
203 recovers when network has a small degree of reordering
204 (less than 3 packets).
205 Default: 2
206
193tcp_ecn - INTEGER 207tcp_ecn - INTEGER
194 Enable Explicit Congestion Notification (ECN) in TCP. ECN is only 208 Enable Explicit Congestion Notification (ECN) in TCP. ECN is only
195 used when both ends of the TCP flow support it. It is useful to 209 used when both ends of the TCP flow support it. It is useful to
@@ -1287,13 +1301,22 @@ bridge-nf-call-ip6tables - BOOLEAN
1287bridge-nf-filter-vlan-tagged - BOOLEAN 1301bridge-nf-filter-vlan-tagged - BOOLEAN
1288 1 : pass bridged vlan-tagged ARP/IP/IPv6 traffic to {arp,ip,ip6}tables. 1302 1 : pass bridged vlan-tagged ARP/IP/IPv6 traffic to {arp,ip,ip6}tables.
1289 0 : disable this. 1303 0 : disable this.
1290 Default: 1 1304 Default: 0
1291 1305
1292bridge-nf-filter-pppoe-tagged - BOOLEAN 1306bridge-nf-filter-pppoe-tagged - BOOLEAN
1293 1 : pass bridged pppoe-tagged IP/IPv6 traffic to {ip,ip6}tables. 1307 1 : pass bridged pppoe-tagged IP/IPv6 traffic to {ip,ip6}tables.
1294 0 : disable this. 1308 0 : disable this.
1295 Default: 1 1309 Default: 0
1296 1310
1311bridge-nf-pass-vlan-input-dev - BOOLEAN
1312 1: if bridge-nf-filter-vlan-tagged is enabled, try to find a vlan
1313 interface on the bridge and set the netfilter input device to the vlan.
1314 This allows use of e.g. "iptables -i br0.1" and makes the REDIRECT
1315 target work with vlan-on-top-of-bridge interfaces. When no matching
1316 vlan interface is found, or this switch is off, the input device is
1317 set to the bridge interface.
1318 0: disable bridge netfilter vlan interface lookup.
1319 Default: 0
1297 1320
1298proc/sys/net/sctp/* Variables: 1321proc/sys/net/sctp/* Variables:
1299 1322
@@ -1484,11 +1507,8 @@ addr_scope_policy - INTEGER
1484 1507
1485 1508
1486/proc/sys/net/core/* 1509/proc/sys/net/core/*
1487dev_weight - INTEGER 1510 Please see: Documentation/sysctl/net.txt for descriptions of these entries.
1488 The maximum number of packets that kernel can handle on a NAPI
1489 interrupt, it's a Per-CPU variable.
1490 1511
1491 Default: 64
1492 1512
1493/proc/sys/net/unix/* 1513/proc/sys/net/unix/*
1494max_dgram_qlen - INTEGER 1514max_dgram_qlen - INTEGER
diff --git a/Documentation/networking/mac80211-auth-assoc-deauth.txt b/Documentation/networking/mac80211-auth-assoc-deauth.txt
index e0a2aa585ca3..d7a15fe91bf7 100644
--- a/Documentation/networking/mac80211-auth-assoc-deauth.txt
+++ b/Documentation/networking/mac80211-auth-assoc-deauth.txt
@@ -23,7 +23,7 @@ BA session stop & deauth/disassoc frames
23end note 23end note
24end 24end
25 25
26mac80211->driver: config(channel, non-HT) 26mac80211->driver: config(channel, channel type)
27mac80211->driver: bss_info_changed(set BSSID, basic rate bitmap) 27mac80211->driver: bss_info_changed(set BSSID, basic rate bitmap)
28mac80211->driver: sta_state(AP, exists) 28mac80211->driver: sta_state(AP, exists)
29 29
@@ -51,7 +51,7 @@ note over mac80211,driver: cleanup like for authenticate
51end 51end
52 52
53alt not previously authenticated (FT) 53alt not previously authenticated (FT)
54mac80211->driver: config(channel, non-HT) 54mac80211->driver: config(channel, channel type)
55mac80211->driver: bss_info_changed(set BSSID, basic rate bitmap) 55mac80211->driver: bss_info_changed(set BSSID, basic rate bitmap)
56mac80211->driver: sta_state(AP, exists) 56mac80211->driver: sta_state(AP, exists)
57mac80211->driver: sta_state(AP, authenticated) 57mac80211->driver: sta_state(AP, authenticated)
@@ -67,10 +67,6 @@ end
67 67
68mac80211->driver: set up QoS parameters 68mac80211->driver: set up QoS parameters
69 69
70alt is HT channel
71mac80211->driver: config(channel, HT params)
72end
73
74mac80211->driver: bss_info_changed(QoS, HT, associated with AID) 70mac80211->driver: bss_info_changed(QoS, HT, associated with AID)
75mac80211->userspace: associated 71mac80211->userspace: associated
76 72
@@ -95,5 +91,5 @@ mac80211->driver: sta_state(AP,exists)
95mac80211->driver: sta_state(AP,not-exists) 91mac80211->driver: sta_state(AP,not-exists)
96mac80211->driver: turn off powersave 92mac80211->driver: turn off powersave
97mac80211->driver: bss_info_changed(clear BSSID, not associated, no QoS, ...) 93mac80211->driver: bss_info_changed(clear BSSID, not associated, no QoS, ...)
98mac80211->driver: config(non-HT channel type) 94mac80211->driver: config(channel type to non-HT)
99mac80211->userspace: disconnected 95mac80211->userspace: disconnected
diff --git a/Documentation/networking/olympic.txt b/Documentation/networking/olympic.txt
deleted file mode 100644
index b95b5bf96751..000000000000
--- a/Documentation/networking/olympic.txt
+++ /dev/null
@@ -1,79 +0,0 @@
1
2IBM PCI Pit/Pit-Phy/Olympic CHIPSET BASED TOKEN RING CARDS README
3
4Release 0.2.0 - Release
5 June 8th 1999 Peter De Schrijver & Mike Phillips
6Release 0.9.C - Release
7 April 18th 2001 Mike Phillips
8
9Thanks:
10Erik De Cock, Adrian Bridgett and Frank Fiene for their
11patience and testing.
12Donald Champion for the cardbus support
13Kyle Lucke for the dma api changes.
14Jonathon Bitner for hardware support.
15Everybody on linux-tr for their continued support.
16
17Options:
18
19The driver accepts four options: ringspeed, pkt_buf_sz,
20message_level and network_monitor.
21
22These options can be specified differently for each card found.
23
24ringspeed: Has one of three settings 0 (default), 4 or 16. 0 will
25make the card autosense the ringspeed and join at the appropriate speed,
26this will be the default option for most people. 4 or 16 allow you to
27explicitly force the card to operate at a certain speed. The card will fail
28if you try to insert it at the wrong speed. (Although some hubs will allow
29this so be *very* careful). The main purpose for explicitly setting the ring
30speed is for when the card is first on the ring. In autosense mode, if the card
31cannot detect any active monitors on the ring it will not open, so you must
32re-init the card at the appropriate speed. Unfortunately at present the only
33way of doing this is rmmod and insmod which is a bit tough if it is compiled
34in the kernel.
35
36pkt_buf_sz: This is this initial receive buffer allocation size. This will
37default to 4096 if no value is entered. You may increase performance of the
38driver by setting this to a value larger than the network packet size, although
39the driver now re-sizes buffers based on MTU settings as well.
40
41message_level: Controls level of messages created by the driver. Defaults to 0:
42which only displays start-up and critical messages. Presently any non-zero
43value will display all soft messages as well. NB This does not turn
44debugging messages on, that must be done by modified the source code.
45
46network_monitor: Any non-zero value will provide a quasi network monitoring
47mode. All unexpected MAC frames (beaconing etc.) will be received
48by the driver and the source and destination addresses printed.
49Also an entry will be added in /proc/net called olympic_tr%d, where tr%d
50is the registered device name, i.e tr0, tr1, etc. This displays low
51level information about the configuration of the ring and the adapter.
52This feature has been designed for network administrators to assist in
53the diagnosis of network / ring problems. (This used to OLYMPIC_NETWORK_MONITOR,
54but has now changed to allow each adapter to be configured differently and
55to alleviate the necessity to re-compile olympic to turn the option on).
56
57Multi-card:
58
59The driver will detect multiple cards and will work with shared interrupts,
60each card is assigned the next token ring device, i.e. tr0 , tr1, tr2. The
61driver should also happily reside in the system with other drivers. It has
62been tested with ibmtr.c running, and I personally have had one Olicom PCI
63card and two IBM olympic cards (all on the same interrupt), all running
64together.
65
66Variable MTU size:
67
68The driver can handle a MTU size up to either 4500 or 18000 depending upon
69ring speed. The driver also changes the size of the receive buffers as part
70of the mtu re-sizing, so if you set mtu = 18000, you will need to be able
71to allocate 16 * (sk_buff with 18000 buffer size) call it 18500 bytes per ring
72position = 296,000 bytes of memory space, plus of course anything
73necessary for the tx sk_buff's. Remember this is per card, so if you are
74building routers, gateway's etc, you could start to use a lot of memory
75real fast.
76
77
786/8/99 Peter De Schrijver and Mike Phillips
79
diff --git a/Documentation/networking/smctr.txt b/Documentation/networking/smctr.txt
deleted file mode 100644
index 9af25b810c1f..000000000000
--- a/Documentation/networking/smctr.txt
+++ /dev/null
@@ -1,66 +0,0 @@
1Text File for the SMC TokenCard TokenRing Linux driver (smctr.c).
2 By Jay Schulist <jschlst@samba.org>
3
4The Linux SMC Token Ring driver works with the SMC TokenCard Elite (8115T)
5ISA and SMC TokenCard Elite/A (8115T/A) MCA adapters.
6
7Latest information on this driver can be obtained on the Linux-SNA WWW site.
8Please point your browser to: http://www.linux-sna.org
9
10This driver is rather simple to use. Select Y to Token Ring adapter support
11in the kernel configuration. A choice for SMC Token Ring adapters will
12appear. This drives supports all SMC ISA/MCA adapters. Choose this
13option. I personally recommend compiling the driver as a module (M), but if you
14you would like to compile it statically answer Y instead.
15
16This driver supports multiple adapters without the need to load multiple copies
17of the driver. You should be able to load up to 7 adapters without any kernel
18modifications, if you are in need of more please contact the maintainer of this
19driver.
20
21Load the driver either by lilo/loadlin or as a module. When a module using the
22following command will suffice for most:
23
24# modprobe smctr
25smctr.c: v1.00 12/6/99 by jschlst@samba.org
26tr0: SMC TokenCard 8115T at Io 0x300, Irq 10, Rom 0xd8000, Ram 0xcc000.
27
28Now just setup the device via ifconfig and set and routes you may have. After
29this you are ready to start sending some tokens.
30
31Errata:
321). For anyone wondering where to pick up the SMC adapters please browse
33 to http://www.smc.com
34
352). If you are the first/only Token Ring Client on a Token Ring LAN, please
36 specify the ringspeed with the ringspeed=[4/16] module option. If no
37 ringspeed is specified the driver will attempt to autodetect the ring
38 speed and/or if the adapter is the first/only station on the ring take
39 the appropriate actions.
40
41 NOTE: Default ring speed is 16MB UTP.
42
433). PnP support for this adapter sucks. I recommend hard setting the
44 IO/MEM/IRQ by the jumpers on the adapter. If this is not possible
45 load the module with the following io=[ioaddr] mem=[mem_addr]
46 irq=[irq_num].
47
48 The following IRQ, IO, and MEM settings are supported.
49
50 IO ports:
51 0x200, 0x220, 0x240, 0x260, 0x280, 0x2A0, 0x2C0, 0x2E0, 0x300,
52 0x320, 0x340, 0x360, 0x380.
53
54 IRQs:
55 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15
56
57 Memory addresses:
58 0xA0000, 0xA4000, 0xA8000, 0xAC000, 0xB0000, 0xB4000,
59 0xB8000, 0xBC000, 0xC0000, 0xC4000, 0xC8000, 0xCC000,
60 0xD0000, 0xD4000, 0xD8000, 0xDC000, 0xE0000, 0xE4000,
61 0xE8000, 0xEC000, 0xF0000, 0xF4000, 0xF8000, 0xFC000
62
63This driver is under the GNU General Public License. Its Firmware image is
64included as an initialized C-array and is licensed by SMC to the Linux
65users of this driver. However no warranty about its fitness is expressed or
66implied by SMC.
diff --git a/Documentation/networking/stmmac.txt b/Documentation/networking/stmmac.txt
index d0aeeadd264b..5cb9a1972460 100644
--- a/Documentation/networking/stmmac.txt
+++ b/Documentation/networking/stmmac.txt
@@ -10,8 +10,8 @@ Currently this network device driver is for all STM embedded MAC/GMAC
10(i.e. 7xxx/5xxx SoCs), SPEAr (arm), Loongson1B (mips) and XLINX XC2V3000 10(i.e. 7xxx/5xxx SoCs), SPEAr (arm), Loongson1B (mips) and XLINX XC2V3000
11FF1152AMT0221 D1215994A VIRTEX FPGA board. 11FF1152AMT0221 D1215994A VIRTEX FPGA board.
12 12
13DWC Ether MAC 10/100/1000 Universal version 3.60a (and older) and DWC Ether MAC 10/100 13DWC Ether MAC 10/100/1000 Universal version 3.60a (and older) and DWC Ether
14Universal version 4.0 have been used for developing this driver. 14MAC 10/100 Universal version 4.0 have been used for developing this driver.
15 15
16This driver supports both the platform bus and PCI. 16This driver supports both the platform bus and PCI.
17 17
@@ -54,27 +54,27 @@ net_device structure enabling the scatter/gather feature.
54When one or more packets are received, an interrupt happens. The interrupts 54When one or more packets are received, an interrupt happens. The interrupts
55are not queued so the driver has to scan all the descriptors in the ring during 55are not queued so the driver has to scan all the descriptors in the ring during
56the receive process. 56the receive process.
57This is based on NAPI so the interrupt handler signals only if there is work to be 57This is based on NAPI so the interrupt handler signals only if there is work
58done, and it exits. 58to be done, and it exits.
59Then the poll method will be scheduled at some future point. 59Then the poll method will be scheduled at some future point.
60The incoming packets are stored, by the DMA, in a list of pre-allocated socket 60The incoming packets are stored, by the DMA, in a list of pre-allocated socket
61buffers in order to avoid the memcpy (Zero-copy). 61buffers in order to avoid the memcpy (Zero-copy).
62 62
634.3) Timer-Driver Interrupt 634.3) Timer-Driver Interrupt
64Instead of having the device that asynchronously notifies the frame receptions, the 64Instead of having the device that asynchronously notifies the frame receptions,
65driver configures a timer to generate an interrupt at regular intervals. 65the driver configures a timer to generate an interrupt at regular intervals.
66Based on the granularity of the timer, the frames that are received by the device 66Based on the granularity of the timer, the frames that are received by the
67will experience different levels of latency. Some NICs have dedicated timer 67device will experience different levels of latency. Some NICs have dedicated
68device to perform this task. STMMAC can use either the RTC device or the TMU 68timer device to perform this task. STMMAC can use either the RTC device or the
69channel 2 on STLinux platforms. 69TMU channel 2 on STLinux platforms.
70The timers frequency can be passed to the driver as parameter; when change it, 70The timers frequency can be passed to the driver as parameter; when change it,
71take care of both hardware capability and network stability/performance impact. 71take care of both hardware capability and network stability/performance impact.
72Several performance tests on STM platforms showed this optimisation allows to spare 72Several performance tests on STM platforms showed this optimisation allows to
73the CPU while having the maximum throughput. 73spare the CPU while having the maximum throughput.
74 74
754.4) WOL 754.4) WOL
76Wake up on Lan feature through Magic and Unicast frames are supported for the GMAC 76Wake up on Lan feature through Magic and Unicast frames are supported for the
77core. 77GMAC core.
78 78
794.5) DMA descriptors 794.5) DMA descriptors
80Driver handles both normal and enhanced descriptors. The latter has been only 80Driver handles both normal and enhanced descriptors. The latter has been only
@@ -106,16 +106,18 @@ Several driver's information can be passed through the platform
106These are included in the include/linux/stmmac.h header file 106These are included in the include/linux/stmmac.h header file
107and detailed below as well: 107and detailed below as well:
108 108
109 struct plat_stmmacenet_data { 109struct plat_stmmacenet_data {
110 char *phy_bus_name;
110 int bus_id; 111 int bus_id;
111 int phy_addr; 112 int phy_addr;
112 int interface; 113 int interface;
113 struct stmmac_mdio_bus_data *mdio_bus_data; 114 struct stmmac_mdio_bus_data *mdio_bus_data;
114 int pbl; 115 struct stmmac_dma_cfg *dma_cfg;
115 int clk_csr; 116 int clk_csr;
116 int has_gmac; 117 int has_gmac;
117 int enh_desc; 118 int enh_desc;
118 int tx_coe; 119 int tx_coe;
120 int rx_coe;
119 int bugged_jumbo; 121 int bugged_jumbo;
120 int pmt; 122 int pmt;
121 int force_sf_dma_mode; 123 int force_sf_dma_mode;
@@ -123,23 +125,30 @@ and detailed below as well:
123 void (*bus_setup)(void __iomem *ioaddr); 125 void (*bus_setup)(void __iomem *ioaddr);
124 int (*init)(struct platform_device *pdev); 126 int (*init)(struct platform_device *pdev);
125 void (*exit)(struct platform_device *pdev); 127 void (*exit)(struct platform_device *pdev);
128 void *custom_cfg;
129 void *custom_data;
126 void *bsp_priv; 130 void *bsp_priv;
127 }; 131 };
128 132
129Where: 133Where:
134 o phy_bus_name: phy bus name to attach to the stmmac.
130 o bus_id: bus identifier. 135 o bus_id: bus identifier.
131 o phy_addr: the physical address can be passed from the platform. 136 o phy_addr: the physical address can be passed from the platform.
132 If it is set to -1 the driver will automatically 137 If it is set to -1 the driver will automatically
133 detect it at run-time by probing all the 32 addresses. 138 detect it at run-time by probing all the 32 addresses.
134 o interface: PHY device's interface. 139 o interface: PHY device's interface.
135 o mdio_bus_data: specific platform fields for the MDIO bus. 140 o mdio_bus_data: specific platform fields for the MDIO bus.
136 o pbl: the Programmable Burst Length is maximum number of beats to 141 o dma_cfg: internal DMA parameters
142 o pbl: the Programmable Burst Length is maximum number of beats to
137 be transferred in one DMA transaction. 143 be transferred in one DMA transaction.
138 GMAC also enables the 4xPBL by default. 144 GMAC also enables the 4xPBL by default.
139 o clk_csr: CSR Clock range selection. 145 o fixed_burst/mixed_burst/burst_len
146 o clk_csr: fixed CSR Clock range selection.
140 o has_gmac: uses the GMAC core. 147 o has_gmac: uses the GMAC core.
141 o enh_desc: if sets the MAC will use the enhanced descriptor structure. 148 o enh_desc: if sets the MAC will use the enhanced descriptor structure.
142 o tx_coe: core is able to perform the tx csum in HW. 149 o tx_coe: core is able to perform the tx csum in HW.
150 o rx_coe: the supports three check sum offloading engine types:
151 type_1, type_2 (full csum) and no RX coe.
143 o bugged_jumbo: some HWs are not able to perform the csum in HW for 152 o bugged_jumbo: some HWs are not able to perform the csum in HW for
144 over-sized frames due to limited buffer sizes. 153 over-sized frames due to limited buffer sizes.
145 Setting this flag the csum will be done in SW on 154 Setting this flag the csum will be done in SW on
@@ -157,10 +166,11 @@ Where:
157 this is sometime necessary on some platforms (e.g. ST boxes) 166 this is sometime necessary on some platforms (e.g. ST boxes)
158 where the HW needs to have set some PIO lines or system cfg 167 where the HW needs to have set some PIO lines or system cfg
159 registers. 168 registers.
160 o custom_cfg: this is a custom configuration that can be passed while 169 o custom_cfg/custom_data: this is a custom configuration that can be passed
161 initialising the resources. 170 while initialising the resources.
171 o bsp_priv: another private poiter.
162 172
163The we have: 173For MDIO bus The we have:
164 174
165 struct stmmac_mdio_bus_data { 175 struct stmmac_mdio_bus_data {
166 int bus_id; 176 int bus_id;
@@ -177,10 +187,27 @@ Where:
177 o irqs: list of IRQs, one per PHY. 187 o irqs: list of IRQs, one per PHY.
178 o probed_phy_irq: if irqs is NULL, use this for probed PHY. 188 o probed_phy_irq: if irqs is NULL, use this for probed PHY.
179 189
190For DMA engine we have the following internal fields that should be
191tuned according to the HW capabilities.
192
193struct stmmac_dma_cfg {
194 int pbl;
195 int fixed_burst;
196 int burst_len_supported;
197};
198
199Where:
200 o pbl: Programmable Burst Length
201 o fixed_burst: program the DMA to use the fixed burst mode
202 o burst_len: this is the value we put in the register
203 supported values are provided as macros in
204 linux/stmmac.h header file.
205
206---
207
180Below an example how the structures above are using on ST platforms. 208Below an example how the structures above are using on ST platforms.
181 209
182 static struct plat_stmmacenet_data stxYYY_ethernet_platform_data = { 210 static struct plat_stmmacenet_data stxYYY_ethernet_platform_data = {
183 .pbl = 32,
184 .has_gmac = 0, 211 .has_gmac = 0,
185 .enh_desc = 0, 212 .enh_desc = 0,
186 .fix_mac_speed = stxYYY_ethernet_fix_mac_speed, 213 .fix_mac_speed = stxYYY_ethernet_fix_mac_speed,
diff --git a/Documentation/networking/tms380tr.txt b/Documentation/networking/tms380tr.txt
deleted file mode 100644
index 1f73e13058df..000000000000
--- a/Documentation/networking/tms380tr.txt
+++ /dev/null
@@ -1,147 +0,0 @@
1Text file for the Linux SysKonnect Token Ring ISA/PCI Adapter Driver.
2 Text file by: Jay Schulist <jschlst@samba.org>
3
4The Linux SysKonnect Token Ring driver works with the SysKonnect TR4/16(+) ISA,
5SysKonnect TR4/16(+) PCI, SysKonnect TR4/16 PCI, and older revisions of the
6SK NET TR4/16 ISA card.
7
8Latest information on this driver can be obtained on the Linux-SNA WWW site.
9Please point your browser to:
10http://www.linux-sna.org
11
12Many thanks to Christoph Goos for his excellent work on this driver and
13SysKonnect for donating the adapters to Linux-SNA for the testing and
14maintenance of this device driver.
15
16Important information to be noted:
171. Adapters can be slow to open (~20 secs) and close (~5 secs), please be
18 patient.
192. This driver works very well when autoprobing for adapters. Why even
20 think about those nasty io/int/dma settings of modprobe when the driver
21 will do it all for you!
22
23This driver is rather simple to use. Select Y to Token Ring adapter support
24in the kernel configuration. A choice for SysKonnect Token Ring adapters will
25appear. This drives supports all SysKonnect ISA and PCI adapters. Choose this
26option. I personally recommend compiling the driver as a module (M), but if you
27you would like to compile it statically answer Y instead.
28
29This driver supports multiple adapters without the need to load multiple copies
30of the driver. You should be able to load up to 7 adapters without any kernel
31modifications, if you are in need of more please contact the maintainer of this
32driver.
33
34Load the driver either by lilo/loadlin or as a module. When a module using the
35following command will suffice for most:
36
37# modprobe sktr
38
39This will produce output similar to the following: (Output is user specific)
40
41sktr.c: v1.01 08/29/97 by Christoph Goos
42tr0: SK NET TR 4/16 PCI found at 0x6100, using IRQ 17.
43tr1: SK NET TR 4/16 PCI found at 0x6200, using IRQ 16.
44tr2: SK NET TR 4/16 ISA found at 0xa20, using IRQ 10 and DMA 5.
45
46Now just setup the device via ifconfig and set and routes you may have. After
47this you are ready to start sending some tokens.
48
49Errata:
50For anyone wondering where to pick up the SysKonnect adapters please browse
51to http://www.syskonnect.com
52
53This driver is under the GNU General Public License. Its Firmware image is
54included as an initialized C-array and is licensed by SysKonnect to the Linux
55users of this driver. However no warranty about its fitness is expressed or
56implied by SysKonnect.
57
58Below find attached the setting for the SK NET TR 4/16 ISA adapters
59-------------------------------------------------------------------
60
61 ***************************
62 *** C O N T E N T S ***
63 ***************************
64
65 1) Location of DIP-Switch W1
66 2) Default settings
67 3) DIP-Switch W1 description
68
69
70 ==============================================================
71 CHAPTER 1 LOCATION OF DIP-SWITCH
72 ==============================================================
73
74UÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
75þUÄÄÄÄÄÄ¿ UÄÄÄÄÄ¿ UÄÄÄ¿ þ
76þAÄÄÄÄÄÄU W1 AÄÄÄÄÄU UÄÄÄÄ¿ þ þ þ
77þUÄÄÄÄÄÄ¿ þ þ þ þ UÄÄÅ¿
78þAÄÄÄÄÄÄU UÄÄÄÄÄÄÄÄÄÄÄ¿ AÄÄÄÄU þ þ þ þþ
79þUÄÄÄÄÄÄ¿ þ þ UÄÄÄ¿ AÄÄÄU AÄÄÅU
80þAÄÄÄÄÄÄU þ TMS380C26 þ þ þ þ
81þUÄÄÄÄÄÄ¿ þ þ AÄÄÄU AÄ¿
82þAÄÄÄÄÄÄU þ þ þ þ
83þ AÄÄÄÄÄÄÄÄÄÄÄU þ þ
84þ þ þ
85þ AÄU
86þ þ
87þ þ
88þ þ
89þ þ
90AÄÄÄÄÄÄÄÄÄÄÄÄAÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄAÄÄAÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄAÄÄÄÄÄÄÄÄÄU
91 AÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄU AÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄU
92
93 ==============================================================
94 CHAPTER 2 DEFAULT SETTINGS
95 ==============================================================
96
97 W1 1 2 3 4 5 6 7 8
98 +------------------------------+
99 | ON X |
100 | OFF X X X X X X X |
101 +------------------------------+
102
103 W1.1 = ON Adapter drives address lines SA17..19
104 W1.2 - 1.5 = OFF BootROM disabled
105 W1.6 - 1.8 = OFF I/O address 0A20h
106
107 ==============================================================
108 CHAPTER 3 DIP SWITCH W1 DESCRIPTION
109 ==============================================================
110
111 UÄÄÄAÄÄÄAÄÄÄAÄÄÄAÄÄÄAÄÄÄAÄÄÄAÄÄÄ¿ ON
112 þ 1 þ 2 þ 3 þ 4 þ 5 þ 6 þ 7 þ 8 þ
113 AÄÄÄAÄÄÄAÄÄÄAÄÄÄAÄÄÄAÄÄÄAÄÄÄAÄÄÄU OFF
114 |AD | BootROM Addr. | I/O |
115 +-+-+-------+-------+-----+-----+
116 | | |
117 | | +------ 6 7 8
118 | | ON ON ON 1900h
119 | | ON ON OFF 0900h
120 | | ON OFF ON 1980h
121 | | ON OFF OFF 0980h
122 | | OFF ON ON 1b20h
123 | | OFF ON OFF 0b20h
124 | | OFF OFF ON 1a20h
125 | | OFF OFF OFF 0a20h (+)
126 | |
127 | |
128 | +-------- 2 3 4 5
129 | OFF x x x disabled (+)
130 | ON ON ON ON C0000
131 | ON ON ON OFF C4000
132 | ON ON OFF ON C8000
133 | ON ON OFF OFF CC000
134 | ON OFF ON ON D0000
135 | ON OFF ON OFF D4000
136 | ON OFF OFF ON D8000
137 | ON OFF OFF OFF DC000
138 |
139 |
140 +----- 1
141 OFF adapter does NOT drive SA<17..19>
142 ON adapter drives SA<17..19> (+)
143
144
145 (+) means default setting
146
147 ********************************
diff --git a/Documentation/nfc/nfc-hci.txt b/Documentation/nfc/nfc-hci.txt
new file mode 100644
index 000000000000..320f9336c781
--- /dev/null
+++ b/Documentation/nfc/nfc-hci.txt
@@ -0,0 +1,180 @@
1HCI backend for NFC Core
2
3Author: Eric Lapuyade, Samuel Ortiz
4Contact: eric.lapuyade@intel.com, samuel.ortiz@intel.com
5
6General
7-------
8
9The HCI layer implements much of the ETSI TS 102 622 V10.2.0 specification. It
10enables easy writing of HCI-based NFC drivers. The HCI layer runs as an NFC Core
11backend, implementing an abstract nfc device and translating NFC Core API
12to HCI commands and events.
13
14HCI
15---
16
17HCI registers as an nfc device with NFC Core. Requests coming from userspace are
18routed through netlink sockets to NFC Core and then to HCI. From this point,
19they are translated in a sequence of HCI commands sent to the HCI layer in the
20host controller (the chip). The sending context blocks while waiting for the
21response to arrive.
22HCI events can also be received from the host controller. They will be handled
23and a translation will be forwarded to NFC Core as needed.
24HCI uses 2 execution contexts:
25- one for executing commands : nfc_hci_msg_tx_work(). Only one command
26can be executing at any given moment.
27- one for dispatching received events and commands : nfc_hci_msg_rx_work().
28
29HCI Session initialization:
30---------------------------
31
32The Session initialization is an HCI standard which must unfortunately
33support proprietary gates. This is the reason why the driver will pass a list
34of proprietary gates that must be part of the session. HCI will ensure all
35those gates have pipes connected when the hci device is set up.
36
37HCI Gates and Pipes
38-------------------
39
40A gate defines the 'port' where some service can be found. In order to access
41a service, one must create a pipe to that gate and open it. In this
42implementation, pipes are totally hidden. The public API only knows gates.
43This is consistent with the driver need to send commands to proprietary gates
44without knowing the pipe connected to it.
45
46Driver interface
47----------------
48
49A driver would normally register itself with HCI and provide the following
50entry points:
51
52struct nfc_hci_ops {
53 int (*open)(struct nfc_hci_dev *hdev);
54 void (*close)(struct nfc_hci_dev *hdev);
55 int (*hci_ready) (struct nfc_hci_dev *hdev);
56 int (*xmit)(struct nfc_hci_dev *hdev, struct sk_buff *skb);
57 int (*start_poll)(struct nfc_hci_dev *hdev, u32 protocols);
58 int (*target_from_gate)(struct nfc_hci_dev *hdev, u8 gate,
59 struct nfc_target *target);
60 int (*complete_target_discovered) (struct nfc_hci_dev *hdev, u8 gate,
61 struct nfc_target *target);
62 int (*data_exchange) (struct nfc_hci_dev *hdev,
63 struct nfc_target *target,
64 struct sk_buff *skb, struct sk_buff **res_skb);
65 int (*check_presence)(struct nfc_hci_dev *hdev,
66 struct nfc_target *target);
67};
68
69- open() and close() shall turn the hardware on and off.
70- hci_ready() is an optional entry point that is called right after the hci
71session has been set up. The driver can use it to do additional initialization
72that must be performed using HCI commands.
73- xmit() shall simply write a frame to the chip.
74- start_poll() is an optional entrypoint that shall set the hardware in polling
75mode. This must be implemented only if the hardware uses proprietary gates or a
76mechanism slightly different from the HCI standard.
77- target_from_gate() is an optional entrypoint to return the nfc protocols
78corresponding to a proprietary gate.
79- complete_target_discovered() is an optional entry point to let the driver
80perform additional proprietary processing necessary to auto activate the
81discovered target.
82- data_exchange() must be implemented by the driver if proprietary HCI commands
83are required to send data to the tag. Some tag types will require custom
84commands, others can be written to using the standard HCI commands. The driver
85can check the tag type and either do proprietary processing, or return 1 to ask
86for standard processing.
87- check_presence() is an optional entry point that will be called regularly
88by the core to check that an activated tag is still in the field. If this is
89not implemented, the core will not be able to push tag_lost events to the user
90space
91
92On the rx path, the driver is responsible to push incoming HCP frames to HCI
93using nfc_hci_recv_frame(). HCI will take care of re-aggregation and handling
94This must be done from a context that can sleep.
95
96SHDLC
97-----
98
99Most chips use shdlc to ensure integrity and delivery ordering of the HCP
100frames between the host controller (the chip) and hosts (entities connected
101to the chip, like the cpu). In order to simplify writing the driver, an shdlc
102layer is available for use by the driver.
103When used, the driver actually registers with shdlc, and shdlc will register
104with HCI. HCI sees shdlc as the driver and thus send its HCP frames
105through shdlc->xmit.
106SHDLC adds a new execution context (nfc_shdlc_sm_work()) to run its state
107machine and handle both its rx and tx path.
108
109Included Drivers
110----------------
111
112An HCI based driver for an NXP PN544, connected through I2C bus, and using
113shdlc is included.
114
115Execution Contexts
116------------------
117
118The execution contexts are the following:
119- IRQ handler (IRQH):
120fast, cannot sleep. stores incoming frames into an shdlc rx queue
121
122- SHDLC State Machine worker (SMW)
123handles shdlc rx & tx queues. Dispatches HCI cmd responses.
124
125- HCI Tx Cmd worker (MSGTXWQ)
126Serializes execution of HCI commands. Completes execution in case of response
127timeout.
128
129- HCI Rx worker (MSGRXWQ)
130Dispatches incoming HCI commands or events.
131
132- Syscall context from a userspace call (SYSCALL)
133Any entrypoint in HCI called from NFC Core
134
135Workflow executing an HCI command (using shdlc)
136-----------------------------------------------
137
138Executing an HCI command can easily be performed synchronously using the
139following API:
140
141int nfc_hci_send_cmd (struct nfc_hci_dev *hdev, u8 gate, u8 cmd,
142 const u8 *param, size_t param_len, struct sk_buff **skb)
143
144The API must be invoked from a context that can sleep. Most of the time, this
145will be the syscall context. skb will return the result that was received in
146the response.
147
148Internally, execution is asynchronous. So all this API does is to enqueue the
149HCI command, setup a local wait queue on stack, and wait_event() for completion.
150The wait is not interruptible because it is guaranteed that the command will
151complete after some short timeout anyway.
152
153MSGTXWQ context will then be scheduled and invoke nfc_hci_msg_tx_work().
154This function will dequeue the next pending command and send its HCP fragments
155to the lower layer which happens to be shdlc. It will then start a timer to be
156able to complete the command with a timeout error if no response arrive.
157
158SMW context gets scheduled and invokes nfc_shdlc_sm_work(). This function
159handles shdlc framing in and out. It uses the driver xmit to send frames and
160receives incoming frames in an skb queue filled from the driver IRQ handler.
161SHDLC I(nformation) frames payload are HCP fragments. They are aggregated to
162form complete HCI frames, which can be a response, command, or event.
163
164HCI Responses are dispatched immediately from this context to unblock
165waiting command execution. Response processing involves invoking the completion
166callback that was provided by nfc_hci_msg_tx_work() when it sent the command.
167The completion callback will then wake the syscall context.
168
169Workflow receiving an HCI event or command
170------------------------------------------
171
172HCI commands or events are not dispatched from SMW context. Instead, they are
173queued to HCI rx_queue and will be dispatched from HCI rx worker
174context (MSGRXWQ). This is done this way to allow a cmd or event handler
175to also execute other commands (for example, handling the
176NFC_HCI_EVT_TARGET_DISCOVERED event from PN544 requires to issue an
177ANY_GET_PARAMETER to the reader A gate to get information on the target
178that was discovered).
179
180Typically, such an event will be propagated to NFC Core from MSGRXWQ context.
diff --git a/Documentation/parisc/debugging b/Documentation/parisc/debugging
index d728594058e5..7d75223fa18d 100644
--- a/Documentation/parisc/debugging
+++ b/Documentation/parisc/debugging
@@ -34,6 +34,6 @@ registers interruption handlers read to find out where the machine
34was interrupted - so if you get an interruption between the instruction 34was interrupted - so if you get an interruption between the instruction
35that clears the Q bit and the RFI that sets it again you don't know 35that clears the Q bit and the RFI that sets it again you don't know
36where exactly it happened. If you're lucky the IAOQ will point to the 36where exactly it happened. If you're lucky the IAOQ will point to the
37instrucion that cleared the Q bit, if you're not it points anywhere 37instruction that cleared the Q bit, if you're not it points anywhere
38at all. Usually Q bit problems will show themselves in unexplainable 38at all. Usually Q bit problems will show themselves in unexplainable
39system hangs or running off the end of physical memory. 39system hangs or running off the end of physical memory.
diff --git a/Documentation/pinctrl.txt b/Documentation/pinctrl.txt
index d97bccf46147..e40f4b4e1977 100644
--- a/Documentation/pinctrl.txt
+++ b/Documentation/pinctrl.txt
@@ -152,11 +152,9 @@ static const struct foo_group foo_groups[] = {
152}; 152};
153 153
154 154
155static int foo_list_groups(struct pinctrl_dev *pctldev, unsigned selector) 155static int foo_get_groups_count(struct pinctrl_dev *pctldev)
156{ 156{
157 if (selector >= ARRAY_SIZE(foo_groups)) 157 return ARRAY_SIZE(foo_groups);
158 return -EINVAL;
159 return 0;
160} 158}
161 159
162static const char *foo_get_group_name(struct pinctrl_dev *pctldev, 160static const char *foo_get_group_name(struct pinctrl_dev *pctldev,
@@ -175,7 +173,7 @@ static int foo_get_group_pins(struct pinctrl_dev *pctldev, unsigned selector,
175} 173}
176 174
177static struct pinctrl_ops foo_pctrl_ops = { 175static struct pinctrl_ops foo_pctrl_ops = {
178 .list_groups = foo_list_groups, 176 .get_groups_count = foo_get_groups_count,
179 .get_group_name = foo_get_group_name, 177 .get_group_name = foo_get_group_name,
180 .get_group_pins = foo_get_group_pins, 178 .get_group_pins = foo_get_group_pins,
181}; 179};
@@ -186,13 +184,12 @@ static struct pinctrl_desc foo_desc = {
186 .pctlops = &foo_pctrl_ops, 184 .pctlops = &foo_pctrl_ops,
187}; 185};
188 186
189The pin control subsystem will call the .list_groups() function repeatedly 187The pin control subsystem will call the .get_groups_count() function to
190beginning on 0 until it returns non-zero to determine legal selectors, then 188determine total number of legal selectors, then it will call the other functions
191it will call the other functions to retrieve the name and pins of the group. 189to retrieve the name and pins of the group. Maintaining the data structure of
192Maintaining the data structure of the groups is up to the driver, this is 190the groups is up to the driver, this is just a simple example - in practice you
193just a simple example - in practice you may need more entries in your group 191may need more entries in your group structure, for example specific register
194structure, for example specific register ranges associated with each group 192ranges associated with each group and so on.
195and so on.
196 193
197 194
198Pin configuration 195Pin configuration
@@ -606,11 +603,9 @@ static const struct foo_group foo_groups[] = {
606}; 603};
607 604
608 605
609static int foo_list_groups(struct pinctrl_dev *pctldev, unsigned selector) 606static int foo_get_groups_count(struct pinctrl_dev *pctldev)
610{ 607{
611 if (selector >= ARRAY_SIZE(foo_groups)) 608 return ARRAY_SIZE(foo_groups);
612 return -EINVAL;
613 return 0;
614} 609}
615 610
616static const char *foo_get_group_name(struct pinctrl_dev *pctldev, 611static const char *foo_get_group_name(struct pinctrl_dev *pctldev,
@@ -629,7 +624,7 @@ static int foo_get_group_pins(struct pinctrl_dev *pctldev, unsigned selector,
629} 624}
630 625
631static struct pinctrl_ops foo_pctrl_ops = { 626static struct pinctrl_ops foo_pctrl_ops = {
632 .list_groups = foo_list_groups, 627 .get_groups_count = foo_get_groups_count,
633 .get_group_name = foo_get_group_name, 628 .get_group_name = foo_get_group_name,
634 .get_group_pins = foo_get_group_pins, 629 .get_group_pins = foo_get_group_pins,
635}; 630};
@@ -640,7 +635,7 @@ struct foo_pmx_func {
640 const unsigned num_groups; 635 const unsigned num_groups;
641}; 636};
642 637
643static const char * const spi0_groups[] = { "spi0_1_grp" }; 638static const char * const spi0_groups[] = { "spi0_0_grp", "spi0_1_grp" };
644static const char * const i2c0_groups[] = { "i2c0_grp" }; 639static const char * const i2c0_groups[] = { "i2c0_grp" };
645static const char * const mmc0_groups[] = { "mmc0_1_grp", "mmc0_2_grp", 640static const char * const mmc0_groups[] = { "mmc0_1_grp", "mmc0_2_grp",
646 "mmc0_3_grp" }; 641 "mmc0_3_grp" };
@@ -663,11 +658,9 @@ static const struct foo_pmx_func foo_functions[] = {
663 }, 658 },
664}; 659};
665 660
666int foo_list_funcs(struct pinctrl_dev *pctldev, unsigned selector) 661int foo_get_functions_count(struct pinctrl_dev *pctldev)
667{ 662{
668 if (selector >= ARRAY_SIZE(foo_functions)) 663 return ARRAY_SIZE(foo_functions);
669 return -EINVAL;
670 return 0;
671} 664}
672 665
673const char *foo_get_fname(struct pinctrl_dev *pctldev, unsigned selector) 666const char *foo_get_fname(struct pinctrl_dev *pctldev, unsigned selector)
@@ -703,7 +696,7 @@ void foo_disable(struct pinctrl_dev *pctldev, unsigned selector,
703} 696}
704 697
705struct pinmux_ops foo_pmxops = { 698struct pinmux_ops foo_pmxops = {
706 .list_functions = foo_list_funcs, 699 .get_functions_count = foo_get_functions_count,
707 .get_function_name = foo_get_fname, 700 .get_function_name = foo_get_fname,
708 .get_function_groups = foo_get_groups, 701 .get_function_groups = foo_get_groups,
709 .enable = foo_enable, 702 .enable = foo_enable,
@@ -786,7 +779,7 @@ and spi on the second function mapping:
786 779
787#include <linux/pinctrl/machine.h> 780#include <linux/pinctrl/machine.h>
788 781
789static const struct pinctrl_map __initdata mapping[] = { 782static const struct pinctrl_map mapping[] __initconst = {
790 { 783 {
791 .dev_name = "foo-spi.0", 784 .dev_name = "foo-spi.0",
792 .name = PINCTRL_STATE_DEFAULT, 785 .name = PINCTRL_STATE_DEFAULT,
@@ -952,13 +945,13 @@ case), we define a mapping like this:
952The result of grabbing this mapping from the device with something like 945The result of grabbing this mapping from the device with something like
953this (see next paragraph): 946this (see next paragraph):
954 947
955 p = pinctrl_get(dev); 948 p = devm_pinctrl_get(dev);
956 s = pinctrl_lookup_state(p, "8bit"); 949 s = pinctrl_lookup_state(p, "8bit");
957 ret = pinctrl_select_state(p, s); 950 ret = pinctrl_select_state(p, s);
958 951
959or more simply: 952or more simply:
960 953
961 p = pinctrl_get_select(dev, "8bit"); 954 p = devm_pinctrl_get_select(dev, "8bit");
962 955
963Will be that you activate all the three bottom records in the mapping at 956Will be that you activate all the three bottom records in the mapping at
964once. Since they share the same name, pin controller device, function and 957once. Since they share the same name, pin controller device, function and
@@ -992,7 +985,7 @@ foo_probe()
992 /* Allocate a state holder named "foo" etc */ 985 /* Allocate a state holder named "foo" etc */
993 struct foo_state *foo = ...; 986 struct foo_state *foo = ...;
994 987
995 foo->p = pinctrl_get(&device); 988 foo->p = devm_pinctrl_get(&device);
996 if (IS_ERR(foo->p)) { 989 if (IS_ERR(foo->p)) {
997 /* FIXME: clean up "foo" here */ 990 /* FIXME: clean up "foo" here */
998 return PTR_ERR(foo->p); 991 return PTR_ERR(foo->p);
@@ -1000,24 +993,17 @@ foo_probe()
1000 993
1001 foo->s = pinctrl_lookup_state(foo->p, PINCTRL_STATE_DEFAULT); 994 foo->s = pinctrl_lookup_state(foo->p, PINCTRL_STATE_DEFAULT);
1002 if (IS_ERR(foo->s)) { 995 if (IS_ERR(foo->s)) {
1003 pinctrl_put(foo->p);
1004 /* FIXME: clean up "foo" here */ 996 /* FIXME: clean up "foo" here */
1005 return PTR_ERR(s); 997 return PTR_ERR(s);
1006 } 998 }
1007 999
1008 ret = pinctrl_select_state(foo->s); 1000 ret = pinctrl_select_state(foo->s);
1009 if (ret < 0) { 1001 if (ret < 0) {
1010 pinctrl_put(foo->p);
1011 /* FIXME: clean up "foo" here */ 1002 /* FIXME: clean up "foo" here */
1012 return ret; 1003 return ret;
1013 } 1004 }
1014} 1005}
1015 1006
1016foo_remove()
1017{
1018 pinctrl_put(state->p);
1019}
1020
1021This get/lookup/select/put sequence can just as well be handled by bus drivers 1007This get/lookup/select/put sequence can just as well be handled by bus drivers
1022if you don't want each and every driver to handle it and you know the 1008if you don't want each and every driver to handle it and you know the
1023arrangement on your bus. 1009arrangement on your bus.
@@ -1029,6 +1015,11 @@ The semantics of the pinctrl APIs are:
1029 kernel memory to hold the pinmux state. All mapping table parsing or similar 1015 kernel memory to hold the pinmux state. All mapping table parsing or similar
1030 slow operations take place within this API. 1016 slow operations take place within this API.
1031 1017
1018- devm_pinctrl_get() is a variant of pinctrl_get() that causes pinctrl_put()
1019 to be called automatically on the retrieved pointer when the associated
1020 device is removed. It is recommended to use this function over plain
1021 pinctrl_get().
1022
1032- pinctrl_lookup_state() is called in process context to obtain a handle to a 1023- pinctrl_lookup_state() is called in process context to obtain a handle to a
1033 specific state for a the client device. This operation may be slow too. 1024 specific state for a the client device. This operation may be slow too.
1034 1025
@@ -1041,14 +1032,30 @@ The semantics of the pinctrl APIs are:
1041 1032
1042- pinctrl_put() frees all information associated with a pinctrl handle. 1033- pinctrl_put() frees all information associated with a pinctrl handle.
1043 1034
1035- devm_pinctrl_put() is a variant of pinctrl_put() that may be used to
1036 explicitly destroy a pinctrl object returned by devm_pinctrl_get().
1037 However, use of this function will be rare, due to the automatic cleanup
1038 that will occur even without calling it.
1039
1040 pinctrl_get() must be paired with a plain pinctrl_put().
1041 pinctrl_get() may not be paired with devm_pinctrl_put().
1042 devm_pinctrl_get() can optionally be paired with devm_pinctrl_put().
1043 devm_pinctrl_get() may not be paired with plain pinctrl_put().
1044
1044Usually the pin control core handled the get/put pair and call out to the 1045Usually the pin control core handled the get/put pair and call out to the
1045device drivers bookkeeping operations, like checking available functions and 1046device drivers bookkeeping operations, like checking available functions and
1046the associated pins, whereas the enable/disable pass on to the pin controller 1047the associated pins, whereas the enable/disable pass on to the pin controller
1047driver which takes care of activating and/or deactivating the mux setting by 1048driver which takes care of activating and/or deactivating the mux setting by
1048quickly poking some registers. 1049quickly poking some registers.
1049 1050
1050The pins are allocated for your device when you issue the pinctrl_get() call, 1051The pins are allocated for your device when you issue the devm_pinctrl_get()
1051after this you should be able to see this in the debugfs listing of all pins. 1052call, after this you should be able to see this in the debugfs listing of all
1053pins.
1054
1055NOTE: the pinctrl system will return -EPROBE_DEFER if it cannot find the
1056requested pinctrl handles, for example if the pinctrl driver has not yet
1057registered. Thus make sure that the error path in your driver gracefully
1058cleans up and is ready to retry the probing later in the startup process.
1052 1059
1053 1060
1054System pin control hogging 1061System pin control hogging
@@ -1094,13 +1101,13 @@ it, disables and releases it, and muxes it in on the pins defined by group B:
1094 1101
1095#include <linux/pinctrl/consumer.h> 1102#include <linux/pinctrl/consumer.h>
1096 1103
1097foo_switch() 1104struct pinctrl *p;
1098{ 1105struct pinctrl_state *s1, *s2;
1099 struct pinctrl *p;
1100 struct pinctrl_state *s1, *s2;
1101 1106
1107foo_probe()
1108{
1102 /* Setup */ 1109 /* Setup */
1103 p = pinctrl_get(&device); 1110 p = devm_pinctrl_get(&device);
1104 if (IS_ERR(p)) 1111 if (IS_ERR(p))
1105 ... 1112 ...
1106 1113
@@ -1111,7 +1118,10 @@ foo_switch()
1111 s2 = pinctrl_lookup_state(foo->p, "pos-B"); 1118 s2 = pinctrl_lookup_state(foo->p, "pos-B");
1112 if (IS_ERR(s2)) 1119 if (IS_ERR(s2))
1113 ... 1120 ...
1121}
1114 1122
1123foo_switch()
1124{
1115 /* Enable on position A */ 1125 /* Enable on position A */
1116 ret = pinctrl_select_state(s1); 1126 ret = pinctrl_select_state(s1);
1117 if (ret < 0) 1127 if (ret < 0)
@@ -1125,8 +1135,6 @@ foo_switch()
1125 ... 1135 ...
1126 1136
1127 ... 1137 ...
1128
1129 pinctrl_put(p);
1130} 1138}
1131 1139
1132The above has to be done from process context. 1140The above has to be done from process context.
diff --git a/Documentation/power/charger-manager.txt b/Documentation/power/charger-manager.txt
index fdcca991df30..b4f7f4b23f64 100644
--- a/Documentation/power/charger-manager.txt
+++ b/Documentation/power/charger-manager.txt
@@ -44,6 +44,16 @@ Charger Manager supports the following:
44 Normally, the platform will need to resume and suspend some devices 44 Normally, the platform will need to resume and suspend some devices
45 that are used by Charger Manager. 45 that are used by Charger Manager.
46 46
47* Support for premature full-battery event handling
48 If the battery voltage drops by "fullbatt_vchkdrop_uV" after
49 "fullbatt_vchkdrop_ms" from the full-battery event, the framework
50 restarts charging. This check is also performed while suspended by
51 setting wakeup time accordingly and using suspend_again.
52
53* Support for uevent-notify
54 With the charger-related events, the device sends
55 notification to users with UEVENT.
56
472. Global Charger-Manager Data related with suspend_again 572. Global Charger-Manager Data related with suspend_again
48======================================================== 58========================================================
49In order to setup Charger Manager with suspend-again feature 59In order to setup Charger Manager with suspend-again feature
@@ -55,7 +65,7 @@ if there are multiple batteries. If there are multiple batteries, the
55multiple instances of Charger Manager share the same charger_global_desc 65multiple instances of Charger Manager share the same charger_global_desc
56and it will manage in-suspend monitoring for all instances of Charger Manager. 66and it will manage in-suspend monitoring for all instances of Charger Manager.
57 67
58The user needs to provide all the two entries properly in order to activate 68The user needs to provide all the three entries properly in order to activate
59in-suspend monitoring: 69in-suspend monitoring:
60 70
61struct charger_global_desc { 71struct charger_global_desc {
@@ -74,6 +84,11 @@ bool (*rtc_only_wakeup)(void);
74 same struct. If there is any other wakeup source triggered the 84 same struct. If there is any other wakeup source triggered the
75 wakeup, it should return false. If the "rtc" is the only wakeup 85 wakeup, it should return false. If the "rtc" is the only wakeup
76 reason, it should return true. 86 reason, it should return true.
87
88bool assume_timer_stops_in_suspend;
89 : if true, Charger Manager assumes that
90 the timer (CM uses jiffies as timer) stops during suspend. Then, CM
91 assumes that the suspend-duration is same as the alarm length.
77}; 92};
78 93
793. How to setup suspend_again 943. How to setup suspend_again
@@ -111,6 +126,16 @@ enum polling_modes polling_mode;
111 CM_POLL_CHARGING_ONLY: poll this battery if and only if the 126 CM_POLL_CHARGING_ONLY: poll this battery if and only if the
112 battery is being charged. 127 battery is being charged.
113 128
129unsigned int fullbatt_vchkdrop_ms;
130unsigned int fullbatt_vchkdrop_uV;
131 : If both have non-zero values, Charger Manager will check the
132 battery voltage drop fullbatt_vchkdrop_ms after the battery is fully
133 charged. If the voltage drop is over fullbatt_vchkdrop_uV, Charger
134 Manager will try to recharge the battery by disabling and enabling
135 chargers. Recharge with voltage drop condition only (without delay
136 condition) is needed to be implemented with hardware interrupts from
137 fuel gauges or charger devices/chips.
138
114unsigned int fullbatt_uV; 139unsigned int fullbatt_uV;
115 : If specified with a non-zero value, Charger Manager assumes 140 : If specified with a non-zero value, Charger Manager assumes
116 that the battery is full (capacity = 100) if the battery is not being 141 that the battery is full (capacity = 100) if the battery is not being
@@ -122,6 +147,8 @@ unsigned int polling_interval_ms;
122 this battery every polling_interval_ms or more frequently. 147 this battery every polling_interval_ms or more frequently.
123 148
124enum data_source battery_present; 149enum data_source battery_present;
150 : CM_BATTERY_PRESENT: assume that the battery exists.
151 CM_NO_BATTERY: assume that the battery does not exists.
125 CM_FUEL_GAUGE: get battery presence information from fuel gauge. 152 CM_FUEL_GAUGE: get battery presence information from fuel gauge.
126 CM_CHARGER_STAT: get battery presence from chargers. 153 CM_CHARGER_STAT: get battery presence from chargers.
127 154
@@ -151,7 +178,17 @@ bool measure_battery_temp;
151 the value of measure_battery_temp. 178 the value of measure_battery_temp.
152}; 179};
153 180
1545. Other Considerations 1815. Notify Charger-Manager of charger events: cm_notify_event()
182=========================================================
183If there is an charger event is required to notify
184Charger Manager, a charger device driver that triggers the event can call
185cm_notify_event(psy, type, msg) to notify the corresponding Charger Manager.
186In the function, psy is the charger driver's power_supply pointer, which is
187associated with Charger-Manager. The parameter "type"
188is the same as irq's type (enum cm_event_types). The event message "msg" is
189optional and is effective only if the event type is "UNDESCRIBED" or "OTHERS".
190
1916. Other Considerations
155======================= 192=======================
156 193
157At the charger/battery-related events such as battery-pulled-out, 194At the charger/battery-related events such as battery-pulled-out,
diff --git a/Documentation/power/power_supply_class.txt b/Documentation/power/power_supply_class.txt
index 9f16c5178b66..211831d4095f 100644
--- a/Documentation/power/power_supply_class.txt
+++ b/Documentation/power/power_supply_class.txt
@@ -84,6 +84,8 @@ are already charged or discharging, 'n/a' can be displayed (or
84HEALTH - represents health of the battery, values corresponds to 84HEALTH - represents health of the battery, values corresponds to
85POWER_SUPPLY_HEALTH_*, defined in battery.h. 85POWER_SUPPLY_HEALTH_*, defined in battery.h.
86 86
87VOLTAGE_OCV - open circuit voltage of the battery.
88
87VOLTAGE_MAX_DESIGN, VOLTAGE_MIN_DESIGN - design values for maximal and 89VOLTAGE_MAX_DESIGN, VOLTAGE_MIN_DESIGN - design values for maximal and
88minimal power supply voltages. Maximal/minimal means values of voltages 90minimal power supply voltages. Maximal/minimal means values of voltages
89when battery considered "full"/"empty" at normal conditions. Yes, there is 91when battery considered "full"/"empty" at normal conditions. Yes, there is
diff --git a/Documentation/power/regulator/regulator.txt b/Documentation/power/regulator/regulator.txt
index e272d9909e39..13902778ae44 100644
--- a/Documentation/power/regulator/regulator.txt
+++ b/Documentation/power/regulator/regulator.txt
@@ -11,8 +11,7 @@ Registration
11Drivers can register a regulator by calling :- 11Drivers can register a regulator by calling :-
12 12
13struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc, 13struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc,
14 struct device *dev, struct regulator_init_data *init_data, 14 const struct regulator_config *config);
15 void *driver_data, struct device_node *of_node);
16 15
17This will register the regulators capabilities and operations to the regulator 16This will register the regulators capabilities and operations to the regulator
18core. 17core.
diff --git a/Documentation/power/suspend-and-cpuhotplug.txt b/Documentation/power/suspend-and-cpuhotplug.txt
index f28f9a6f0347..e13dafc8e8f1 100644
--- a/Documentation/power/suspend-and-cpuhotplug.txt
+++ b/Documentation/power/suspend-and-cpuhotplug.txt
@@ -29,7 +29,7 @@ More details follow:
29 29
30 Write 'mem' to 30 Write 'mem' to
31 /sys/power/state 31 /sys/power/state
32 syfs file 32 sysfs file
33 | 33 |
34 v 34 v
35 Acquire pm_mutex lock 35 Acquire pm_mutex lock
diff --git a/Documentation/prctl/no_new_privs.txt b/Documentation/prctl/no_new_privs.txt
new file mode 100644
index 000000000000..f7be84fba910
--- /dev/null
+++ b/Documentation/prctl/no_new_privs.txt
@@ -0,0 +1,57 @@
1The execve system call can grant a newly-started program privileges that
2its parent did not have. The most obvious examples are setuid/setgid
3programs and file capabilities. To prevent the parent program from
4gaining these privileges as well, the kernel and user code must be
5careful to prevent the parent from doing anything that could subvert the
6child. For example:
7
8 - The dynamic loader handles LD_* environment variables differently if
9 a program is setuid.
10
11 - chroot is disallowed to unprivileged processes, since it would allow
12 /etc/passwd to be replaced from the point of view of a process that
13 inherited chroot.
14
15 - The exec code has special handling for ptrace.
16
17These are all ad-hoc fixes. The no_new_privs bit (since Linux 3.5) is a
18new, generic mechanism to make it safe for a process to modify its
19execution environment in a manner that persists across execve. Any task
20can set no_new_privs. Once the bit is set, it is inherited across fork,
21clone, and execve and cannot be unset. With no_new_privs set, execve
22promises not to grant the privilege to do anything that could not have
23been done without the execve call. For example, the setuid and setgid
24bits will no longer change the uid or gid; file capabilities will not
25add to the permitted set, and LSMs will not relax constraints after
26execve.
27
28To set no_new_privs, use prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0).
29
30Be careful, though: LSMs might also not tighten constraints on exec
31in no_new_privs mode. (This means that setting up a general-purpose
32service launcher to set no_new_privs before execing daemons may
33interfere with LSM-based sandboxing.)
34
35Note that no_new_privs does not prevent privilege changes that do not
36involve execve. An appropriately privileged task can still call
37setuid(2) and receive SCM_RIGHTS datagrams.
38
39There are two main use cases for no_new_privs so far:
40
41 - Filters installed for the seccomp mode 2 sandbox persist across
42 execve and can change the behavior of newly-executed programs.
43 Unprivileged users are therefore only allowed to install such filters
44 if no_new_privs is set.
45
46 - By itself, no_new_privs can be used to reduce the attack surface
47 available to an unprivileged user. If everything running with a
48 given uid has no_new_privs set, then that uid will be unable to
49 escalate its privileges by directly attacking setuid, setgid, and
50 fcap-using binaries; it will need to compromise something without the
51 no_new_privs bit set first.
52
53In the future, other potentially dangerous kernel features could become
54available to unprivileged tasks if no_new_privs is set. In principle,
55several options to unshare(2) and clone(2) would be safe when
56no_new_privs is set, and no_new_privs + chroot is considerable less
57dangerous than chroot by itself.
diff --git a/Documentation/prctl/seccomp_filter.txt b/Documentation/prctl/seccomp_filter.txt
new file mode 100644
index 000000000000..597c3c581375
--- /dev/null
+++ b/Documentation/prctl/seccomp_filter.txt
@@ -0,0 +1,163 @@
1 SECure COMPuting with filters
2 =============================
3
4Introduction
5------------
6
7A large number of system calls are exposed to every userland process
8with many of them going unused for the entire lifetime of the process.
9As system calls change and mature, bugs are found and eradicated. A
10certain subset of userland applications benefit by having a reduced set
11of available system calls. The resulting set reduces the total kernel
12surface exposed to the application. System call filtering is meant for
13use with those applications.
14
15Seccomp filtering provides a means for a process to specify a filter for
16incoming system calls. The filter is expressed as a Berkeley Packet
17Filter (BPF) program, as with socket filters, except that the data
18operated on is related to the system call being made: system call
19number and the system call arguments. This allows for expressive
20filtering of system calls using a filter program language with a long
21history of being exposed to userland and a straightforward data set.
22
23Additionally, BPF makes it impossible for users of seccomp to fall prey
24to time-of-check-time-of-use (TOCTOU) attacks that are common in system
25call interposition frameworks. BPF programs may not dereference
26pointers which constrains all filters to solely evaluating the system
27call arguments directly.
28
29What it isn't
30-------------
31
32System call filtering isn't a sandbox. It provides a clearly defined
33mechanism for minimizing the exposed kernel surface. It is meant to be
34a tool for sandbox developers to use. Beyond that, policy for logical
35behavior and information flow should be managed with a combination of
36other system hardening techniques and, potentially, an LSM of your
37choosing. Expressive, dynamic filters provide further options down this
38path (avoiding pathological sizes or selecting which of the multiplexed
39system calls in socketcall() is allowed, for instance) which could be
40construed, incorrectly, as a more complete sandboxing solution.
41
42Usage
43-----
44
45An additional seccomp mode is added and is enabled using the same
46prctl(2) call as the strict seccomp. If the architecture has
47CONFIG_HAVE_ARCH_SECCOMP_FILTER, then filters may be added as below:
48
49PR_SET_SECCOMP:
50 Now takes an additional argument which specifies a new filter
51 using a BPF program.
52 The BPF program will be executed over struct seccomp_data
53 reflecting the system call number, arguments, and other
54 metadata. The BPF program must then return one of the
55 acceptable values to inform the kernel which action should be
56 taken.
57
58 Usage:
59 prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, prog);
60
61 The 'prog' argument is a pointer to a struct sock_fprog which
62 will contain the filter program. If the program is invalid, the
63 call will return -1 and set errno to EINVAL.
64
65 If fork/clone and execve are allowed by @prog, any child
66 processes will be constrained to the same filters and system
67 call ABI as the parent.
68
69 Prior to use, the task must call prctl(PR_SET_NO_NEW_PRIVS, 1) or
70 run with CAP_SYS_ADMIN privileges in its namespace. If these are not
71 true, -EACCES will be returned. This requirement ensures that filter
72 programs cannot be applied to child processes with greater privileges
73 than the task that installed them.
74
75 Additionally, if prctl(2) is allowed by the attached filter,
76 additional filters may be layered on which will increase evaluation
77 time, but allow for further decreasing the attack surface during
78 execution of a process.
79
80The above call returns 0 on success and non-zero on error.
81
82Return values
83-------------
84A seccomp filter may return any of the following values. If multiple
85filters exist, the return value for the evaluation of a given system
86call will always use the highest precedent value. (For example,
87SECCOMP_RET_KILL will always take precedence.)
88
89In precedence order, they are:
90
91SECCOMP_RET_KILL:
92 Results in the task exiting immediately without executing the
93 system call. The exit status of the task (status & 0x7f) will
94 be SIGSYS, not SIGKILL.
95
96SECCOMP_RET_TRAP:
97 Results in the kernel sending a SIGSYS signal to the triggering
98 task without executing the system call. The kernel will
99 rollback the register state to just before the system call
100 entry such that a signal handler in the task will be able to
101 inspect the ucontext_t->uc_mcontext registers and emulate
102 system call success or failure upon return from the signal
103 handler.
104
105 The SECCOMP_RET_DATA portion of the return value will be passed
106 as si_errno.
107
108 SIGSYS triggered by seccomp will have a si_code of SYS_SECCOMP.
109
110SECCOMP_RET_ERRNO:
111 Results in the lower 16-bits of the return value being passed
112 to userland as the errno without executing the system call.
113
114SECCOMP_RET_TRACE:
115 When returned, this value will cause the kernel to attempt to
116 notify a ptrace()-based tracer prior to executing the system
117 call. If there is no tracer present, -ENOSYS is returned to
118 userland and the system call is not executed.
119
120 A tracer will be notified if it requests PTRACE_O_TRACESECCOMP
121 using ptrace(PTRACE_SETOPTIONS). The tracer will be notified
122 of a PTRACE_EVENT_SECCOMP and the SECCOMP_RET_DATA portion of
123 the BPF program return value will be available to the tracer
124 via PTRACE_GETEVENTMSG.
125
126SECCOMP_RET_ALLOW:
127 Results in the system call being executed.
128
129If multiple filters exist, the return value for the evaluation of a
130given system call will always use the highest precedent value.
131
132Precedence is only determined using the SECCOMP_RET_ACTION mask. When
133multiple filters return values of the same precedence, only the
134SECCOMP_RET_DATA from the most recently installed filter will be
135returned.
136
137Pitfalls
138--------
139
140The biggest pitfall to avoid during use is filtering on system call
141number without checking the architecture value. Why? On any
142architecture that supports multiple system call invocation conventions,
143the system call numbers may vary based on the specific invocation. If
144the numbers in the different calling conventions overlap, then checks in
145the filters may be abused. Always check the arch value!
146
147Example
148-------
149
150The samples/seccomp/ directory contains both an x86-specific example
151and a more generic example of a higher level macro interface for BPF
152program generation.
153
154
155
156Adding architecture support
157-----------------------
158
159See arch/Kconfig for the authoritative requirements. In general, if an
160architecture supports both ptrace_event and seccomp, it will be able to
161support seccomp filter with minor fixup: SIGSYS support and seccomp return
162value checking. Then it must just add CONFIG_HAVE_ARCH_SECCOMP_FILTER
163to its arch-specific Kconfig.
diff --git a/Documentation/ramoops.txt b/Documentation/ramoops.txt
index 8fb1ba7fe7bf..4ba7db231cb2 100644
--- a/Documentation/ramoops.txt
+++ b/Documentation/ramoops.txt
@@ -3,7 +3,7 @@ Ramoops oops/panic logger
3 3
4Sergiu Iordache <sergiu@chromium.org> 4Sergiu Iordache <sergiu@chromium.org>
5 5
6Updated: 8 August 2011 6Updated: 17 November 2011
7 7
80. Introduction 80. Introduction
9 9
@@ -30,6 +30,11 @@ variable while setting 0 in that variable dumps only the panics.
30The module uses a counter to record multiple dumps but the counter gets reset 30The module uses a counter to record multiple dumps but the counter gets reset
31on restart (i.e. new dumps after the restart will overwrite old ones). 31on restart (i.e. new dumps after the restart will overwrite old ones).
32 32
33Ramoops also supports software ECC protection of persistent memory regions.
34This might be useful when a hardware reset was used to bring the machine back
35to life (i.e. a watchdog triggered). In such cases, RAM may be somewhat
36corrupt, but usually it is restorable.
37
332. Setting the parameters 382. Setting the parameters
34 39
35Setting the ramoops parameters can be done in 2 different manners: 40Setting the ramoops parameters can be done in 2 different manners:
@@ -38,7 +43,7 @@ Setting the ramoops parameters can be done in 2 different manners:
38 2. Use a platform device and set the platform data. The parameters can then 43 2. Use a platform device and set the platform data. The parameters can then
39 be set through that platform data. An example of doing that is: 44 be set through that platform data. An example of doing that is:
40 45
41#include <linux/ramoops.h> 46#include <linux/pstore_ram.h>
42[...] 47[...]
43 48
44static struct ramoops_platform_data ramoops_data = { 49static struct ramoops_platform_data ramoops_data = {
@@ -46,6 +51,7 @@ static struct ramoops_platform_data ramoops_data = {
46 .mem_address = <...>, 51 .mem_address = <...>,
47 .record_size = <...>, 52 .record_size = <...>,
48 .dump_oops = <...>, 53 .dump_oops = <...>,
54 .ecc = <...>,
49}; 55};
50 56
51static struct platform_device ramoops_dev = { 57static struct platform_device ramoops_dev = {
@@ -71,6 +77,6 @@ timestamp and a new line. The dump then continues with the actual data.
71 77
724. Reading the data 784. Reading the data
73 79
74The dump data can be read from memory (through /dev/mem or other means). 80The dump data can be read from the pstore filesystem. The format for these
75Getting the module parameters, which are needed in order to parse the data, can 81files is "dmesg-ramoops-N", where N is the record number in memory. To delete
76be done through /sys/module/ramoops/parameters/* . 82a stored record from RAM, simply unlink the respective pstore file.
diff --git a/Documentation/scheduler/sched-design-CFS.txt b/Documentation/scheduler/sched-design-CFS.txt
index 91ecff07cede..d529e02d928d 100644
--- a/Documentation/scheduler/sched-design-CFS.txt
+++ b/Documentation/scheduler/sched-design-CFS.txt
@@ -130,7 +130,7 @@ CFS implements three scheduling policies:
130 idle timer scheduler in order to avoid to get into priority 130 idle timer scheduler in order to avoid to get into priority
131 inversion problems which would deadlock the machine. 131 inversion problems which would deadlock the machine.
132 132
133SCHED_FIFO/_RR are implemented in sched_rt.c and are as specified by 133SCHED_FIFO/_RR are implemented in sched/rt.c and are as specified by
134POSIX. 134POSIX.
135 135
136The command chrt from util-linux-ng 2.13.1.1 can set all of these except 136The command chrt from util-linux-ng 2.13.1.1 can set all of these except
@@ -145,9 +145,9 @@ Classes," an extensible hierarchy of scheduler modules. These modules
145encapsulate scheduling policy details and are handled by the scheduler core 145encapsulate scheduling policy details and are handled by the scheduler core
146without the core code assuming too much about them. 146without the core code assuming too much about them.
147 147
148sched_fair.c implements the CFS scheduler described above. 148sched/fair.c implements the CFS scheduler described above.
149 149
150sched_rt.c implements SCHED_FIFO and SCHED_RR semantics, in a simpler way than 150sched/rt.c implements SCHED_FIFO and SCHED_RR semantics, in a simpler way than
151the previous vanilla scheduler did. It uses 100 runqueues (for all 100 RT 151the previous vanilla scheduler did. It uses 100 runqueues (for all 100 RT
152priority levels, instead of 140 in the previous scheduler) and it needs no 152priority levels, instead of 140 in the previous scheduler) and it needs no
153expired array. 153expired array.
diff --git a/Documentation/scheduler/sched-domains.txt b/Documentation/scheduler/sched-domains.txt
index b7ee379b651b..443f0c76bab4 100644
--- a/Documentation/scheduler/sched-domains.txt
+++ b/Documentation/scheduler/sched-domains.txt
@@ -61,10 +61,6 @@ The implementor should read comments in include/linux/sched.h:
61struct sched_domain fields, SD_FLAG_*, SD_*_INIT to get an idea of 61struct sched_domain fields, SD_FLAG_*, SD_*_INIT to get an idea of
62the specifics and what to tune. 62the specifics and what to tune.
63 63
64For SMT, the architecture must define CONFIG_SCHED_SMT and provide a
65cpumask_t cpu_sibling_map[NR_CPUS], where cpu_sibling_map[i] is the mask of
66all "i"'s siblings as well as "i" itself.
67
68Architectures may retain the regular override the default SD_*_INIT flags 64Architectures may retain the regular override the default SD_*_INIT flags
69while using the generic domain builder in kernel/sched.c if they wish to 65while using the generic domain builder in kernel/sched.c if they wish to
70retain the traditional SMT->SMP->NUMA topology (or some subset of that). This 66retain the traditional SMT->SMP->NUMA topology (or some subset of that). This
diff --git a/Documentation/scsi/00-INDEX b/Documentation/scsi/00-INDEX
index b7dd6502bec5..9b0787f965e9 100644
--- a/Documentation/scsi/00-INDEX
+++ b/Documentation/scsi/00-INDEX
@@ -56,8 +56,6 @@ g_NCR5380.txt
56 - info on driver for NCR5380 and NCR53c400 based adapters 56 - info on driver for NCR5380 and NCR53c400 based adapters
57hptiop.txt 57hptiop.txt
58 - HIGHPOINT ROCKETRAID 3xxx RAID DRIVER 58 - HIGHPOINT ROCKETRAID 3xxx RAID DRIVER
59ibmmca.txt
60 - info on driver for IBM adapters with MCA bus
61in2000.txt 59in2000.txt
62 - info on in2000 driver 60 - info on in2000 driver
63libsas.txt 61libsas.txt
diff --git a/Documentation/scsi/ChangeLog.megaraid_sas b/Documentation/scsi/ChangeLog.megaraid_sas
index 83f8ea8b79eb..80441ab608e4 100644
--- a/Documentation/scsi/ChangeLog.megaraid_sas
+++ b/Documentation/scsi/ChangeLog.megaraid_sas
@@ -1,3 +1,11 @@
1Release Date : Mon. Mar 19, 2012 17:00:00 PST 2012 -
2 (emaild-id:megaraidlinux@lsi.com)
3 Adam Radford
4Current Version : 00.00.06.15-rc1
5Old Version : 00.00.06.14-rc1
6 1. Optimize HostMSIxVectors setting.
7 2. Add fpRead/WriteCapable, fpRead/WriteAcrossStripe checks.
8-------------------------------------------------------------------------------
1Release Date : Fri. Jan 6, 2012 17:00:00 PST 2010 - 9Release Date : Fri. Jan 6, 2012 17:00:00 PST 2010 -
2 (emaild-id:megaraidlinux@lsi.com) 10 (emaild-id:megaraidlinux@lsi.com)
3 Adam Radford 11 Adam Radford
diff --git a/Documentation/scsi/ibmmca.txt b/Documentation/scsi/ibmmca.txt
deleted file mode 100644
index ac41a9fcac77..000000000000
--- a/Documentation/scsi/ibmmca.txt
+++ /dev/null
@@ -1,1402 +0,0 @@
1
2 -=< The IBM Microchannel SCSI-Subsystem >=-
3
4 for the IBM PS/2 series
5
6 Low Level Software-Driver for Linux
7
8 Copyright (c) 1995 Strom Systems, Inc. under the terms of the GNU
9 General Public License. Originally written by Martin Kolinek, December 1995.
10 Officially modified and maintained by Michael Lang since January 1999.
11
12 Version 4.0a
13
14 Last update: January 3, 2001
15
16 Before you Start
17 ----------------
18 This is the common README.ibmmca file for all driver releases of the
19 IBM MCA SCSI driver for Linux. Please note, that driver releases 4.0
20 or newer do not work with kernel versions older than 2.4.0, while driver
21 versions older than 4.0 do not work with kernels 2.4.0 or later! If you
22 try to compile your kernel with the wrong driver source, the
23 compilation is aborted and you get a corresponding error message. This is
24 no bug in the driver; it prevents you from using the wrong source code
25 with the wrong kernel version.
26
27 Authors of this Driver
28 ----------------------
29 - Chris Beauregard (improvement of the SCSI-device mapping by the driver)
30 - Martin Kolinek (origin, first release of this driver)
31 - Klaus Kudielka (multiple SCSI-host management/detection, adaption to
32 Linux Kernel 2.1.x, module support)
33 - Michael Lang (assigning original pun/lun mapping, dynamical ldn
34 assignment, rewritten adapter detection, this file,
35 patches, official driver maintenance and subsequent
36 debugging, related with the driver)
37
38 Table of Contents
39 -----------------
40 1 Abstract
41 2 Driver Description
42 2.1 IBM SCSI-Subsystem Detection
43 2.2 Physical Units, Logical Units, and Logical Devices
44 2.3 SCSI-Device Recognition and dynamical ldn Assignment
45 2.4 SCSI-Device Order
46 2.5 Regular SCSI-Command-Processing
47 2.6 Abort & Reset Commands
48 2.7 Disk Geometry
49 2.8 Kernel Boot Option
50 2.9 Driver Module Support
51 2.10 Multiple Hostadapter Support
52 2.11 /proc/scsi-Filesystem Information
53 2.12 /proc/mca-Filesystem Information
54 2.13 Supported IBM SCSI-Subsystems
55 2.14 Linux Kernel Versions
56 3 Code History
57 4 To do
58 5 Users' Manual
59 5.1 Commandline Parameters
60 5.2 Troubleshooting
61 5.3 Bug reports
62 5.4 Support WWW-page
63 6 References
64 7 Credits to
65 7.1 People
66 7.2 Sponsors & Supporters
67 8 Trademarks
68 9 Disclaimer
69
70 * * *
71
72 1 Abstract
73 ----------
74 This README-file describes the IBM SCSI-subsystem low level driver for
75 Linux. The descriptions which were formerly kept in the source code have
76 been taken out of this file to simplify the codes readability. The driver
77 description has been updated, as most of the former description was already
78 quite outdated. The history of the driver development is also kept inside
79 here. Multiple historical developments have been summarized to shorten the
80 text size a bit. At the end of this file you can find a small manual for
81 this driver and hints to get it running on your machine.
82
83 2 Driver Description
84 --------------------
85 2.1 IBM SCSI-Subsystem Detection
86 --------------------------------
87 This is done in the ibmmca_detect() function. It first checks, if the
88 Microchannel-bus support is enabled, as the IBM SCSI-subsystem needs the
89 Microchannel. In a next step, a free interrupt is chosen and the main
90 interrupt handler is connected to it to handle answers of the SCSI-
91 subsystem(s). If the F/W SCSI-adapter is forced by the BIOS to use IRQ11
92 instead of IRQ14, IRQ11 is used for the IBM SCSI-2 F/W adapter. In a
93 further step it is checked, if the adapter gets detected by force from
94 the kernel commandline, where the I/O port and the SCSI-subsystem id can
95 be specified. The next step checks if there is an integrated SCSI-subsystem
96 installed. This register area is fixed through all IBM PS/2 MCA-machines
97 and appears as something like a virtual slot 10 of the MCA-bus. On most
98 PS/2 machines, the POS registers of slot 10 are set to 0xff or 0x00 if not
99 integrated SCSI-controller is available. But on certain PS/2s, like model
100 9595, this slot 10 is used to store other information which at earlier
101 stage confused the driver and resulted in the detection of some ghost-SCSI.
102 If POS-register 2 and 3 are not 0x00 and not 0xff, but all other POS
103 registers are either 0xff or 0x00, there must be an integrated SCSI-
104 subsystem present and it will be registered as IBM Integrated SCSI-
105 Subsystem. The next step checks, if there is a slot-adapter installed on
106 the MCA-bus. To get this, the first two POS-registers, that represent the
107 adapter ID are checked. If they fit to one of the ids, stored in the
108 adapter list, a SCSI-subsystem is assumed to be found in a slot and will be
109 registered. This check is done through all possible MCA-bus slots to allow
110 more than one SCSI-adapter to be present in the PS/2-system and this is
111 already the first point of problems. Looking into the technical reference
112 manual for the IBM PS/2 common interfaces, the POS2 register must have
113 different interpretation of its single bits to avoid overlapping I/O
114 regions. While one can assume, that the integrated subsystem has a fix
115 I/O-address at 0x3540 - 0x3547, further installed IBM SCSI-adapters must
116 use a different I/O-address. This is expressed by bit 1 to 3 of POS2
117 (multiplied by 8 + 0x3540). Bits 2 and 3 are reserved for the integrated
118 subsystem, but not for the adapters! The following list shows, how the
119 bits of POS2 and POS3 should be interpreted.
120
121 The POS2-register of all PS/2 models' integrated SCSI-subsystems has the
122 following interpretation of bits:
123 Bit 7 - 4 : Chip Revision ID (Release)
124 Bit 3 - 2 : Reserved
125 Bit 1 : 8k NVRAM Disabled
126 Bit 0 : Chip Enable (EN-Signal)
127 The POS3-register is interpreted as follows (for most IBM SCSI-subsys.):
128 Bit 7 - 5 : SCSI ID
129 Bit 4 - 0 : Reserved = 0
130 The slot-adapters have different interpretation of these bits. The IBM SCSI
131 adapter (w/Cache) and the IBM SCSI-2 F/W adapter use the following
132 interpretation of the POS2 register:
133 Bit 7 - 4 : ROM Segment Address Select
134 Bit 3 - 1 : Adapter I/O Address Select (*8+0x3540)
135 Bit 0 : Adapter Enable (EN-Signal)
136 and for the POS3 register:
137 Bit 7 - 5 : SCSI ID
138 Bit 4 : Fairness Enable (SCSI ID3 f. F/W)
139 Bit 3 - 0 : Arbitration Level
140 The most modern product of the series is the IBM SCSI-2 F/W adapter, it
141 allows dual-bus SCSI and SCSI-wide addressing, which means, PUNs may be
142 between 0 and 15. Here, Bit 4 is the high-order bit of the 4-bit wide
143 adapter PUN expression. In short words, this means, that IBM PS/2 machines
144 can only support 1 single integrated subsystem by default. Additional
145 slot-adapters get ports assigned by the automatic configuration tool.
146
147 One day I found a patch in ibmmca_detect(), forcing the I/O-address to be
148 0x3540 for integrated SCSI-subsystems, there was a remark placed, that on
149 integrated IBM SCSI-subsystems of model 56, the POS2 register was showing 5.
150 This means, that really for these models, POS2 has to be interpreted
151 sticking to the technical reference guide. In this case, the bit 2 (4) is
152 a reserved bit and may not be interpreted. These differences between the
153 adapters and the integrated controllers are taken into account by the
154 detection routine of the driver on from version >3.0g.
155
156 Every time, a SCSI-subsystem is discovered, the ibmmca_register() function
157 is called. This function checks first, if the requested area for the I/O-
158 address of this SCSI-subsystem is still available and assigns this I/O-
159 area to the SCSI-subsystem. There are always 8 sequential I/O-addresses
160 taken for each individual SCSI-subsystem found, which are:
161
162 Offset Type Permissions
163 0 Command Interface Register 1 Read/Write
164 1 Command Interface Register 2 Read/Write
165 2 Command Interface Register 3 Read/Write
166 3 Command Interface Register 4 Read/Write
167 4 Attention Register Read/Write
168 5 Basic Control Register Read/Write
169 6 Interrupt Status Register Read
170 7 Basic Status Register Read
171
172 After the I/O-address range is assigned, the host-adapter is assigned
173 to a local structure which keeps all adapter information needed for the
174 driver itself and the mid- and higher-level SCSI-drivers. The SCSI pun/lun
175 and the adapters' ldn tables are initialized and get probed afterwards by
176 the check_devices() function. If no further adapters are found,
177 ibmmca_detect() quits.
178
179 2.2 Physical Units, Logical Units, and Logical Devices
180 ------------------------------------------------------
181 There can be up to 56 devices on the SCSI bus (besides the adapter):
182 there are up to 7 "physical units" (each identified by physical unit
183 number or pun, also called the scsi id, this is the number you select
184 with hardware jumpers), and each physical unit can have up to 8
185 "logical units" (each identified by logical unit number, or lun,
186 between 0 and 7). The IBM SCSI-2 F/W adapter offers this on up to two
187 busses and provides support for 30 logical devices at the same time, where
188 in wide-addressing mode you can have 16 puns with 32 luns on each device.
189 This section describes the handling of devices on non-F/W adapters.
190 Just imagine, that you can have 16 * 32 = 512 devices on a F/W adapter
191 which means a lot of possible devices for such a small machine.
192
193 Typically the adapter has pun=7, so puns of other physical units
194 are between 0 and 6(15). On a wide-adapter a pun higher than 7 is
195 possible, but is normally not used. Almost all physical units have only
196 one logical unit, with lun=0. A CD-ROM jukebox would be an example of a
197 physical unit with more than one logical unit.
198
199 The embedded microprocessor of the IBM SCSI-subsystem hides the complex
200 two-dimensional (pun,lun) organization from the operating system.
201 When the machine is powered-up (or rebooted), the embedded microprocessor
202 checks, on its own, all 56 possible (pun,lun) combinations, and the first
203 15 devices found are assigned into a one-dimensional array of so-called
204 "logical devices", identified by "logical device numbers" or ldn. The last
205 ldn=15 is reserved for the subsystem itself. Wide adapters may have
206 to check up to 15 * 8 = 120 pun/lun combinations.
207
208 2.3 SCSI-Device Recognition and Dynamical ldn Assignment
209 --------------------------------------------------------
210 One consequence of information hiding is that the real (pun,lun)
211 numbers are also hidden. The two possibilities to get around this problem
212 are to offer fake pun/lun combinations to the operating system or to
213 delete the whole mapping of the adapter and to reassign the ldns, using
214 the immediate assign command of the SCSI-subsystem for probing through
215 all possible pun/lun combinations. An ldn is a "logical device number"
216 which is used by IBM SCSI-subsystems to access some valid SCSI-device.
217 At the beginning of the development of this driver, the following approach
218 was used:
219
220 First, the driver checked the ldn's (0 to 6) to find out which ldn's
221 have devices assigned. This was done by the functions check_devices() and
222 device_exists(). The interrupt handler has a special paragraph of code
223 (see local_checking_phase_flag) to assist in the checking. Assume, for
224 example, that three logical devices were found assigned at ldn 0, 1, 2.
225 These are presented to the upper layer of Linux SCSI driver
226 as devices with bogus (pun, lun) equal to (0,0), (1,0), (2,0).
227 On the other hand, if the upper layer issues a command to device
228 say (4,0), this driver returns DID_NO_CONNECT error.
229
230 In a second step of the driver development, the following improvement has
231 been applied: The first approach limited the number of devices to 7, far
232 fewer than the 15 that it could use, then it just mapped ldn ->
233 (ldn/8,ldn%8) for pun,lun. We ended up with a real mishmash of puns
234 and luns, but it all seemed to work.
235
236 The latest development, which is implemented from the driver version 3.0
237 and later, realizes the device recognition in the following way:
238 The physical SCSI-devices on the SCSI-bus are probed via immediate_assign-
239 and device_inquiry-commands, that is all implemented in a completely new
240 made check_devices() subroutine. This delivers an exact map of the physical
241 SCSI-world that is now stored in the get_scsi[][]-array. This means,
242 that the once hidden pun,lun assignment is now known to this driver.
243 It no longer believes in default-settings of the subsystem and maps all
244 ldns to existing pun,lun "by foot". This assures full control of the ldn
245 mapping and allows dynamical remapping of ldns to different pun,lun, if
246 there are more SCSI-devices installed than ldns available (n>15). The
247 ldns from 0 to 6 get 'hardwired' by this driver to puns 0 to 7 at lun=0,
248 excluding the pun of the subsystem. This assures, that at least simple
249 SCSI-installations have optimum access-speed and are not touched by
250 dynamical remapping. The ldns 7 to 14 are put to existing devices with
251 lun>0 or to non-existing devices, in order to satisfy the subsystem, if
252 there are less than 15 SCSI-devices connected. In the case of more than 15
253 devices, the dynamical mapping goes active. If the get_scsi[][] reports a
254 device to be existent, but it has no ldn assigned, it gets an ldn out of 7
255 to 14. The numbers are assigned in cyclic order, therefore it takes 8
256 dynamical reassignments on the SCSI-devices until a certain device
257 loses its ldn again. This assures that dynamical remapping is avoided
258 during intense I/O between up to 15 SCSI-devices (means pun,lun
259 combinations). A further advantage of this method is that people who
260 build their kernel without probing on all luns will get what they expect,
261 because the driver just won't assign everything with lun>0 when
262 multiple lun probing is inactive.
263
264 2.4 SCSI-Device Order
265 ---------------------
266 Because of the now correct recognition of physical pun,lun, and
267 their report to mid-level- and higher-level-drivers, the new reported puns
268 can be different from the old, faked puns. Therefore, Linux will eventually
269 change /dev/sdXXX assignments and prompt you for corrupted superblock
270 repair on boottime. In this case DO NOT PANIC, YOUR DISKS ARE STILL OK!!!
271 You have to reboot (CTRL-D) with an old kernel and set the /etc/fstab-file
272 entries right. After that, the system should come up as errorfree as before.
273 If your boot-partition is not coming up, also edit the /etc/lilo.conf-file
274 in a Linux session booted on old kernel and run lilo before reboot. Check
275 lilo.conf anyway to get boot on other partitions with foreign OSes right
276 again. But there exists a feature of this driver that allows you to change
277 the assignment order of the SCSI-devices by flipping the PUN-assignment.
278 See the next paragraph for a description.
279
280 The problem for this is, that Linux does not assign the SCSI-devices in the
281 way as described in the ANSI-SCSI-standard. Linux assigns /dev/sda to
282 the device with at minimum id 0. But the first drive should be at id 6,
283 because for historical reasons, drive at id 6 has, by hardware, the highest
284 priority and a drive at id 0 the lowest. IBM was one of the rare producers,
285 where the BIOS assigns drives belonging to the ANSI-SCSI-standard. Most
286 other producers' BIOS does not (I think even Adaptec-BIOS). The
287 IBMMCA_SCSI_ORDER_STANDARD flag, which you set while configuring the
288 kernel enables to choose the preferred way of SCSI-device-assignment.
289 Defining this flag would result in Linux determining the devices in the
290 same order as DOS and OS/2 does on your MCA-machine. This is also standard
291 on most industrial computers and OSes, like e.g. OS-9. Leaving this flag
292 undefined will get your devices ordered in the default way of Linux. See
293 also the remarks of Chris Beauregard from Dec 15, 1997 and the followups
294 in section 3.
295
296 2.5 Regular SCSI-Command-Processing
297 -----------------------------------
298 Only three functions get involved: ibmmca_queuecommand(), issue_cmd(),
299 and interrupt_handler().
300
301 The upper layer issues a scsi command by calling function
302 ibmmca_queuecommand(). This function fills a "subsystem control block"
303 (scb) and calls a local function issue_cmd(), which writes a scb
304 command into subsystem I/O ports. Once the scb command is carried out,
305 the interrupt_handler() is invoked. If a device is determined to be
306 existent and it has not assigned any ldn, it gets one dynamically.
307 For this, the whole stuff is done in ibmmca_queuecommand().
308
309 2.6 Abort & Reset Commands
310 --------------------------
311 These are implemented with busy waiting for interrupt to arrive.
312 ibmmca_reset() and ibmmca_abort() do not work sufficiently well
313 up to now and need still a lot of development work. This seems
314 to be a problem with other low-level SCSI drivers too, however
315 this should be no excuse.
316
317 2.7 Disk Geometry
318 -----------------
319 The ibmmca_biosparams() function should return the same disk geometry
320 as the bios. This is needed for fdisk, etc. The returned geometry is
321 certainly correct for disks smaller than 1 gigabyte. In the meantime,
322 it has been proved, that this works fine even with disks larger than
323 1 gigabyte.
324
325 2.8 Kernel Boot Option
326 ----------------------
327 The function ibmmca_scsi_setup() is called if option ibmmcascsi=n
328 is passed to the kernel. See file linux/init/main.c for details.
329
330 2.9 Driver Module Support
331 -------------------------
332 Is implemented and tested by K. Kudielka. This could probably not work
333 on kernels <2.1.0.
334
335 2.10 Multiple Hostadapter Support
336 ---------------------------------
337 This driver supports up to eight interfaces of type IBM-SCSI-Subsystem.
338 Integrated-, and MCA-adapters are automatically recognized. Unrecognizable
339 IBM-SCSI-Subsystem interfaces can be specified as kernel-parameters.
340
341 2.11 /proc/scsi-Filesystem Information
342 --------------------------------------
343 Information about the driver condition is given in
344 /proc/scsi/ibmmca/<host_no>. ibmmca_proc_info() provides this information.
345
346 This table is quite informative for interested users. It shows the load
347 of commands on the subsystem and whether you are running the bypassed
348 (software) or integrated (hardware) SCSI-command set (see below). The
349 amount of accesses is shown. Read, write, modeselect is shown separately
350 in order to help debugging problems with CD-ROMs or tapedrives.
351
352 The following table shows the list of 15 logical device numbers, that are
353 used by the SCSI-subsystem. The load on each ldn is shown in the table,
354 again, read and write commands are split. The last column shows the amount
355 of reassignments, that have been applied to the ldns, if you have more than
356 15 pun/lun combinations available on the SCSI-bus.
357
358 The last two tables show the pun/lun map and the positions of the ldns
359 on this pun/lun map. This may change during operation, when a ldn is
360 reassigned to another pun/lun combination. If the necessity for dynamical
361 assignments is set to 'no', the ldn structure keeps static.
362
363 2.12 /proc/mca-Filesystem Information
364 -------------------------------------
365 The slot-file contains all default entries and in addition chip and I/O-
366 address information of the SCSI-subsystem. This information is provided
367 by ibmmca_getinfo().
368
369 2.13 Supported IBM SCSI-Subsystems
370 ----------------------------------
371 The following IBM SCSI-subsystems are supported by this driver:
372
373 - IBM Fast/Wide SCSI-2 Adapter
374 - IBM 7568 Industrial Computer SCSI Adapter w/Cache
375 - IBM Expansion Unit SCSI Controller
376 - IBM SCSI Adapter w/Cache
377 - IBM SCSI Adapter
378 - IBM Integrated SCSI Controller
379 - All clones, 100% compatible with the chipset and subsystem command
380 system of IBM SCSI-adapters (forced detection)
381
382 2.14 Linux Kernel Versions
383 --------------------------
384 The IBM SCSI-subsystem low level driver is prepared to be used with
385 all versions of Linux between 2.0.x and 2.4.x. The compatibility checks
386 are fully implemented up from version 3.1e of the driver. This means, that
387 you just need the latest ibmmca.h and ibmmca.c file and copy it in the
388 linux/drivers/scsi directory. The code is automatically adapted during
389 kernel compilation. This is different from kernel 2.4.0! Here version
390 4.0 or later of the driver must be used for kernel 2.4.0 or later. Version
391 4.0 or later does not work together with older kernels! Driver versions
392 older than 4.0 do not work together with kernel 2.4.0 or later. They work
393 on all older kernels.
394
395 3 Code History
396 --------------
397 Jan 15 1996: First public release.
398 - Martin Kolinek
399
400 Jan 23 1996: Scrapped code which reassigned scsi devices to logical
401 device numbers. Instead, the existing assignment (created
402 when the machine is powered-up or rebooted) is used.
403 A side effect is that the upper layer of Linux SCSI
404 device driver gets bogus scsi ids (this is benign),
405 and also the hard disks are ordered under Linux the
406 same way as they are under dos (i.e., C: disk is sda,
407 D: disk is sdb, etc.).
408 - Martin Kolinek
409
410 I think that the CD-ROM is now detected only if a CD is
411 inside CD_ROM while Linux boots. This can be fixed later,
412 once the driver works on all types of PS/2's.
413 - Martin Kolinek
414
415 Feb 7 1996: Modified biosparam function. Fixed the CD-ROM detection.
416 For now, devices other than harddisk and CD_ROM are
417 ignored. Temporarily modified abort() function
418 to behave like reset().
419 - Martin Kolinek
420
421 Mar 31 1996: The integrated scsi subsystem is correctly found
422 in PS/2 models 56,57, but not in model 76. Therefore
423 the ibmmca_scsi_setup() function has been added today.
424 This function allows the user to force detection of
425 scsi subsystem. The kernel option has format
426 ibmmcascsi=n
427 where n is the scsi_id (pun) of the subsystem. Most likely, n is 7.
428 - Martin Kolinek
429
430 Aug 21 1996: Modified the code which maps ldns to (pun,0). It was
431 insufficient for those of us with CD-ROM changers.
432 - Chris Beauregard
433
434 Dec 14 1996: More improvements to the ldn mapping. See check_devices
435 for details. Did more fiddling with the integrated SCSI detection,
436 but I think it's ultimately hopeless without actually testing the
437 model of the machine. The 56, 57, 76 and 95 (ultimedia) all have
438 different integrated SCSI register configurations. However, the 56
439 and 57 are the only ones that have problems with forced detection.
440 - Chris Beauregard
441
442 Mar 8-16 1997: Modified driver to run as a module and to support
443 multiple adapters. A structure, called ibmmca_hostdata, is now
444 present, containing all the variables, that were once only
445 available for one single adapter. The find_subsystem-routine has vanished.
446 The hardware recognition is now done in ibmmca_detect directly.
447 This routine checks for presence of MCA-bus, checks the interrupt
448 level and continues with checking the installed hardware.
449 Certain PS/2-models do not recognize a SCSI-subsystem automatically.
450 Hence, the setup defined by command-line-parameters is checked first.
451 Thereafter, the routine probes for an integrated SCSI-subsystem.
452 Finally, adapters are checked. This method has the advantage to cover all
453 possible combinations of multiple SCSI-subsystems on one MCA-board. Up to
454 eight SCSI-subsystems can be recognized and announced to the upper-level
455 drivers with this improvement. A set of defines made changes to other
456 routines as small as possible.
457 - Klaus Kudielka
458
459 May 30 1997: (v1.5b)
460 1) SCSI-command capability enlarged by the recognition of MODE_SELECT.
461 This needs the RD-Bit to be disabled on IM_OTHER_SCSI_CMD_CMD which
462 allows data to be written from the system to the device. It is a
463 necessary step to be allowed to set blocksize of SCSI-tape-drives and
464 the tape-speed, without confusing the SCSI-Subsystem.
465 2) The recognition of a tape is included in the check_devices routine.
466 This is done by checking for TYPE_TAPE, that is already defined in
467 the kernel-scsi-environment. The markup of a tape is done in the
468 global ldn_is_tape[] array. If the entry on index ldn
469 is 1, there is a tapedrive connected.
470 3) The ldn_is_tape[] array is necessary to distinguish between tape- and
471 other devices. Fixed blocklength devices should not cause a problem
472 with the SCB-command for read and write in the ibmmca_queuecommand
473 subroutine. Therefore, I only derivate the READ_XX, WRITE_XX for
474 the tape-devices, as recommended by IBM in this Technical Reference,
475 mentioned below. (IBM recommends to avoid using the read/write of the
476 subsystem, but the fact was, that read/write causes a command error from
477 the subsystem and this causes kernel-panic.)
478 4) In addition, I propose to use the ldn instead of a fix char for the
479 display of PS2_DISK_LED_ON(). On 95, one can distinguish between the
480 devices that are accessed. It shows activity and easyfies debugging.
481 The tape-support has been tested with a SONY SDT-5200 and a HP DDS-2
482 (I do not know yet the type). Optimization and CD-ROM audio-support,
483 I am working on ...
484 - Michael Lang
485
486 June 19 1997: (v1.6b)
487 1) Submitting the extra-array ldn_is_tape[] -> to the local ld[]
488 device-array.
489 2) CD-ROM Audio-Play seems to work now.
490 3) When using DDS-2 (120M) DAT-Tapes, mtst shows still density-code
491 0x13 for ordinary DDS (61000 BPM) instead 0x24 for DDS-2. This appears
492 also on Adaptec 2940 adaptor in a PCI-System. Therefore, I assume that
493 the problem is independent of the low-level-driver/bus-architecture.
494 4) Hexadecimal ldn on PS/2-95 LED-display.
495 5) Fixing of the PS/2-LED on/off that it works right with tapedrives and
496 does not confuse the disk_rw_in_progress counter.
497 - Michael Lang
498
499 June 21 1997: (v1.7b)
500 1) Adding of a proc_info routine to inform in /proc/scsi/ibmmca/<host> the
501 outer-world about operational load statistics on the different ldns,
502 seen by the driver. Everybody that has more than one IBM-SCSI should
503 test this, because I only have one and cannot see what happens with more
504 than one IBM-SCSI hosts.
505 2) Definition of a driver version-number to have a better recognition of
506 the source when there are existing too much releases that may confuse
507 the user, when reading about release-specific problems. Up to know,
508 I calculated the version-number to be 1.7. Because we are in BETA-test
509 yet, it is today 1.7b.
510 3) Sorry for the heavy bug I programmed on June 19 1997! After that, the
511 CD-ROM did not work any more! The C7-command was a fake impression
512 I got while programming. Now, the READ and WRITE commands for CD-ROM are
513 no longer running over the subsystem, but just over
514 IM_OTHER_SCSI_CMD_CMD. On my observations (PS/2-95), now CD-ROM mounts
515 much faster(!) and hopefully all fancy multimedia-functions, like direct
516 digital recording from audio-CDs also work. (I tried it with cdda2wav
517 from the cdwtools-package and it filled up the harddisk immediately :-).)
518 To easify boolean logics, a further local device-type in ld[], called
519 is_cdrom has been included.
520 4) If one uses a SCSI-device of unsupported type/commands, one
521 immediately runs into a kernel-panic caused by Command Error. To better
522 understand which SCSI-command caused the problem, I extended this
523 specific panic-message slightly.
524 - Michael Lang
525
526 June 25 1997: (v1.8b)
527 1) Some cosmetic changes for the handling of SCSI-device-types.
528 Now, also CD-Burners / WORMs and SCSI-scanners should work. For
529 MO-drives I have no experience, therefore not yet supported.
530 In logical_devices I changed from different type-variables to one
531 called 'device_type' where the values, corresponding to scsi.h,
532 of a SCSI-device are stored.
533 2) There existed a small bug, that maps a device, coming after a SCSI-tape
534 wrong. Therefore, e.g. a CD-ROM changer would have been mapped wrong
535 -> problem removed.
536 3) Extension of the logical_device structure. Now it contains also device,
537 vendor and revision-level of a SCSI-device for internal usage.
538 - Michael Lang
539
540 June 26-29 1997: (v2.0b)
541 1) The release number 2.0b is necessary because of the completely new done
542 recognition and handling of SCSI-devices with the adapter. As I got
543 from Chris the hint, that the subsystem can reassign ldns dynamically,
544 I remembered this immediate_assign-command, I found once in the handbook.
545 Now, the driver first kills all ldn assignments that are set by default
546 on the SCSI-subsystem. After that, it probes on all puns and luns for
547 devices by going through all combinations with immediate_assign and
548 probing for devices, using device_inquiry. The found physical(!) pun,lun
549 structure is stored in get_scsi[][] as device types. This is followed
550 by the assignment of all ldns to existing SCSI-devices. If more ldns
551 than devices are available, they are assigned to non existing pun,lun
552 combinations to satisfy the adapter. With this, the dynamical mapping
553 was possible to implement. (For further info see the text in the
554 source code and in the description below. Read the description
555 below BEFORE installing this driver on your system!)
556 2) Changed the name IBMMCA_DRIVER_VERSION to IBMMCA_SCSI_DRIVER_VERSION.
557 3) The LED-display shows on PS/2-95 no longer the ldn, but the SCSI-ID
558 (pun) of the accessed SCSI-device. This is now senseful, because the
559 pun known within the driver is exactly the pun of the physical device
560 and no longer a fake one.
561 4) The /proc/scsi/ibmmca/<host_no> consists now of the first part, where
562 hit-statistics of ldns is shown and a second part, where the maps of
563 physical and logical SCSI-devices are displayed. This could be very
564 interesting, when one is using more than 15 SCSI-devices in order to
565 follow the dynamical remapping of ldns.
566 - Michael Lang
567
568 June 26-29 1997: (v2.0b-1)
569 1) I forgot to switch the local_checking_phase_flag to 1 and back to 0
570 in the dynamical remapping part in ibmmca_queuecommand for the
571 device_exist routine. Sorry.
572 - Michael Lang
573
574 July 1-13 1997: (v3.0b,c)
575 1) Merging of the driver-developments of Klaus Kudielka and Michael Lang
576 in order to get a optimum and unified driver-release for the
577 IBM-SCSI-Subsystem-Adapter(s).
578 For people, using the Kernel-release >=2.1.0, module-support should
579 be no problem. For users, running under <2.1.0, module-support may not
580 work, because the methods have changed between 2.0.x and 2.1.x.
581 2) Added some more effective statistics for /proc-output.
582 3) Change typecasting at necessary points from (unsigned long) to
583 virt_to_bus().
584 4) Included #if... at special points to have specific adaption of the
585 driver to kernel 2.0.x and 2.1.x. It should therefore also run with
586 later releases.
587 5) Magneto-Optical drives and medium-changers are also recognized, now.
588 Therefore, we have a completely gapfree recognition of all SCSI-
589 device-types, that are known by Linux up to kernel 2.1.31.
590 6) The flag SCSI_IBMMCA_DEV_RESET has been inserted. If it is set within
591 the configuration, each connected SCSI-device will get a reset command
592 during boottime. This can be necessary for some special SCSI-devices.
593 This flag should be included in Config.in.
594 (See also the new Config.in file.)
595 Probable next improvement: bad disk handler.
596 - Michael Lang
597
598 Sept 14 1997: (v3.0c)
599 1) Some debugging and speed optimization applied.
600 - Michael Lang
601
602 Dec 15, 1997
603 - chrisb@truespectra.com
604 - made the front panel display thingy optional, specified from the
605 command-line via ibmmcascsi=display. Along the lines of the /LED
606 option for the OS/2 driver.
607 - fixed small bug in the LED display that would hang some machines.
608 - reversed ordering of the drives (using the
609 IBMMCA_SCSI_ORDER_STANDARD define). This is necessary for two main
610 reasons:
611 - users who've already installed Linux won't be screwed. Keep
612 in mind that not everyone is a kernel hacker.
613 - be consistent with the BIOS ordering of the drives. In the
614 BIOS, id 6 is C:, id 0 might be D:. With this scheme, they'd be
615 backwards. This confuses the crap out of those heathens who've
616 got a impure Linux installation (which, <wince>, I'm one of).
617 This whole problem arises because IBM is actually non-standard with
618 the id to BIOS mappings. You'll find, in fdomain.c, a similar
619 comment about a few FD BIOS revisions. The Linux (and apparently
620 industry) standard is that C: maps to scsi id (0,0). Let's stick
621 with that standard.
622 - Since this is technically a branch of my own, I changed the
623 version number to 3.0e-cpb.
624
625 Jan 17, 1998: (v3.0f)
626 1) Addition of some statistical info for /proc in proc_info.
627 2) Taking care of the SCSI-assignment problem, dealed by Chris at Dec 15
628 1997. In fact, IBM is right, concerning the assignment of SCSI-devices
629 to driveletters. It is conform to the ANSI-definition of the SCSI-
630 standard to assign drive C: to SCSI-id 6, because it is the highest
631 hardware priority after the hostadapter (that has still today by
632 default everywhere id 7). Also realtime-operating systems that I use,
633 like LynxOS and OS9, which are quite industrial systems use top-down
634 numbering of the harddisks, that is also starting at id 6. Now, one
635 sits a bit between two chairs. On one hand side, using the define
636 IBMMCA_SCSI_ORDER_STANDARD makes Linux assigning disks conform to
637 the IBM- and ANSI-SCSI-standard and keeps this driver downward
638 compatible to older releases, on the other hand side, people is quite
639 habituated in believing that C: is assigned to (0,0) and much other
640 SCSI-BIOS do so. Therefore, I moved the IBMMCA_SCSI_ORDER_STANDARD
641 define out of the driver and put it into Config.in as subitem of
642 'IBM SCSI support'. A help, added to Documentation/Configure.help
643 explains the differences between saying 'y' or 'n' to the user, when
644 IBMMCA_SCSI_ORDER_STANDARD prompts, so the ordinary user is enabled to
645 choose the way of assignment, depending on his own situation and gusto.
646 3) Adapted SCSI_IBMMCA_DEV_RESET to the local naming convention, so it is
647 now called IBMMCA_SCSI_DEV_RESET.
648 4) Optimization of proc_info and its subroutines.
649 5) Added more in-source-comments and extended the driver description by
650 some explanation about the SCSI-device-assignment problem.
651 - Michael Lang
652
653 Jan 18, 1998: (v3.0g)
654 1) Correcting names to be absolutely conform to the later 2.1.x releases.
655 This is necessary for
656 IBMMCA_SCSI_DEV_RESET -> CONFIG_IBMMCA_SCSI_DEV_RESET
657 IBMMCA_SCSI_ORDER_STANDARD -> CONFIG_IBMMCA_SCSI_ORDER_STANDARD
658 - Michael Lang
659
660 Jan 18, 1999: (v3.1 MCA-team internal)
661 1) The multiple hosts structure is accessed from every subroutine, so there
662 is no longer the address of the device structure passed from function
663 to function, but only the hostindex. A call by value, nothing more. This
664 should really be understood by the compiler and the subsystem should get
665 the right values and addresses.
666 2) The SCSI-subsystem detection was not complete and quite hugely buggy up
667 to now, compared to the technical manual. The interpretation of the pos2
668 register is not as assumed by people before, therefore, I dropped a note
669 in the ibmmca_detect function to show the registers' interpretation.
670 The pos-registers of integrated SCSI-subsystems do not contain any
671 information concerning the IO-port offset, really. Instead, they contain
672 some info about the adapter, the chip, the NVRAM .... The I/O-port is
673 fixed to 0x3540 - 0x3547. There can be more than one adapters in the
674 slots and they get an offset for the I/O area in order to get their own
675 I/O-address area. See chapter 2 for detailed description. At least, the
676 detection should now work right, even on models other than 95. The 95ers
677 came happily around the bug, as their pos2 register contains always 0
678 in the critical area. Reserved bits are not allowed to be interpreted,
679 therefore, IBM is allowed to set those bits as they like and they may
680 really vary between different PS/2 models. So, now, no interpretation
681 of reserved bits - hopefully no trouble here anymore.
682 3) The command error, which you may get on models 55, 56, 57, 70, 77 and
683 P70 may have been caused by the fact, that adapters of older design do
684 not like sending commands to non-existing SCSI-devices and will react
685 with a command error as a sign of protest. While this error is not
686 present on IBM SCSI Adapter w/cache, it appears on IBM Integrated SCSI
687 Adapters. Therefore, I implemented a workaround to forgive those
688 adapters their protests, but it is marked up in the statistics, so
689 after a successful boot, you can see in /proc/scsi/ibmmca/<host_number>
690 how often the command errors have been forgiven to the SCSI-subsystem.
691 If the number is bigger than 0, you have a SCSI subsystem of older
692 design, what should no longer matter.
693 4) ibmmca_getinfo() has been adapted very carefully, so it shows in the
694 slotn file really, what is senseful to be presented.
695 5) ibmmca_register() has been extended in its parameter list in order to
696 pass the right name of the SCSI-adapter to Linux.
697 - Michael Lang
698
699 Feb 6, 1999: (v3.1)
700 1) Finally, after some 3.1Beta-releases, the 3.1 release. Sorry, for
701 the delayed release, but it was not finished with the release of
702 Kernel 2.2.0.
703 - Michael Lang
704
705 Feb 10, 1999 (v3.1)
706 1) Added a new commandline parameter called 'bypass' in order to bypass
707 every integrated subsystem SCSI-command consequently in case of
708 troubles.
709 2) Concatenated read_capacity requests to the harddisks. It gave a lot
710 of troubles with some controllers and after I wanted to apply some
711 extensions, it jumped out in the same situation, on my w/cache, as like
712 on D. Weinehalls' Model 56, having integrated SCSI. This gave me the
713 decisive hint to move the code-part out and declare it global. Now
714 it seems to work far better and more stable. Let us see what
715 the world thinks of it...
716 3) By the way, only Sony DAT-drives seem to show density code 0x13. A
717 test with a HP drive gave right results, so the problem is vendor-
718 specific and not a problem of the OS or the driver.
719 - Michael Lang
720
721 Feb 18, 1999 (v3.1d)
722 1) The abort command and the reset function have been checked for
723 inconsistencies. From the logical point of thinking, they work
724 at their optimum, now, but as the subsystem does not answer with an
725 interrupt, abort never finishes, sigh...
726 2) Everything, that is accessed by a busmaster request from the adapter
727 is now declared as global variable, even the return-buffer in the
728 local checking phase. This assures, that no accesses to undefined memory
729 areas are performed.
730 3) In ibmmca.h, the line unchecked_isa_dma is added with 1 in order to
731 avoid memory-pointers for the areas higher than 16MByte in order to
732 be sure, it also works on 16-Bit Microchannel bus systems.
733 4) A lot of small things have been found, but nothing that endangered the
734 driver operations. Just it should be more stable, now.
735 - Michael Lang
736
737 Feb 20, 1999 (v3.1e)
738 1) I took the warning from the Linux Kernel Hackers Guide serious and
739 checked the cmd->result return value to the done-function very carefully.
740 It is obvious, that the IBM SCSI only delivers the tsb.dev_status, if
741 some error appeared, else it is undefined. Now, this is fixed. Before
742 any SCB command gets queued, the tsb.dev_status is set to 0, so the
743 cmd->result won't screw up Linux higher level drivers.
744 2) The reset-function has slightly improved. This is still planned for
745 abort. During the abort and the reset function, no interrupts are
746 allowed. This is however quite hard to cope with, so the INT-status
747 register is read. When the interrupt gets queued, one can find its
748 status immediately on that register and is enabled to continue in the
749 reset function. I had no chance to test this really, only in a bogus
750 situation, I got this function running, but the situation was too much
751 worse for Linux :-(, so tests will continue.
752 3) Buffers got now consistent. No open address mapping, as before and
753 therefore no further troubles with the unassigned memory segmentation
754 faults that scrambled probes on 95XX series and even on 85XX series,
755 when the kernel is done in a not so perfectly fitting way.
756 4) Spontaneous interrupts from the subsystem, appearing without any
757 command previously queued are answered with a DID_BAD_INTR result.
758 5) Taken into account ZP Gus' proposals to reverse the SCSI-device
759 scan order. As it does not work on Kernel 2.1.x or 2.2.x, as proposed
760 by him, I implemented it in a slightly derived way, which offers in
761 addition more flexibility.
762 - Michael Lang
763
764 Apr 23, 2000 (v3.2pre1)
765 1) During a very long time, I collected a huge amount of bug reports from
766 various people, trying really quite different things on their SCSI-
767 PS/2s. Today, all these bug reports are taken into account and should be
768 mostly solved. The major topics were:
769 - Driver crashes during boottime by no obvious reason.
770 - Driver panics while the midlevel-SCSI-driver is trying to inquire
771 the SCSI-device properties, even though hardware is in perfect state.
772 - Displayed info for the various slot-cards is interpreted wrong.
773 The main reasons for the crashes were two:
774 1) The commands to check for device information like INQUIRY,
775 TEST_UNIT_READY, REQUEST_SENSE and MODE_SENSE cause the devices
776 to deliver information of up to 255 bytes. Midlevel drivers offer
777 1024 bytes of space for the answer, but the IBM-SCSI-adapters do
778 not accept this, as they stick quite near to ANSI-SCSI and report
779 a COMMAND_ERROR message which causes the driver to panic. The main
780 problem was located around the INQUIRY command. Now, for all the
781 mentioned commands, the buffersize sent to the adapter is at
782 maximum 255 which seems to be a quite reasonable solution.
783 TEST_UNIT_READY gets a buffersize of 0 to make sure that no
784 data is transferred in order to avoid any possible command failure.
785 2) On unsuccessful TEST_UNIT_READY, the mid-level driver has to send
786 a REQUEST_SENSE in order to see where the problem is located. This
787 REQUEST_SENSE may have various length in its answer-buffer. IBM
788 SCSI-subsystems report a command failure if the returned buffersize
789 is different from the sent buffersize, but this can be suppressed by
790 a special bit, which is now done and problems seem to be solved.
791 2) Code adaption to all kernel-releases. Now, the 3.2 code compiles on
792 2.0.x, 2.1.x, 2.2.x and 2.3.x kernel releases without any code-changes.
793 3) Commandline-parameters are recognized again, even under Kernel 2.3.x or
794 higher.
795 - Michael Lang
796
797 April 27, 2000 (v3.2pre2)
798 1) Bypassed commands get read by the adapter by one cycle instead of two.
799 This increases SCSI-performance.
800 2) Synchronous datatransfer is provided for sure to be 5 MHz on older
801 SCSI and 10 MHz on internal F/W SCSI-adapter.
802 3) New commandline parameters allow to force the adapter to slow down while
803 in synchronous transfer. Could be helpful for very old devices.
804 - Michael Lang
805
806 June 2, 2000 (v3.2pre5)
807 1) Added Jim Shorney's contribution to make the activity indicator
808 flashing in addition to the LED-alphanumeric display-panel on
809 models 95A. To be enabled to choose this feature freely, a new
810 commandline parameter is added, called 'activity'.
811 2) Added the READ_CONTROL bit for test_unit_ready SCSI-command.
812 3) Added some suppress_exception bits to read_device_capacity and
813 all device_inquiry occurrences in the driver code.
814 4) Complaints about the various KERNEL_VERSION implementations are
815 taken into account. Every local_LinuxKernelVersion occurrence is
816 now replaced by KERNEL_VERSION, defined in linux/version.h.
817 Corresponding changes were applied to ibmmca.h, too. This was a
818 contribution to all kernel-parts by Philipp Hahn.
819 - Michael Lang
820
821 July 17, 2000 (v3.2pre8)
822 A long period of collecting bug reports from all corners of the world
823 now lead to the following corrections to the code:
824 1) SCSI-2 F/W support crashed with a COMMAND ERROR. The reason for this
825 was that it is possible to disable Fast-SCSI for the external bus.
826 The feature-control command, where this crash appeared regularly, tried
827 to set the maximum speed of 10MHz synchronous transfer speed and that
828 reports a COMMAND ERROR if external bus Fast-SCSI is disabled. Now,
829 the feature-command probes down from maximum speed until the adapter
830 stops to complain, which is at the same time the maximum possible
831 speed selected in the reference program. So, F/W external can run at
832 5 MHz (slow-) or 10 MHz (fast-SCSI). During feature probing, the
833 COMMAND ERROR message is used to detect if the adapter does not complain.
834 2) Up to now, only combined busmode is supported, if you use external
835 SCSI-devices, attached to the F/W-controller. If dual bus is selected,
836 only the internal SCSI-devices get accessed by Linux. For most
837 applications, this should do fine.
838 3) Wide-SCSI-addressing (16-Bit) is now possible for the internal F/W
839 bus on the F/W adapter. If F/W adapter is detected, the driver
840 automatically uses the extended PUN/LUN <-> LDN mapping tables, which
841 are now new from 3.2pre8. This allows PUNs between 0 and 15 and should
842 provide more fun with the F/W adapter.
843 4) Several machines use the SCSI: POS registers for internal/undocumented
844 storage of system relevant info. This confused the driver, mainly on
845 models 9595, as it expected no onboard SCSI only, if all POS in
846 the integrated SCSI-area are set to 0x00 or 0xff. Now, the mechanism
847 to check for integrated SCSI is much more restrictive and these problems
848 should be history.
849 - Michael Lang
850
851 July 18, 2000 (v3.2pre9)
852 This develop rather quickly at the moment. Two major things were still
853 missing in 3.2pre8:
854 1) The adapter PUN for F/W adapters has 4-bits, while all other adapters
855 have 3-bits. This is now taken into account for F/W.
856 2) When you select CONFIG_IBMMCA_SCSI_ORDER_STANDARD, you should
857 normally get the inverse probing order of your devices on the SCSI-bus.
858 The ANSI device order gets scrambled in version 3.2pre8!! Now, a new
859 and tested algorithm inverts the device-order on the SCSI-bus and
860 automatically avoids accidental access to whatever SCSI PUN the adapter
861 is set and works with SCSI- and Wide-SCSI-addressing.
862 - Michael Lang
863
864 July 23, 2000 (v3.2pre10 unpublished)
865 1) LED panel display supports wide-addressing in ibmmca=display mode.
866 2) Adapter-information and autoadaption to address-space is done.
867 3) Auto-probing for maximum synchronous SCSI transfer rate is working.
868 4) Optimization to some embedded function calls is applied.
869 5) Added some comment for the user to wait for SCSI-devices being probed.
870 6) Finished version 3.2 for Kernel 2.4.0. It least, I thought it is but...
871 - Michael Lang
872
873 July 26, 2000 (v3.2pre11)
874 1) I passed a horrible weekend getting mad with NMIs on kernel 2.2.14 and
875 a model 9595. Asking around in the community, nobody except of me has
876 seen such errors. Weird, but I am trying to recompile everything on
877 the model 9595. Maybe, as I use a specially modified gcc, that could
878 cause problems. But, it was not the reason. The true background was,
879 that the kernel was compiled for i386 and the 9595 has a 486DX-2.
880 Normally, no troubles should appear, but for this special machine,
881 only the right processor support is working fine!
882 2) Previous problems with synchronous speed, slowing down from one adapter
883 to the next during probing are corrected. Now, local variables store
884 the synchronous bitmask for every single adapter found on the MCA bus.
885 3) LED alphanumeric panel support for XX95 systems is now showing some
886 alive rotator during boottime. This makes sense, when no monitor is
887 connected to the system. You can get rid of all display activity, if
888 you do not use any parameter or just ibmmcascsi=activity, for the
889 harddrive activity LED, existent on all PS/2, except models 8595-XXX.
890 If no monitor is available, please use ibmmcascsi=display, which works
891 fine together with the linuxinfo utility for the LED-panel.
892 - Michael Lang
893
894 July 29, 2000 (v3.2)
895 1) Submission of this driver for kernel 2.4test-XX and 2.2.17.
896 - Michael Lang
897
898 December 28, 2000 (v3.2d / v4.0)
899 1) The interrupt handler had some wrong statement to wait for. This
900 was done due to experimental reasons during 3.2 development but it
901 has shown that this is not stable enough. Going back to wait for the
902 adapter to be not busy is best.
903 2) Inquiry requests can be shorter than 255 bytes of return buffer. Due
904 to a bug in the ibmmca_queuecommand routine, this buffer was forced
905 to 255 at minimum. If the memory address, this return buffer is pointing
906 to does not offer more space, invalid memory accesses destabilized the
907 kernel.
908 3) version 4.0 is only valid for kernel 2.4.0 or later. This is necessary
909 to remove old kernel version dependent waste from the driver. 3.2d is
910 only distributed with older kernels but keeps compatibility with older
911 kernel versions. 4.0 and higher versions cannot be used with older
912 kernels anymore!! You must have at least kernel 2.4.0!!
913 4) The commandline argument 'bypass' and all its functionality got removed
914 in version 4.0. This was never really necessary, as all troubles were
915 based on non-command related reasons up to now, so bypassing commands
916 did not help to avoid any bugs. It is kept in 3.2X for debugging reasons.
917 5) Dynamic reassignment of ldns was again verified and analyzed to be
918 completely inoperational. This is corrected and should work now.
919 6) All commands that get sent to the SCSI adapter were verified and
920 completed in such a way, that they are now completely conform to the
921 demands in the technical description of IBM. Main candidates were the
922 DEVICE_INQUIRY, REQUEST_SENSE and DEVICE_CAPACITY commands. They must
923 be transferred by bypassing the internal command buffer of the adapter
924 or else the response can be a random result. GET_POS_INFO would be more
925 safe in usage, if one could use the SUPRESS_EXCEPTION_SHORT, but this
926 is not allowed by the technical references of IBM. (Sorry, folks, the
927 model 80 problem is still a task to be solved in a different way.)
928 7) v3.2d is still hold back for some days for testing, while 4.0 is
929 released.
930 - Michael Lang
931
932 January 3, 2001 (v4.0a)
933 1) A lot of complains after the 2.4.0-prerelease kernel came in about
934 the impossibility to compile the driver as a module. This problem is
935 solved. In combination with that problem, some unprecise declaration
936 of the function option_setup() gave some warnings during compilation.
937 This is solved, too by a forward declaration in ibmmca.c.
938 2) #ifdef argument concerning CONFIG_SCSI_IBMMCA is no longer needed and
939 was entirely removed.
940 3) Some switch statements got optimized in code, as some minor variables
941 in internal SCSI-command handlers.
942 - Michael Lang
943
944 4 To do
945 -------
946 - IBM SCSI-2 F/W external SCSI bus support in separate mode!
947 - It seems that the handling of bad disks is really bad -
948 non-existent, in fact. However, a low-level driver cannot help
949 much, if such things happen.
950
951 5 Users' Manual
952 ---------------
953 5.1 Commandline Parameters
954 --------------------------
955 There exist several features for the IBM SCSI-subsystem driver.
956 The commandline parameter format is:
957
958 ibmmcascsi=<command1>,<command2>,<command3>,...
959
960 where commandN can be one of the following:
961
962 display Owners of a model 95 or other PS/2 systems with an
963 alphanumeric LED display may set this to have their
964 display showing the following output of the 8 digits:
965
966 ------DA
967
968 where '-' stays dark, 'D' shows the SCSI-device id
969 and 'A' shows the SCSI hostindex, being currently
970 accessed. During boottime, this will give the message
971
972 SCSIini*
973
974 on the LED-panel, where the * represents a rotator,
975 showing the activity during the probing phase of the
976 driver which can take up to two minutes per SCSI-adapter.
977 adisplay This works like display, but gives more optical overview
978 of the activities on the SCSI-bus. The display will have
979 the following output:
980
981 6543210A
982
983 where the numbers 0 to 6 light up at the shown position,
984 when the SCSI-device is accessed. 'A' shows again the SCSI
985 hostindex. If display nor adisplay is set, the internal
986 PS/2 harddisk LED is used for media-activities. So, if
987 you really do not have a system with a LED-display, you
988 should not set display or adisplay. Keep in mind, that
989 display and adisplay can only be used alternatively. It
990 is not recommended to use this option, if you have some
991 wide-addressed devices e.g. at the SCSI-2 F/W adapter in
992 your system. In addition, the usage of the display for
993 other tasks in parallel, like the linuxinfo-utility makes
994 no sense with this option.
995 activity This enables the PS/2 harddisk LED activity indicator.
996 Most PS/2 have no alphanumeric LED display, but some
997 indicator. So you should use this parameter to activate it.
998 If you own model 9595 (Server95), you can have both, the
999 LED panel and the activity indicator in parallel. However,
1000 some PS/2s, like the 8595 do not have any harddisk LED
1001 activity indicator, which means, that you must use the
1002 alphanumeric LED display if you want to monitor SCSI-
1003 activity.
1004 bypass This is obsolete from driver version 4.0, as the adapters
1005 got that far understood, that the selection between
1006 integrated and bypassed commands should now work completely
1007 correct! For historical reasons, the old description is
1008 kept here:
1009 This commandline parameter forces the driver never to use
1010 SCSI-subsystems' integrated SCSI-command set. Except of
1011 the immediate assign, which is of vital importance for
1012 every IBM SCSI-subsystem to set its ldns right. Instead,
1013 the ordinary ANSI-SCSI-commands are used and passed by the
1014 controller to the SCSI-devices, therefore 'bypass'. The
1015 effort, done by the subsystem is quite bogus and at a
1016 minimum and therefore it should work everywhere. This
1017 could maybe solve troubles with old or integrated SCSI-
1018 controllers and nasty harddisks. Keep in mind, that using
1019 this flag will slow-down SCSI-accesses slightly, as the
1020 software generated commands are always slower than the
1021 hardware. Non-harddisk devices always get read/write-
1022 commands in bypass mode. On the most recent releases of
1023 the Linux IBM-SCSI-driver, the bypass command should be
1024 no longer a necessary thing, if you are sure about your
1025 SCSI-hardware!
1026 normal This is the parameter, introduced on the 2.0.x development
1027 rail by ZP Gu. This parameter defines the SCSI-device
1028 scan order in the new industry standard. This means, that
1029 the first SCSI-device is the one with the lowest pun.
1030 E.g. harddisk at pun=0 is scanned before harddisk at
1031 pun=6, which means, that harddisk at pun=0 gets sda
1032 and the one at pun=6 gets sdb.
1033 ansi The ANSI-standard for the right scan order, as done by
1034 IBM, Microware and Microsoft, scans SCSI-devices starting
1035 at the highest pun, which means, that e.g. harddisk at
1036 pun=6 gets sda and a harddisk at pun=0 gets sdb. If you
1037 like to have the same SCSI-device order, as in DOS, OS-9
1038 or OS/2, just use this parameter.
1039 fast SCSI-I/O in synchronous mode is done at 5 MHz for IBM-
1040 SCSI-devices. SCSI-2 Fast/Wide Adapter/A external bus
1041 should then run at 10 MHz if Fast-SCSI is enabled,
1042 and at 5 MHz if Fast-SCSI is disabled on the external
1043 bus. This is the default setting when nothing is
1044 specified here.
1045 medium Synchronous rate is at 50% approximately, which means
1046 2.5 MHz for IBM SCSI-adapters and 5.0 MHz for F/W ext.
1047 SCSI-bus (when Fast-SCSI speed enabled on external bus).
1048 slow The slowest possible synchronous transfer rate is set.
1049 This means 1.82 MHz for IBM SCSI-adapters and 2.0 MHz
1050 for F/W external bus at Fast-SCSI speed on the external
1051 bus.
1052
1053 A further option is that you can force the SCSI-driver to accept a SCSI-
1054 subsystem at a certain I/O-address with a predefined adapter PUN. This
1055 is done by entering
1056
1057 commandN = I/O-base
1058 commandN+1 = adapter PUN
1059
1060 e.g. ibmmcascsi=0x3540,7 will force the driver to detect a SCSI-subsystem
1061 at I/O-address 0x3540 with adapter PUN 7. Please only use this method, if
1062 the driver does really not recognize your SCSI-adapter! With driver version
1063 3.2, this recognition of various adapters was hugely improved and you
1064 should try first to remove your commandline arguments of such type with a
1065 newer driver. I bet, it will be recognized correctly. Even multiple and
1066 different types of IBM SCSI-adapters should be recognized correctly, too.
1067 Use the forced detection method only as last solution!
1068
1069 Examples:
1070
1071 ibmmcascsi=adisplay
1072
1073 This will use the advanced display mode for the model 95 LED alphanumeric
1074 display.
1075
1076 ibmmcascsi=display,0x3558,7
1077
1078 This will activate the default display mode for the model 95 LED display
1079 and will force the driver to accept a SCSI-subsystem at I/O-base 0x3558
1080 with adapter PUN 7.
1081
1082 5.2 Troubleshooting
1083 -------------------
1084 The following FAQs should help you to solve some major problems with this
1085 driver.
1086
1087 Q: "Reset SCSI-devices at boottime" halts the system at boottime, why?
1088 A: This is only tested with the IBM SCSI Adapter w/cache. It is not
1089 yet proven to run on other adapters, however you may be lucky.
1090 In version 3.1d this has been hugely improved and should work better,
1091 now. Normally you really won't need to activate this flag in the
1092 kernel configuration, as all post 1989 SCSI-devices should accept
1093 the reset-signal, when the computer is switched on. The SCSI-
1094 subsystem generates this reset while being initialized. This flag
1095 is really reserved for users with very old, very strange or self-made
1096 SCSI-devices.
1097 Q: Why is the SCSI-order of my drives mirrored to the device-order
1098 seen from OS/2 or DOS ?
1099 A: It depends on the operating system, if it looks at the devices in
1100 ANSI-SCSI-standard (starting from pun 6 and going down to pun 0) or
1101 if it just starts at pun 0 and counts up. If you want to be conform
1102 with OS/2 and DOS, you have to activate this flag in the kernel
1103 configuration or you should set 'ansi' as parameter for the kernel.
1104 The parameter 'normal' sets the new industry standard, starting
1105 from pun 0, scanning up to pun 6. This allows you to change your
1106 opinion still after having already compiled the kernel.
1107 Q: Why can't I find IBM MCA SCSI support in the config menu?
1108 A: You have to activate MCA bus support, first.
1109 Q: Where can I find the latest info about this driver?
1110 A: See the file MAINTAINERS for the current WWW-address, which offers
1111 updates, info and Q/A lists. At this file's origin, the webaddress
1112 was: http://www.staff.uni-mainz.de/mlang/linux.html
1113 Q: My SCSI-adapter is not recognized by the driver, what can I do?
1114 A: Just force it to be recognized by kernel parameters. See section 5.1.
1115 If this really happens, do also send e-mail to the maintainer, as
1116 forced detection should be never necessary. Forced detection is in
1117 principal some flaw of the driver adapter detection and goes into
1118 bug reports.
1119 Q: The driver screws up, if it starts to probe SCSI-devices, is there
1120 some way out of it?
1121 A: Yes, that was some recognition problem of the correct SCSI-adapter
1122 and its I/O base addresses. Upgrade your driver to the latest release
1123 and it should be fine again.
1124 Q: I get a message: panic IBM MCA SCSI: command error .... , what can
1125 I do against this?
1126 A: Previously, I followed the way by ignoring command errors by using
1127 ibmmcascsi=forgiveall, but this command no longer exists and is
1128 obsolete. If such a problem appears, it is caused by some segmentation
1129 fault of the driver, which maps to some unallowed area. The latest
1130 version of the driver should be ok, as most bugs have been solved.
1131 Q: There are still kernel panics, even after having set
1132 ibmmcascsi=forgiveall. Are there other possibilities to prevent
1133 such panics?
1134 A: No, get just the latest release of the driver and it should work
1135 better and better with increasing version number. Forget about this
1136 ibmmcascsi=forgiveall, as also ignorecmd are obsolete.!
1137 Q: Linux panics or stops without any comment, but it is probable, that my
1138 harddisk(s) have bad blocks.
1139 A: Sorry, the bad-block handling is still a feeble point of this driver,
1140 but is on the schedule for development in the near future.
1141 Q: Linux panics while dynamically assigning SCSI-ids or ldns.
1142 A: If you disconnect a SCSI-device from the machine, while Linux is up
1143 and the driver uses dynamical reassignment of logical device numbers
1144 (ldn), it really gets "angry" if it won't find devices, that were still
1145 present at boottime and stops Linux.
1146 Q: The system does not recover after an abort-command has been generated.
1147 A: This is regrettably true, as it is not yet understood, why the
1148 SCSI-adapter does really NOT generate any interrupt at the end of
1149 the abort-command. As no interrupt is generated, the abort command
1150 cannot get finished and the system hangs, sorry, but checks are
1151 running to hunt down this problem. If there is a real pending command,
1152 the interrupt MUST get generated after abort. In this case, it
1153 should finish well.
1154 Q: The system gets in bad shape after a SCSI-reset, is this known?
1155 A: Yes, as there are a lot of prescriptions (see the Linux Hackers'
1156 Guide) what has to be done for reset, we still share the bad shape of
1157 the reset functions with all other low level SCSI-drivers.
1158 Astonishingly, reset works in most cases quite ok, but the harddisks
1159 won't run in synchronous mode anymore after a reset, until you reboot.
1160 Q: Why does my XXX w/Cache adapter not use read-prefetch?
1161 A: Ok, that is not completely possible. If a cache is present, the
1162 adapter tries to use it internally. Explicitly, one can use the cache
1163 with a read prefetch command, maybe in future, but this requires
1164 some major overhead of SCSI-commands that risks the performance to
1165 go down more than it gets improved. Tests with that are running.
1166 Q: I have a IBM SCSI-2 Fast/Wide adapter, it boots in some way and hangs.
1167 A: Yes, that is understood, as for sure, your SCSI-2 Fast/Wide adapter
1168 was in such a case recognized as integrated SCSI-adapter or something
1169 else, but not as the correct adapter. As the I/O-ports get assigned
1170 wrongly by that reason, the system should crash in most cases. You
1171 should upgrade to the latest release of the SCSI-driver. The
1172 recommended version is 3.2 or later. Here, the F/W support is in
1173 a stable and reliable condition. Wide-addressing is in addition
1174 supported.
1175 Q: I get an Oops message and something like "killing interrupt".
1176 A: The reason for this is that the IBM SCSI-subsystem only sends a
1177 termination status back, if some error appeared. In former releases
1178 of the driver, it was not checked, if the termination status block
1179 is NULL. From version 3.2, it is taken care of this.
1180 Q: I have a F/W adapter and the driver sees my internal SCSI-devices,
1181 but ignores the external ones.
1182 A: Select combined busmode in the IBM config-program and check for that
1183 no SCSI-id on the external devices appears on internal devices.
1184 Reboot afterwards. Dual busmode is supported, but works only for the
1185 internal bus, yet. External bus is still ignored. Take care for your
1186 SCSI-ids. If combined bus-mode is activated, on some adapters,
1187 the wide-addressing is not possible, so devices with ids between 8
1188 and 15 get ignored by the driver & adapter!
1189 Q: I have a 9595 and I get a NMI during heavy SCSI I/O e.g. during fsck.
1190 A COMMAND ERROR is reported and characters on the screen are missing.
1191 Warm reboot is not possible. Things look like quite weird.
1192 A: Check the processor type of your 9595. If you have an 80486 or 486DX-2
1193 processor complex on your mainboard and you compiled a kernel that
1194 supports 80386 processors, it is possible, that the kernel cannot
1195 keep track of the PS/2 interrupt handling and stops on an NMI. Just
1196 compile a kernel for the correct processor type of your PS/2 and
1197 everything should be fine. This is necessary even if one assumes,
1198 that some 80486 system should be downward compatible to 80386
1199 software.
1200 Q: Some commands hang and interrupts block the machine. After some
1201 timeout, the syslog reports that it tries to call abort, but the
1202 machine is frozen.
1203 A: This can be a busy wait bug in the interrupt handler of driver
1204 version 3.2. You should at least upgrade to 3.2c if you use
1205 kernel < 2.4.0 and driver version 4.0 if you use kernel 2.4.0 or
1206 later (including all test releases).
1207 Q: I have a PS/2 model 80 and more than 16 MBytes of RAM. The driver
1208 completely refuses to work, reports NMIs, COMMAND ERRORs or other
1209 ambiguous stuff. When reducing the RAM size down below 16 MB,
1210 everything is running smoothly.
1211 A: No real answer, yet. In any case, one should force the kernel to
1212 present SCBs only below the 16 MBytes barrier. Maybe this solves the
1213 problem. Not yet tried, but guessing that it could work. To get this,
1214 set unchecked_isa_dma argument of ibmmca.h from 0 to 1.
1215
1216 5.3 Bug reports
1217 --------------
1218 If you really find bugs in the source code or the driver will successfully
1219 refuse to work on your machine, you should send a bug report to me. The
1220 best for this is to follow the instructions on the WWW-page for this
1221 driver. Fill out the bug-report form, placed on the WWW-page and ship it,
1222 so the bugs can be taken into account with maximum efforts. But, please
1223 do not send bug reports about this driver to Linus Torvalds or Leonard
1224 Zubkoff, as Linus is buried in E-Mail and Leonard is supervising all
1225 SCSI-drivers and won't have the time left to look inside every single
1226 driver to fix a bug and especially DO NOT send modified code to Linus
1227 Torvalds or Alan J. Cox which has not been checked here!!! They are both
1228 quite buried in E-mail (as me, sometimes, too) and one should first check
1229 for problems on my local teststand. Recently, I got a lot of
1230 bug reports for errors in the ibmmca.c code, which I could not imagine, but
1231 a look inside some Linux-distribution showed me quite often some modified
1232 code, which did no longer work on most other machines than the one of the
1233 modifier. Ok, so now that there is maintenance service available for this
1234 driver, please use this address first in order to keep the level of
1235 confusion low. Thank you!
1236
1237 When you get a SCSI-error message that panics your system, a list of
1238 register-entries of the SCSI-subsystem is shown (from Version 3.1d). With
1239 this list, it is very easy for the maintainer to localize the problem in
1240 the driver or in the configuration of the user. Please write down all the
1241 values from this report and send them to the maintainer. This would really
1242 help a lot and makes life easier concerning misunderstandings.
1243
1244 Use the bug-report form (see 5.4 for its address) to send all the bug-
1245 stuff to the maintainer or write e-mail with the values from the table.
1246
1247 5.4 Support WWW-page
1248 --------------------
1249 The address of the IBM SCSI-subsystem supporting WWW-page is:
1250
1251 http://www.staff.uni-mainz.de/mlang/linux.html
1252
1253 Here you can find info about the background of this driver, patches,
1254 troubleshooting support, news and a bugreport form. Please check that
1255 WWW-page regularly for latest hints. If ever this URL changes, please
1256 refer to the MAINTAINERS file in order to get the latest address.
1257
1258 For the bugreport, please fill out the formular on the corresponding
1259 WWW-page. Read the dedicated instructions and write as much as you
1260 know about your problem. If you do not like such formulars, please send
1261 some e-mail directly, but at least with the same information as required by
1262 the formular.
1263
1264 If you have extensive bug reports, including Oops messages and
1265 screen-shots, please feel free to send it directly to the address
1266 of the maintainer, too. The current address of the maintainer is:
1267
1268 Michael Lang <langa2@kph.uni-mainz.de>
1269
1270 6 References
1271 ------------
1272 IBM Corp., "Update for the PS/2 Hardware Interface Technical Reference,
1273 Common Interfaces", Armonk, September 1991, PN 04G3281,
1274 (available in the U.S. for $21.75 at 1-800-IBM-PCTB or in Germany for
1275 around 40,-DM at "Hallo IBM").
1276
1277 IBM Corp., "Personal System/2 Micro Channel SCSI
1278 Adapter with Cache Technical Reference", Armonk, March 1990, PN 68X2365.
1279
1280 IBM Corp., "Personal System/2 Micro Channel SCSI
1281 Adapter Technical Reference", Armonk, March 1990, PN 68X2397.
1282
1283 IBM Corp., "SCSI-2 Fast/Wide Adapter/A Technical Reference - Dual Bus",
1284 Armonk, March 1994, PN 83G7545.
1285
1286 Friedhelm Schmidt, "SCSI-Bus und IDE-Schnittstelle - Moderne Peripherie-
1287 Schnittstellen: Hardware, Protokollbeschreibung und Anwendung", 2. Aufl.
1288 Addison Wesley, 1996.
1289
1290 Michael K. Johnson, "The Linux Kernel Hackers' Guide", Version 0.6, Chapel
1291 Hill - North Carolina, 1995
1292
1293 Andreas Kaiser, "SCSI TAPE BACKUP for OS/2 2.0", Version 2.12, Stuttgart
1294 1993
1295
1296 Helmut Rompel, "IBM Computerwelt GUIDE", What is what bei IBM., Systeme *
1297 Programme * Begriffe, IWT-Verlag GmbH - Muenchen, 1988
1298
1299 7 Credits to
1300 ------------
1301 7.1 People
1302 ----------
1303 Klaus Grimm
1304 who already a long time ago gave me the old code from the
1305 SCSI-driver in order to get it running for some old machine
1306 in our institute.
1307 Martin Kolinek
1308 who wrote the first release of the IBM SCSI-subsystem driver.
1309 Chris Beauregard
1310 who for a long time maintained MCA-Linux and the SCSI-driver
1311 in the beginning. Chris, wherever you are: Cheers to you!
1312 Klaus Kudielka
1313 with whom in the 2.1.x times, I had a quite fruitful
1314 cooperation to get the driver running as a module and to get
1315 it running with multiple SCSI-adapters.
1316 David Weinehall
1317 for his excellent maintenance of the MCA-stuff and the quite
1318 detailed bug reports and ideas for this driver (and his
1319 patience ;-)).
1320 Alan J. Cox
1321 for his bug reports and his bold activities in cross-checking
1322 the driver-code with his teststand.
1323
1324 7.2 Sponsors & Supporters
1325 -------------------------
1326 "Hallo IBM",
1327 IBM-Deutschland GmbH
1328 the service of IBM-Deutschland for customers. Their E-Mail
1329 service is unbeatable. Whatever old stuff I asked for, I
1330 always got some helpful answers.
1331 Karl-Otto Reimers,
1332 IBM Klub - Sparte IBM Geschichte, Sindelfingen
1333 for sending me a copy of the w/Cache manual from the
1334 IBM-Deutschland archives.
1335 Harald Staiger
1336 for his extensive hardware donations which allows me today
1337 still to test the driver in various constellations.
1338 Erich Fritscher
1339 for his very kind sponsoring.
1340 Louis Ohland,
1341 Charles Lasitter
1342 for support by shipping me an IBM SCSI-2 Fast/Wide manual.
1343 In addition, the contribution of various hardware is quite
1344 decessive and will make it possible to add FWSR (RAID)
1345 adapter support to the driver in the near future! So,
1346 complaints about no RAID support won't remain forever.
1347 Yes, folks, that is no joke, RAID support is going to rise!
1348 Erik Weber
1349 for the great deal we made about a model 9595 and the nice
1350 surrounding equipment and the cool trip to Mannheim
1351 second-hand computer market. In addition, I would like
1352 to thank him for his exhaustive SCSI-driver testing on his
1353 95er PS/2 park.
1354 Anthony Hogbin
1355 for his direct shipment of a SCSI F/W adapter, which allowed
1356 me immediately on the first stage to try it on model 8557
1357 together with onboard SCSI adapter and some SCSI w/Cache.
1358 Andreas Hotz
1359 for his support by memory and an IBM SCSI-adapter. Collecting
1360 all this together now allows me to try really things with
1361 the driver at maximum load and variety on various models in
1362 a very quick and efficient way.
1363 Peter Jennewein
1364 for his model 30, which serves me as part of my teststand
1365 and his cool remark about how you make an ordinary diskette
1366 drive working and how to connect it to an IBM-diskette port.
1367 Johannes Gutenberg-Universitaet, Mainz &
1368 Institut fuer Kernphysik, Mainz Microtron (MAMI)
1369 for the offered space, the link, placed on the central
1370 homepage and the space to store and offer the driver and
1371 related material and the free working times, which allow
1372 me to answer all your e-mail.
1373
1374 8 Trademarks
1375 ------------
1376 IBM, PS/2, OS/2, Microchannel are registered trademarks of International
1377 Business Machines Corporation
1378
1379 MS-DOS is a registered trademark of Microsoft Corporation
1380
1381 Microware, OS-9 are registered trademarks of Microware Systems
1382
1383 9 Disclaimer
1384 ------------
1385 Beside the GNU General Public License and the dependent disclaimers and disclaimers
1386 concerning the Linux-kernel in special, this SCSI-driver comes without any
1387 warranty. Its functionality is tested as good as possible on certain
1388 machines and combinations of computer hardware, which does not exclude,
1389 that data loss or severe damage of hardware is possible while using this
1390 part of software on some arbitrary computer hardware or in combination
1391 with other software packages. It is highly recommended to make backup
1392 copies of your data before using this software. Furthermore, personal
1393 injuries by hardware defects, that could be caused by this SCSI-driver are
1394 not excluded and it is highly recommended to handle this driver with a
1395 maximum of carefulness.
1396
1397 This driver supports hardware, produced by International Business Machines
1398 Corporation (IBM).
1399
1400------
1401Michael Lang
1402(langa2@kph.uni-mainz.de)
diff --git a/Documentation/scsi/scsi-parameters.txt b/Documentation/scsi/scsi-parameters.txt
index 21e5798526ee..2bfd6f6d2d3d 100644
--- a/Documentation/scsi/scsi-parameters.txt
+++ b/Documentation/scsi/scsi-parameters.txt
@@ -37,9 +37,6 @@ parameters may be changed at runtime by the command
37 37
38 eata= [HW,SCSI] 38 eata= [HW,SCSI]
39 39
40 fd_mcs= [HW,SCSI]
41 See header of drivers/scsi/fd_mcs.c.
42
43 fdomain= [HW,SCSI] 40 fdomain= [HW,SCSI]
44 See header of drivers/scsi/fdomain.c. 41 See header of drivers/scsi/fdomain.c.
45 42
@@ -48,9 +45,6 @@ parameters may be changed at runtime by the command
48 45
49 gvp11= [HW,SCSI] 46 gvp11= [HW,SCSI]
50 47
51 ibmmcascsi= [HW,MCA,SCSI] IBM MicroChannel SCSI adapter
52 See Documentation/mca.txt.
53
54 in2000= [HW,SCSI] 48 in2000= [HW,SCSI]
55 See header of drivers/scsi/in2000.c. 49 See header of drivers/scsi/in2000.c.
56 50
diff --git a/Documentation/scsi/scsi_mid_low_api.txt b/Documentation/scsi/scsi_mid_low_api.txt
index a340b18cd4eb..2b06aba4fa0f 100644
--- a/Documentation/scsi/scsi_mid_low_api.txt
+++ b/Documentation/scsi/scsi_mid_low_api.txt
@@ -30,7 +30,7 @@ the motherboard (or both). Some aic7xxx based HBAs are dual controllers
30and thus represent two hosts. Like most modern HBAs, each aic7xxx host 30and thus represent two hosts. Like most modern HBAs, each aic7xxx host
31has its own PCI device address. [The one-to-one correspondence between 31has its own PCI device address. [The one-to-one correspondence between
32a SCSI host and a PCI device is common but not required (e.g. with 32a SCSI host and a PCI device is common but not required (e.g. with
33ISA or MCA adapters).] 33ISA adapters).]
34 34
35The SCSI mid level isolates an LLD from other layers such as the SCSI 35The SCSI mid level isolates an LLD from other layers such as the SCSI
36upper layer drivers and the block layer. 36upper layer drivers and the block layer.
diff --git a/Documentation/security/Smack.txt b/Documentation/security/Smack.txt
index d2f72ae66432..a416479b8a1c 100644
--- a/Documentation/security/Smack.txt
+++ b/Documentation/security/Smack.txt
@@ -15,7 +15,7 @@ at hand.
15 15
16Smack consists of three major components: 16Smack consists of three major components:
17 - The kernel 17 - The kernel
18 - A start-up script and a few modified applications 18 - Basic utilities, which are helpful but not required
19 - Configuration data 19 - Configuration data
20 20
21The kernel component of Smack is implemented as a Linux 21The kernel component of Smack is implemented as a Linux
@@ -23,37 +23,28 @@ Security Modules (LSM) module. It requires netlabel and
23works best with file systems that support extended attributes, 23works best with file systems that support extended attributes,
24although xattr support is not strictly required. 24although xattr support is not strictly required.
25It is safe to run a Smack kernel under a "vanilla" distribution. 25It is safe to run a Smack kernel under a "vanilla" distribution.
26
26Smack kernels use the CIPSO IP option. Some network 27Smack kernels use the CIPSO IP option. Some network
27configurations are intolerant of IP options and can impede 28configurations are intolerant of IP options and can impede
28access to systems that use them as Smack does. 29access to systems that use them as Smack does.
29 30
30The startup script etc-init.d-smack should be installed 31The current git repositories for Smack user space are:
31in /etc/init.d/smack and should be invoked early in the
32start-up process. On Fedora rc5.d/S02smack is recommended.
33This script ensures that certain devices have the correct
34Smack attributes and loads the Smack configuration if
35any is defined. This script invokes two programs that
36ensure configuration data is properly formatted. These
37programs are /usr/sbin/smackload and /usr/sin/smackcipso.
38The system will run just fine without these programs,
39but it will be difficult to set access rules properly.
40
41A version of "ls" that provides a "-M" option to display
42Smack labels on long listing is available.
43 32
44A hacked version of sshd that allows network logins by users 33 git@gitorious.org:meego-platform-security/smackutil.git
45with specific Smack labels is available. This version does 34 git@gitorious.org:meego-platform-security/libsmack.git
46not work for scp. You must set the /etc/ssh/sshd_config
47line:
48 UsePrivilegeSeparation no
49 35
50The format of /etc/smack/usr is: 36These should make and install on most modern distributions.
37There are three commands included in smackutil:
51 38
52 username smack 39smackload - properly formats data for writing to /smack/load
40smackcipso - properly formats data for writing to /smack/cipso
41chsmack - display or set Smack extended attribute values
53 42
54In keeping with the intent of Smack, configuration data is 43In keeping with the intent of Smack, configuration data is
55minimal and not strictly required. The most important 44minimal and not strictly required. The most important
56configuration step is mounting the smackfs pseudo filesystem. 45configuration step is mounting the smackfs pseudo filesystem.
46If smackutil is installed the startup script will take care
47of this, but it can be manually as well.
57 48
58Add this line to /etc/fstab: 49Add this line to /etc/fstab:
59 50
@@ -61,19 +52,148 @@ Add this line to /etc/fstab:
61 52
62and create the /smack directory for mounting. 53and create the /smack directory for mounting.
63 54
64Smack uses extended attributes (xattrs) to store file labels. 55Smack uses extended attributes (xattrs) to store labels on filesystem
65The command to set a Smack label on a file is: 56objects. The attributes are stored in the extended attribute security
57name space. A process must have CAP_MAC_ADMIN to change any of these
58attributes.
59
60The extended attributes that Smack uses are:
61
62SMACK64
63 Used to make access control decisions. In almost all cases
64 the label given to a new filesystem object will be the label
65 of the process that created it.
66SMACK64EXEC
67 The Smack label of a process that execs a program file with
68 this attribute set will run with this attribute's value.
69SMACK64MMAP
70 Don't allow the file to be mmapped by a process whose Smack
71 label does not allow all of the access permitted to a process
72 with the label contained in this attribute. This is a very
73 specific use case for shared libraries.
74SMACK64TRANSMUTE
75 Can only have the value "TRUE". If this attribute is present
76 on a directory when an object is created in the directory and
77 the Smack rule (more below) that permitted the write access
78 to the directory includes the transmute ("t") mode the object
79 gets the label of the directory instead of the label of the
80 creating process. If the object being created is a directory
81 the SMACK64TRANSMUTE attribute is set as well.
82SMACK64IPIN
83 This attribute is only available on file descriptors for sockets.
84 Use the Smack label in this attribute for access control
85 decisions on packets being delivered to this socket.
86SMACK64IPOUT
87 This attribute is only available on file descriptors for sockets.
88 Use the Smack label in this attribute for access control
89 decisions on packets coming from this socket.
90
91There are multiple ways to set a Smack label on a file:
66 92
67 # attr -S -s SMACK64 -V "value" path 93 # attr -S -s SMACK64 -V "value" path
94 # chsmack -a value path
68 95
69NOTE: Smack labels are limited to 23 characters. The attr command 96A process can see the smack label it is running with by
70 does not enforce this restriction and can be used to set 97reading /proc/self/attr/current. A process with CAP_MAC_ADMIN
71 invalid Smack labels on files. 98can set the process smack by writing there.
72 99
73If you don't do anything special all users will get the floor ("_") 100Most Smack configuration is accomplished by writing to files
74label when they log in. If you do want to log in via the hacked ssh 101in the smackfs filesystem. This pseudo-filesystem is usually
75at other labels use the attr command to set the smack value on the 102mounted on /smack.
76home directory and its contents. 103
104access
105 This interface reports whether a subject with the specified
106 Smack label has a particular access to an object with a
107 specified Smack label. Write a fixed format access rule to
108 this file. The next read will indicate whether the access
109 would be permitted. The text will be either "1" indicating
110 access, or "0" indicating denial.
111access2
112 This interface reports whether a subject with the specified
113 Smack label has a particular access to an object with a
114 specified Smack label. Write a long format access rule to
115 this file. The next read will indicate whether the access
116 would be permitted. The text will be either "1" indicating
117 access, or "0" indicating denial.
118ambient
119 This contains the Smack label applied to unlabeled network
120 packets.
121cipso
122 This interface allows a specific CIPSO header to be assigned
123 to a Smack label. The format accepted on write is:
124 "%24s%4d%4d"["%4d"]...
125 The first string is a fixed Smack label. The first number is
126 the level to use. The second number is the number of categories.
127 The following numbers are the categories.
128 "level-3-cats-5-19 3 2 5 19"
129cipso2
130 This interface allows a specific CIPSO header to be assigned
131 to a Smack label. The format accepted on write is:
132 "%s%4d%4d"["%4d"]...
133 The first string is a long Smack label. The first number is
134 the level to use. The second number is the number of categories.
135 The following numbers are the categories.
136 "level-3-cats-5-19 3 2 5 19"
137direct
138 This contains the CIPSO level used for Smack direct label
139 representation in network packets.
140doi
141 This contains the CIPSO domain of interpretation used in
142 network packets.
143load
144 This interface allows access control rules in addition to
145 the system defined rules to be specified. The format accepted
146 on write is:
147 "%24s%24s%5s"
148 where the first string is the subject label, the second the
149 object label, and the third the requested access. The access
150 string may contain only the characters "rwxat-", and specifies
151 which sort of access is allowed. The "-" is a placeholder for
152 permissions that are not allowed. The string "r-x--" would
153 specify read and execute access. Labels are limited to 23
154 characters in length.
155load2
156 This interface allows access control rules in addition to
157 the system defined rules to be specified. The format accepted
158 on write is:
159 "%s %s %s"
160 where the first string is the subject label, the second the
161 object label, and the third the requested access. The access
162 string may contain only the characters "rwxat-", and specifies
163 which sort of access is allowed. The "-" is a placeholder for
164 permissions that are not allowed. The string "r-x--" would
165 specify read and execute access.
166load-self
167 This interface allows process specific access rules to be
168 defined. These rules are only consulted if access would
169 otherwise be permitted, and are intended to provide additional
170 restrictions on the process. The format is the same as for
171 the load interface.
172load-self2
173 This interface allows process specific access rules to be
174 defined. These rules are only consulted if access would
175 otherwise be permitted, and are intended to provide additional
176 restrictions on the process. The format is the same as for
177 the load2 interface.
178logging
179 This contains the Smack logging state.
180mapped
181 This contains the CIPSO level used for Smack mapped label
182 representation in network packets.
183netlabel
184 This interface allows specific internet addresses to be
185 treated as single label hosts. Packets are sent to single
186 label hosts without CIPSO headers, but only from processes
187 that have Smack write access to the host label. All packets
188 received from single label hosts are given the specified
189 label. The format accepted on write is:
190 "%d.%d.%d.%d label" or "%d.%d.%d.%d/%d label".
191onlycap
192 This contains the label processes must have for CAP_MAC_ADMIN
193 and CAP_MAC_OVERRIDE to be effective. If this file is empty
194 these capabilities are effective at for processes with any
195 label. The value is set by writing the desired label to the
196 file or cleared by writing "-" to the file.
77 197
78You can add access rules in /etc/smack/accesses. They take the form: 198You can add access rules in /etc/smack/accesses. They take the form:
79 199
@@ -83,10 +203,6 @@ access is a combination of the letters rwxa which specify the
83kind of access permitted a subject with subjectlabel on an 203kind of access permitted a subject with subjectlabel on an
84object with objectlabel. If there is no rule no access is allowed. 204object with objectlabel. If there is no rule no access is allowed.
85 205
86A process can see the smack label it is running with by
87reading /proc/self/attr/current. A privileged process can
88set the process smack by writing there.
89
90Look for additional programs on http://schaufler-ca.com 206Look for additional programs on http://schaufler-ca.com
91 207
92From the Smack Whitepaper: 208From the Smack Whitepaper:
@@ -186,7 +302,7 @@ team. Smack labels are unstructured, case sensitive, and the only operation
186ever performed on them is comparison for equality. Smack labels cannot 302ever performed on them is comparison for equality. Smack labels cannot
187contain unprintable characters, the "/" (slash), the "\" (backslash), the "'" 303contain unprintable characters, the "/" (slash), the "\" (backslash), the "'"
188(quote) and '"' (double-quote) characters. 304(quote) and '"' (double-quote) characters.
189Smack labels cannot begin with a '-', which is reserved for special options. 305Smack labels cannot begin with a '-'. This is reserved for special options.
190 306
191There are some predefined labels: 307There are some predefined labels:
192 308
@@ -194,7 +310,7 @@ There are some predefined labels:
194 ^ Pronounced "hat", a single circumflex character. 310 ^ Pronounced "hat", a single circumflex character.
195 * Pronounced "star", a single asterisk character. 311 * Pronounced "star", a single asterisk character.
196 ? Pronounced "huh", a single question mark character. 312 ? Pronounced "huh", a single question mark character.
197 @ Pronounced "Internet", a single at sign character. 313 @ Pronounced "web", a single at sign character.
198 314
199Every task on a Smack system is assigned a label. System tasks, such as 315Every task on a Smack system is assigned a label. System tasks, such as
200init(8) and systems daemons, are run with the floor ("_") label. User tasks 316init(8) and systems daemons, are run with the floor ("_") label. User tasks
@@ -246,13 +362,14 @@ The format of an access rule is:
246 362
247Where subject-label is the Smack label of the task, object-label is the Smack 363Where subject-label is the Smack label of the task, object-label is the Smack
248label of the thing being accessed, and access is a string specifying the sort 364label of the thing being accessed, and access is a string specifying the sort
249of access allowed. The Smack labels are limited to 23 characters. The access 365of access allowed. The access specification is searched for letters that
250specification is searched for letters that describe access modes: 366describe access modes:
251 367
252 a: indicates that append access should be granted. 368 a: indicates that append access should be granted.
253 r: indicates that read access should be granted. 369 r: indicates that read access should be granted.
254 w: indicates that write access should be granted. 370 w: indicates that write access should be granted.
255 x: indicates that execute access should be granted. 371 x: indicates that execute access should be granted.
372 t: indicates that the rule requests transmutation.
256 373
257Uppercase values for the specification letters are allowed as well. 374Uppercase values for the specification letters are allowed as well.
258Access mode specifications can be in any order. Examples of acceptable rules 375Access mode specifications can be in any order. Examples of acceptable rules
@@ -273,7 +390,7 @@ Examples of unacceptable rules are:
273 390
274Spaces are not allowed in labels. Since a subject always has access to files 391Spaces are not allowed in labels. Since a subject always has access to files
275with the same label specifying a rule for that case is pointless. Only 392with the same label specifying a rule for that case is pointless. Only
276valid letters (rwxaRWXA) and the dash ('-') character are allowed in 393valid letters (rwxatRWXAT) and the dash ('-') character are allowed in
277access specifications. The dash is a placeholder, so "a-r" is the same 394access specifications. The dash is a placeholder, so "a-r" is the same
278as "ar". A lone dash is used to specify that no access should be allowed. 395as "ar". A lone dash is used to specify that no access should be allowed.
279 396
@@ -297,6 +414,13 @@ but not any of its attributes by the circumstance of having read access to the
297containing directory but not to the differently labeled file. This is an 414containing directory but not to the differently labeled file. This is an
298artifact of the file name being data in the directory, not a part of the file. 415artifact of the file name being data in the directory, not a part of the file.
299 416
417If a directory is marked as transmuting (SMACK64TRANSMUTE=TRUE) and the
418access rule that allows a process to create an object in that directory
419includes 't' access the label assigned to the new object will be that
420of the directory, not the creating process. This makes it much easier
421for two processes with different labels to share data without granting
422access to all of their files.
423
300IPC objects, message queues, semaphore sets, and memory segments exist in flat 424IPC objects, message queues, semaphore sets, and memory segments exist in flat
301namespaces and access requests are only required to match the object in 425namespaces and access requests are only required to match the object in
302question. 426question.
diff --git a/Documentation/security/Yama.txt b/Documentation/security/Yama.txt
index a9511f179069..e369de2d48cd 100644
--- a/Documentation/security/Yama.txt
+++ b/Documentation/security/Yama.txt
@@ -34,7 +34,7 @@ parent to a child process (i.e. direct "gdb EXE" and "strace EXE" still
34work), or with CAP_SYS_PTRACE (i.e. "gdb --pid=PID", and "strace -p PID" 34work), or with CAP_SYS_PTRACE (i.e. "gdb --pid=PID", and "strace -p PID"
35still work as root). 35still work as root).
36 36
37For software that has defined application-specific relationships 37In mode 1, software that has defined application-specific relationships
38between a debugging process and its inferior (crash handlers, etc), 38between a debugging process and its inferior (crash handlers, etc),
39prctl(PR_SET_PTRACER, pid, ...) can be used. An inferior can declare which 39prctl(PR_SET_PTRACER, pid, ...) can be used. An inferior can declare which
40other process (and its descendents) are allowed to call PTRACE_ATTACH 40other process (and its descendents) are allowed to call PTRACE_ATTACH
@@ -46,6 +46,8 @@ restrictions, it can call prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, ...)
46so that any otherwise allowed process (even those in external pid namespaces) 46so that any otherwise allowed process (even those in external pid namespaces)
47may attach. 47may attach.
48 48
49These restrictions do not change how ptrace via PTRACE_TRACEME operates.
50
49The sysctl settings are: 51The sysctl settings are:
50 52
510 - classic ptrace permissions: a process can PTRACE_ATTACH to any other 530 - classic ptrace permissions: a process can PTRACE_ATTACH to any other
@@ -60,6 +62,12 @@ The sysctl settings are:
60 inferior can call prctl(PR_SET_PTRACER, debugger, ...) to declare 62 inferior can call prctl(PR_SET_PTRACER, debugger, ...) to declare
61 an allowed debugger PID to call PTRACE_ATTACH on the inferior. 63 an allowed debugger PID to call PTRACE_ATTACH on the inferior.
62 64
652 - admin-only attach: only processes with CAP_SYS_PTRACE may use ptrace
66 with PTRACE_ATTACH.
67
683 - no attach: no processes may use ptrace with PTRACE_ATTACH. Once set,
69 this sysctl cannot be changed to a lower value.
70
63The original children-only logic was based on the restrictions in grsecurity. 71The original children-only logic was based on the restrictions in grsecurity.
64 72
65============================================================== 73==============================================================
diff --git a/Documentation/security/keys.txt b/Documentation/security/keys.txt
index d389acd31e19..aa0dbd74b71b 100644
--- a/Documentation/security/keys.txt
+++ b/Documentation/security/keys.txt
@@ -805,6 +805,23 @@ The keyctl syscall functions are:
805 kernel and resumes executing userspace. 805 kernel and resumes executing userspace.
806 806
807 807
808 (*) Invalidate a key.
809
810 long keyctl(KEYCTL_INVALIDATE, key_serial_t key);
811
812 This function marks a key as being invalidated and then wakes up the
813 garbage collector. The garbage collector immediately removes invalidated
814 keys from all keyrings and deletes the key when its reference count
815 reaches zero.
816
817 Keys that are marked invalidated become invisible to normal key operations
818 immediately, though they are still visible in /proc/keys until deleted
819 (they're marked with an 'i' flag).
820
821 A process must have search permission on the key for this function to be
822 successful.
823
824
808=============== 825===============
809KERNEL SERVICES 826KERNEL SERVICES
810=============== 827===============
diff --git a/Documentation/serial/stallion.txt b/Documentation/serial/stallion.txt
index 55090914a9c5..4d798c0cb5cb 100644
--- a/Documentation/serial/stallion.txt
+++ b/Documentation/serial/stallion.txt
@@ -20,10 +20,10 @@ There are two drivers that work with the different families of Stallion
20multiport serial boards. One is for the Stallion smart boards - that is 20multiport serial boards. One is for the Stallion smart boards - that is
21EasyIO, EasyConnection 8/32 and EasyConnection 8/64-PCI, the other for 21EasyIO, EasyConnection 8/32 and EasyConnection 8/64-PCI, the other for
22the true Stallion intelligent multiport boards - EasyConnection 8/64 22the true Stallion intelligent multiport boards - EasyConnection 8/64
23(ISA, EISA, MCA), EasyConnection/RA-PCI, ONboard and Brumby. 23(ISA, EISA), EasyConnection/RA-PCI, ONboard and Brumby.
24 24
25If you are using any of the Stallion intelligent multiport boards (Brumby, 25If you are using any of the Stallion intelligent multiport boards (Brumby,
26ONboard, EasyConnection 8/64 (ISA, EISA, MCA), EasyConnection/RA-PCI) with 26ONboard, EasyConnection 8/64 (ISA, EISA), EasyConnection/RA-PCI) with
27Linux you will need to get the driver utility package. This contains a 27Linux you will need to get the driver utility package. This contains a
28firmware loader and the firmware images necessary to make the devices operate. 28firmware loader and the firmware images necessary to make the devices operate.
29 29
@@ -40,7 +40,7 @@ If you are using the EasyIO, EasyConnection 8/32 or EasyConnection 8/64-PCI
40boards then you don't need this package, although it does have a serial stats 40boards then you don't need this package, although it does have a serial stats
41display program. 41display program.
42 42
43If you require DIP switch settings, EISA or MCA configuration files, or any 43If you require DIP switch settings, or EISA configuration files, or any
44other information related to Stallion boards then have a look at Stallion's 44other information related to Stallion boards then have a look at Stallion's
45web pages at http://www.stallion.com. 45web pages at http://www.stallion.com.
46 46
@@ -51,13 +51,13 @@ web pages at http://www.stallion.com.
51The drivers can be used as loadable modules or compiled into the kernel. 51The drivers can be used as loadable modules or compiled into the kernel.
52You can choose which when doing a "config" on the kernel. 52You can choose which when doing a "config" on the kernel.
53 53
54All ISA, EISA and MCA boards that you want to use need to be configured into 54All ISA, and EISA boards that you want to use need to be configured into
55the driver(s). All PCI boards will be automatically detected when you load 55the driver(s). All PCI boards will be automatically detected when you load
56the driver - so they do not need to be entered into the driver(s) 56the driver - so they do not need to be entered into the driver(s)
57configuration structure. Note that kernel PCI support is required to use PCI 57configuration structure. Note that kernel PCI support is required to use PCI
58boards. 58boards.
59 59
60There are two methods of configuring ISA, EISA and MCA boards into the drivers. 60There are two methods of configuring ISA and EISA boards into the drivers.
61If using the driver as a loadable module then the simplest method is to pass 61If using the driver as a loadable module then the simplest method is to pass
62the driver configuration as module arguments. The other method is to modify 62the driver configuration as module arguments. The other method is to modify
63the driver source to add configuration lines for each board in use. 63the driver source to add configuration lines for each board in use.
@@ -71,12 +71,12 @@ That makes things pretty simple to get going.
712.1 MODULE DRIVER CONFIGURATION: 712.1 MODULE DRIVER CONFIGURATION:
72 72
73The simplest configuration for modules is to use the module load arguments 73The simplest configuration for modules is to use the module load arguments
74to configure any ISA, EISA or MCA boards. PCI boards are automatically 74to configure any ISA or EISA boards. PCI boards are automatically
75detected, so do not need any additional configuration at all. 75detected, so do not need any additional configuration at all.
76 76
77If using EasyIO, EasyConnection 8/32 ISA or MCA, or EasyConnection 8/63-PCI 77If using EasyIO, EasyConnection 8/32 ISA, or EasyConnection 8/63-PCI
78boards then use the "stallion" driver module, Otherwise if you are using 78boards then use the "stallion" driver module, Otherwise if you are using
79an EasyConnection 8/64 ISA, EISA or MCA, EasyConnection/RA-PCI, ONboard, 79an EasyConnection 8/64 ISA or EISA, EasyConnection/RA-PCI, ONboard,
80Brumby or original Stallion board then use the "istallion" driver module. 80Brumby or original Stallion board then use the "istallion" driver module.
81 81
82Typically to load up the smart board driver use: 82Typically to load up the smart board driver use:
@@ -146,7 +146,7 @@ on each system boot. Typically configuration files are put in the
1462.2 STATIC DRIVER CONFIGURATION: 1462.2 STATIC DRIVER CONFIGURATION:
147 147
148For static driver configuration you need to modify the driver source code. 148For static driver configuration you need to modify the driver source code.
149Entering ISA, EISA and MCA boards into the driver(s) configuration structure 149Entering ISA and EISA boards into the driver(s) configuration structure
150involves editing the driver(s) source file. It's pretty easy if you follow 150involves editing the driver(s) source file. It's pretty easy if you follow
151the instructions below. Both drivers can support up to 4 boards. The smart 151the instructions below. Both drivers can support up to 4 boards. The smart
152card driver (the stallion.c driver) supports any combination of EasyIO and 152card driver (the stallion.c driver) supports any combination of EasyIO and
@@ -157,7 +157,7 @@ supports any combination of ONboards, Brumbys, Stallions and EasyConnection
157To set up the driver(s) for the boards that you want to use you need to 157To set up the driver(s) for the boards that you want to use you need to
158edit the appropriate driver file and add configuration entries. 158edit the appropriate driver file and add configuration entries.
159 159
160If using EasyIO or EasyConnection 8/32 ISA or MCA boards, 160If using EasyIO or EasyConnection 8/32 ISA boards,
161 In drivers/char/stallion.c: 161 In drivers/char/stallion.c:
162 - find the definition of the stl_brdconf array (of structures) 162 - find the definition of the stl_brdconf array (of structures)
163 near the top of the file 163 near the top of the file
@@ -243,7 +243,7 @@ change it on the board.
243On EasyIO and EasyConnection 8/32 boards the IRQ is software programmable, so 243On EasyIO and EasyConnection 8/32 boards the IRQ is software programmable, so
244if there is a conflict you may need to change the IRQ used for a board. There 244if there is a conflict you may need to change the IRQ used for a board. There
245are no interrupts to worry about for ONboard, Brumby or EasyConnection 8/64 245are no interrupts to worry about for ONboard, Brumby or EasyConnection 8/64
246(ISA, EISA and MCA) boards. The memory region on EasyConnection 8/64 and 246(ISA and EISA) boards. The memory region on EasyConnection 8/64 and
247ONboard boards is software programmable, but not on the Brumby boards. 247ONboard boards is software programmable, but not on the Brumby boards.
248 248
249 249
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt
index 8c16d50f6cb6..221b81016dba 100644
--- a/Documentation/sound/alsa/ALSA-Configuration.txt
+++ b/Documentation/sound/alsa/ALSA-Configuration.txt
@@ -1545,7 +1545,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
1545 1545
1546 Module for sound cards based on the C-Media CMI8786/8787/8788 chip: 1546 Module for sound cards based on the C-Media CMI8786/8787/8788 chip:
1547 * Asound A-8788 1547 * Asound A-8788
1548 * Asus Xonar DG 1548 * Asus Xonar DG/DGX
1549 * AuzenTech X-Meridian 1549 * AuzenTech X-Meridian
1550 * AuzenTech X-Meridian 2G 1550 * AuzenTech X-Meridian 2G
1551 * Bgears b-Enspirer 1551 * Bgears b-Enspirer
diff --git a/Documentation/sound/alsa/compress_offload.txt b/Documentation/sound/alsa/compress_offload.txt
index c83a835350f0..90e9b3a11abc 100644
--- a/Documentation/sound/alsa/compress_offload.txt
+++ b/Documentation/sound/alsa/compress_offload.txt
@@ -18,7 +18,7 @@ processing. Support for such hardware has not been very good in Linux,
18mostly because of a lack of a generic API available in the mainline 18mostly because of a lack of a generic API available in the mainline
19kernel. 19kernel.
20 20
21Rather than requiring a compability break with an API change of the 21Rather than requiring a compatibility break with an API change of the
22ALSA PCM interface, a new 'Compressed Data' API is introduced to 22ALSA PCM interface, a new 'Compressed Data' API is introduced to
23provide a control and data-streaming interface for audio DSPs. 23provide a control and data-streaming interface for audio DSPs.
24 24
diff --git a/Documentation/sound/oss/ALS b/Documentation/sound/oss/ALS
index d01ffbfd5808..bf10bed4574b 100644
--- a/Documentation/sound/oss/ALS
+++ b/Documentation/sound/oss/ALS
@@ -57,10 +57,10 @@ The resulting sound driver will provide the following capabilities:
57 DSP/PCM/audio out (L&R), FM (L&R) and Mic in (mono). 57 DSP/PCM/audio out (L&R), FM (L&R) and Mic in (mono).
58 58
59Jonathan Woithe 59Jonathan Woithe
60jwoithe@physics.adelaide.edu.au 60jwoithe@just42.net
6130 March 1998 6130 March 1998
62 62
63Modified 2000-02-26 by Dave Forrest, drf5n@virginia.edu to add ALS100/ALS200 63Modified 2000-02-26 by Dave Forrest, drf5n@virginia.edu to add ALS100/ALS200
64Modified 2000-04-10 by Paul Laufer, pelaufer@csupomona.edu to add ISAPnP info. 64Modified 2000-04-10 by Paul Laufer, pelaufer@csupomona.edu to add ISAPnP info.
65Modified 2000-11-19 by Jonathan Woithe, jwoithe@physics.adelaide.edu.au 65Modified 2000-11-19 by Jonathan Woithe, jwoithe@just42.net
66 - updated information for kernel 2.4.x. 66 - updated information for kernel 2.4.x.
diff --git a/Documentation/sparc/README-2.5 b/Documentation/sparc/README-2.5
deleted file mode 100644
index 806fe490a56d..000000000000
--- a/Documentation/sparc/README-2.5
+++ /dev/null
@@ -1,46 +0,0 @@
1BTFIXUP
2-------
3
4To build new kernels you have to issue "make image". The ready kernel
5in ELF format is placed in arch/sparc/boot/image. Explanation is below.
6
7BTFIXUP is a unique feature of Linux/sparc among other architectures,
8developed by Jakub Jelinek (I think... Obviously David S. Miller took
9part, too). It allows to boot the same kernel at different
10sub-architectures, such as sun4c, sun4m, sun4d, where SunOS uses
11different kernels. This feature is convinient for people who you move
12disks between boxes and for distrution builders.
13
14To function, BTFIXUP must link the kernel "in the draft" first,
15analyze the result, write a special stub code based on that, and
16build the final kernel with the stub (btfix.o).
17
18Kai Germaschewski improved the build system of the kernel in the 2.5 series
19significantly. Unfortunately, the traditional way of running the draft
20linking from architecture specific Makefile before the actual linking
21by generic Makefile is nearly impossible to support properly in the
22new build system. Therefore, the way we integrate BTFIXUP with the
23build system was changed in 2.5.40. Now, generic Makefile performs
24the draft linking and stores the result in file vmlinux. Architecture
25specific post-processing invokes BTFIXUP machinery and final linking
26in the same way as other architectures do bootstraps.
27
28Implications of that change are as follows.
29
301. Hackers must type "make image" now, instead of just "make", in the same
31 way as s390 people do now. It is analogous to "make bzImage" on i386.
32 This does NOT affect sparc64, you continue to use "make" to build sparc64
33 kernels.
34
352. vmlinux is not the final kernel, so RPM builders have to adjust
36 their spec files (if they delivered vmlinux for debugging).
37 System.map generated for vmlinux is still valid.
38
393. Scripts that produce a.out images have to be changed. First, if they
40 invoke make, they have to use "make image". Second, they have to pick up
41 the new kernel in arch/sparc/boot/image instead of vmlinux.
42
434. Since we are compliant with Kai's build system now, make -j is permitted.
44
45-- Pete Zaitcev
46zaitcev@yahoo.com
diff --git a/Documentation/stable_kernel_rules.txt b/Documentation/stable_kernel_rules.txt
index f0ab5cf28fca..4a7b54bd37e8 100644
--- a/Documentation/stable_kernel_rules.txt
+++ b/Documentation/stable_kernel_rules.txt
@@ -12,6 +12,12 @@ Rules on what kind of patches are accepted, and which ones are not, into the
12 marked CONFIG_BROKEN), an oops, a hang, data corruption, a real 12 marked CONFIG_BROKEN), an oops, a hang, data corruption, a real
13 security issue, or some "oh, that's not good" issue. In short, something 13 security issue, or some "oh, that's not good" issue. In short, something
14 critical. 14 critical.
15 - Serious issues as reported by a user of a distribution kernel may also
16 be considered if they fix a notable performance or interactivity issue.
17 As these fixes are not as obvious and have a higher risk of a subtle
18 regression they should only be submitted by a distribution kernel
19 maintainer and include an addendum linking to a bugzilla entry if it
20 exists and additional information on the user-visible impact.
15 - New device IDs and quirks are also accepted. 21 - New device IDs and quirks are also accepted.
16 - No "theoretical race condition" issues, unless an explanation of how the 22 - No "theoretical race condition" issues, unless an explanation of how the
17 race can be exploited is also provided. 23 race can be exploited is also provided.
diff --git a/Documentation/static-keys.txt b/Documentation/static-keys.txt
index d93f3c00f245..9f5263d3152c 100644
--- a/Documentation/static-keys.txt
+++ b/Documentation/static-keys.txt
@@ -235,7 +235,7 @@ label case adds:
2356 (mov) + 2 (test) + 2 (jne) = 10 - 5 (5 byte jump 0) = 5 addition bytes. 2356 (mov) + 2 (test) + 2 (jne) = 10 - 5 (5 byte jump 0) = 5 addition bytes.
236 236
237If we then include the padding bytes, the jump label code saves, 16 total bytes 237If we then include the padding bytes, the jump label code saves, 16 total bytes
238of instruction memory for this small fucntion. In this case the non-jump label 238of instruction memory for this small function. In this case the non-jump label
239function is 80 bytes long. Thus, we have have saved 20% of the instruction 239function is 80 bytes long. Thus, we have have saved 20% of the instruction
240footprint. We can in fact improve this even further, since the 5-byte no-op 240footprint. We can in fact improve this even further, since the 5-byte no-op
241really can be a 2-byte no-op since we can reach the branch with a 2-byte jmp. 241really can be a 2-byte no-op since we can reach the branch with a 2-byte jmp.
diff --git a/Documentation/sysctl/fs.txt b/Documentation/sysctl/fs.txt
index 88fd7f5c8dcd..13d6166d7a27 100644
--- a/Documentation/sysctl/fs.txt
+++ b/Documentation/sysctl/fs.txt
@@ -225,6 +225,13 @@ a queue must be less or equal then msg_max.
225maximum message size value (it is every message queue's attribute set during 225maximum message size value (it is every message queue's attribute set during
226its creation). 226its creation).
227 227
228/proc/sys/fs/mqueue/msg_default is a read/write file for setting/getting the
229default number of messages in a queue value if attr parameter of mq_open(2) is
230NULL. If it exceed msg_max, the default value is initialized msg_max.
231
232/proc/sys/fs/mqueue/msgsize_default is a read/write file for setting/getting
233the default message size value if attr parameter of mq_open(2) is NULL. If it
234exceed msgsize_max, the default value is initialized msgsize_max.
228 235
2294. /proc/sys/fs/epoll - Configuration options for the epoll interface 2364. /proc/sys/fs/epoll - Configuration options for the epoll interface
230-------------------------------------------------------- 237--------------------------------------------------------
diff --git a/Documentation/sysctl/net.txt b/Documentation/sysctl/net.txt
index 3201a7097e4d..98335b7a5337 100644
--- a/Documentation/sysctl/net.txt
+++ b/Documentation/sysctl/net.txt
@@ -43,6 +43,13 @@ Values :
43 1 - enable the JIT 43 1 - enable the JIT
44 2 - enable the JIT and ask the compiler to emit traces on kernel log. 44 2 - enable the JIT and ask the compiler to emit traces on kernel log.
45 45
46dev_weight
47--------------
48
49The maximum number of packets that kernel can handle on a NAPI interrupt,
50it's a Per-CPU variable.
51Default: 64
52
46rmem_default 53rmem_default
47------------ 54------------
48 55
diff --git a/Documentation/trace/uprobetracer.txt b/Documentation/trace/uprobetracer.txt
new file mode 100644
index 000000000000..24ce6823a09e
--- /dev/null
+++ b/Documentation/trace/uprobetracer.txt
@@ -0,0 +1,113 @@
1 Uprobe-tracer: Uprobe-based Event Tracing
2 =========================================
3 Documentation written by Srikar Dronamraju
4
5Overview
6--------
7Uprobe based trace events are similar to kprobe based trace events.
8To enable this feature, build your kernel with CONFIG_UPROBE_EVENT=y.
9
10Similar to the kprobe-event tracer, this doesn't need to be activated via
11current_tracer. Instead of that, add probe points via
12/sys/kernel/debug/tracing/uprobe_events, and enable it via
13/sys/kernel/debug/tracing/events/uprobes/<EVENT>/enabled.
14
15However unlike kprobe-event tracer, the uprobe event interface expects the
16user to calculate the offset of the probepoint in the object
17
18Synopsis of uprobe_tracer
19-------------------------
20 p[:[GRP/]EVENT] PATH:SYMBOL[+offs] [FETCHARGS] : Set a probe
21
22 GRP : Group name. If omitted, use "uprobes" for it.
23 EVENT : Event name. If omitted, the event name is generated
24 based on SYMBOL+offs.
25 PATH : path to an executable or a library.
26 SYMBOL[+offs] : Symbol+offset where the probe is inserted.
27
28 FETCHARGS : Arguments. Each probe can have up to 128 args.
29 %REG : Fetch register REG
30
31Event Profiling
32---------------
33 You can check the total number of probe hits and probe miss-hits via
34/sys/kernel/debug/tracing/uprobe_profile.
35 The first column is event name, the second is the number of probe hits,
36the third is the number of probe miss-hits.
37
38Usage examples
39--------------
40To add a probe as a new event, write a new definition to uprobe_events
41as below.
42
43 echo 'p: /bin/bash:0x4245c0' > /sys/kernel/debug/tracing/uprobe_events
44
45 This sets a uprobe at an offset of 0x4245c0 in the executable /bin/bash
46
47 echo > /sys/kernel/debug/tracing/uprobe_events
48
49 This clears all probe points.
50
51The following example shows how to dump the instruction pointer and %ax
52a register at the probed text address. Here we are trying to probe
53function zfree in /bin/zsh
54
55 # cd /sys/kernel/debug/tracing/
56 # cat /proc/`pgrep zsh`/maps | grep /bin/zsh | grep r-xp
57 00400000-0048a000 r-xp 00000000 08:03 130904 /bin/zsh
58 # objdump -T /bin/zsh | grep -w zfree
59 0000000000446420 g DF .text 0000000000000012 Base zfree
60
610x46420 is the offset of zfree in object /bin/zsh that is loaded at
620x00400000. Hence the command to probe would be :
63
64 # echo 'p /bin/zsh:0x46420 %ip %ax' > uprobe_events
65
66Please note: User has to explicitly calculate the offset of the probepoint
67in the object. We can see the events that are registered by looking at the
68uprobe_events file.
69
70 # cat uprobe_events
71 p:uprobes/p_zsh_0x46420 /bin/zsh:0x00046420 arg1=%ip arg2=%ax
72
73The format of events can be seen by viewing the file events/uprobes/p_zsh_0x46420/format
74
75 # cat events/uprobes/p_zsh_0x46420/format
76 name: p_zsh_0x46420
77 ID: 922
78 format:
79 field:unsigned short common_type; offset:0; size:2; signed:0;
80 field:unsigned char common_flags; offset:2; size:1; signed:0;
81 field:unsigned char common_preempt_count; offset:3; size:1; signed:0;
82 field:int common_pid; offset:4; size:4; signed:1;
83 field:int common_padding; offset:8; size:4; signed:1;
84
85 field:unsigned long __probe_ip; offset:12; size:4; signed:0;
86 field:u32 arg1; offset:16; size:4; signed:0;
87 field:u32 arg2; offset:20; size:4; signed:0;
88
89 print fmt: "(%lx) arg1=%lx arg2=%lx", REC->__probe_ip, REC->arg1, REC->arg2
90
91Right after definition, each event is disabled by default. For tracing these
92events, you need to enable it by:
93
94 # echo 1 > events/uprobes/enable
95
96Lets disable the event after sleeping for some time.
97 # sleep 20
98 # echo 0 > events/uprobes/enable
99
100And you can see the traced information via /sys/kernel/debug/tracing/trace.
101
102 # cat trace
103 # tracer: nop
104 #
105 # TASK-PID CPU# TIMESTAMP FUNCTION
106 # | | | | |
107 zsh-24842 [006] 258544.995456: p_zsh_0x46420: (0x446420) arg1=446421 arg2=79
108 zsh-24842 [007] 258545.000270: p_zsh_0x46420: (0x446420) arg1=446421 arg2=79
109 zsh-24842 [002] 258545.043929: p_zsh_0x46420: (0x446420) arg1=446421 arg2=79
110 zsh-24842 [004] 258547.046129: p_zsh_0x46420: (0x446420) arg1=446421 arg2=79
111
112Each line shows us probes were triggered for a pid 24842 with ip being
1130x446421 and contents of ax register being 79.
diff --git a/Documentation/usb/dwc3.txt b/Documentation/usb/dwc3.txt
index 7b590edae145..1d02c01d1c7c 100644
--- a/Documentation/usb/dwc3.txt
+++ b/Documentation/usb/dwc3.txt
@@ -28,7 +28,7 @@ Please pick something while reading :)
28 none 28 none
29 29
30 - primary handler of the EP-interrupt 30 - primary handler of the EP-interrupt
31 reads the event and tries to process it. Everything that requries 31 reads the event and tries to process it. Everything that requires
32 sleeping is handed over to the Thread. The event is saved in an 32 sleeping is handed over to the Thread. The event is saved in an
33 per-endpoint data-structure. 33 per-endpoint data-structure.
34 We probably have to pay attention not to process events once we 34 We probably have to pay attention not to process events once we
diff --git a/Documentation/usb/functionfs.txt b/Documentation/usb/functionfs.txt
new file mode 100644
index 000000000000..eaaaea019fc7
--- /dev/null
+++ b/Documentation/usb/functionfs.txt
@@ -0,0 +1,67 @@
1*How FunctionFS works*
2
3From kernel point of view it is just a composite function with some
4unique behaviour. It may be added to an USB configuration only after
5the user space driver has registered by writing descriptors and
6strings (the user space program has to provide the same information
7that kernel level composite functions provide when they are added to
8the configuration).
9
10This in particular means that the composite initialisation functions
11may not be in init section (ie. may not use the __init tag).
12
13From user space point of view it is a file system which when
14mounted provides an "ep0" file. User space driver need to
15write descriptors and strings to that file. It does not need
16to worry about endpoints, interfaces or strings numbers but
17simply provide descriptors such as if the function was the
18only one (endpoints and strings numbers starting from one and
19interface numbers starting from zero). The FunctionFS changes
20them as needed also handling situation when numbers differ in
21different configurations.
22
23When descriptors and strings are written "ep#" files appear
24(one for each declared endpoint) which handle communication on
25a single endpoint. Again, FunctionFS takes care of the real
26numbers and changing of the configuration (which means that
27"ep1" file may be really mapped to (say) endpoint 3 (and when
28configuration changes to (say) endpoint 2)). "ep0" is used
29for receiving events and handling setup requests.
30
31When all files are closed the function disables itself.
32
33What I also want to mention is that the FunctionFS is designed in such
34a way that it is possible to mount it several times so in the end
35a gadget could use several FunctionFS functions. The idea is that
36each FunctionFS instance is identified by the device name used
37when mounting.
38
39One can imagine a gadget that has an Ethernet, MTP and HID interfaces
40where the last two are implemented via FunctionFS. On user space
41level it would look like this:
42
43$ insmod g_ffs.ko idVendor=<ID> iSerialNumber=<string> functions=mtp,hid
44$ mkdir /dev/ffs-mtp && mount -t functionfs mtp /dev/ffs-mtp
45$ ( cd /dev/ffs-mtp && mtp-daemon ) &
46$ mkdir /dev/ffs-hid && mount -t functionfs hid /dev/ffs-hid
47$ ( cd /dev/ffs-hid && hid-daemon ) &
48
49On kernel level the gadget checks ffs_data->dev_name to identify
50whether it's FunctionFS designed for MTP ("mtp") or HID ("hid").
51
52If no "functions" module parameters is supplied, the driver accepts
53just one function with any name.
54
55When "functions" module parameter is supplied, only functions
56with listed names are accepted. In particular, if the "functions"
57parameter's value is just a one-element list, then the behaviour
58is similar to when there is no "functions" at all; however,
59only a function with the specified name is accepted.
60
61The gadget is registered only after all the declared function
62filesystems have been mounted and USB descriptors of all functions
63have been written to their ep0's.
64
65Conversely, the gadget is unregistered after the first USB function
66closes its endpoints.
67
diff --git a/Documentation/usb/wusb-cbaf b/Documentation/usb/wusb-cbaf
index 426ddaaef96f..8b3d43efce90 100644
--- a/Documentation/usb/wusb-cbaf
+++ b/Documentation/usb/wusb-cbaf
@@ -36,7 +36,7 @@ COMMAND/ARGS are
36 36
37 get-cdid DEVICE 37 get-cdid DEVICE
38 38
39 Get the device ID associated to the HOST-CHDI we sent with 39 Get the device ID associated to the HOST-CHID we sent with
40 'set-chid'. We might not know about it. 40 'set-chid'. We might not know about it.
41 41
42 set-cc DEVICE 42 set-cc DEVICE
diff --git a/Documentation/video4linux/4CCs.txt b/Documentation/video4linux/4CCs.txt
new file mode 100644
index 000000000000..41241af1ebfe
--- /dev/null
+++ b/Documentation/video4linux/4CCs.txt
@@ -0,0 +1,32 @@
1Guidelines for Linux4Linux pixel format 4CCs
2============================================
3
4Guidelines for Video4Linux 4CC codes defined using v4l2_fourcc() are
5specified in this document. First of the characters defines the nature of
6the pixel format, compression and colour space. The interpretation of the
7other three characters depends on the first one.
8
9Existing 4CCs may not obey these guidelines.
10
11Formats
12=======
13
14Raw bayer
15---------
16
17The following first characters are used by raw bayer formats:
18
19 B: raw bayer, uncompressed
20 b: raw bayer, DPCM compressed
21 a: A-law compressed
22 u: u-law compressed
23
242nd character: pixel order
25 B: BGGR
26 G: GBRG
27 g: GRBG
28 R: RGGB
29
303rd character: uncompressed bits-per-pixel 0--9, A--
31
324th character: compressed bits-per-pixel 0--9, A--
diff --git a/Documentation/video4linux/README.cpia2 b/Documentation/video4linux/README.cpia2
index ce8213d28b67..38e742fd0df7 100644
--- a/Documentation/video4linux/README.cpia2
+++ b/Documentation/video4linux/README.cpia2
@@ -12,7 +12,7 @@ gqcam application to view this stream.
12 The driver is implemented as two kernel modules. The cpia2 module 12 The driver is implemented as two kernel modules. The cpia2 module
13contains the camera functions and the V4L interface. The cpia2_usb module 13contains the camera functions and the V4L interface. The cpia2_usb module
14contains usb specific functions. The main reason for this was the size of the 14contains usb specific functions. The main reason for this was the size of the
15module was getting out of hand, so I separted them. It is not likely that 15module was getting out of hand, so I separated them. It is not likely that
16there will be a parallel port version. 16there will be a parallel port version.
17 17
18FEATURES: 18FEATURES:
diff --git a/Documentation/video4linux/gspca.txt b/Documentation/video4linux/gspca.txt
index e6c2842407a4..1e6b6531bbcc 100644
--- a/Documentation/video4linux/gspca.txt
+++ b/Documentation/video4linux/gspca.txt
@@ -276,6 +276,7 @@ pac7302 093a:2622 Genius Eye 312
276pac7302 093a:2624 PAC7302 276pac7302 093a:2624 PAC7302
277pac7302 093a:2625 Genius iSlim 310 277pac7302 093a:2625 Genius iSlim 310
278pac7302 093a:2626 Labtec 2200 278pac7302 093a:2626 Labtec 2200
279pac7302 093a:2627 Genius FaceCam 300
279pac7302 093a:2628 Genius iLook 300 280pac7302 093a:2628 Genius iLook 300
280pac7302 093a:2629 Genious iSlim 300 281pac7302 093a:2629 Genious iSlim 300
281pac7302 093a:262a Webcam 300k 282pac7302 093a:262a Webcam 300k
diff --git a/Documentation/video4linux/v4l2-controls.txt b/Documentation/video4linux/v4l2-controls.txt
index e2492a9d1027..43da22b89728 100644
--- a/Documentation/video4linux/v4l2-controls.txt
+++ b/Documentation/video4linux/v4l2-controls.txt
@@ -130,8 +130,18 @@ Menu controls are added by calling v4l2_ctrl_new_std_menu:
130 const struct v4l2_ctrl_ops *ops, 130 const struct v4l2_ctrl_ops *ops,
131 u32 id, s32 max, s32 skip_mask, s32 def); 131 u32 id, s32 max, s32 skip_mask, s32 def);
132 132
133Or alternatively for integer menu controls, by calling v4l2_ctrl_new_int_menu:
134
135 struct v4l2_ctrl *v4l2_ctrl_new_int_menu(struct v4l2_ctrl_handler *hdl,
136 const struct v4l2_ctrl_ops *ops,
137 u32 id, s32 max, s32 def, const s64 *qmenu_int);
138
133These functions are typically called right after the v4l2_ctrl_handler_init: 139These functions are typically called right after the v4l2_ctrl_handler_init:
134 140
141 static const s64 exp_bias_qmenu[] = {
142 -2, -1, 0, 1, 2
143 };
144
135 v4l2_ctrl_handler_init(&foo->ctrl_handler, nr_of_controls); 145 v4l2_ctrl_handler_init(&foo->ctrl_handler, nr_of_controls);
136 v4l2_ctrl_new_std(&foo->ctrl_handler, &foo_ctrl_ops, 146 v4l2_ctrl_new_std(&foo->ctrl_handler, &foo_ctrl_ops,
137 V4L2_CID_BRIGHTNESS, 0, 255, 1, 128); 147 V4L2_CID_BRIGHTNESS, 0, 255, 1, 128);
@@ -141,6 +151,11 @@ These functions are typically called right after the v4l2_ctrl_handler_init:
141 V4L2_CID_POWER_LINE_FREQUENCY, 151 V4L2_CID_POWER_LINE_FREQUENCY,
142 V4L2_CID_POWER_LINE_FREQUENCY_60HZ, 0, 152 V4L2_CID_POWER_LINE_FREQUENCY_60HZ, 0,
143 V4L2_CID_POWER_LINE_FREQUENCY_DISABLED); 153 V4L2_CID_POWER_LINE_FREQUENCY_DISABLED);
154 v4l2_ctrl_new_int_menu(&foo->ctrl_handler, &foo_ctrl_ops,
155 V4L2_CID_EXPOSURE_BIAS,
156 ARRAY_SIZE(exp_bias_qmenu) - 1,
157 ARRAY_SIZE(exp_bias_qmenu) / 2 - 1,
158 exp_bias_qmenu);
144 ... 159 ...
145 if (foo->ctrl_handler.error) { 160 if (foo->ctrl_handler.error) {
146 int err = foo->ctrl_handler.error; 161 int err = foo->ctrl_handler.error;
@@ -164,6 +179,12 @@ controls. There is no min argument since that is always 0 for menu controls,
164and instead of a step there is a skip_mask argument: if bit X is 1, then menu 179and instead of a step there is a skip_mask argument: if bit X is 1, then menu
165item X is skipped. 180item X is skipped.
166 181
182The v4l2_ctrl_new_int_menu function creates a new standard integer menu
183control with driver-specific items in the menu. It differs from
184v4l2_ctrl_new_std_menu in that it doesn't have the mask argument and takes
185as the last argument an array of signed 64-bit integers that form an exact
186menu item list.
187
167Note that if something fails, the function will return NULL or an error and 188Note that if something fails, the function will return NULL or an error and
168set ctrl_handler->error to the error code. If ctrl_handler->error was already 189set ctrl_handler->error to the error code. If ctrl_handler->error was already
169set, then it will just return and do nothing. This is also true for 190set, then it will just return and do nothing. This is also true for
diff --git a/Documentation/video4linux/v4l2-framework.txt b/Documentation/video4linux/v4l2-framework.txt
index 659b2ba12a4f..1f5905270050 100644
--- a/Documentation/video4linux/v4l2-framework.txt
+++ b/Documentation/video4linux/v4l2-framework.txt
@@ -182,11 +182,11 @@ static int __devinit drv_probe(struct pci_dev *pdev,
182} 182}
183 183
184If you have multiple device nodes then it can be difficult to know when it is 184If you have multiple device nodes then it can be difficult to know when it is
185safe to unregister v4l2_device. For this purpose v4l2_device has refcounting 185safe to unregister v4l2_device for hotpluggable devices. For this purpose
186support. The refcount is increased whenever video_register_device is called and 186v4l2_device has refcounting support. The refcount is increased whenever
187it is decreased whenever that device node is released. When the refcount reaches 187video_register_device is called and it is decreased whenever that device node
188zero, then the v4l2_device release() callback is called. You can do your final 188is released. When the refcount reaches zero, then the v4l2_device release()
189cleanup there. 189callback is called. You can do your final cleanup there.
190 190
191If other device nodes (e.g. ALSA) are created, then you can increase and 191If other device nodes (e.g. ALSA) are created, then you can increase and
192decrease the refcount manually as well by calling: 192decrease the refcount manually as well by calling:
@@ -197,6 +197,10 @@ or:
197 197
198int v4l2_device_put(struct v4l2_device *v4l2_dev); 198int v4l2_device_put(struct v4l2_device *v4l2_dev);
199 199
200Since the initial refcount is 1 you also need to call v4l2_device_put in the
201disconnect() callback (for USB devices) or in the remove() callback (for e.g.
202PCI devices), otherwise the refcount will never reach 0.
203
200struct v4l2_subdev 204struct v4l2_subdev
201------------------ 205------------------
202 206
@@ -262,11 +266,16 @@ struct v4l2_subdev_video_ops {
262 ... 266 ...
263}; 267};
264 268
269struct v4l2_subdev_pad_ops {
270 ...
271};
272
265struct v4l2_subdev_ops { 273struct v4l2_subdev_ops {
266 const struct v4l2_subdev_core_ops *core; 274 const struct v4l2_subdev_core_ops *core;
267 const struct v4l2_subdev_tuner_ops *tuner; 275 const struct v4l2_subdev_tuner_ops *tuner;
268 const struct v4l2_subdev_audio_ops *audio; 276 const struct v4l2_subdev_audio_ops *audio;
269 const struct v4l2_subdev_video_ops *video; 277 const struct v4l2_subdev_video_ops *video;
278 const struct v4l2_subdev_pad_ops *video;
270}; 279};
271 280
272The core ops are common to all subdevs, the other categories are implemented 281The core ops are common to all subdevs, the other categories are implemented
@@ -303,6 +312,22 @@ Don't forget to cleanup the media entity before the sub-device is destroyed:
303 312
304 media_entity_cleanup(&sd->entity); 313 media_entity_cleanup(&sd->entity);
305 314
315If the subdev driver intends to process video and integrate with the media
316framework, it must implement format related functionality using
317v4l2_subdev_pad_ops instead of v4l2_subdev_video_ops.
318
319In that case, the subdev driver may set the link_validate field to provide
320its own link validation function. The link validation function is called for
321every link in the pipeline where both of the ends of the links are V4L2
322sub-devices. The driver is still responsible for validating the correctness
323of the format configuration between sub-devices and video nodes.
324
325If link_validate op is not set, the default function
326v4l2_subdev_link_validate_default() is used instead. This function ensures
327that width, height and the media bus pixel code are equal on both source and
328sink of the link. Subdev drivers are also free to use this function to
329perform the checks mentioned above in addition to their own checks.
330
306A device (bridge) driver needs to register the v4l2_subdev with the 331A device (bridge) driver needs to register the v4l2_subdev with the
307v4l2_device: 332v4l2_device:
308 333
@@ -555,19 +580,25 @@ allocated memory.
555You should also set these fields: 580You should also set these fields:
556 581
557- v4l2_dev: set to the v4l2_device parent device. 582- v4l2_dev: set to the v4l2_device parent device.
583
558- name: set to something descriptive and unique. 584- name: set to something descriptive and unique.
585
559- fops: set to the v4l2_file_operations struct. 586- fops: set to the v4l2_file_operations struct.
587
560- ioctl_ops: if you use the v4l2_ioctl_ops to simplify ioctl maintenance 588- ioctl_ops: if you use the v4l2_ioctl_ops to simplify ioctl maintenance
561 (highly recommended to use this and it might become compulsory in the 589 (highly recommended to use this and it might become compulsory in the
562 future!), then set this to your v4l2_ioctl_ops struct. 590 future!), then set this to your v4l2_ioctl_ops struct.
591
563- lock: leave to NULL if you want to do all the locking in the driver. 592- lock: leave to NULL if you want to do all the locking in the driver.
564 Otherwise you give it a pointer to a struct mutex_lock and before any 593 Otherwise you give it a pointer to a struct mutex_lock and before the
565 of the v4l2_file_operations is called this lock will be taken by the 594 unlocked_ioctl file operation is called this lock will be taken by the
566 core and released afterwards. 595 core and released afterwards. See the next section for more details.
596
567- prio: keeps track of the priorities. Used to implement VIDIOC_G/S_PRIORITY. 597- prio: keeps track of the priorities. Used to implement VIDIOC_G/S_PRIORITY.
568 If left to NULL, then it will use the struct v4l2_prio_state in v4l2_device. 598 If left to NULL, then it will use the struct v4l2_prio_state in v4l2_device.
569 If you want to have a separate priority state per (group of) device node(s), 599 If you want to have a separate priority state per (group of) device node(s),
570 then you can point it to your own struct v4l2_prio_state. 600 then you can point it to your own struct v4l2_prio_state.
601
571- parent: you only set this if v4l2_device was registered with NULL as 602- parent: you only set this if v4l2_device was registered with NULL as
572 the parent device struct. This only happens in cases where one hardware 603 the parent device struct. This only happens in cases where one hardware
573 device has multiple PCI devices that all share the same v4l2_device core. 604 device has multiple PCI devices that all share the same v4l2_device core.
@@ -577,6 +608,7 @@ You should also set these fields:
577 (cx8802). Since the v4l2_device cannot be associated with a particular 608 (cx8802). Since the v4l2_device cannot be associated with a particular
578 PCI device it is setup without a parent device. But when the struct 609 PCI device it is setup without a parent device. But when the struct
579 video_device is setup you do know which parent PCI device to use. 610 video_device is setup you do know which parent PCI device to use.
611
580- flags: optional. Set to V4L2_FL_USE_FH_PRIO if you want to let the framework 612- flags: optional. Set to V4L2_FL_USE_FH_PRIO if you want to let the framework
581 handle the VIDIOC_G/S_PRIORITY ioctls. This requires that you use struct 613 handle the VIDIOC_G/S_PRIORITY ioctls. This requires that you use struct
582 v4l2_fh. Eventually this flag will disappear once all drivers use the core 614 v4l2_fh. Eventually this flag will disappear once all drivers use the core
@@ -587,6 +619,16 @@ in your v4l2_file_operations struct.
587 619
588Do not use .ioctl! This is deprecated and will go away in the future. 620Do not use .ioctl! This is deprecated and will go away in the future.
589 621
622In some cases you want to tell the core that a function you had specified in
623your v4l2_ioctl_ops should be ignored. You can mark such ioctls by calling this
624function before video_device_register is called:
625
626void v4l2_disable_ioctl(struct video_device *vdev, unsigned int cmd);
627
628This tends to be needed if based on external factors (e.g. which card is
629being used) you want to turns off certain features in v4l2_ioctl_ops without
630having to make a new struct.
631
590The v4l2_file_operations struct is a subset of file_operations. The main 632The v4l2_file_operations struct is a subset of file_operations. The main
591difference is that the inode argument is omitted since it is never used. 633difference is that the inode argument is omitted since it is never used.
592 634
@@ -609,8 +651,22 @@ v4l2_file_operations and locking
609-------------------------------- 651--------------------------------
610 652
611You can set a pointer to a mutex_lock in struct video_device. Usually this 653You can set a pointer to a mutex_lock in struct video_device. Usually this
612will be either a top-level mutex or a mutex per device node. If you want 654will be either a top-level mutex or a mutex per device node. By default this
613finer-grained locking then you have to set it to NULL and do you own locking. 655lock will be used for unlocked_ioctl, but you can disable locking for
656selected ioctls by calling:
657
658 void v4l2_disable_ioctl_locking(struct video_device *vdev, unsigned int cmd);
659
660E.g.: v4l2_disable_ioctl_locking(vdev, VIDIOC_DQBUF);
661
662You have to call this before you register the video_device.
663
664Particularly with USB drivers where certain commands such as setting controls
665can take a long time you may want to do your own locking for the buffer queuing
666ioctls.
667
668If you want still finer-grained locking then you have to set mutex_lock to NULL
669and do you own locking completely.
614 670
615It is up to the driver developer to decide which method to use. However, if 671It is up to the driver developer to decide which method to use. However, if
616your driver has high-latency operations (for example, changing the exposure 672your driver has high-latency operations (for example, changing the exposure
@@ -618,7 +674,7 @@ of a USB webcam might take a long time), then you might be better off with
618doing your own locking if you want to allow the user to do other things with 674doing your own locking if you want to allow the user to do other things with
619the device while waiting for the high-latency command to finish. 675the device while waiting for the high-latency command to finish.
620 676
621If a lock is specified then all file operations will be serialized on that 677If a lock is specified then all ioctl commands will be serialized on that
622lock. If you use videobuf then you must pass the same lock to the videobuf 678lock. If you use videobuf then you must pass the same lock to the videobuf
623queue initialize function: if videobuf has to wait for a frame to arrive, then 679queue initialize function: if videobuf has to wait for a frame to arrive, then
624it will temporarily unlock the lock and relock it afterwards. If your driver 680it will temporarily unlock the lock and relock it afterwards. If your driver
@@ -941,21 +997,35 @@ fast.
941 997
942Useful functions: 998Useful functions:
943 999
944- v4l2_event_queue() 1000void v4l2_event_queue(struct video_device *vdev, const struct v4l2_event *ev)
945 1001
946 Queue events to video device. The driver's only responsibility is to fill 1002 Queue events to video device. The driver's only responsibility is to fill
947 in the type and the data fields. The other fields will be filled in by 1003 in the type and the data fields. The other fields will be filled in by
948 V4L2. 1004 V4L2.
949 1005
950- v4l2_event_subscribe() 1006int v4l2_event_subscribe(struct v4l2_fh *fh,
1007 struct v4l2_event_subscription *sub, unsigned elems,
1008 const struct v4l2_subscribed_event_ops *ops)
951 1009
952 The video_device->ioctl_ops->vidioc_subscribe_event must check the driver 1010 The video_device->ioctl_ops->vidioc_subscribe_event must check the driver
953 is able to produce events with specified event id. Then it calls 1011 is able to produce events with specified event id. Then it calls
954 v4l2_event_subscribe() to subscribe the event. The last argument is the 1012 v4l2_event_subscribe() to subscribe the event.
955 size of the event queue for this event. If it is 0, then the framework 1013
956 will fill in a default value (this depends on the event type). 1014 The elems argument is the size of the event queue for this event. If it is 0,
1015 then the framework will fill in a default value (this depends on the event
1016 type).
1017
1018 The ops argument allows the driver to specify a number of callbacks:
1019 * add: called when a new listener gets added (subscribing to the same
1020 event twice will only cause this callback to get called once)
1021 * del: called when a listener stops listening
1022 * replace: replace event 'old' with event 'new'.
1023 * merge: merge event 'old' into event 'new'.
1024 All 4 callbacks are optional, if you don't want to specify any callbacks
1025 the ops argument itself maybe NULL.
957 1026
958- v4l2_event_unsubscribe() 1027int v4l2_event_unsubscribe(struct v4l2_fh *fh,
1028 struct v4l2_event_subscription *sub)
959 1029
960 vidioc_unsubscribe_event in struct v4l2_ioctl_ops. A driver may use 1030 vidioc_unsubscribe_event in struct v4l2_ioctl_ops. A driver may use
961 v4l2_event_unsubscribe() directly unless it wants to be involved in 1031 v4l2_event_unsubscribe() directly unless it wants to be involved in
@@ -964,7 +1034,7 @@ Useful functions:
964 The special type V4L2_EVENT_ALL may be used to unsubscribe all events. The 1034 The special type V4L2_EVENT_ALL may be used to unsubscribe all events. The
965 drivers may want to handle this in a special way. 1035 drivers may want to handle this in a special way.
966 1036
967- v4l2_event_pending() 1037int v4l2_event_pending(struct v4l2_fh *fh)
968 1038
969 Returns the number of pending events. Useful when implementing poll. 1039 Returns the number of pending events. Useful when implementing poll.
970 1040
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
index 6386f8c0482e..2c9948379469 100644
--- a/Documentation/virtual/kvm/api.txt
+++ b/Documentation/virtual/kvm/api.txt
@@ -2,6 +2,7 @@ The Definitive KVM (Kernel-based Virtual Machine) API Documentation
2=================================================================== 2===================================================================
3 3
41. General description 41. General description
5----------------------
5 6
6The kvm API is a set of ioctls that are issued to control various aspects 7The kvm API is a set of ioctls that are issued to control various aspects
7of a virtual machine. The ioctls belong to three classes 8of a virtual machine. The ioctls belong to three classes
@@ -23,7 +24,9 @@ of a virtual machine. The ioctls belong to three classes
23 Only run vcpu ioctls from the same thread that was used to create the 24 Only run vcpu ioctls from the same thread that was used to create the
24 vcpu. 25 vcpu.
25 26
27
262. File descriptors 282. File descriptors
29-------------------
27 30
28The kvm API is centered around file descriptors. An initial 31The kvm API is centered around file descriptors. An initial
29open("/dev/kvm") obtains a handle to the kvm subsystem; this handle 32open("/dev/kvm") obtains a handle to the kvm subsystem; this handle
@@ -41,7 +44,9 @@ not cause harm to the host, their actual behavior is not guaranteed by
41the API. The only supported use is one virtual machine per process, 44the API. The only supported use is one virtual machine per process,
42and one vcpu per thread. 45and one vcpu per thread.
43 46
47
443. Extensions 483. Extensions
49-------------
45 50
46As of Linux 2.6.22, the KVM ABI has been stabilized: no backward 51As of Linux 2.6.22, the KVM ABI has been stabilized: no backward
47incompatible change are allowed. However, there is an extension 52incompatible change are allowed. However, there is an extension
@@ -53,7 +58,9 @@ Instead, kvm defines extension identifiers and a facility to query
53whether a particular extension identifier is available. If it is, a 58whether a particular extension identifier is available. If it is, a
54set of ioctls is available for application use. 59set of ioctls is available for application use.
55 60
61
564. API description 624. API description
63------------------
57 64
58This section describes ioctls that can be used to control kvm guests. 65This section describes ioctls that can be used to control kvm guests.
59For each ioctl, the following information is provided along with a 66For each ioctl, the following information is provided along with a
@@ -75,6 +82,7 @@ description:
75 Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL) 82 Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL)
76 are not detailed, but errors with specific meanings are. 83 are not detailed, but errors with specific meanings are.
77 84
85
784.1 KVM_GET_API_VERSION 864.1 KVM_GET_API_VERSION
79 87
80Capability: basic 88Capability: basic
@@ -90,6 +98,7 @@ supported. Applications should refuse to run if KVM_GET_API_VERSION
90returns a value other than 12. If this check passes, all ioctls 98returns a value other than 12. If this check passes, all ioctls
91described as 'basic' will be available. 99described as 'basic' will be available.
92 100
101
934.2 KVM_CREATE_VM 1024.2 KVM_CREATE_VM
94 103
95Capability: basic 104Capability: basic
@@ -109,6 +118,7 @@ In order to create user controlled virtual machines on S390, check
109KVM_CAP_S390_UCONTROL and use the flag KVM_VM_S390_UCONTROL as 118KVM_CAP_S390_UCONTROL and use the flag KVM_VM_S390_UCONTROL as
110privileged user (CAP_SYS_ADMIN). 119privileged user (CAP_SYS_ADMIN).
111 120
121
1124.3 KVM_GET_MSR_INDEX_LIST 1224.3 KVM_GET_MSR_INDEX_LIST
113 123
114Capability: basic 124Capability: basic
@@ -135,6 +145,7 @@ Note: if kvm indicates supports MCE (KVM_CAP_MCE), then the MCE bank MSRs are
135not returned in the MSR list, as different vcpus can have a different number 145not returned in the MSR list, as different vcpus can have a different number
136of banks, as set via the KVM_X86_SETUP_MCE ioctl. 146of banks, as set via the KVM_X86_SETUP_MCE ioctl.
137 147
148
1384.4 KVM_CHECK_EXTENSION 1494.4 KVM_CHECK_EXTENSION
139 150
140Capability: basic 151Capability: basic
@@ -149,6 +160,7 @@ receives an integer that describes the extension availability.
149Generally 0 means no and 1 means yes, but some extensions may report 160Generally 0 means no and 1 means yes, but some extensions may report
150additional information in the integer return value. 161additional information in the integer return value.
151 162
163
1524.5 KVM_GET_VCPU_MMAP_SIZE 1644.5 KVM_GET_VCPU_MMAP_SIZE
153 165
154Capability: basic 166Capability: basic
@@ -161,6 +173,7 @@ The KVM_RUN ioctl (cf.) communicates with userspace via a shared
161memory region. This ioctl returns the size of that region. See the 173memory region. This ioctl returns the size of that region. See the
162KVM_RUN documentation for details. 174KVM_RUN documentation for details.
163 175
176
1644.6 KVM_SET_MEMORY_REGION 1774.6 KVM_SET_MEMORY_REGION
165 178
166Capability: basic 179Capability: basic
@@ -171,6 +184,7 @@ Returns: 0 on success, -1 on error
171 184
172This ioctl is obsolete and has been removed. 185This ioctl is obsolete and has been removed.
173 186
187
1744.7 KVM_CREATE_VCPU 1884.7 KVM_CREATE_VCPU
175 189
176Capability: basic 190Capability: basic
@@ -223,6 +237,7 @@ machines, the resulting vcpu fd can be memory mapped at page offset
223KVM_S390_SIE_PAGE_OFFSET in order to obtain a memory map of the virtual 237KVM_S390_SIE_PAGE_OFFSET in order to obtain a memory map of the virtual
224cpu's hardware control block. 238cpu's hardware control block.
225 239
240
2264.8 KVM_GET_DIRTY_LOG (vm ioctl) 2414.8 KVM_GET_DIRTY_LOG (vm ioctl)
227 242
228Capability: basic 243Capability: basic
@@ -246,6 +261,7 @@ since the last call to this ioctl. Bit 0 is the first page in the
246memory slot. Ensure the entire structure is cleared to avoid padding 261memory slot. Ensure the entire structure is cleared to avoid padding
247issues. 262issues.
248 263
264
2494.9 KVM_SET_MEMORY_ALIAS 2654.9 KVM_SET_MEMORY_ALIAS
250 266
251Capability: basic 267Capability: basic
@@ -256,6 +272,7 @@ Returns: 0 (success), -1 (error)
256 272
257This ioctl is obsolete and has been removed. 273This ioctl is obsolete and has been removed.
258 274
275
2594.10 KVM_RUN 2764.10 KVM_RUN
260 277
261Capability: basic 278Capability: basic
@@ -272,6 +289,7 @@ obtained by mmap()ing the vcpu fd at offset 0, with the size given by
272KVM_GET_VCPU_MMAP_SIZE. The parameter block is formatted as a 'struct 289KVM_GET_VCPU_MMAP_SIZE. The parameter block is formatted as a 'struct
273kvm_run' (see below). 290kvm_run' (see below).
274 291
292
2754.11 KVM_GET_REGS 2934.11 KVM_GET_REGS
276 294
277Capability: basic 295Capability: basic
@@ -292,6 +310,7 @@ struct kvm_regs {
292 __u64 rip, rflags; 310 __u64 rip, rflags;
293}; 311};
294 312
313
2954.12 KVM_SET_REGS 3144.12 KVM_SET_REGS
296 315
297Capability: basic 316Capability: basic
@@ -304,6 +323,7 @@ Writes the general purpose registers into the vcpu.
304 323
305See KVM_GET_REGS for the data structure. 324See KVM_GET_REGS for the data structure.
306 325
326
3074.13 KVM_GET_SREGS 3274.13 KVM_GET_SREGS
308 328
309Capability: basic 329Capability: basic
@@ -331,6 +351,7 @@ interrupt_bitmap is a bitmap of pending external interrupts. At most
331one bit may be set. This interrupt has been acknowledged by the APIC 351one bit may be set. This interrupt has been acknowledged by the APIC
332but not yet injected into the cpu core. 352but not yet injected into the cpu core.
333 353
354
3344.14 KVM_SET_SREGS 3554.14 KVM_SET_SREGS
335 356
336Capability: basic 357Capability: basic
@@ -342,6 +363,7 @@ Returns: 0 on success, -1 on error
342Writes special registers into the vcpu. See KVM_GET_SREGS for the 363Writes special registers into the vcpu. See KVM_GET_SREGS for the
343data structures. 364data structures.
344 365
366
3454.15 KVM_TRANSLATE 3674.15 KVM_TRANSLATE
346 368
347Capability: basic 369Capability: basic
@@ -365,6 +387,7 @@ struct kvm_translation {
365 __u8 pad[5]; 387 __u8 pad[5];
366}; 388};
367 389
390
3684.16 KVM_INTERRUPT 3914.16 KVM_INTERRUPT
369 392
370Capability: basic 393Capability: basic
@@ -413,6 +436,7 @@ c) KVM_INTERRUPT_SET_LEVEL
413Note that any value for 'irq' other than the ones stated above is invalid 436Note that any value for 'irq' other than the ones stated above is invalid
414and incurs unexpected behavior. 437and incurs unexpected behavior.
415 438
439
4164.17 KVM_DEBUG_GUEST 4404.17 KVM_DEBUG_GUEST
417 441
418Capability: basic 442Capability: basic
@@ -423,6 +447,7 @@ Returns: -1 on error
423 447
424Support for this has been removed. Use KVM_SET_GUEST_DEBUG instead. 448Support for this has been removed. Use KVM_SET_GUEST_DEBUG instead.
425 449
450
4264.18 KVM_GET_MSRS 4514.18 KVM_GET_MSRS
427 452
428Capability: basic 453Capability: basic
@@ -451,6 +476,7 @@ Application code should set the 'nmsrs' member (which indicates the
451size of the entries array) and the 'index' member of each array entry. 476size of the entries array) and the 'index' member of each array entry.
452kvm will fill in the 'data' member. 477kvm will fill in the 'data' member.
453 478
479
4544.19 KVM_SET_MSRS 4804.19 KVM_SET_MSRS
455 481
456Capability: basic 482Capability: basic
@@ -466,6 +492,7 @@ Application code should set the 'nmsrs' member (which indicates the
466size of the entries array), and the 'index' and 'data' members of each 492size of the entries array), and the 'index' and 'data' members of each
467array entry. 493array entry.
468 494
495
4694.20 KVM_SET_CPUID 4964.20 KVM_SET_CPUID
470 497
471Capability: basic 498Capability: basic
@@ -494,6 +521,7 @@ struct kvm_cpuid {
494 struct kvm_cpuid_entry entries[0]; 521 struct kvm_cpuid_entry entries[0];
495}; 522};
496 523
524
4974.21 KVM_SET_SIGNAL_MASK 5254.21 KVM_SET_SIGNAL_MASK
498 526
499Capability: basic 527Capability: basic
@@ -516,6 +544,7 @@ struct kvm_signal_mask {
516 __u8 sigset[0]; 544 __u8 sigset[0];
517}; 545};
518 546
547
5194.22 KVM_GET_FPU 5484.22 KVM_GET_FPU
520 549
521Capability: basic 550Capability: basic
@@ -541,6 +570,7 @@ struct kvm_fpu {
541 __u32 pad2; 570 __u32 pad2;
542}; 571};
543 572
573
5444.23 KVM_SET_FPU 5744.23 KVM_SET_FPU
545 575
546Capability: basic 576Capability: basic
@@ -566,6 +596,7 @@ struct kvm_fpu {
566 __u32 pad2; 596 __u32 pad2;
567}; 597};
568 598
599
5694.24 KVM_CREATE_IRQCHIP 6004.24 KVM_CREATE_IRQCHIP
570 601
571Capability: KVM_CAP_IRQCHIP 602Capability: KVM_CAP_IRQCHIP
@@ -579,6 +610,7 @@ ioapic, a virtual PIC (two PICs, nested), and sets up future vcpus to have a
579local APIC. IRQ routing for GSIs 0-15 is set to both PIC and IOAPIC; GSI 16-23 610local APIC. IRQ routing for GSIs 0-15 is set to both PIC and IOAPIC; GSI 16-23
580only go to the IOAPIC. On ia64, a IOSAPIC is created. 611only go to the IOAPIC. On ia64, a IOSAPIC is created.
581 612
613
5824.25 KVM_IRQ_LINE 6144.25 KVM_IRQ_LINE
583 615
584Capability: KVM_CAP_IRQCHIP 616Capability: KVM_CAP_IRQCHIP
@@ -600,6 +632,7 @@ struct kvm_irq_level {
600 __u32 level; /* 0 or 1 */ 632 __u32 level; /* 0 or 1 */
601}; 633};
602 634
635
6034.26 KVM_GET_IRQCHIP 6364.26 KVM_GET_IRQCHIP
604 637
605Capability: KVM_CAP_IRQCHIP 638Capability: KVM_CAP_IRQCHIP
@@ -621,6 +654,7 @@ struct kvm_irqchip {
621 } chip; 654 } chip;
622}; 655};
623 656
657
6244.27 KVM_SET_IRQCHIP 6584.27 KVM_SET_IRQCHIP
625 659
626Capability: KVM_CAP_IRQCHIP 660Capability: KVM_CAP_IRQCHIP
@@ -642,6 +676,7 @@ struct kvm_irqchip {
642 } chip; 676 } chip;
643}; 677};
644 678
679
6454.28 KVM_XEN_HVM_CONFIG 6804.28 KVM_XEN_HVM_CONFIG
646 681
647Capability: KVM_CAP_XEN_HVM 682Capability: KVM_CAP_XEN_HVM
@@ -666,6 +701,7 @@ struct kvm_xen_hvm_config {
666 __u8 pad2[30]; 701 __u8 pad2[30];
667}; 702};
668 703
704
6694.29 KVM_GET_CLOCK 7054.29 KVM_GET_CLOCK
670 706
671Capability: KVM_CAP_ADJUST_CLOCK 707Capability: KVM_CAP_ADJUST_CLOCK
@@ -684,6 +720,7 @@ struct kvm_clock_data {
684 __u32 pad[9]; 720 __u32 pad[9];
685}; 721};
686 722
723
6874.30 KVM_SET_CLOCK 7244.30 KVM_SET_CLOCK
688 725
689Capability: KVM_CAP_ADJUST_CLOCK 726Capability: KVM_CAP_ADJUST_CLOCK
@@ -702,6 +739,7 @@ struct kvm_clock_data {
702 __u32 pad[9]; 739 __u32 pad[9];
703}; 740};
704 741
742
7054.31 KVM_GET_VCPU_EVENTS 7434.31 KVM_GET_VCPU_EVENTS
706 744
707Capability: KVM_CAP_VCPU_EVENTS 745Capability: KVM_CAP_VCPU_EVENTS
@@ -741,6 +779,7 @@ struct kvm_vcpu_events {
741KVM_VCPUEVENT_VALID_SHADOW may be set in the flags field to signal that 779KVM_VCPUEVENT_VALID_SHADOW may be set in the flags field to signal that
742interrupt.shadow contains a valid state. Otherwise, this field is undefined. 780interrupt.shadow contains a valid state. Otherwise, this field is undefined.
743 781
782
7444.32 KVM_SET_VCPU_EVENTS 7834.32 KVM_SET_VCPU_EVENTS
745 784
746Capability: KVM_CAP_VCPU_EVENTS 785Capability: KVM_CAP_VCPU_EVENTS
@@ -767,6 +806,7 @@ If KVM_CAP_INTR_SHADOW is available, KVM_VCPUEVENT_VALID_SHADOW can be set in
767the flags field to signal that interrupt.shadow contains a valid state and 806the flags field to signal that interrupt.shadow contains a valid state and
768shall be written into the VCPU. 807shall be written into the VCPU.
769 808
809
7704.33 KVM_GET_DEBUGREGS 8104.33 KVM_GET_DEBUGREGS
771 811
772Capability: KVM_CAP_DEBUGREGS 812Capability: KVM_CAP_DEBUGREGS
@@ -785,6 +825,7 @@ struct kvm_debugregs {
785 __u64 reserved[9]; 825 __u64 reserved[9];
786}; 826};
787 827
828
7884.34 KVM_SET_DEBUGREGS 8294.34 KVM_SET_DEBUGREGS
789 830
790Capability: KVM_CAP_DEBUGREGS 831Capability: KVM_CAP_DEBUGREGS
@@ -798,6 +839,7 @@ Writes debug registers into the vcpu.
798See KVM_GET_DEBUGREGS for the data structure. The flags field is unused 839See KVM_GET_DEBUGREGS for the data structure. The flags field is unused
799yet and must be cleared on entry. 840yet and must be cleared on entry.
800 841
842
8014.35 KVM_SET_USER_MEMORY_REGION 8434.35 KVM_SET_USER_MEMORY_REGION
802 844
803Capability: KVM_CAP_USER_MEM 845Capability: KVM_CAP_USER_MEM
@@ -844,6 +886,7 @@ It is recommended to use this API instead of the KVM_SET_MEMORY_REGION ioctl.
844The KVM_SET_MEMORY_REGION does not allow fine grained control over memory 886The KVM_SET_MEMORY_REGION does not allow fine grained control over memory
845allocation and is deprecated. 887allocation and is deprecated.
846 888
889
8474.36 KVM_SET_TSS_ADDR 8904.36 KVM_SET_TSS_ADDR
848 891
849Capability: KVM_CAP_SET_TSS_ADDR 892Capability: KVM_CAP_SET_TSS_ADDR
@@ -862,6 +905,7 @@ This ioctl is required on Intel-based hosts. This is needed on Intel hardware
862because of a quirk in the virtualization implementation (see the internals 905because of a quirk in the virtualization implementation (see the internals
863documentation when it pops into existence). 906documentation when it pops into existence).
864 907
908
8654.37 KVM_ENABLE_CAP 9094.37 KVM_ENABLE_CAP
866 910
867Capability: KVM_CAP_ENABLE_CAP 911Capability: KVM_CAP_ENABLE_CAP
@@ -897,6 +941,7 @@ function properly, this is the place to put them.
897 __u8 pad[64]; 941 __u8 pad[64];
898}; 942};
899 943
944
9004.38 KVM_GET_MP_STATE 9454.38 KVM_GET_MP_STATE
901 946
902Capability: KVM_CAP_MP_STATE 947Capability: KVM_CAP_MP_STATE
@@ -927,6 +972,7 @@ Possible values are:
927This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel 972This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel
928irqchip, the multiprocessing state must be maintained by userspace. 973irqchip, the multiprocessing state must be maintained by userspace.
929 974
975
9304.39 KVM_SET_MP_STATE 9764.39 KVM_SET_MP_STATE
931 977
932Capability: KVM_CAP_MP_STATE 978Capability: KVM_CAP_MP_STATE
@@ -941,6 +987,7 @@ arguments.
941This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel 987This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel
942irqchip, the multiprocessing state must be maintained by userspace. 988irqchip, the multiprocessing state must be maintained by userspace.
943 989
990
9444.40 KVM_SET_IDENTITY_MAP_ADDR 9914.40 KVM_SET_IDENTITY_MAP_ADDR
945 992
946Capability: KVM_CAP_SET_IDENTITY_MAP_ADDR 993Capability: KVM_CAP_SET_IDENTITY_MAP_ADDR
@@ -959,6 +1006,7 @@ This ioctl is required on Intel-based hosts. This is needed on Intel hardware
959because of a quirk in the virtualization implementation (see the internals 1006because of a quirk in the virtualization implementation (see the internals
960documentation when it pops into existence). 1007documentation when it pops into existence).
961 1008
1009
9624.41 KVM_SET_BOOT_CPU_ID 10104.41 KVM_SET_BOOT_CPU_ID
963 1011
964Capability: KVM_CAP_SET_BOOT_CPU_ID 1012Capability: KVM_CAP_SET_BOOT_CPU_ID
@@ -971,6 +1019,7 @@ Define which vcpu is the Bootstrap Processor (BSP). Values are the same
971as the vcpu id in KVM_CREATE_VCPU. If this ioctl is not called, the default 1019as the vcpu id in KVM_CREATE_VCPU. If this ioctl is not called, the default
972is vcpu 0. 1020is vcpu 0.
973 1021
1022
9744.42 KVM_GET_XSAVE 10234.42 KVM_GET_XSAVE
975 1024
976Capability: KVM_CAP_XSAVE 1025Capability: KVM_CAP_XSAVE
@@ -985,6 +1034,7 @@ struct kvm_xsave {
985 1034
986This ioctl would copy current vcpu's xsave struct to the userspace. 1035This ioctl would copy current vcpu's xsave struct to the userspace.
987 1036
1037
9884.43 KVM_SET_XSAVE 10384.43 KVM_SET_XSAVE
989 1039
990Capability: KVM_CAP_XSAVE 1040Capability: KVM_CAP_XSAVE
@@ -999,6 +1049,7 @@ struct kvm_xsave {
999 1049
1000This ioctl would copy userspace's xsave struct to the kernel. 1050This ioctl would copy userspace's xsave struct to the kernel.
1001 1051
1052
10024.44 KVM_GET_XCRS 10534.44 KVM_GET_XCRS
1003 1054
1004Capability: KVM_CAP_XCRS 1055Capability: KVM_CAP_XCRS
@@ -1022,6 +1073,7 @@ struct kvm_xcrs {
1022 1073
1023This ioctl would copy current vcpu's xcrs to the userspace. 1074This ioctl would copy current vcpu's xcrs to the userspace.
1024 1075
1076
10254.45 KVM_SET_XCRS 10774.45 KVM_SET_XCRS
1026 1078
1027Capability: KVM_CAP_XCRS 1079Capability: KVM_CAP_XCRS
@@ -1045,6 +1097,7 @@ struct kvm_xcrs {
1045 1097
1046This ioctl would set vcpu's xcr to the value userspace specified. 1098This ioctl would set vcpu's xcr to the value userspace specified.
1047 1099
1100
10484.46 KVM_GET_SUPPORTED_CPUID 11014.46 KVM_GET_SUPPORTED_CPUID
1049 1102
1050Capability: KVM_CAP_EXT_CPUID 1103Capability: KVM_CAP_EXT_CPUID
@@ -1119,6 +1172,7 @@ support. Instead it is reported via
1119if that returns true and you use KVM_CREATE_IRQCHIP, or if you emulate the 1172if that returns true and you use KVM_CREATE_IRQCHIP, or if you emulate the
1120feature in userspace, then you can enable the feature for KVM_SET_CPUID2. 1173feature in userspace, then you can enable the feature for KVM_SET_CPUID2.
1121 1174
1175
11224.47 KVM_PPC_GET_PVINFO 11764.47 KVM_PPC_GET_PVINFO
1123 1177
1124Capability: KVM_CAP_PPC_GET_PVINFO 1178Capability: KVM_CAP_PPC_GET_PVINFO
@@ -1142,6 +1196,7 @@ of 4 instructions that make up a hypercall.
1142If any additional field gets added to this structure later on, a bit for that 1196If any additional field gets added to this structure later on, a bit for that
1143additional piece of information will be set in the flags bitmap. 1197additional piece of information will be set in the flags bitmap.
1144 1198
1199
11454.48 KVM_ASSIGN_PCI_DEVICE 12004.48 KVM_ASSIGN_PCI_DEVICE
1146 1201
1147Capability: KVM_CAP_DEVICE_ASSIGNMENT 1202Capability: KVM_CAP_DEVICE_ASSIGNMENT
@@ -1185,6 +1240,7 @@ Only PCI header type 0 devices with PCI BAR resources are supported by
1185device assignment. The user requesting this ioctl must have read/write 1240device assignment. The user requesting this ioctl must have read/write
1186access to the PCI sysfs resource files associated with the device. 1241access to the PCI sysfs resource files associated with the device.
1187 1242
1243
11884.49 KVM_DEASSIGN_PCI_DEVICE 12444.49 KVM_DEASSIGN_PCI_DEVICE
1189 1245
1190Capability: KVM_CAP_DEVICE_DEASSIGNMENT 1246Capability: KVM_CAP_DEVICE_DEASSIGNMENT
@@ -1198,6 +1254,7 @@ Ends PCI device assignment, releasing all associated resources.
1198See KVM_CAP_DEVICE_ASSIGNMENT for the data structure. Only assigned_dev_id is 1254See KVM_CAP_DEVICE_ASSIGNMENT for the data structure. Only assigned_dev_id is
1199used in kvm_assigned_pci_dev to identify the device. 1255used in kvm_assigned_pci_dev to identify the device.
1200 1256
1257
12014.50 KVM_ASSIGN_DEV_IRQ 12584.50 KVM_ASSIGN_DEV_IRQ
1202 1259
1203Capability: KVM_CAP_ASSIGN_DEV_IRQ 1260Capability: KVM_CAP_ASSIGN_DEV_IRQ
@@ -1231,6 +1288,7 @@ The following flags are defined:
1231It is not valid to specify multiple types per host or guest IRQ. However, the 1288It is not valid to specify multiple types per host or guest IRQ. However, the
1232IRQ type of host and guest can differ or can even be null. 1289IRQ type of host and guest can differ or can even be null.
1233 1290
1291
12344.51 KVM_DEASSIGN_DEV_IRQ 12924.51 KVM_DEASSIGN_DEV_IRQ
1235 1293
1236Capability: KVM_CAP_ASSIGN_DEV_IRQ 1294Capability: KVM_CAP_ASSIGN_DEV_IRQ
@@ -1245,6 +1303,7 @@ See KVM_ASSIGN_DEV_IRQ for the data structure. The target device is specified
1245by assigned_dev_id, flags must correspond to the IRQ type specified on 1303by assigned_dev_id, flags must correspond to the IRQ type specified on
1246KVM_ASSIGN_DEV_IRQ. Partial deassignment of host or guest IRQ is allowed. 1304KVM_ASSIGN_DEV_IRQ. Partial deassignment of host or guest IRQ is allowed.
1247 1305
1306
12484.52 KVM_SET_GSI_ROUTING 13074.52 KVM_SET_GSI_ROUTING
1249 1308
1250Capability: KVM_CAP_IRQ_ROUTING 1309Capability: KVM_CAP_IRQ_ROUTING
@@ -1293,6 +1352,7 @@ struct kvm_irq_routing_msi {
1293 __u32 pad; 1352 __u32 pad;
1294}; 1353};
1295 1354
1355
12964.53 KVM_ASSIGN_SET_MSIX_NR 13564.53 KVM_ASSIGN_SET_MSIX_NR
1297 1357
1298Capability: KVM_CAP_DEVICE_MSIX 1358Capability: KVM_CAP_DEVICE_MSIX
@@ -1314,6 +1374,7 @@ struct kvm_assigned_msix_nr {
1314 1374
1315#define KVM_MAX_MSIX_PER_DEV 256 1375#define KVM_MAX_MSIX_PER_DEV 256
1316 1376
1377
13174.54 KVM_ASSIGN_SET_MSIX_ENTRY 13784.54 KVM_ASSIGN_SET_MSIX_ENTRY
1318 1379
1319Capability: KVM_CAP_DEVICE_MSIX 1380Capability: KVM_CAP_DEVICE_MSIX
@@ -1332,7 +1393,8 @@ struct kvm_assigned_msix_entry {
1332 __u16 padding[3]; 1393 __u16 padding[3];
1333}; 1394};
1334 1395
13354.54 KVM_SET_TSC_KHZ 1396
13974.55 KVM_SET_TSC_KHZ
1336 1398
1337Capability: KVM_CAP_TSC_CONTROL 1399Capability: KVM_CAP_TSC_CONTROL
1338Architectures: x86 1400Architectures: x86
@@ -1343,7 +1405,8 @@ Returns: 0 on success, -1 on error
1343Specifies the tsc frequency for the virtual machine. The unit of the 1405Specifies the tsc frequency for the virtual machine. The unit of the
1344frequency is KHz. 1406frequency is KHz.
1345 1407
13464.55 KVM_GET_TSC_KHZ 1408
14094.56 KVM_GET_TSC_KHZ
1347 1410
1348Capability: KVM_CAP_GET_TSC_KHZ 1411Capability: KVM_CAP_GET_TSC_KHZ
1349Architectures: x86 1412Architectures: x86
@@ -1355,7 +1418,8 @@ Returns the tsc frequency of the guest. The unit of the return value is
1355KHz. If the host has unstable tsc this ioctl returns -EIO instead as an 1418KHz. If the host has unstable tsc this ioctl returns -EIO instead as an
1356error. 1419error.
1357 1420
13584.56 KVM_GET_LAPIC 1421
14224.57 KVM_GET_LAPIC
1359 1423
1360Capability: KVM_CAP_IRQCHIP 1424Capability: KVM_CAP_IRQCHIP
1361Architectures: x86 1425Architectures: x86
@@ -1371,7 +1435,8 @@ struct kvm_lapic_state {
1371Reads the Local APIC registers and copies them into the input argument. The 1435Reads the Local APIC registers and copies them into the input argument. The
1372data format and layout are the same as documented in the architecture manual. 1436data format and layout are the same as documented in the architecture manual.
1373 1437
13744.57 KVM_SET_LAPIC 1438
14394.58 KVM_SET_LAPIC
1375 1440
1376Capability: KVM_CAP_IRQCHIP 1441Capability: KVM_CAP_IRQCHIP
1377Architectures: x86 1442Architectures: x86
@@ -1387,7 +1452,8 @@ struct kvm_lapic_state {
1387Copies the input argument into the the Local APIC registers. The data format 1452Copies the input argument into the the Local APIC registers. The data format
1388and layout are the same as documented in the architecture manual. 1453and layout are the same as documented in the architecture manual.
1389 1454
13904.58 KVM_IOEVENTFD 1455
14564.59 KVM_IOEVENTFD
1391 1457
1392Capability: KVM_CAP_IOEVENTFD 1458Capability: KVM_CAP_IOEVENTFD
1393Architectures: all 1459Architectures: all
@@ -1417,7 +1483,8 @@ The following flags are defined:
1417If datamatch flag is set, the event will be signaled only if the written value 1483If datamatch flag is set, the event will be signaled only if the written value
1418to the registered address is equal to datamatch in struct kvm_ioeventfd. 1484to the registered address is equal to datamatch in struct kvm_ioeventfd.
1419 1485
14204.59 KVM_DIRTY_TLB 1486
14874.60 KVM_DIRTY_TLB
1421 1488
1422Capability: KVM_CAP_SW_TLB 1489Capability: KVM_CAP_SW_TLB
1423Architectures: ppc 1490Architectures: ppc
@@ -1449,7 +1516,8 @@ The "num_dirty" field is a performance hint for KVM to determine whether it
1449should skip processing the bitmap and just invalidate everything. It must 1516should skip processing the bitmap and just invalidate everything. It must
1450be set to the number of set bits in the bitmap. 1517be set to the number of set bits in the bitmap.
1451 1518
14524.60 KVM_ASSIGN_SET_INTX_MASK 1519
15204.61 KVM_ASSIGN_SET_INTX_MASK
1453 1521
1454Capability: KVM_CAP_PCI_2_3 1522Capability: KVM_CAP_PCI_2_3
1455Architectures: x86 1523Architectures: x86
@@ -1482,6 +1550,7 @@ See KVM_ASSIGN_DEV_IRQ for the data structure. The target device is specified
1482by assigned_dev_id. In the flags field, only KVM_DEV_ASSIGN_MASK_INTX is 1550by assigned_dev_id. In the flags field, only KVM_DEV_ASSIGN_MASK_INTX is
1483evaluated. 1551evaluated.
1484 1552
1553
14854.62 KVM_CREATE_SPAPR_TCE 15544.62 KVM_CREATE_SPAPR_TCE
1486 1555
1487Capability: KVM_CAP_SPAPR_TCE 1556Capability: KVM_CAP_SPAPR_TCE
@@ -1517,6 +1586,7 @@ the entries written by kernel-handled H_PUT_TCE calls, and also lets
1517userspace update the TCE table directly which is useful in some 1586userspace update the TCE table directly which is useful in some
1518circumstances. 1587circumstances.
1519 1588
1589
15204.63 KVM_ALLOCATE_RMA 15904.63 KVM_ALLOCATE_RMA
1521 1591
1522Capability: KVM_CAP_PPC_RMA 1592Capability: KVM_CAP_PPC_RMA
@@ -1549,6 +1619,7 @@ is supported; 2 if the processor requires all virtual machines to have
1549an RMA, or 1 if the processor can use an RMA but doesn't require it, 1619an RMA, or 1 if the processor can use an RMA but doesn't require it,
1550because it supports the Virtual RMA (VRMA) facility. 1620because it supports the Virtual RMA (VRMA) facility.
1551 1621
1622
15524.64 KVM_NMI 16234.64 KVM_NMI
1553 1624
1554Capability: KVM_CAP_USER_NMI 1625Capability: KVM_CAP_USER_NMI
@@ -1574,6 +1645,7 @@ following algorithm:
1574Some guests configure the LINT1 NMI input to cause a panic, aiding in 1645Some guests configure the LINT1 NMI input to cause a panic, aiding in
1575debugging. 1646debugging.
1576 1647
1648
15774.65 KVM_S390_UCAS_MAP 16494.65 KVM_S390_UCAS_MAP
1578 1650
1579Capability: KVM_CAP_S390_UCONTROL 1651Capability: KVM_CAP_S390_UCONTROL
@@ -1593,6 +1665,7 @@ This ioctl maps the memory at "user_addr" with the length "length" to
1593the vcpu's address space starting at "vcpu_addr". All parameters need to 1665the vcpu's address space starting at "vcpu_addr". All parameters need to
1594be alligned by 1 megabyte. 1666be alligned by 1 megabyte.
1595 1667
1668
15964.66 KVM_S390_UCAS_UNMAP 16694.66 KVM_S390_UCAS_UNMAP
1597 1670
1598Capability: KVM_CAP_S390_UCONTROL 1671Capability: KVM_CAP_S390_UCONTROL
@@ -1612,6 +1685,7 @@ This ioctl unmaps the memory in the vcpu's address space starting at
1612"vcpu_addr" with the length "length". The field "user_addr" is ignored. 1685"vcpu_addr" with the length "length". The field "user_addr" is ignored.
1613All parameters need to be alligned by 1 megabyte. 1686All parameters need to be alligned by 1 megabyte.
1614 1687
1688
16154.67 KVM_S390_VCPU_FAULT 16894.67 KVM_S390_VCPU_FAULT
1616 1690
1617Capability: KVM_CAP_S390_UCONTROL 1691Capability: KVM_CAP_S390_UCONTROL
@@ -1628,6 +1702,7 @@ table upfront. This is useful to handle validity intercepts for user
1628controlled virtual machines to fault in the virtual cpu's lowcore pages 1702controlled virtual machines to fault in the virtual cpu's lowcore pages
1629prior to calling the KVM_RUN ioctl. 1703prior to calling the KVM_RUN ioctl.
1630 1704
1705
16314.68 KVM_SET_ONE_REG 17064.68 KVM_SET_ONE_REG
1632 1707
1633Capability: KVM_CAP_ONE_REG 1708Capability: KVM_CAP_ONE_REG
@@ -1653,6 +1728,7 @@ registers, find a list below:
1653 | | 1728 | |
1654 PPC | KVM_REG_PPC_HIOR | 64 1729 PPC | KVM_REG_PPC_HIOR | 64
1655 1730
1731
16564.69 KVM_GET_ONE_REG 17324.69 KVM_GET_ONE_REG
1657 1733
1658Capability: KVM_CAP_ONE_REG 1734Capability: KVM_CAP_ONE_REG
@@ -1669,7 +1745,210 @@ at the memory location pointed to by "addr".
1669The list of registers accessible using this interface is identical to the 1745The list of registers accessible using this interface is identical to the
1670list in 4.64. 1746list in 4.64.
1671 1747
1748
17494.70 KVM_KVMCLOCK_CTRL
1750
1751Capability: KVM_CAP_KVMCLOCK_CTRL
1752Architectures: Any that implement pvclocks (currently x86 only)
1753Type: vcpu ioctl
1754Parameters: None
1755Returns: 0 on success, -1 on error
1756
1757This signals to the host kernel that the specified guest is being paused by
1758userspace. The host will set a flag in the pvclock structure that is checked
1759from the soft lockup watchdog. The flag is part of the pvclock structure that
1760is shared between guest and host, specifically the second bit of the flags
1761field of the pvclock_vcpu_time_info structure. It will be set exclusively by
1762the host and read/cleared exclusively by the guest. The guest operation of
1763checking and clearing the flag must an atomic operation so
1764load-link/store-conditional, or equivalent must be used. There are two cases
1765where the guest will clear the flag: when the soft lockup watchdog timer resets
1766itself or when a soft lockup is detected. This ioctl can be called any time
1767after pausing the vcpu, but before it is resumed.
1768
1769
17704.71 KVM_SIGNAL_MSI
1771
1772Capability: KVM_CAP_SIGNAL_MSI
1773Architectures: x86
1774Type: vm ioctl
1775Parameters: struct kvm_msi (in)
1776Returns: >0 on delivery, 0 if guest blocked the MSI, and -1 on error
1777
1778Directly inject a MSI message. Only valid with in-kernel irqchip that handles
1779MSI messages.
1780
1781struct kvm_msi {
1782 __u32 address_lo;
1783 __u32 address_hi;
1784 __u32 data;
1785 __u32 flags;
1786 __u8 pad[16];
1787};
1788
1789No flags are defined so far. The corresponding field must be 0.
1790
1791
17924.71 KVM_CREATE_PIT2
1793
1794Capability: KVM_CAP_PIT2
1795Architectures: x86
1796Type: vm ioctl
1797Parameters: struct kvm_pit_config (in)
1798Returns: 0 on success, -1 on error
1799
1800Creates an in-kernel device model for the i8254 PIT. This call is only valid
1801after enabling in-kernel irqchip support via KVM_CREATE_IRQCHIP. The following
1802parameters have to be passed:
1803
1804struct kvm_pit_config {
1805 __u32 flags;
1806 __u32 pad[15];
1807};
1808
1809Valid flags are:
1810
1811#define KVM_PIT_SPEAKER_DUMMY 1 /* emulate speaker port stub */
1812
1813PIT timer interrupts may use a per-VM kernel thread for injection. If it
1814exists, this thread will have a name of the following pattern:
1815
1816kvm-pit/<owner-process-pid>
1817
1818When running a guest with elevated priorities, the scheduling parameters of
1819this thread may have to be adjusted accordingly.
1820
1821This IOCTL replaces the obsolete KVM_CREATE_PIT.
1822
1823
18244.72 KVM_GET_PIT2
1825
1826Capability: KVM_CAP_PIT_STATE2
1827Architectures: x86
1828Type: vm ioctl
1829Parameters: struct kvm_pit_state2 (out)
1830Returns: 0 on success, -1 on error
1831
1832Retrieves the state of the in-kernel PIT model. Only valid after
1833KVM_CREATE_PIT2. The state is returned in the following structure:
1834
1835struct kvm_pit_state2 {
1836 struct kvm_pit_channel_state channels[3];
1837 __u32 flags;
1838 __u32 reserved[9];
1839};
1840
1841Valid flags are:
1842
1843/* disable PIT in HPET legacy mode */
1844#define KVM_PIT_FLAGS_HPET_LEGACY 0x00000001
1845
1846This IOCTL replaces the obsolete KVM_GET_PIT.
1847
1848
18494.73 KVM_SET_PIT2
1850
1851Capability: KVM_CAP_PIT_STATE2
1852Architectures: x86
1853Type: vm ioctl
1854Parameters: struct kvm_pit_state2 (in)
1855Returns: 0 on success, -1 on error
1856
1857Sets the state of the in-kernel PIT model. Only valid after KVM_CREATE_PIT2.
1858See KVM_GET_PIT2 for details on struct kvm_pit_state2.
1859
1860This IOCTL replaces the obsolete KVM_SET_PIT.
1861
1862
18634.74 KVM_PPC_GET_SMMU_INFO
1864
1865Capability: KVM_CAP_PPC_GET_SMMU_INFO
1866Architectures: powerpc
1867Type: vm ioctl
1868Parameters: None
1869Returns: 0 on success, -1 on error
1870
1871This populates and returns a structure describing the features of
1872the "Server" class MMU emulation supported by KVM.
1873This can in turn be used by userspace to generate the appropariate
1874device-tree properties for the guest operating system.
1875
1876The structure contains some global informations, followed by an
1877array of supported segment page sizes:
1878
1879 struct kvm_ppc_smmu_info {
1880 __u64 flags;
1881 __u32 slb_size;
1882 __u32 pad;
1883 struct kvm_ppc_one_seg_page_size sps[KVM_PPC_PAGE_SIZES_MAX_SZ];
1884 };
1885
1886The supported flags are:
1887
1888 - KVM_PPC_PAGE_SIZES_REAL:
1889 When that flag is set, guest page sizes must "fit" the backing
1890 store page sizes. When not set, any page size in the list can
1891 be used regardless of how they are backed by userspace.
1892
1893 - KVM_PPC_1T_SEGMENTS
1894 The emulated MMU supports 1T segments in addition to the
1895 standard 256M ones.
1896
1897The "slb_size" field indicates how many SLB entries are supported
1898
1899The "sps" array contains 8 entries indicating the supported base
1900page sizes for a segment in increasing order. Each entry is defined
1901as follow:
1902
1903 struct kvm_ppc_one_seg_page_size {
1904 __u32 page_shift; /* Base page shift of segment (or 0) */
1905 __u32 slb_enc; /* SLB encoding for BookS */
1906 struct kvm_ppc_one_page_size enc[KVM_PPC_PAGE_SIZES_MAX_SZ];
1907 };
1908
1909An entry with a "page_shift" of 0 is unused. Because the array is
1910organized in increasing order, a lookup can stop when encoutering
1911such an entry.
1912
1913The "slb_enc" field provides the encoding to use in the SLB for the
1914page size. The bits are in positions such as the value can directly
1915be OR'ed into the "vsid" argument of the slbmte instruction.
1916
1917The "enc" array is a list which for each of those segment base page
1918size provides the list of supported actual page sizes (which can be
1919only larger or equal to the base page size), along with the
1920corresponding encoding in the hash PTE. Similarily, the array is
19218 entries sorted by increasing sizes and an entry with a "0" shift
1922is an empty entry and a terminator:
1923
1924 struct kvm_ppc_one_page_size {
1925 __u32 page_shift; /* Page shift (or 0) */
1926 __u32 pte_enc; /* Encoding in the HPTE (>>12) */
1927 };
1928
1929The "pte_enc" field provides a value that can OR'ed into the hash
1930PTE's RPN field (ie, it needs to be shifted left by 12 to OR it
1931into the hash PTE second double word).
1932
19334.75 KVM_IRQFD
1934
1935Capability: KVM_CAP_IRQFD
1936Architectures: x86
1937Type: vm ioctl
1938Parameters: struct kvm_irqfd (in)
1939Returns: 0 on success, -1 on error
1940
1941Allows setting an eventfd to directly trigger a guest interrupt.
1942kvm_irqfd.fd specifies the file descriptor to use as the eventfd and
1943kvm_irqfd.gsi specifies the irqchip pin toggled by this event. When
1944an event is tiggered on the eventfd, an interrupt is injected into
1945the guest using the specified gsi pin. The irqfd is removed using
1946the KVM_IRQFD_FLAG_DEASSIGN flag, specifying both kvm_irqfd.fd
1947and kvm_irqfd.gsi.
1948
1949
16725. The kvm_run structure 19505. The kvm_run structure
1951------------------------
1673 1952
1674Application code obtains a pointer to the kvm_run structure by 1953Application code obtains a pointer to the kvm_run structure by
1675mmap()ing a vcpu fd. From that point, application code can control 1954mmap()ing a vcpu fd. From that point, application code can control
@@ -1910,7 +2189,9 @@ and usually define the validity of a groups of registers. (e.g. one bit
1910 2189
1911}; 2190};
1912 2191
2192
19136. Capabilities that can be enabled 21936. Capabilities that can be enabled
2194-----------------------------------
1914 2195
1915There are certain capabilities that change the behavior of the virtual CPU when 2196There are certain capabilities that change the behavior of the virtual CPU when
1916enabled. To enable them, please see section 4.37. Below you can find a list of 2197enabled. To enable them, please see section 4.37. Below you can find a list of
@@ -1926,6 +2207,7 @@ The following information is provided along with the description:
1926 Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL) 2207 Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL)
1927 are not detailed, but errors with specific meanings are. 2208 are not detailed, but errors with specific meanings are.
1928 2209
2210
19296.1 KVM_CAP_PPC_OSI 22116.1 KVM_CAP_PPC_OSI
1930 2212
1931Architectures: ppc 2213Architectures: ppc
@@ -1939,6 +2221,7 @@ between the guest and the host.
1939 2221
1940When this capability is enabled, KVM_EXIT_OSI can occur. 2222When this capability is enabled, KVM_EXIT_OSI can occur.
1941 2223
2224
19426.2 KVM_CAP_PPC_PAPR 22256.2 KVM_CAP_PPC_PAPR
1943 2226
1944Architectures: ppc 2227Architectures: ppc
@@ -1957,6 +2240,7 @@ HTAB invisible to the guest.
1957 2240
1958When this capability is enabled, KVM_EXIT_PAPR_HCALL can occur. 2241When this capability is enabled, KVM_EXIT_PAPR_HCALL can occur.
1959 2242
2243
19606.3 KVM_CAP_SW_TLB 22446.3 KVM_CAP_SW_TLB
1961 2245
1962Architectures: ppc 2246Architectures: ppc
diff --git a/Documentation/virtual/kvm/cpuid.txt b/Documentation/virtual/kvm/cpuid.txt
index 882068538c9c..83afe65d4966 100644
--- a/Documentation/virtual/kvm/cpuid.txt
+++ b/Documentation/virtual/kvm/cpuid.txt
@@ -10,11 +10,15 @@ a guest.
10KVM cpuid functions are: 10KVM cpuid functions are:
11 11
12function: KVM_CPUID_SIGNATURE (0x40000000) 12function: KVM_CPUID_SIGNATURE (0x40000000)
13returns : eax = 0, 13returns : eax = 0x40000001,
14 ebx = 0x4b4d564b, 14 ebx = 0x4b4d564b,
15 ecx = 0x564b4d56, 15 ecx = 0x564b4d56,
16 edx = 0x4d. 16 edx = 0x4d.
17Note that this value in ebx, ecx and edx corresponds to the string "KVMKVMKVM". 17Note that this value in ebx, ecx and edx corresponds to the string "KVMKVMKVM".
18The value in eax corresponds to the maximum cpuid function present in this leaf,
19and will be updated if more functions are added in the future.
20Note also that old hosts set eax value to 0x0. This should
21be interpreted as if the value was 0x40000001.
18This function queries the presence of KVM cpuid leafs. 22This function queries the presence of KVM cpuid leafs.
19 23
20 24
diff --git a/Documentation/virtual/kvm/msr.txt b/Documentation/virtual/kvm/msr.txt
index 50317809113d..96b41bd97523 100644
--- a/Documentation/virtual/kvm/msr.txt
+++ b/Documentation/virtual/kvm/msr.txt
@@ -109,6 +109,10 @@ MSR_KVM_SYSTEM_TIME_NEW: 0x4b564d01
109 0 | 24 | multiple cpus are guaranteed to 109 0 | 24 | multiple cpus are guaranteed to
110 | | be monotonic 110 | | be monotonic
111 ------------------------------------------------------------- 111 -------------------------------------------------------------
112 | | guest vcpu has been paused by
113 1 | N/A | the host
114 | | See 4.70 in api.txt
115 -------------------------------------------------------------
112 116
113 Availability of this MSR must be checked via bit 3 in 0x4000001 cpuid 117 Availability of this MSR must be checked via bit 3 in 0x4000001 cpuid
114 leaf prior to usage. 118 leaf prior to usage.
diff --git a/Documentation/virtual/virtio-spec.txt b/Documentation/virtual/virtio-spec.txt
index da094737e2f8..0d6ec85481cb 100644
--- a/Documentation/virtual/virtio-spec.txt
+++ b/Documentation/virtual/virtio-spec.txt
@@ -1,11 +1,11 @@
1[Generated file: see http://ozlabs.org/~rusty/virtio-spec/] 1[Generated file: see http://ozlabs.org/~rusty/virtio-spec/]
2Virtio PCI Card Specification 2Virtio PCI Card Specification
3v0.9.1 DRAFT 3v0.9.5 DRAFT
4- 4-
5 5
6Rusty Russell <rusty@rustcorp.com.au>IBM Corporation (Editor) 6Rusty Russell <rusty@rustcorp.com.au> IBM Corporation (Editor)
7 7
82011 August 1. 82012 May 7.
9 9
10Purpose and Description 10Purpose and Description
11 11
@@ -68,11 +68,11 @@ and consists of three parts:
68+-------------------+-----------------------------------+-----------+ 68+-------------------+-----------------------------------+-----------+
69 69
70 70
71When the driver wants to send buffers to the device, it puts them 71When the driver wants to send a buffer to the device, it fills in
72in one or more slots in the descriptor table, and writes the 72a slot in the descriptor table (or chains several together), and
73descriptor indices into the available ring. It then notifies the 73writes the descriptor index into the available ring. It then
74device. When the device has finished with the buffers, it writes 74notifies the device. When the device has finished a buffer, it
75the descriptors into the used ring, and sends an interrupt. 75writes the descriptor into the used ring, and sends an interrupt.
76 76
77Specification 77Specification
78 78
@@ -106,8 +106,14 @@ for informational purposes by the guest).
106+----------------------+--------------------+---------------+ 106+----------------------+--------------------+---------------+
107| 6 | ioMemory | - | 107| 6 | ioMemory | - |
108+----------------------+--------------------+---------------+ 108+----------------------+--------------------+---------------+
109| 7 | rpmsg | Appendix H |
110+----------------------+--------------------+---------------+
111| 8 | SCSI host | Appendix I |
112+----------------------+--------------------+---------------+
109| 9 | 9P transport | - | 113| 9 | 9P transport | - |
110+----------------------+--------------------+---------------+ 114+----------------------+--------------------+---------------+
115| 10 | mac80211 wlan | - |
116+----------------------+--------------------+---------------+
111 117
112 118
113 Device Configuration 119 Device Configuration
@@ -127,7 +133,7 @@ Note that this is possible because while the virtio header is PCI
127the native endian of the guest (where such distinction is 133the native endian of the guest (where such distinction is
128applicable). 134applicable).
129 135
130 Device Initialization Sequence 136 Device Initialization Sequence<sub:Device-Initialization-Sequence>
131 137
132We start with an overview of device initialization, then expand 138We start with an overview of device initialization, then expand
133on the details of the device and how each step is preformed. 139on the details of the device and how each step is preformed.
@@ -177,7 +183,10 @@ The virtio header looks as follows:
177 183
178 184
179If MSI-X is enabled for the device, two additional fields 185If MSI-X is enabled for the device, two additional fields
180immediately follow this header: 186immediately follow this header:[footnote:
187ie. once you enable MSI-X on the device, the other fields move.
188If you turn it off again, they move back!
189]
181 190
182 191
183+------------++----------------+--------+ 192+------------++----------------+--------+
@@ -191,20 +200,6 @@ immediately follow this header:
191+------------++----------------+--------+ 200+------------++----------------+--------+
192 201
193 202
194Finally, if feature bits (VIRTIO_F_FEATURES_HI) this is
195immediately followed by two additional fields:
196
197
198+------------++----------------------+----------------------
199| Bits || 32 | 32
200+------------++----------------------+----------------------
201| Read/Write || R | R+W
202+------------++----------------------+----------------------
203| Purpose || Device | Guest
204| || Features bits 32:63 | Features bits 32:63
205+------------++----------------------+----------------------
206
207
208Immediately following these general headers, there may be 203Immediately following these general headers, there may be
209device-specific headers: 204device-specific headers:
210 205
@@ -238,31 +233,25 @@ at least one bit should be set:
238 may be a significant (or infinite) delay before setting this 233 may be a significant (or infinite) delay before setting this
239 bit. 234 bit.
240 235
241 DRIVER_OK (3) Indicates that the driver is set up and ready to 236 DRIVER_OK (4) Indicates that the driver is set up and ready to
242 drive the device. 237 drive the device.
243 238
244 FAILED (8) Indicates that something went wrong in the guest, 239 FAILED (128) Indicates that something went wrong in the guest,
245 and it has given up on the device. This could be an internal 240 and it has given up on the device. This could be an internal
246 error, or the driver didn't like the device for some reason, or 241 error, or the driver didn't like the device for some reason, or
247 even a fatal error during device operation. The device must be 242 even a fatal error during device operation. The device must be
248 reset before attempting to re-initialize. 243 reset before attempting to re-initialize.
249 244
250 Feature Bits 245 Feature Bits<sub:Feature-Bits>
251 246
252The least significant 31 bits of the first configuration field 247Thefirst configuration field indicates the features that the
253indicates the features that the device supports (the high bit is 248device supports. The bits are allocated as follows:
254reserved, and will be used to indicate the presence of future
255feature bits elsewhere). If more than 31 feature bits are
256supported, the device indicates so by setting feature bit 31 (see
257[cha:Reserved-Feature-Bits]). The bits are allocated as follows:
258 249
259 0 to 23 Feature bits for the specific device type 250 0 to 23 Feature bits for the specific device type
260 251
261 24 to 40 Feature bits reserved for extensions to the queue and 252 24 to 32 Feature bits reserved for extensions to the queue and
262 feature negotiation mechanisms 253 feature negotiation mechanisms
263 254
264 41 to 63 Feature bits reserved for future extensions
265
266For example, feature bit 0 for a network device (i.e. Subsystem 255For example, feature bit 0 for a network device (i.e. Subsystem
267Device ID 1) indicates that the device supports checksumming of 256Device ID 1) indicates that the device supports checksumming of
268packets. 257packets.
@@ -286,10 +275,6 @@ will not see that feature bit in the Device Features field and
286can go into backwards compatibility mode (or, for poor 275can go into backwards compatibility mode (or, for poor
287implementations, set the FAILED Device Status bit). 276implementations, set the FAILED Device Status bit).
288 277
289Access to feature bits 32 to 63 is enabled by Guest by setting
290feature bit 31. If this bit is unset, Device must assume that all
291feature bits > 31 are unset.
292
293 Configuration/Queue Vectors 278 Configuration/Queue Vectors
294 279
295When MSI-X capability is present and enabled in the device 280When MSI-X capability is present and enabled in the device
@@ -324,7 +309,7 @@ success, the previously written value is returned, and on
324failure, NO_VECTOR is returned. If a mapping failure is detected, 309failure, NO_VECTOR is returned. If a mapping failure is detected,
325the driver can retry mapping with fewervectors, or disable MSI-X. 310the driver can retry mapping with fewervectors, or disable MSI-X.
326 311
327 Virtqueue Configuration 312 Virtqueue Configuration<sec:Virtqueue-Configuration>
328 313
329As a device can have zero or more virtqueues for bulk data 314As a device can have zero or more virtqueues for bulk data
330transport (for example, the network driver has two), the driver 315transport (for example, the network driver has two), the driver
@@ -587,7 +572,7 @@ and Red Hat under the (3-clause) BSD license so that it can be
587freely used by all other projects, and is reproduced (with slight 572freely used by all other projects, and is reproduced (with slight
588variation to remove Linux assumptions) in Appendix A. 573variation to remove Linux assumptions) in Appendix A.
589 574
590 Device Operation 575 Device Operation<sec:Device-Operation>
591 576
592There are two parts to device operation: supplying new buffers to 577There are two parts to device operation: supplying new buffers to
593the device, and processing used buffers from the device. As an 578the device, and processing used buffers from the device. As an
@@ -813,7 +798,7 @@ vring.used->ring[vq->last_seen_used%vsz];
813 798
814} 799}
815 800
816 Dealing With Configuration Changes 801 Dealing With Configuration Changes<sub:Dealing-With-Configuration>
817 802
818Some virtio PCI devices can change the device configuration 803Some virtio PCI devices can change the device configuration
819state, as reflected in the virtio header in the PCI configuration 804state, as reflected in the virtio header in the PCI configuration
@@ -1260,18 +1245,6 @@ Currently there are five device-independent feature bits defined:
1260 driver should ignore the used_event field; the device should 1245 driver should ignore the used_event field; the device should
1261 ignore the avail_event field; the flags field is used 1246 ignore the avail_event field; the flags field is used
1262 1247
1263 VIRTIO_F_BAD_FEATURE(30) This feature should never be
1264 negotiated by the guest; doing so is an indication that the
1265 guest is faulty[footnote:
1266An experimental virtio PCI driver contained in Linux version
12672.6.25 had this problem, and this feature bit can be used to
1268detect it.
1269]
1270
1271 VIRTIO_F_FEATURES_HIGH(31) This feature indicates that the
1272 device supports feature bits 32:63. If unset, feature bits
1273 32:63 are unset.
1274
1275Appendix C: Network Device 1248Appendix C: Network Device
1276 1249
1277The virtio network device is a virtual ethernet card, and is the 1250The virtio network device is a virtual ethernet card, and is the
@@ -1335,11 +1308,17 @@ were required.
1335 1308
1336 VIRTIO_NET_F_CTRL_VLAN (19) Control channel VLAN filtering. 1309 VIRTIO_NET_F_CTRL_VLAN (19) Control channel VLAN filtering.
1337 1310
1311 VIRTIO_NET_F_GUEST_ANNOUNCE(21) Guest can send gratuitous
1312 packets.
1313
1338 Device configuration layout Two configuration fields are 1314 Device configuration layout Two configuration fields are
1339 currently defined. The mac address field always exists (though 1315 currently defined. The mac address field always exists (though
1340 is only valid if VIRTIO_NET_F_MAC is set), and the status field 1316 is only valid if VIRTIO_NET_F_MAC is set), and the status field
1341 only exists if VIRTIO_NET_F_STATUS is set. Only one bit is 1317 only exists if VIRTIO_NET_F_STATUS is set. Two read-only bits
1342 currently defined for the status field: VIRTIO_NET_S_LINK_UP. #define VIRTIO_NET_S_LINK_UP 1 1318 are currently defined for the status field:
1319 VIRTIO_NET_S_LINK_UP and VIRTIO_NET_S_ANNOUNCE. #define VIRTIO_NET_S_LINK_UP 1
1320
1321#define VIRTIO_NET_S_ANNOUNCE 2
1343 1322
1344 1323
1345 1324
@@ -1377,12 +1356,19 @@ struct virtio_net_config {
1377 packets by negotating the VIRTIO_NET_F_CSUM feature. This “ 1356 packets by negotating the VIRTIO_NET_F_CSUM feature. This “
1378 checksum offload” is a common feature on modern network cards. 1357 checksum offload” is a common feature on modern network cards.
1379 1358
1380 If that feature is negotiated, a driver can use TCP or UDP 1359 If that feature is negotiated[footnote:
1381 segmentation offload by negotiating the VIRTIO_NET_F_HOST_TSO4 1360ie. VIRTIO_NET_F_HOST_TSO* and VIRTIO_NET_F_HOST_UFO are
1382 (IPv4 TCP), VIRTIO_NET_F_HOST_TSO6 (IPv6 TCP) and 1361dependent on VIRTIO_NET_F_CSUM; a dvice which offers the offload
1383 VIRTIO_NET_F_HOST_UFO (UDP fragmentation) features. It should 1362features must offer the checksum feature, and a driver which
1384 not send TCP packets requiring segmentation offload which have 1363accepts the offload features must accept the checksum feature.
1385 the Explicit Congestion Notification bit set, unless the 1364Similar logic applies to the VIRTIO_NET_F_GUEST_TSO4 features
1365depending on VIRTIO_NET_F_GUEST_CSUM.
1366], a driver can use TCP or UDP segmentation offload by
1367 negotiating the VIRTIO_NET_F_HOST_TSO4 (IPv4 TCP),
1368 VIRTIO_NET_F_HOST_TSO6 (IPv6 TCP) and VIRTIO_NET_F_HOST_UFO
1369 (UDP fragmentation) features. It should not send TCP packets
1370 requiring segmentation offload which have the Explicit
1371 Congestion Notification bit set, unless the
1386 VIRTIO_NET_F_HOST_ECN feature is negotiated.[footnote: 1372 VIRTIO_NET_F_HOST_ECN feature is negotiated.[footnote:
1387This is a common restriction in real, older network cards. 1373This is a common restriction in real, older network cards.
1388] 1374]
@@ -1403,7 +1389,7 @@ segmentation, if both guests are amenable.
1403 1389
1404Packets are transmitted by placing them in the transmitq, and 1390Packets are transmitted by placing them in the transmitq, and
1405buffers for incoming packets are placed in the receiveq. In each 1391buffers for incoming packets are placed in the receiveq. In each
1406case, the packet itself is preceded by a header: 1392case, the packet itself is preceeded by a header:
1407 1393
1408struct virtio_net_hdr { 1394struct virtio_net_hdr {
1409 1395
@@ -1462,9 +1448,10 @@ It will have a 14 byte ethernet header and 20 byte IP header
1462followed by the TCP header (with the TCP checksum field 16 bytes 1448followed by the TCP header (with the TCP checksum field 16 bytes
1463into that header). csum_start will be 14+20 = 34 (the TCP 1449into that header). csum_start will be 14+20 = 34 (the TCP
1464checksum includes the header), and csum_offset will be 16. The 1450checksum includes the header), and csum_offset will be 16. The
1465value in the TCP checksum field will be the sum of the TCP pseudo 1451value in the TCP checksum field should be initialized to the sum
1466header, so that replacing it by the ones' complement checksum of 1452of the TCP pseudo header, so that replacing it by the ones'
1467the TCP header and body will give the correct result. 1453complement checksum of the TCP header and body will give the
1454correct result.
1468] 1455]
1469 1456
1470 <enu:If-the-driver>If the driver negotiated 1457 <enu:If-the-driver>If the driver negotiated
@@ -1483,8 +1470,8 @@ Due to various bugs in implementations, this field is not useful
1483as a guarantee of the transport header size. 1470as a guarantee of the transport header size.
1484] 1471]
1485 1472
1486 gso_size is the size of the packet beyond that header (ie. 1473 gso_size is the maximum size of each packet beyond that header
1487 MSS). 1474 (ie. MSS).
1488 1475
1489 If the driver negotiated the VIRTIO_NET_F_HOST_ECN feature, the 1476 If the driver negotiated the VIRTIO_NET_F_HOST_ECN feature, the
1490 VIRTIO_NET_HDR_GSO_ECN bit may be set in “gso_type” as well, 1477 VIRTIO_NET_HDR_GSO_ECN bit may be set in “gso_type” as well,
@@ -1567,7 +1554,9 @@ Processing packet involves:
1567 If the VIRTIO_NET_F_GUEST_TSO4, TSO6 or UFO options were 1554 If the VIRTIO_NET_F_GUEST_TSO4, TSO6 or UFO options were
1568 negotiated, then the “gso_type” may be something other than 1555 negotiated, then the “gso_type” may be something other than
1569 VIRTIO_NET_HDR_GSO_NONE, and the “gso_size” field indicates the 1556 VIRTIO_NET_HDR_GSO_NONE, and the “gso_size” field indicates the
1570 desired MSS (see [enu:If-the-driver]).Control Virtqueue 1557 desired MSS (see [enu:If-the-driver]).
1558
1559 Control Virtqueue
1571 1560
1572The driver uses the control virtqueue (if VIRTIO_NET_F_VTRL_VQ is 1561The driver uses the control virtqueue (if VIRTIO_NET_F_VTRL_VQ is
1573negotiated) to send commands to manipulate various features of 1562negotiated) to send commands to manipulate various features of
@@ -1642,7 +1631,7 @@ struct virtio_net_ctrl_mac {
1642 1631
1643The device can filter incoming packets by any number of 1632The device can filter incoming packets by any number of
1644destination MAC addresses.[footnote: 1633destination MAC addresses.[footnote:
1645Since there are no guarantees, it can use a hash filter 1634Since there are no guarentees, it can use a hash filter
1646orsilently switch to allmulti or promiscuous mode if it is given 1635orsilently switch to allmulti or promiscuous mode if it is given
1647too many addresses. 1636too many addresses.
1648] This table is set using the class VIRTIO_NET_CTRL_MAC and the 1637] This table is set using the class VIRTIO_NET_CTRL_MAC and the
@@ -1665,6 +1654,38 @@ can control a VLAN filter table in the device.
1665Both the VIRTIO_NET_CTRL_VLAN_ADD and VIRTIO_NET_CTRL_VLAN_DEL 1654Both the VIRTIO_NET_CTRL_VLAN_ADD and VIRTIO_NET_CTRL_VLAN_DEL
1666command take a 16-bit VLAN id as the command-specific-data. 1655command take a 16-bit VLAN id as the command-specific-data.
1667 1656
1657 Gratuitous Packet Sending
1658
1659If the driver negotiates the VIRTIO_NET_F_GUEST_ANNOUNCE (depends
1660on VIRTIO_NET_F_CTRL_VQ), it can ask the guest to send gratuitous
1661packets; this is usually done after the guest has been physically
1662migrated, and needs to announce its presence on the new network
1663links. (As hypervisor does not have the knowledge of guest
1664network configuration (eg. tagged vlan) it is simplest to prod
1665the guest in this way).
1666
1667#define VIRTIO_NET_CTRL_ANNOUNCE 3
1668
1669 #define VIRTIO_NET_CTRL_ANNOUNCE_ACK 0
1670
1671The Guest needs to check VIRTIO_NET_S_ANNOUNCE bit in status
1672field when it notices the changes of device configuration. The
1673command VIRTIO_NET_CTRL_ANNOUNCE_ACK is used to indicate that
1674driver has recevied the notification and device would clear the
1675VIRTIO_NET_S_ANNOUNCE bit in the status filed after it received
1676this command.
1677
1678Processing this notification involves:
1679
1680 Sending the gratuitous packets or marking there are pending
1681 gratuitous packets to be sent and letting deferred routine to
1682 send them.
1683
1684 Sending VIRTIO_NET_CTRL_ANNOUNCE_ACK command through control
1685 vq.
1686
1687 .
1688
1668Appendix D: Block Device 1689Appendix D: Block Device
1669 1690
1670The virtio block device is a simple virtual block device (ie. 1691The virtio block device is a simple virtual block device (ie.
@@ -1699,8 +1720,6 @@ device except where noted.
1699 1720
1700 VIRTIO_BLK_F_FLUSH (9) Cache flush command support. 1721 VIRTIO_BLK_F_FLUSH (9) Cache flush command support.
1701 1722
1702
1703
1704 Device configuration layout The capacity of the device 1723 Device configuration layout The capacity of the device
1705 (expressed in 512-byte sectors) is always present. The 1724 (expressed in 512-byte sectors) is always present. The
1706 availability of the others all depend on various feature bits 1725 availability of the others all depend on various feature bits
@@ -1743,8 +1762,6 @@ device except where noted.
1743 If the VIRTIO_BLK_F_RO feature is set by the device, any write 1762 If the VIRTIO_BLK_F_RO feature is set by the device, any write
1744 requests will fail. 1763 requests will fail.
1745 1764
1746
1747
1748 Device Operation 1765 Device Operation
1749 1766
1750The driver queues requests to the virtqueue, and they are used by 1767The driver queues requests to the virtqueue, and they are used by
@@ -1805,7 +1822,7 @@ the FLUSH and FLUSH_OUT types are equivalent, the device does not
1805distinguish between them 1822distinguish between them
1806]). If the device has VIRTIO_BLK_F_BARRIER feature the high bit 1823]). If the device has VIRTIO_BLK_F_BARRIER feature the high bit
1807(VIRTIO_BLK_T_BARRIER) indicates that this request acts as a 1824(VIRTIO_BLK_T_BARRIER) indicates that this request acts as a
1808barrier and that all preceding requests must be complete before 1825barrier and that all preceeding requests must be complete before
1809this one, and all following requests must not be started until 1826this one, and all following requests must not be started until
1810this is complete. Note that a barrier does not flush caches in 1827this is complete. Note that a barrier does not flush caches in
1811the underlying backend device in host, and thus does not serve as 1828the underlying backend device in host, and thus does not serve as
@@ -2118,7 +2135,7 @@ This is historical, and independent of the guest page size
2118 2135
2119 Otherwise, the guest may begin to re-use pages previously given 2136 Otherwise, the guest may begin to re-use pages previously given
2120 to the balloon before the device has acknowledged their 2137 to the balloon before the device has acknowledged their
2121 withdrawal. [footnote: 2138 withdrawl. [footnote:
2122In this case, deflation advice is merely a courtesy 2139In this case, deflation advice is merely a courtesy
2123] 2140]
2124 2141
@@ -2198,3 +2215,996 @@ as follows:
2198 VIRTIO_BALLOON_S_MEMTOT The total amount of memory available 2215 VIRTIO_BALLOON_S_MEMTOT The total amount of memory available
2199 (in bytes). 2216 (in bytes).
2200 2217
2218Appendix H: Rpmsg: Remote Processor Messaging
2219
2220Virtio rpmsg devices represent remote processors on the system
2221which run in asymmetric multi-processing (AMP) configuration, and
2222which are usually used to offload cpu-intensive tasks from the
2223main application processor (a typical SoC methodology).
2224
2225Virtio is being used to communicate with those remote processors;
2226empty buffers are placed in one virtqueue for receiving messages,
2227and non-empty buffers, containing outbound messages, are enqueued
2228in a second virtqueue for transmission.
2229
2230Numerous communication channels can be multiplexed over those two
2231virtqueues, so different entities, running on the application and
2232remote processor, can directly communicate in a point-to-point
2233fashion.
2234
2235 Configuration
2236
2237 Subsystem Device ID 7
2238
2239 Virtqueues 0:receiveq. 1:transmitq.
2240
2241 Feature bits
2242
2243 VIRTIO_RPMSG_F_NS (0) Device sends (and capable of receiving)
2244 name service messages announcing the creation (or
2245 destruction) of a channel:/**
2246
2247 * struct rpmsg_ns_msg - dynamic name service announcement
2248message
2249
2250 * @name: name of remote service that is published
2251
2252 * @addr: address of remote service that is published
2253
2254 * @flags: indicates whether service is created or destroyed
2255
2256 *
2257
2258 * This message is sent across to publish a new service (or
2259announce
2260
2261 * about its removal). When we receives these messages, an
2262appropriate
2263
2264 * rpmsg channel (i.e device) is created/destroyed.
2265
2266 */
2267
2268struct rpmsg_ns_msgoon_config {
2269
2270 char name[RPMSG_NAME_SIZE];
2271
2272 u32 addr;
2273
2274 u32 flags;
2275
2276} __packed;
2277
2278
2279
2280/**
2281
2282 * enum rpmsg_ns_flags - dynamic name service announcement flags
2283
2284 *
2285
2286 * @RPMSG_NS_CREATE: a new remote service was just created
2287
2288 * @RPMSG_NS_DESTROY: a remote service was just destroyed
2289
2290 */
2291
2292enum rpmsg_ns_flags {
2293
2294 RPMSG_NS_CREATE = 0,
2295
2296 RPMSG_NS_DESTROY = 1,
2297
2298};
2299
2300 Device configuration layout
2301
2302At his point none currently defined.
2303
2304 Device Initialization
2305
2306 The initialization routine should identify the receive and
2307 transmission virtqueues.
2308
2309 The receive virtqueue should be filled with receive buffers.
2310
2311 Device Operation
2312
2313Messages are transmitted by placing them in the transmitq, and
2314buffers for inbound messages are placed in the receiveq. In any
2315case, messages are always preceded by the following header: /**
2316
2317 * struct rpmsg_hdr - common header for all rpmsg messages
2318
2319 * @src: source address
2320
2321 * @dst: destination address
2322
2323 * @reserved: reserved for future use
2324
2325 * @len: length of payload (in bytes)
2326
2327 * @flags: message flags
2328
2329 * @data: @len bytes of message payload data
2330
2331 *
2332
2333 * Every message sent(/received) on the rpmsg bus begins with
2334this header.
2335
2336 */
2337
2338struct rpmsg_hdr {
2339
2340 u32 src;
2341
2342 u32 dst;
2343
2344 u32 reserved;
2345
2346 u16 len;
2347
2348 u16 flags;
2349
2350 u8 data[0];
2351
2352} __packed;
2353
2354Appendix I: SCSI Host Device
2355
2356The virtio SCSI host device groups together one or more virtual
2357logical units (such as disks), and allows communicating to them
2358using the SCSI protocol. An instance of the device represents a
2359SCSI host to which many targets and LUNs are attached.
2360
2361The virtio SCSI device services two kinds of requests:
2362
2363 command requests for a logical unit;
2364
2365 task management functions related to a logical unit, target or
2366 command.
2367
2368The device is also able to send out notifications about added and
2369removed logical units. Together, these capabilities provide a
2370SCSI transport protocol that uses virtqueues as the transfer
2371medium. In the transport protocol, the virtio driver acts as the
2372initiator, while the virtio SCSI host provides one or more
2373targets that receive and process the requests.
2374
2375 Configuration
2376
2377 Subsystem Device ID 8
2378
2379 Virtqueues 0:controlq; 1:eventq; 2..n:request queues.
2380
2381 Feature bits
2382
2383 VIRTIO_SCSI_F_INOUT (0) A single request can include both
2384 read-only and write-only data buffers.
2385
2386 VIRTIO_SCSI_F_HOTPLUG (1) The host should enable
2387 hot-plug/hot-unplug of new LUNs and targets on the SCSI bus.
2388
2389 Device configuration layout All fields of this configuration
2390 are always available. sense_size and cdb_size are writable by
2391 the guest.struct virtio_scsi_config {
2392
2393 u32 num_queues;
2394
2395 u32 seg_max;
2396
2397 u32 max_sectors;
2398
2399 u32 cmd_per_lun;
2400
2401 u32 event_info_size;
2402
2403 u32 sense_size;
2404
2405 u32 cdb_size;
2406
2407 u16 max_channel;
2408
2409 u16 max_target;
2410
2411 u32 max_lun;
2412
2413};
2414
2415 num_queues is the total number of request virtqueues exposed by
2416 the device. The driver is free to use only one request queue,
2417 or it can use more to achieve better performance.
2418
2419 seg_max is the maximum number of segments that can be in a
2420 command. A bidirectional command can include seg_max input
2421 segments and seg_max output segments.
2422
2423 max_sectors is a hint to the guest about the maximum transfer
2424 size it should use.
2425
2426 cmd_per_lun is a hint to the guest about the maximum number of
2427 linked commands it should send to one LUN. The actual value
2428 to be used is the minimum of cmd_per_lun and the virtqueue
2429 size.
2430
2431 event_info_size is the maximum size that the device will fill
2432 for buffers that the driver places in the eventq. The driver
2433 should always put buffers at least of this size. It is
2434 written by the device depending on the set of negotated
2435 features.
2436
2437 sense_size is the maximum size of the sense data that the
2438 device will write. The default value is written by the device
2439 and will always be 96, but the driver can modify it. It is
2440 restored to the default when the device is reset.
2441
2442 cdb_size is the maximum size of the CDB that the driver will
2443 write. The default value is written by the device and will
2444 always be 32, but the driver can likewise modify it. It is
2445 restored to the default when the device is reset.
2446
2447 max_channel, max_target and max_lun can be used by the driver
2448 as hints to constrain scanning the logical units on the
2449 host.h
2450
2451 Device Initialization
2452
2453The initialization routine should first of all discover the
2454device's virtqueues.
2455
2456If the driver uses the eventq, it should then place at least a
2457buffer in the eventq.
2458
2459The driver can immediately issue requests (for example, INQUIRY
2460or REPORT LUNS) or task management functions (for example, I_T
2461RESET).
2462
2463 Device Operation: request queues
2464
2465The driver queues requests to an arbitrary request queue, and
2466they are used by the device on that same queue. It is the
2467responsibility of the driver to ensure strict request ordering
2468for commands placed on different queues, because they will be
2469consumed with no order constraints.
2470
2471Requests have the following format:
2472
2473struct virtio_scsi_req_cmd {
2474
2475 // Read-only
2476
2477 u8 lun[8];
2478
2479 u64 id;
2480
2481 u8 task_attr;
2482
2483 u8 prio;
2484
2485 u8 crn;
2486
2487 char cdb[cdb_size];
2488
2489 char dataout[];
2490
2491 // Write-only part
2492
2493 u32 sense_len;
2494
2495 u32 residual;
2496
2497 u16 status_qualifier;
2498
2499 u8 status;
2500
2501 u8 response;
2502
2503 u8 sense[sense_size];
2504
2505 char datain[];
2506
2507};
2508
2509
2510
2511/* command-specific response values */
2512
2513#define VIRTIO_SCSI_S_OK 0
2514
2515#define VIRTIO_SCSI_S_OVERRUN 1
2516
2517#define VIRTIO_SCSI_S_ABORTED 2
2518
2519#define VIRTIO_SCSI_S_BAD_TARGET 3
2520
2521#define VIRTIO_SCSI_S_RESET 4
2522
2523#define VIRTIO_SCSI_S_BUSY 5
2524
2525#define VIRTIO_SCSI_S_TRANSPORT_FAILURE 6
2526
2527#define VIRTIO_SCSI_S_TARGET_FAILURE 7
2528
2529#define VIRTIO_SCSI_S_NEXUS_FAILURE 8
2530
2531#define VIRTIO_SCSI_S_FAILURE 9
2532
2533
2534
2535/* task_attr */
2536
2537#define VIRTIO_SCSI_S_SIMPLE 0
2538
2539#define VIRTIO_SCSI_S_ORDERED 1
2540
2541#define VIRTIO_SCSI_S_HEAD 2
2542
2543#define VIRTIO_SCSI_S_ACA 3
2544
2545The lun field addresses a target and logical unit in the
2546virtio-scsi device's SCSI domain. The only supported format for
2547the LUN field is: first byte set to 1, second byte set to target,
2548third and fourth byte representing a single level LUN structure,
2549followed by four zero bytes. With this representation, a
2550virtio-scsi device can serve up to 256 targets and 16384 LUNs per
2551target.
2552
2553The id field is the command identifier (“tag”).
2554
2555task_attr, prio and crn should be left to zero. task_attr defines
2556the task attribute as in the table above, but all task attributes
2557may be mapped to SIMPLE by the device; crn may also be provided
2558by clients, but is generally expected to be 0. The maximum CRN
2559value defined by the protocol is 255, since CRN is stored in an
25608-bit integer.
2561
2562All of these fields are defined in SAM. They are always
2563read-only, as are the cdb and dataout field. The cdb_size is
2564taken from the configuration space.
2565
2566sense and subsequent fields are always write-only. The sense_len
2567field indicates the number of bytes actually written to the sense
2568buffer. The residual field indicates the residual size,
2569calculated as “data_length - number_of_transferred_bytes”, for
2570read or write operations. For bidirectional commands, the
2571number_of_transferred_bytes includes both read and written bytes.
2572A residual field that is less than the size of datain means that
2573the dataout field was processed entirely. A residual field that
2574exceeds the size of datain means that the dataout field was
2575processed partially and the datain field was not processed at
2576all.
2577
2578The status byte is written by the device to be the status code as
2579defined in SAM.
2580
2581The response byte is written by the device to be one of the
2582following:
2583
2584 VIRTIO_SCSI_S_OK when the request was completed and the status
2585 byte is filled with a SCSI status code (not necessarily
2586 "GOOD").
2587
2588 VIRTIO_SCSI_S_OVERRUN if the content of the CDB requires
2589 transferring more data than is available in the data buffers.
2590
2591 VIRTIO_SCSI_S_ABORTED if the request was cancelled due to an
2592 ABORT TASK or ABORT TASK SET task management function.
2593
2594 VIRTIO_SCSI_S_BAD_TARGET if the request was never processed
2595 because the target indicated by the lun field does not exist.
2596
2597 VIRTIO_SCSI_S_RESET if the request was cancelled due to a bus
2598 or device reset (including a task management function).
2599
2600 VIRTIO_SCSI_S_TRANSPORT_FAILURE if the request failed due to a
2601 problem in the connection between the host and the target
2602 (severed link).
2603
2604 VIRTIO_SCSI_S_TARGET_FAILURE if the target is suffering a
2605 failure and the guest should not retry on other paths.
2606
2607 VIRTIO_SCSI_S_NEXUS_FAILURE if the nexus is suffering a failure
2608 but retrying on other paths might yield a different result.
2609
2610 VIRTIO_SCSI_S_BUSY if the request failed but retrying on the
2611 same path should work.
2612
2613 VIRTIO_SCSI_S_FAILURE for other host or guest error. In
2614 particular, if neither dataout nor datain is empty, and the
2615 VIRTIO_SCSI_F_INOUT feature has not been negotiated, the
2616 request will be immediately returned with a response equal to
2617 VIRTIO_SCSI_S_FAILURE.
2618
2619 Device Operation: controlq
2620
2621The controlq is used for other SCSI transport operations.
2622Requests have the following format:
2623
2624struct virtio_scsi_ctrl {
2625
2626 u32 type;
2627
2628 ...
2629
2630 u8 response;
2631
2632};
2633
2634
2635
2636/* response values valid for all commands */
2637
2638#define VIRTIO_SCSI_S_OK 0
2639
2640#define VIRTIO_SCSI_S_BAD_TARGET 3
2641
2642#define VIRTIO_SCSI_S_BUSY 5
2643
2644#define VIRTIO_SCSI_S_TRANSPORT_FAILURE 6
2645
2646#define VIRTIO_SCSI_S_TARGET_FAILURE 7
2647
2648#define VIRTIO_SCSI_S_NEXUS_FAILURE 8
2649
2650#define VIRTIO_SCSI_S_FAILURE 9
2651
2652#define VIRTIO_SCSI_S_INCORRECT_LUN 12
2653
2654The type identifies the remaining fields.
2655
2656The following commands are defined:
2657
2658 Task management function
2659#define VIRTIO_SCSI_T_TMF 0
2660
2661
2662
2663#define VIRTIO_SCSI_T_TMF_ABORT_TASK 0
2664
2665#define VIRTIO_SCSI_T_TMF_ABORT_TASK_SET 1
2666
2667#define VIRTIO_SCSI_T_TMF_CLEAR_ACA 2
2668
2669#define VIRTIO_SCSI_T_TMF_CLEAR_TASK_SET 3
2670
2671#define VIRTIO_SCSI_T_TMF_I_T_NEXUS_RESET 4
2672
2673#define VIRTIO_SCSI_T_TMF_LOGICAL_UNIT_RESET 5
2674
2675#define VIRTIO_SCSI_T_TMF_QUERY_TASK 6
2676
2677#define VIRTIO_SCSI_T_TMF_QUERY_TASK_SET 7
2678
2679
2680
2681struct virtio_scsi_ctrl_tmf
2682
2683{
2684
2685 // Read-only part
2686
2687 u32 type;
2688
2689 u32 subtype;
2690
2691 u8 lun[8];
2692
2693 u64 id;
2694
2695 // Write-only part
2696
2697 u8 response;
2698
2699}
2700
2701
2702
2703/* command-specific response values */
2704
2705#define VIRTIO_SCSI_S_FUNCTION_COMPLETE 0
2706
2707#define VIRTIO_SCSI_S_FUNCTION_SUCCEEDED 10
2708
2709#define VIRTIO_SCSI_S_FUNCTION_REJECTED 11
2710
2711 The type is VIRTIO_SCSI_T_TMF; the subtype field defines. All
2712 fields except response are filled by the driver. The subtype
2713 field must always be specified and identifies the requested
2714 task management function.
2715
2716 Other fields may be irrelevant for the requested TMF; if so,
2717 they are ignored but they should still be present. The lun
2718 field is in the same format specified for request queues; the
2719 single level LUN is ignored when the task management function
2720 addresses a whole I_T nexus. When relevant, the value of the id
2721 field is matched against the id values passed on the requestq.
2722
2723 The outcome of the task management function is written by the
2724 device in the response field. The command-specific response
2725 values map 1-to-1 with those defined in SAM.
2726
2727 Asynchronous notification query
2728#define VIRTIO_SCSI_T_AN_QUERY 1
2729
2730
2731
2732struct virtio_scsi_ctrl_an {
2733
2734 // Read-only part
2735
2736 u32 type;
2737
2738 u8 lun[8];
2739
2740 u32 event_requested;
2741
2742 // Write-only part
2743
2744 u32 event_actual;
2745
2746 u8 response;
2747
2748}
2749
2750
2751
2752#define VIRTIO_SCSI_EVT_ASYNC_OPERATIONAL_CHANGE 2
2753
2754#define VIRTIO_SCSI_EVT_ASYNC_POWER_MGMT 4
2755
2756#define VIRTIO_SCSI_EVT_ASYNC_EXTERNAL_REQUEST 8
2757
2758#define VIRTIO_SCSI_EVT_ASYNC_MEDIA_CHANGE 16
2759
2760#define VIRTIO_SCSI_EVT_ASYNC_MULTI_HOST 32
2761
2762#define VIRTIO_SCSI_EVT_ASYNC_DEVICE_BUSY 64
2763
2764 By sending this command, the driver asks the device which
2765 events the given LUN can report, as described in paragraphs 6.6
2766 and A.6 of the SCSI MMC specification. The driver writes the
2767 events it is interested in into the event_requested; the device
2768 responds by writing the events that it supports into
2769 event_actual.
2770
2771 The type is VIRTIO_SCSI_T_AN_QUERY. The lun and event_requested
2772 fields are written by the driver. The event_actual and response
2773 fields are written by the device.
2774
2775 No command-specific values are defined for the response byte.
2776
2777 Asynchronous notification subscription
2778#define VIRTIO_SCSI_T_AN_SUBSCRIBE 2
2779
2780
2781
2782struct virtio_scsi_ctrl_an {
2783
2784 // Read-only part
2785
2786 u32 type;
2787
2788 u8 lun[8];
2789
2790 u32 event_requested;
2791
2792 // Write-only part
2793
2794 u32 event_actual;
2795
2796 u8 response;
2797
2798}
2799
2800 By sending this command, the driver asks the specified LUN to
2801 report events for its physical interface, again as described in
2802 the SCSI MMC specification. The driver writes the events it is
2803 interested in into the event_requested; the device responds by
2804 writing the events that it supports into event_actual.
2805
2806 Event types are the same as for the asynchronous notification
2807 query message.
2808
2809 The type is VIRTIO_SCSI_T_AN_SUBSCRIBE. The lun and
2810 event_requested fields are written by the driver. The
2811 event_actual and response fields are written by the device.
2812
2813 No command-specific values are defined for the response byte.
2814
2815 Device Operation: eventq
2816
2817The eventq is used by the device to report information on logical
2818units that are attached to it. The driver should always leave a
2819few buffers ready in the eventq. In general, the device will not
2820queue events to cope with an empty eventq, and will end up
2821dropping events if it finds no buffer ready. However, when
2822reporting events for many LUNs (e.g. when a whole target
2823disappears), the device can throttle events to avoid dropping
2824them. For this reason, placing 10-15 buffers on the event queue
2825should be enough.
2826
2827Buffers are placed in the eventq and filled by the device when
2828interesting events occur. The buffers should be strictly
2829write-only (device-filled) and the size of the buffers should be
2830at least the value given in the device's configuration
2831information.
2832
2833Buffers returned by the device on the eventq will be referred to
2834as "events" in the rest of this section. Events have the
2835following format:
2836
2837#define VIRTIO_SCSI_T_EVENTS_MISSED 0x80000000
2838
2839
2840
2841struct virtio_scsi_event {
2842
2843 // Write-only part
2844
2845 u32 event;
2846
2847 ...
2848
2849}
2850
2851If bit 31 is set in the event field, the device failed to report
2852an event due to missing buffers. In this case, the driver should
2853poll the logical units for unit attention conditions, and/or do
2854whatever form of bus scan is appropriate for the guest operating
2855system.
2856
2857Other data that the device writes to the buffer depends on the
2858contents of the event field. The following events are defined:
2859
2860 No event
2861#define VIRTIO_SCSI_T_NO_EVENT 0
2862
2863 This event is fired in the following cases:
2864
2865 When the device detects in the eventq a buffer that is shorter
2866 than what is indicated in the configuration field, it might
2867 use it immediately and put this dummy value in the event
2868 field. A well-written driver will never observe this
2869 situation.
2870
2871 When events are dropped, the device may signal this event as
2872 soon as the drivers makes a buffer available, in order to
2873 request action from the driver. In this case, of course, this
2874 event will be reported with the VIRTIO_SCSI_T_EVENTS_MISSED
2875 flag.
2876
2877 Transport reset
2878#define VIRTIO_SCSI_T_TRANSPORT_RESET 1
2879
2880
2881
2882struct virtio_scsi_event_reset {
2883
2884 // Write-only part
2885
2886 u32 event;
2887
2888 u8 lun[8];
2889
2890 u32 reason;
2891
2892}
2893
2894
2895
2896#define VIRTIO_SCSI_EVT_RESET_HARD 0
2897
2898#define VIRTIO_SCSI_EVT_RESET_RESCAN 1
2899
2900#define VIRTIO_SCSI_EVT_RESET_REMOVED 2
2901
2902 By sending this event, the device signals that a logical unit
2903 on a target has been reset, including the case of a new device
2904 appearing or disappearing on the bus.The device fills in all
2905 fields. The event field is set to
2906 VIRTIO_SCSI_T_TRANSPORT_RESET. The lun field addresses a
2907 logical unit in the SCSI host.
2908
2909 The reason value is one of the three #define values appearing
2910 above:
2911
2912 VIRTIO_SCSI_EVT_RESET_REMOVED (“LUN/target removed”) is used if
2913 the target or logical unit is no longer able to receive
2914 commands.
2915
2916 VIRTIO_SCSI_EVT_RESET_HARD (“LUN hard reset”) is used if the
2917 logical unit has been reset, but is still present.
2918
2919 VIRTIO_SCSI_EVT_RESET_RESCAN (“rescan LUN/target”) is used if a
2920 target or logical unit has just appeared on the device.
2921
2922 The “removed” and “rescan” events, when sent for LUN 0, may
2923 apply to the entire target. After receiving them the driver
2924 should ask the initiator to rescan the target, in order to
2925 detect the case when an entire target has appeared or
2926 disappeared. These two events will never be reported unless the
2927 VIRTIO_SCSI_F_HOTPLUG feature was negotiated between the host
2928 and the guest.
2929
2930 Events will also be reported via sense codes (this obviously
2931 does not apply to newly appeared buses or targets, since the
2932 application has never discovered them):
2933
2934 “LUN/target removed” maps to sense key ILLEGAL REQUEST, asc
2935 0x25, ascq 0x00 (LOGICAL UNIT NOT SUPPORTED)
2936
2937 “LUN hard reset” maps to sense key UNIT ATTENTION, asc 0x29
2938 (POWER ON, RESET OR BUS DEVICE RESET OCCURRED)
2939
2940 “rescan LUN/target” maps to sense key UNIT ATTENTION, asc 0x3f,
2941 ascq 0x0e (REPORTED LUNS DATA HAS CHANGED)
2942
2943 The preferred way to detect transport reset is always to use
2944 events, because sense codes are only seen by the driver when it
2945 sends a SCSI command to the logical unit or target. However, in
2946 case events are dropped, the initiator will still be able to
2947 synchronize with the actual state of the controller if the
2948 driver asks the initiator to rescan of the SCSI bus. During the
2949 rescan, the initiator will be able to observe the above sense
2950 codes, and it will process them as if it the driver had
2951 received the equivalent event.
2952
2953 Asynchronous notification
2954#define VIRTIO_SCSI_T_ASYNC_NOTIFY 2
2955
2956
2957
2958struct virtio_scsi_event_an {
2959
2960 // Write-only part
2961
2962 u32 event;
2963
2964 u8 lun[8];
2965
2966 u32 reason;
2967
2968}
2969
2970 By sending this event, the device signals that an asynchronous
2971 event was fired from a physical interface.
2972
2973 All fields are written by the device. The event field is set to
2974 VIRTIO_SCSI_T_ASYNC_NOTIFY. The lun field addresses a logical
2975 unit in the SCSI host. The reason field is a subset of the
2976 events that the driver has subscribed to via the "Asynchronous
2977 notification subscription" command.
2978
2979 When dropped events are reported, the driver should poll for
2980 asynchronous events manually using SCSI commands.
2981
2982Appendix X: virtio-mmio
2983
2984Virtual environments without PCI support (a common situation in
2985embedded devices models) might use simple memory mapped device (“
2986virtio-mmio”) instead of the PCI device.
2987
2988The memory mapped virtio device behaviour is based on the PCI
2989device specification. Therefore most of operations like device
2990initialization, queues configuration and buffer transfers are
2991nearly identical. Existing differences are described in the
2992following sections.
2993
2994 Device Initialization
2995
2996Instead of using the PCI IO space for virtio header, the “
2997virtio-mmio” device provides a set of memory mapped control
2998registers, all 32 bits wide, followed by device-specific
2999configuration space. The following list presents their layout:
3000
3001 Offset from the device base address | Direction | Name
3002 Description
3003
3004 0x000 | R | MagicValue
3005 “virt” string.
3006
3007 0x004 | R | Version
3008 Device version number. Currently must be 1.
3009
3010 0x008 | R | DeviceID
3011 Virtio Subsystem Device ID (ie. 1 for network card).
3012
3013 0x00c | R | VendorID
3014 Virtio Subsystem Vendor ID.
3015
3016 0x010 | R | HostFeatures
3017 Flags representing features the device supports.
3018 Reading from this register returns 32 consecutive flag bits,
3019 first bit depending on the last value written to
3020 HostFeaturesSel register. Access to this register returns bits HostFeaturesSel*32
3021
3022 to (HostFeaturesSel*32)+31
3023, eg. feature bits 0 to 31 if
3024 HostFeaturesSel is set to 0 and features bits 32 to 63 if
3025 HostFeaturesSel is set to 1. Also see [sub:Feature-Bits]
3026
3027 0x014 | W | HostFeaturesSel
3028 Device (Host) features word selection.
3029 Writing to this register selects a set of 32 device feature bits
3030 accessible by reading from HostFeatures register. Device driver
3031 must write a value to the HostFeaturesSel register before
3032 reading from the HostFeatures register.
3033
3034 0x020 | W | GuestFeatures
3035 Flags representing device features understood and activated by
3036 the driver.
3037 Writing to this register sets 32 consecutive flag bits, first
3038 bit depending on the last value written to GuestFeaturesSel
3039 register. Access to this register sets bits GuestFeaturesSel*32
3040
3041 to (GuestFeaturesSel*32)+31
3042, eg. feature bits 0 to 31 if
3043 GuestFeaturesSel is set to 0 and features bits 32 to 63 if
3044 GuestFeaturesSel is set to 1. Also see [sub:Feature-Bits]
3045
3046 0x024 | W | GuestFeaturesSel
3047 Activated (Guest) features word selection.
3048 Writing to this register selects a set of 32 activated feature
3049 bits accessible by writing to the GuestFeatures register.
3050 Device driver must write a value to the GuestFeaturesSel
3051 register before writing to the GuestFeatures register.
3052
3053 0x028 | W | GuestPageSize
3054 Guest page size.
3055 Device driver must write the guest page size in bytes to the
3056 register during initialization, before any queues are used.
3057 This value must be a power of 2 and is used by the Host to
3058 calculate Guest address of the first queue page (see QueuePFN).
3059
3060 0x030 | W | QueueSel
3061 Virtual queue index (first queue is 0).
3062 Writing to this register selects the virtual queue that the
3063 following operations on QueueNum, QueueAlign and QueuePFN apply
3064 to.
3065
3066 0x034 | R | QueueNumMax
3067 Maximum virtual queue size.
3068 Reading from the register returns the maximum size of the queue
3069 the Host is ready to process or zero (0x0) if the queue is not
3070 available. This applies to the queue selected by writing to
3071 QueueSel and is allowed only when QueuePFN is set to zero
3072 (0x0), so when the queue is not actively used.
3073
3074 0x038 | W | QueueNum
3075 Virtual queue size.
3076 Queue size is a number of elements in the queue, therefore size
3077 of the descriptor table and both available and used rings.
3078 Writing to this register notifies the Host what size of the
3079 queue the Guest will use. This applies to the queue selected by
3080 writing to QueueSel.
3081
3082 0x03c | W | QueueAlign
3083 Used Ring alignment in the virtual queue.
3084 Writing to this register notifies the Host about alignment
3085 boundary of the Used Ring in bytes. This value must be a power
3086 of 2 and applies to the queue selected by writing to QueueSel.
3087
3088 0x040 | RW | QueuePFN
3089 Guest physical page number of the virtual queue.
3090 Writing to this register notifies the host about location of the
3091 virtual queue in the Guest's physical address space. This value
3092 is the index number of a page starting with the queue
3093 Descriptor Table. Value zero (0x0) means physical address zero
3094 (0x00000000) and is illegal. When the Guest stops using the
3095 queue it must write zero (0x0) to this register.
3096 Reading from this register returns the currently used page
3097 number of the queue, therefore a value other than zero (0x0)
3098 means that the queue is in use.
3099 Both read and write accesses apply to the queue selected by
3100 writing to QueueSel.
3101
3102 0x050 | W | QueueNotify
3103 Queue notifier.
3104 Writing a queue index to this register notifies the Host that
3105 there are new buffers to process in the queue.
3106
3107 0x60 | R | InterruptStatus
3108Interrupt status.
3109Reading from this register returns a bit mask of interrupts
3110 asserted by the device. An interrupt is asserted if the
3111 corresponding bit is set, ie. equals one (1).
3112
3113 Bit 0 | Used Ring Update
3114This interrupt is asserted when the Host has updated the Used
3115 Ring in at least one of the active virtual queues.
3116
3117 Bit 1 | Configuration change
3118This interrupt is asserted when configuration of the device has
3119 changed.
3120
3121 0x064 | W | InterruptACK
3122 Interrupt acknowledge.
3123 Writing to this register notifies the Host that the Guest
3124 finished handling interrupts. Set bits in the value clear the
3125 corresponding bits of the InterruptStatus register.
3126
3127 0x070 | RW | Status
3128 Device status.
3129 Reading from this register returns the current device status
3130 flags.
3131 Writing non-zero values to this register sets the status flags,
3132 indicating the Guest progress. Writing zero (0x0) to this
3133 register triggers a device reset.
3134 Also see [sub:Device-Initialization-Sequence]
3135
3136 0x100+ | RW | Config
3137 Device-specific configuration space starts at an offset 0x100
3138 and is accessed with byte alignment. Its meaning and size
3139 depends on the device and the driver.
3140
3141Virtual queue size is a number of elements in the queue,
3142therefore size of the descriptor table and both available and
3143used rings.
3144
3145The endianness of the registers follows the native endianness of
3146the Guest. Writing to registers described as “R” and reading from
3147registers described as “W” is not permitted and can cause
3148undefined behavior.
3149
3150The device initialization is performed as described in [sub:Device-Initialization-Sequence]
3151 with one exception: the Guest must notify the Host about its
3152page size, writing the size in bytes to GuestPageSize register
3153before the initialization is finished.
3154
3155The memory mapped virtio devices generate single interrupt only,
3156therefore no special configuration is required.
3157
3158 Virtqueue Configuration
3159
3160The virtual queue configuration is performed in a similar way to
3161the one described in [sec:Virtqueue-Configuration] with a few
3162additional operations:
3163
3164 Select the queue writing its index (first queue is 0) to the
3165 QueueSel register.
3166
3167 Check if the queue is not already in use: read QueuePFN
3168 register, returned value should be zero (0x0).
3169
3170 Read maximum queue size (number of elements) from the
3171 QueueNumMax register. If the returned value is zero (0x0) the
3172 queue is not available.
3173
3174 Allocate and zero the queue pages in contiguous virtual memory,
3175 aligning the Used Ring to an optimal boundary (usually page
3176 size). Size of the allocated queue may be smaller than or equal
3177 to the maximum size returned by the Host.
3178
3179 Notify the Host about the queue size by writing the size to
3180 QueueNum register.
3181
3182 Notify the Host about the used alignment by writing its value
3183 in bytes to QueueAlign register.
3184
3185 Write the physical number of the first page of the queue to the
3186 QueuePFN register.
3187
3188The queue and the device are ready to begin normal operations
3189now.
3190
3191 Device Operation
3192
3193The memory mapped virtio device behaves in the same way as
3194described in [sec:Device-Operation], with the following
3195exceptions:
3196
3197 The device is notified about new buffers available in a queue
3198 by writing the queue index to register QueueNum instead of the
3199 virtio header in PCI I/O space ([sub:Notifying-The-Device]).
3200
3201 The memory mapped virtio device is using single, dedicated
3202 interrupt signal, which is raised when at least one of the
3203 interrupts described in the InterruptStatus register
3204 description is asserted. After receiving an interrupt, the
3205 driver must read the InterruptStatus register to check what
3206 caused the interrupt (see the register description). After the
3207 interrupt is handled, the driver must acknowledge it by writing
3208 a bit mask corresponding to the serviced interrupt to the
3209 InterruptACK register.
3210
diff --git a/Documentation/vm/frontswap.txt b/Documentation/vm/frontswap.txt
new file mode 100644
index 000000000000..37067cf455f4
--- /dev/null
+++ b/Documentation/vm/frontswap.txt
@@ -0,0 +1,278 @@
1Frontswap provides a "transcendent memory" interface for swap pages.
2In some environments, dramatic performance savings may be obtained because
3swapped pages are saved in RAM (or a RAM-like device) instead of a swap disk.
4
5(Note, frontswap -- and cleancache (merged at 3.0) -- are the "frontends"
6and the only necessary changes to the core kernel for transcendent memory;
7all other supporting code -- the "backends" -- is implemented as drivers.
8See the LWN.net article "Transcendent memory in a nutshell" for a detailed
9overview of frontswap and related kernel parts:
10https://lwn.net/Articles/454795/ )
11
12Frontswap is so named because it can be thought of as the opposite of
13a "backing" store for a swap device. The storage is assumed to be
14a synchronous concurrency-safe page-oriented "pseudo-RAM device" conforming
15to the requirements of transcendent memory (such as Xen's "tmem", or
16in-kernel compressed memory, aka "zcache", or future RAM-like devices);
17this pseudo-RAM device is not directly accessible or addressable by the
18kernel and is of unknown and possibly time-varying size. The driver
19links itself to frontswap by calling frontswap_register_ops to set the
20frontswap_ops funcs appropriately and the functions it provides must
21conform to certain policies as follows:
22
23An "init" prepares the device to receive frontswap pages associated
24with the specified swap device number (aka "type"). A "store" will
25copy the page to transcendent memory and associate it with the type and
26offset associated with the page. A "load" will copy the page, if found,
27from transcendent memory into kernel memory, but will NOT remove the page
28from from transcendent memory. An "invalidate_page" will remove the page
29from transcendent memory and an "invalidate_area" will remove ALL pages
30associated with the swap type (e.g., like swapoff) and notify the "device"
31to refuse further stores with that swap type.
32
33Once a page is successfully stored, a matching load on the page will normally
34succeed. So when the kernel finds itself in a situation where it needs
35to swap out a page, it first attempts to use frontswap. If the store returns
36success, the data has been successfully saved to transcendent memory and
37a disk write and, if the data is later read back, a disk read are avoided.
38If a store returns failure, transcendent memory has rejected the data, and the
39page can be written to swap as usual.
40
41If a backend chooses, frontswap can be configured as a "writethrough
42cache" by calling frontswap_writethrough(). In this mode, the reduction
43in swap device writes is lost (and also a non-trivial performance advantage)
44in order to allow the backend to arbitrarily "reclaim" space used to
45store frontswap pages to more completely manage its memory usage.
46
47Note that if a page is stored and the page already exists in transcendent memory
48(a "duplicate" store), either the store succeeds and the data is overwritten,
49or the store fails AND the page is invalidated. This ensures stale data may
50never be obtained from frontswap.
51
52If properly configured, monitoring of frontswap is done via debugfs in
53the /sys/kernel/debug/frontswap directory. The effectiveness of
54frontswap can be measured (across all swap devices) with:
55
56failed_stores - how many store attempts have failed
57loads - how many loads were attempted (all should succeed)
58succ_stores - how many store attempts have succeeded
59invalidates - how many invalidates were attempted
60
61A backend implementation may provide additional metrics.
62
63FAQ
64
651) Where's the value?
66
67When a workload starts swapping, performance falls through the floor.
68Frontswap significantly increases performance in many such workloads by
69providing a clean, dynamic interface to read and write swap pages to
70"transcendent memory" that is otherwise not directly addressable to the kernel.
71This interface is ideal when data is transformed to a different form
72and size (such as with compression) or secretly moved (as might be
73useful for write-balancing for some RAM-like devices). Swap pages (and
74evicted page-cache pages) are a great use for this kind of slower-than-RAM-
75but-much-faster-than-disk "pseudo-RAM device" and the frontswap (and
76cleancache) interface to transcendent memory provides a nice way to read
77and write -- and indirectly "name" -- the pages.
78
79Frontswap -- and cleancache -- with a fairly small impact on the kernel,
80provides a huge amount of flexibility for more dynamic, flexible RAM
81utilization in various system configurations:
82
83In the single kernel case, aka "zcache", pages are compressed and
84stored in local memory, thus increasing the total anonymous pages
85that can be safely kept in RAM. Zcache essentially trades off CPU
86cycles used in compression/decompression for better memory utilization.
87Benchmarks have shown little or no impact when memory pressure is
88low while providing a significant performance improvement (25%+)
89on some workloads under high memory pressure.
90
91"RAMster" builds on zcache by adding "peer-to-peer" transcendent memory
92support for clustered systems. Frontswap pages are locally compressed
93as in zcache, but then "remotified" to another system's RAM. This
94allows RAM to be dynamically load-balanced back-and-forth as needed,
95i.e. when system A is overcommitted, it can swap to system B, and
96vice versa. RAMster can also be configured as a memory server so
97many servers in a cluster can swap, dynamically as needed, to a single
98server configured with a large amount of RAM... without pre-configuring
99how much of the RAM is available for each of the clients!
100
101In the virtual case, the whole point of virtualization is to statistically
102multiplex physical resources acrosst the varying demands of multiple
103virtual machines. This is really hard to do with RAM and efforts to do
104it well with no kernel changes have essentially failed (except in some
105well-publicized special-case workloads).
106Specifically, the Xen Transcendent Memory backend allows otherwise
107"fallow" hypervisor-owned RAM to not only be "time-shared" between multiple
108virtual machines, but the pages can be compressed and deduplicated to
109optimize RAM utilization. And when guest OS's are induced to surrender
110underutilized RAM (e.g. with "selfballooning"), sudden unexpected
111memory pressure may result in swapping; frontswap allows those pages
112to be swapped to and from hypervisor RAM (if overall host system memory
113conditions allow), thus mitigating the potentially awful performance impact
114of unplanned swapping.
115
116A KVM implementation is underway and has been RFC'ed to lkml. And,
117using frontswap, investigation is also underway on the use of NVM as
118a memory extension technology.
119
1202) Sure there may be performance advantages in some situations, but
121 what's the space/time overhead of frontswap?
122
123If CONFIG_FRONTSWAP is disabled, every frontswap hook compiles into
124nothingness and the only overhead is a few extra bytes per swapon'ed
125swap device. If CONFIG_FRONTSWAP is enabled but no frontswap "backend"
126registers, there is one extra global variable compared to zero for
127every swap page read or written. If CONFIG_FRONTSWAP is enabled
128AND a frontswap backend registers AND the backend fails every "store"
129request (i.e. provides no memory despite claiming it might),
130CPU overhead is still negligible -- and since every frontswap fail
131precedes a swap page write-to-disk, the system is highly likely
132to be I/O bound and using a small fraction of a percent of a CPU
133will be irrelevant anyway.
134
135As for space, if CONFIG_FRONTSWAP is enabled AND a frontswap backend
136registers, one bit is allocated for every swap page for every swap
137device that is swapon'd. This is added to the EIGHT bits (which
138was sixteen until about 2.6.34) that the kernel already allocates
139for every swap page for every swap device that is swapon'd. (Hugh
140Dickins has observed that frontswap could probably steal one of
141the existing eight bits, but let's worry about that minor optimization
142later.) For very large swap disks (which are rare) on a standard
1434K pagesize, this is 1MB per 32GB swap.
144
145When swap pages are stored in transcendent memory instead of written
146out to disk, there is a side effect that this may create more memory
147pressure that can potentially outweigh the other advantages. A
148backend, such as zcache, must implement policies to carefully (but
149dynamically) manage memory limits to ensure this doesn't happen.
150
1513) OK, how about a quick overview of what this frontswap patch does
152 in terms that a kernel hacker can grok?
153
154Let's assume that a frontswap "backend" has registered during
155kernel initialization; this registration indicates that this
156frontswap backend has access to some "memory" that is not directly
157accessible by the kernel. Exactly how much memory it provides is
158entirely dynamic and random.
159
160Whenever a swap-device is swapon'd frontswap_init() is called,
161passing the swap device number (aka "type") as a parameter.
162This notifies frontswap to expect attempts to "store" swap pages
163associated with that number.
164
165Whenever the swap subsystem is readying a page to write to a swap
166device (c.f swap_writepage()), frontswap_store is called. Frontswap
167consults with the frontswap backend and if the backend says it does NOT
168have room, frontswap_store returns -1 and the kernel swaps the page
169to the swap device as normal. Note that the response from the frontswap
170backend is unpredictable to the kernel; it may choose to never accept a
171page, it could accept every ninth page, or it might accept every
172page. But if the backend does accept a page, the data from the page
173has already been copied and associated with the type and offset,
174and the backend guarantees the persistence of the data. In this case,
175frontswap sets a bit in the "frontswap_map" for the swap device
176corresponding to the page offset on the swap device to which it would
177otherwise have written the data.
178
179When the swap subsystem needs to swap-in a page (swap_readpage()),
180it first calls frontswap_load() which checks the frontswap_map to
181see if the page was earlier accepted by the frontswap backend. If
182it was, the page of data is filled from the frontswap backend and
183the swap-in is complete. If not, the normal swap-in code is
184executed to obtain the page of data from the real swap device.
185
186So every time the frontswap backend accepts a page, a swap device read
187and (potentially) a swap device write are replaced by a "frontswap backend
188store" and (possibly) a "frontswap backend loads", which are presumably much
189faster.
190
1914) Can't frontswap be configured as a "special" swap device that is
192 just higher priority than any real swap device (e.g. like zswap,
193 or maybe swap-over-nbd/NFS)?
194
195No. First, the existing swap subsystem doesn't allow for any kind of
196swap hierarchy. Perhaps it could be rewritten to accomodate a hierarchy,
197but this would require fairly drastic changes. Even if it were
198rewritten, the existing swap subsystem uses the block I/O layer which
199assumes a swap device is fixed size and any page in it is linearly
200addressable. Frontswap barely touches the existing swap subsystem,
201and works around the constraints of the block I/O subsystem to provide
202a great deal of flexibility and dynamicity.
203
204For example, the acceptance of any swap page by the frontswap backend is
205entirely unpredictable. This is critical to the definition of frontswap
206backends because it grants completely dynamic discretion to the
207backend. In zcache, one cannot know a priori how compressible a page is.
208"Poorly" compressible pages can be rejected, and "poorly" can itself be
209defined dynamically depending on current memory constraints.
210
211Further, frontswap is entirely synchronous whereas a real swap
212device is, by definition, asynchronous and uses block I/O. The
213block I/O layer is not only unnecessary, but may perform "optimizations"
214that are inappropriate for a RAM-oriented device including delaying
215the write of some pages for a significant amount of time. Synchrony is
216required to ensure the dynamicity of the backend and to avoid thorny race
217conditions that would unnecessarily and greatly complicate frontswap
218and/or the block I/O subsystem. That said, only the initial "store"
219and "load" operations need be synchronous. A separate asynchronous thread
220is free to manipulate the pages stored by frontswap. For example,
221the "remotification" thread in RAMster uses standard asynchronous
222kernel sockets to move compressed frontswap pages to a remote machine.
223Similarly, a KVM guest-side implementation could do in-guest compression
224and use "batched" hypercalls.
225
226In a virtualized environment, the dynamicity allows the hypervisor
227(or host OS) to do "intelligent overcommit". For example, it can
228choose to accept pages only until host-swapping might be imminent,
229then force guests to do their own swapping.
230
231There is a downside to the transcendent memory specifications for
232frontswap: Since any "store" might fail, there must always be a real
233slot on a real swap device to swap the page. Thus frontswap must be
234implemented as a "shadow" to every swapon'd device with the potential
235capability of holding every page that the swap device might have held
236and the possibility that it might hold no pages at all. This means
237that frontswap cannot contain more pages than the total of swapon'd
238swap devices. For example, if NO swap device is configured on some
239installation, frontswap is useless. Swapless portable devices
240can still use frontswap but a backend for such devices must configure
241some kind of "ghost" swap device and ensure that it is never used.
242
2435) Why this weird definition about "duplicate stores"? If a page
244 has been previously successfully stored, can't it always be
245 successfully overwritten?
246
247Nearly always it can, but no, sometimes it cannot. Consider an example
248where data is compressed and the original 4K page has been compressed
249to 1K. Now an attempt is made to overwrite the page with data that
250is non-compressible and so would take the entire 4K. But the backend
251has no more space. In this case, the store must be rejected. Whenever
252frontswap rejects a store that would overwrite, it also must invalidate
253the old data and ensure that it is no longer accessible. Since the
254swap subsystem then writes the new data to the read swap device,
255this is the correct course of action to ensure coherency.
256
2576) What is frontswap_shrink for?
258
259When the (non-frontswap) swap subsystem swaps out a page to a real
260swap device, that page is only taking up low-value pre-allocated disk
261space. But if frontswap has placed a page in transcendent memory, that
262page may be taking up valuable real estate. The frontswap_shrink
263routine allows code outside of the swap subsystem to force pages out
264of the memory managed by frontswap and back into kernel-addressable memory.
265For example, in RAMster, a "suction driver" thread will attempt
266to "repatriate" pages sent to a remote machine back to the local machine;
267this is driven using the frontswap_shrink mechanism when memory pressure
268subsides.
269
2707) Why does the frontswap patch create the new include file swapfile.h?
271
272The frontswap code depends on some swap-subsystem-internal data
273structures that have, over the years, moved back and forth between
274static and global. This seemed a reasonable compromise: Define
275them as global but declare them in a new include file that isn't
276included by the large number of source files that include swap.h.
277
278Dan Magenheimer, last updated April 9, 2012
diff --git a/Documentation/vm/pagemap.txt b/Documentation/vm/pagemap.txt
index 4600cbe3d6be..7587493c67f1 100644
--- a/Documentation/vm/pagemap.txt
+++ b/Documentation/vm/pagemap.txt
@@ -16,7 +16,7 @@ There are three components to pagemap:
16 * Bits 0-4 swap type if swapped 16 * Bits 0-4 swap type if swapped
17 * Bits 5-54 swap offset if swapped 17 * Bits 5-54 swap offset if swapped
18 * Bits 55-60 page shift (page size = 1<<page shift) 18 * Bits 55-60 page shift (page size = 1<<page shift)
19 * Bit 61 reserved for future use 19 * Bit 61 page is file-page or shared-anon
20 * Bit 62 page swapped 20 * Bit 62 page swapped
21 * Bit 63 page present 21 * Bit 63 page present
22 22
diff --git a/Documentation/vm/slub.txt b/Documentation/vm/slub.txt
index 6752870c4970..b0c6d1bbb434 100644
--- a/Documentation/vm/slub.txt
+++ b/Documentation/vm/slub.txt
@@ -17,7 +17,7 @@ data and perform operation on the slabs. By default slabinfo only lists
17slabs that have data in them. See "slabinfo -h" for more options when 17slabs that have data in them. See "slabinfo -h" for more options when
18running the command. slabinfo can be compiled with 18running the command. slabinfo can be compiled with
19 19
20gcc -o slabinfo tools/slub/slabinfo.c 20gcc -o slabinfo tools/vm/slabinfo.c
21 21
22Some of the modes of operation of slabinfo require that slub debugging 22Some of the modes of operation of slabinfo require that slub debugging
23be enabled on the command line. F.e. no tracking information will be 23be enabled on the command line. F.e. no tracking information will be
diff --git a/Documentation/vm/transhuge.txt b/Documentation/vm/transhuge.txt
index 29bdf62aac09..f734bb2a78dc 100644
--- a/Documentation/vm/transhuge.txt
+++ b/Documentation/vm/transhuge.txt
@@ -166,6 +166,68 @@ behavior. So to make them effective you need to restart any
166application that could have been using hugepages. This also applies to 166application that could have been using hugepages. This also applies to
167the regions registered in khugepaged. 167the regions registered in khugepaged.
168 168
169== Monitoring usage ==
170
171The number of transparent huge pages currently used by the system is
172available by reading the AnonHugePages field in /proc/meminfo. To
173identify what applications are using transparent huge pages, it is
174necessary to read /proc/PID/smaps and count the AnonHugePages fields
175for each mapping. Note that reading the smaps file is expensive and
176reading it frequently will incur overhead.
177
178There are a number of counters in /proc/vmstat that may be used to
179monitor how successfully the system is providing huge pages for use.
180
181thp_fault_alloc is incremented every time a huge page is successfully
182 allocated to handle a page fault. This applies to both the
183 first time a page is faulted and for COW faults.
184
185thp_collapse_alloc is incremented by khugepaged when it has found
186 a range of pages to collapse into one huge page and has
187 successfully allocated a new huge page to store the data.
188
189thp_fault_fallback is incremented if a page fault fails to allocate
190 a huge page and instead falls back to using small pages.
191
192thp_collapse_alloc_failed is incremented if khugepaged found a range
193 of pages that should be collapsed into one huge page but failed
194 the allocation.
195
196thp_split is incremented every time a huge page is split into base
197 pages. This can happen for a variety of reasons but a common
198 reason is that a huge page is old and is being reclaimed.
199
200As the system ages, allocating huge pages may be expensive as the
201system uses memory compaction to copy data around memory to free a
202huge page for use. There are some counters in /proc/vmstat to help
203monitor this overhead.
204
205compact_stall is incremented every time a process stalls to run
206 memory compaction so that a huge page is free for use.
207
208compact_success is incremented if the system compacted memory and
209 freed a huge page for use.
210
211compact_fail is incremented if the system tries to compact memory
212 but failed.
213
214compact_pages_moved is incremented each time a page is moved. If
215 this value is increasing rapidly, it implies that the system
216 is copying a lot of data to satisfy the huge page allocation.
217 It is possible that the cost of copying exceeds any savings
218 from reduced TLB misses.
219
220compact_pagemigrate_failed is incremented when the underlying mechanism
221 for moving a page failed.
222
223compact_blocks_moved is incremented each time memory compaction examines
224 a huge page aligned range of pages.
225
226It is possible to establish how long the stalls were using the function
227tracer to record how long was spent in __alloc_pages_nodemask and
228using the mm_page_alloc tracepoint to identify which allocations were
229for huge pages.
230
169== get_user_pages and follow_page == 231== get_user_pages and follow_page ==
170 232
171get_user_pages and follow_page if run on a hugepage, will return the 233get_user_pages and follow_page if run on a hugepage, will return the
diff --git a/Documentation/vme_api.txt b/Documentation/vme_api.txt
new file mode 100644
index 000000000000..856efa35f6e3
--- /dev/null
+++ b/Documentation/vme_api.txt
@@ -0,0 +1,396 @@
1 VME Device Driver API
2 =====================
3
4Driver registration
5===================
6
7As with other subsystems within the Linux kernel, VME device drivers register
8with the VME subsystem, typically called from the devices init routine. This is
9achieved via a call to the following function:
10
11 int vme_register_driver (struct vme_driver *driver);
12
13If driver registration is successful this function returns zero, if an error
14occurred a negative error code will be returned.
15
16A pointer to a structure of type 'vme_driver' must be provided to the
17registration function. The structure is as follows:
18
19 struct vme_driver {
20 struct list_head node;
21 const char *name;
22 int (*match)(struct vme_dev *);
23 int (*probe)(struct vme_dev *);
24 int (*remove)(struct vme_dev *);
25 void (*shutdown)(void);
26 struct device_driver driver;
27 struct list_head devices;
28 unsigned int ndev;
29 };
30
31At the minimum, the '.name', '.match' and '.probe' elements of this structure
32should be correctly set. The '.name' element is a pointer to a string holding
33the device driver's name.
34
35The '.match' function allows controlling the number of devices that need to
36be registered. The match function should return 1 if a device should be
37probed and 0 otherwise. This example match function (from vme_user.c) limits
38the number of devices probed to one:
39
40 #define USER_BUS_MAX 1
41 ...
42 static int vme_user_match(struct vme_dev *vdev)
43 {
44 if (vdev->id.num >= USER_BUS_MAX)
45 return 0;
46 return 1;
47 }
48
49The '.probe' element should contain a pointer to the probe routine. The
50probe routine is passed a 'struct vme_dev' pointer as an argument. The
51'struct vme_dev' structure looks like the following:
52
53 struct vme_dev {
54 int num;
55 struct vme_bridge *bridge;
56 struct device dev;
57 struct list_head drv_list;
58 struct list_head bridge_list;
59 };
60
61Here, the 'num' field refers to the sequential device ID for this specific
62driver. The bridge number (or bus number) can be accessed using
63dev->bridge->num.
64
65A function is also provided to unregister the driver from the VME core and is
66usually called from the device driver's exit routine:
67
68 void vme_unregister_driver (struct vme_driver *driver);
69
70
71Resource management
72===================
73
74Once a driver has registered with the VME core the provided match routine will
75be called the number of times specified during the registration. If a match
76succeeds, a non-zero value should be returned. A zero return value indicates
77failure. For all successful matches, the probe routine of the corresponding
78driver is called. The probe routine is passed a pointer to the devices
79device structure. This pointer should be saved, it will be required for
80requesting VME resources.
81
82The driver can request ownership of one or more master windows, slave windows
83and/or dma channels. Rather than allowing the device driver to request a
84specific window or DMA channel (which may be used by a different driver) this
85driver allows a resource to be assigned based on the required attributes of the
86driver in question:
87
88 struct vme_resource * vme_master_request(struct vme_dev *dev,
89 u32 aspace, u32 cycle, u32 width);
90
91 struct vme_resource * vme_slave_request(struct vme_dev *dev, u32 aspace,
92 u32 cycle);
93
94 struct vme_resource *vme_dma_request(struct vme_dev *dev, u32 route);
95
96For slave windows these attributes are split into the VME address spaces that
97need to be accessed in 'aspace' and VME bus cycle types required in 'cycle'.
98Master windows add a further set of attributes in 'width' specifying the
99required data transfer widths. These attributes are defined as bitmasks and as
100such any combination of the attributes can be requested for a single window,
101the core will assign a window that meets the requirements, returning a pointer
102of type vme_resource that should be used to identify the allocated resource
103when it is used. For DMA controllers, the request function requires the
104potential direction of any transfers to be provided in the route attributes.
105This is typically VME-to-MEM and/or MEM-to-VME, though some hardware can
106support VME-to-VME and MEM-to-MEM transfers as well as test pattern generation.
107If an unallocated window fitting the requirements can not be found a NULL
108pointer will be returned.
109
110Functions are also provided to free window allocations once they are no longer
111required. These functions should be passed the pointer to the resource provided
112during resource allocation:
113
114 void vme_master_free(struct vme_resource *res);
115
116 void vme_slave_free(struct vme_resource *res);
117
118 void vme_dma_free(struct vme_resource *res);
119
120
121Master windows
122==============
123
124Master windows provide access from the local processor[s] out onto the VME bus.
125The number of windows available and the available access modes is dependent on
126the underlying chipset. A window must be configured before it can be used.
127
128
129Master window configuration
130---------------------------
131
132Once a master window has been assigned the following functions can be used to
133configure it and retrieve the current settings:
134
135 int vme_master_set (struct vme_resource *res, int enabled,
136 unsigned long long base, unsigned long long size, u32 aspace,
137 u32 cycle, u32 width);
138
139 int vme_master_get (struct vme_resource *res, int *enabled,
140 unsigned long long *base, unsigned long long *size, u32 *aspace,
141 u32 *cycle, u32 *width);
142
143The address spaces, transfer widths and cycle types are the same as described
144under resource management, however some of the options are mutually exclusive.
145For example, only one address space may be specified.
146
147These functions return 0 on success or an error code should the call fail.
148
149
150Master window access
151--------------------
152
153The following functions can be used to read from and write to configured master
154windows. These functions return the number of bytes copied:
155
156 ssize_t vme_master_read(struct vme_resource *res, void *buf,
157 size_t count, loff_t offset);
158
159 ssize_t vme_master_write(struct vme_resource *res, void *buf,
160 size_t count, loff_t offset);
161
162In addition to simple reads and writes, a function is provided to do a
163read-modify-write transaction. This function returns the original value of the
164VME bus location :
165
166 unsigned int vme_master_rmw (struct vme_resource *res,
167 unsigned int mask, unsigned int compare, unsigned int swap,
168 loff_t offset);
169
170This functions by reading the offset, applying the mask. If the bits selected in
171the mask match with the values of the corresponding bits in the compare field,
172the value of swap is written the specified offset.
173
174
175Slave windows
176=============
177
178Slave windows provide devices on the VME bus access into mapped portions of the
179local memory. The number of windows available and the access modes that can be
180used is dependent on the underlying chipset. A window must be configured before
181it can be used.
182
183
184Slave window configuration
185--------------------------
186
187Once a slave window has been assigned the following functions can be used to
188configure it and retrieve the current settings:
189
190 int vme_slave_set (struct vme_resource *res, int enabled,
191 unsigned long long base, unsigned long long size,
192 dma_addr_t mem, u32 aspace, u32 cycle);
193
194 int vme_slave_get (struct vme_resource *res, int *enabled,
195 unsigned long long *base, unsigned long long *size,
196 dma_addr_t *mem, u32 *aspace, u32 *cycle);
197
198The address spaces, transfer widths and cycle types are the same as described
199under resource management, however some of the options are mutually exclusive.
200For example, only one address space may be specified.
201
202These functions return 0 on success or an error code should the call fail.
203
204
205Slave window buffer allocation
206------------------------------
207
208Functions are provided to allow the user to allocate and free a contiguous
209buffers which will be accessible by the VME bridge. These functions do not have
210to be used, other methods can be used to allocate a buffer, though care must be
211taken to ensure that they are contiguous and accessible by the VME bridge:
212
213 void * vme_alloc_consistent(struct vme_resource *res, size_t size,
214 dma_addr_t *mem);
215
216 void vme_free_consistent(struct vme_resource *res, size_t size,
217 void *virt, dma_addr_t mem);
218
219
220Slave window access
221-------------------
222
223Slave windows map local memory onto the VME bus, the standard methods for
224accessing memory should be used.
225
226
227DMA channels
228============
229
230The VME DMA transfer provides the ability to run link-list DMA transfers. The
231API introduces the concept of DMA lists. Each DMA list is a link-list which can
232be passed to a DMA controller. Multiple lists can be created, extended,
233executed, reused and destroyed.
234
235
236List Management
237---------------
238
239The following functions are provided to create and destroy DMA lists. Execution
240of a list will not automatically destroy the list, thus enabling a list to be
241reused for repetitive tasks:
242
243 struct vme_dma_list *vme_new_dma_list(struct vme_resource *res);
244
245 int vme_dma_list_free(struct vme_dma_list *list);
246
247
248List Population
249---------------
250
251An item can be added to a list using the following function ( the source and
252destination attributes need to be created before calling this function, this is
253covered under "Transfer Attributes"):
254
255 int vme_dma_list_add(struct vme_dma_list *list,
256 struct vme_dma_attr *src, struct vme_dma_attr *dest,
257 size_t count);
258
259NOTE: The detailed attributes of the transfers source and destination
260 are not checked until an entry is added to a DMA list, the request
261 for a DMA channel purely checks the directions in which the
262 controller is expected to transfer data. As a result it is
263 possible for this call to return an error, for example if the
264 source or destination is in an unsupported VME address space.
265
266Transfer Attributes
267-------------------
268
269The attributes for the source and destination are handled separately from adding
270an item to a list. This is due to the diverse attributes required for each type
271of source and destination. There are functions to create attributes for PCI, VME
272and pattern sources and destinations (where appropriate):
273
274Pattern source:
275
276 struct vme_dma_attr *vme_dma_pattern_attribute(u32 pattern, u32 type);
277
278PCI source or destination:
279
280 struct vme_dma_attr *vme_dma_pci_attribute(dma_addr_t mem);
281
282VME source or destination:
283
284 struct vme_dma_attr *vme_dma_vme_attribute(unsigned long long base,
285 u32 aspace, u32 cycle, u32 width);
286
287The following function should be used to free an attribute:
288
289 void vme_dma_free_attribute(struct vme_dma_attr *attr);
290
291
292List Execution
293--------------
294
295The following function queues a list for execution. The function will return
296once the list has been executed:
297
298 int vme_dma_list_exec(struct vme_dma_list *list);
299
300
301Interrupts
302==========
303
304The VME API provides functions to attach and detach callbacks to specific VME
305level and status ID combinations and for the generation of VME interrupts with
306specific VME level and status IDs.
307
308
309Attaching Interrupt Handlers
310----------------------------
311
312The following functions can be used to attach and free a specific VME level and
313status ID combination. Any given combination can only be assigned a single
314callback function. A void pointer parameter is provided, the value of which is
315passed to the callback function, the use of this pointer is user undefined:
316
317 int vme_irq_request(struct vme_dev *dev, int level, int statid,
318 void (*callback)(int, int, void *), void *priv);
319
320 void vme_irq_free(struct vme_dev *dev, int level, int statid);
321
322The callback parameters are as follows. Care must be taken in writing a callback
323function, callback functions run in interrupt context:
324
325 void callback(int level, int statid, void *priv);
326
327
328Interrupt Generation
329--------------------
330
331The following function can be used to generate a VME interrupt at a given VME
332level and VME status ID:
333
334 int vme_irq_generate(struct vme_dev *dev, int level, int statid);
335
336
337Location monitors
338=================
339
340The VME API provides the following functionality to configure the location
341monitor.
342
343
344Location Monitor Management
345---------------------------
346
347The following functions are provided to request the use of a block of location
348monitors and to free them after they are no longer required:
349
350 struct vme_resource * vme_lm_request(struct vme_dev *dev);
351
352 void vme_lm_free(struct vme_resource * res);
353
354Each block may provide a number of location monitors, monitoring adjacent
355locations. The following function can be used to determine how many locations
356are provided:
357
358 int vme_lm_count(struct vme_resource * res);
359
360
361Location Monitor Configuration
362------------------------------
363
364Once a bank of location monitors has been allocated, the following functions
365are provided to configure the location and mode of the location monitor:
366
367 int vme_lm_set(struct vme_resource *res, unsigned long long base,
368 u32 aspace, u32 cycle);
369
370 int vme_lm_get(struct vme_resource *res, unsigned long long *base,
371 u32 *aspace, u32 *cycle);
372
373
374Location Monitor Use
375--------------------
376
377The following functions allow a callback to be attached and detached from each
378location monitor location. Each location monitor can monitor a number of
379adjacent locations:
380
381 int vme_lm_attach(struct vme_resource *res, int num,
382 void (*callback)(int));
383
384 int vme_lm_detach(struct vme_resource *res, int num);
385
386The callback function is declared as follows.
387
388 void callback(int num);
389
390
391Slot Detection
392==============
393
394This function returns the slot ID of the provided bridge.
395
396 int vme_slot_get(struct vme_dev *dev);
diff --git a/Documentation/watchdog/src/watchdog-test.c b/Documentation/watchdog/src/watchdog-test.c
index 63fdc34ceb98..73ff5cc93e05 100644
--- a/Documentation/watchdog/src/watchdog-test.c
+++ b/Documentation/watchdog/src/watchdog-test.c
@@ -7,6 +7,7 @@
7#include <string.h> 7#include <string.h>
8#include <unistd.h> 8#include <unistd.h>
9#include <fcntl.h> 9#include <fcntl.h>
10#include <signal.h>
10#include <sys/ioctl.h> 11#include <sys/ioctl.h>
11#include <linux/types.h> 12#include <linux/types.h>
12#include <linux/watchdog.h> 13#include <linux/watchdog.h>
@@ -29,6 +30,14 @@ static void keep_alive(void)
29 * The main program. Run the program with "-d" to disable the card, 30 * The main program. Run the program with "-d" to disable the card,
30 * or "-e" to enable the card. 31 * or "-e" to enable the card.
31 */ 32 */
33
34void term(int sig)
35{
36 close(fd);
37 fprintf(stderr, "Stopping watchdog ticks...\n");
38 exit(0);
39}
40
32int main(int argc, char *argv[]) 41int main(int argc, char *argv[])
33{ 42{
34 int flags; 43 int flags;
@@ -47,26 +56,31 @@ int main(int argc, char *argv[])
47 ioctl(fd, WDIOC_SETOPTIONS, &flags); 56 ioctl(fd, WDIOC_SETOPTIONS, &flags);
48 fprintf(stderr, "Watchdog card disabled.\n"); 57 fprintf(stderr, "Watchdog card disabled.\n");
49 fflush(stderr); 58 fflush(stderr);
50 exit(0); 59 goto end;
51 } else if (!strncasecmp(argv[1], "-e", 2)) { 60 } else if (!strncasecmp(argv[1], "-e", 2)) {
52 flags = WDIOS_ENABLECARD; 61 flags = WDIOS_ENABLECARD;
53 ioctl(fd, WDIOC_SETOPTIONS, &flags); 62 ioctl(fd, WDIOC_SETOPTIONS, &flags);
54 fprintf(stderr, "Watchdog card enabled.\n"); 63 fprintf(stderr, "Watchdog card enabled.\n");
55 fflush(stderr); 64 fflush(stderr);
56 exit(0); 65 goto end;
57 } else { 66 } else {
58 fprintf(stderr, "-d to disable, -e to enable.\n"); 67 fprintf(stderr, "-d to disable, -e to enable.\n");
59 fprintf(stderr, "run by itself to tick the card.\n"); 68 fprintf(stderr, "run by itself to tick the card.\n");
60 fflush(stderr); 69 fflush(stderr);
61 exit(0); 70 goto end;
62 } 71 }
63 } else { 72 } else {
64 fprintf(stderr, "Watchdog Ticking Away!\n"); 73 fprintf(stderr, "Watchdog Ticking Away!\n");
65 fflush(stderr); 74 fflush(stderr);
66 } 75 }
67 76
77 signal(SIGINT, term);
78
68 while(1) { 79 while(1) {
69 keep_alive(); 80 keep_alive();
70 sleep(1); 81 sleep(1);
71 } 82 }
83end:
84 close(fd);
85 return 0;
72} 86}
diff --git a/Documentation/watchdog/watchdog-kernel-api.txt b/Documentation/watchdog/watchdog-kernel-api.txt
index 227f6cd0e5fa..086638f6c82d 100644
--- a/Documentation/watchdog/watchdog-kernel-api.txt
+++ b/Documentation/watchdog/watchdog-kernel-api.txt
@@ -1,6 +1,6 @@
1The Linux WatchDog Timer Driver Core kernel API. 1The Linux WatchDog Timer Driver Core kernel API.
2=============================================== 2===============================================
3Last reviewed: 16-Mar-2012 3Last reviewed: 22-May-2012
4 4
5Wim Van Sebroeck <wim@iguana.be> 5Wim Van Sebroeck <wim@iguana.be>
6 6
@@ -39,6 +39,10 @@ watchdog_device structure.
39The watchdog device structure looks like this: 39The watchdog device structure looks like this:
40 40
41struct watchdog_device { 41struct watchdog_device {
42 int id;
43 struct cdev cdev;
44 struct device *dev;
45 struct device *parent;
42 const struct watchdog_info *info; 46 const struct watchdog_info *info;
43 const struct watchdog_ops *ops; 47 const struct watchdog_ops *ops;
44 unsigned int bootstatus; 48 unsigned int bootstatus;
@@ -46,10 +50,20 @@ struct watchdog_device {
46 unsigned int min_timeout; 50 unsigned int min_timeout;
47 unsigned int max_timeout; 51 unsigned int max_timeout;
48 void *driver_data; 52 void *driver_data;
53 struct mutex lock;
49 unsigned long status; 54 unsigned long status;
50}; 55};
51 56
52It contains following fields: 57It contains following fields:
58* id: set by watchdog_register_device, id 0 is special. It has both a
59 /dev/watchdog0 cdev (dynamic major, minor 0) as well as the old
60 /dev/watchdog miscdev. The id is set automatically when calling
61 watchdog_register_device.
62* cdev: cdev for the dynamic /dev/watchdog<id> device nodes. This
63 field is also populated by watchdog_register_device.
64* dev: device under the watchdog class (created by watchdog_register_device).
65* parent: set this to the parent device (or NULL) before calling
66 watchdog_register_device.
53* info: a pointer to a watchdog_info structure. This structure gives some 67* info: a pointer to a watchdog_info structure. This structure gives some
54 additional information about the watchdog timer itself. (Like it's unique name) 68 additional information about the watchdog timer itself. (Like it's unique name)
55* ops: a pointer to the list of watchdog operations that the watchdog supports. 69* ops: a pointer to the list of watchdog operations that the watchdog supports.
@@ -59,8 +73,9 @@ It contains following fields:
59* bootstatus: status of the device after booting (reported with watchdog 73* bootstatus: status of the device after booting (reported with watchdog
60 WDIOF_* status bits). 74 WDIOF_* status bits).
61* driver_data: a pointer to the drivers private data of a watchdog device. 75* driver_data: a pointer to the drivers private data of a watchdog device.
62 This data should only be accessed via the watchdog_set_drvadata and 76 This data should only be accessed via the watchdog_set_drvdata and
63 watchdog_get_drvdata routines. 77 watchdog_get_drvdata routines.
78* lock: Mutex for WatchDog Timer Driver Core internal use only.
64* status: this field contains a number of status bits that give extra 79* status: this field contains a number of status bits that give extra
65 information about the status of the device (Like: is the watchdog timer 80 information about the status of the device (Like: is the watchdog timer
66 running/active, is the nowayout bit set, is the device opened via 81 running/active, is the nowayout bit set, is the device opened via
@@ -78,6 +93,8 @@ struct watchdog_ops {
78 unsigned int (*status)(struct watchdog_device *); 93 unsigned int (*status)(struct watchdog_device *);
79 int (*set_timeout)(struct watchdog_device *, unsigned int); 94 int (*set_timeout)(struct watchdog_device *, unsigned int);
80 unsigned int (*get_timeleft)(struct watchdog_device *); 95 unsigned int (*get_timeleft)(struct watchdog_device *);
96 void (*ref)(struct watchdog_device *);
97 void (*unref)(struct watchdog_device *);
81 long (*ioctl)(struct watchdog_device *, unsigned int, unsigned long); 98 long (*ioctl)(struct watchdog_device *, unsigned int, unsigned long);
82}; 99};
83 100
@@ -85,6 +102,21 @@ It is important that you first define the module owner of the watchdog timer
85driver's operations. This module owner will be used to lock the module when 102driver's operations. This module owner will be used to lock the module when
86the watchdog is active. (This to avoid a system crash when you unload the 103the watchdog is active. (This to avoid a system crash when you unload the
87module and /dev/watchdog is still open). 104module and /dev/watchdog is still open).
105
106If the watchdog_device struct is dynamically allocated, just locking the module
107is not enough and a driver also needs to define the ref and unref operations to
108ensure the structure holding the watchdog_device does not go away.
109
110The simplest (and usually sufficient) implementation of this is to:
1111) Add a kref struct to the same structure which is holding the watchdog_device
1122) Define a release callback for the kref which frees the struct holding both
1133) Call kref_init on this kref *before* calling watchdog_register_device()
1144) Define a ref operation calling kref_get on this kref
1155) Define a unref operation calling kref_put on this kref
1166) When it is time to cleanup:
117 * Do not kfree() the struct holding both, the last kref_put will do this!
118 * *After* calling watchdog_unregister_device() call kref_put on the kref
119
88Some operations are mandatory and some are optional. The mandatory operations 120Some operations are mandatory and some are optional. The mandatory operations
89are: 121are:
90* start: this is a pointer to the routine that starts the watchdog timer 122* start: this is a pointer to the routine that starts the watchdog timer
@@ -125,6 +157,10 @@ they are supported. These optional routines/operations are:
125 (Note: the WDIOF_SETTIMEOUT needs to be set in the options field of the 157 (Note: the WDIOF_SETTIMEOUT needs to be set in the options field of the
126 watchdog's info structure). 158 watchdog's info structure).
127* get_timeleft: this routines returns the time that's left before a reset. 159* get_timeleft: this routines returns the time that's left before a reset.
160* ref: the operation that calls kref_get on the kref of a dynamically
161 allocated watchdog_device struct.
162* unref: the operation that calls kref_put on the kref of a dynamically
163 allocated watchdog_device struct.
128* ioctl: if this routine is present then it will be called first before we do 164* ioctl: if this routine is present then it will be called first before we do
129 our own internal ioctl call handling. This routine should return -ENOIOCTLCMD 165 our own internal ioctl call handling. This routine should return -ENOIOCTLCMD
130 if a command is not supported. The parameters that are passed to the ioctl 166 if a command is not supported. The parameters that are passed to the ioctl
@@ -144,6 +180,11 @@ bit-operations. The status bits that are defined are:
144 (This bit should only be used by the WatchDog Timer Driver Core). 180 (This bit should only be used by the WatchDog Timer Driver Core).
145* WDOG_NO_WAY_OUT: this bit stores the nowayout setting for the watchdog. 181* WDOG_NO_WAY_OUT: this bit stores the nowayout setting for the watchdog.
146 If this bit is set then the watchdog timer will not be able to stop. 182 If this bit is set then the watchdog timer will not be able to stop.
183* WDOG_UNREGISTERED: this bit gets set by the WatchDog Timer Driver Core
184 after calling watchdog_unregister_device, and then checked before calling
185 any watchdog_ops, so that you can be sure that no operations (other then
186 unref) will get called after unregister, even if userspace still holds a
187 reference to /dev/watchdog
147 188
148 To set the WDOG_NO_WAY_OUT status bit (before registering your watchdog 189 To set the WDOG_NO_WAY_OUT status bit (before registering your watchdog
149 timer device) you can either: 190 timer device) you can either:
diff --git a/Documentation/watchdog/watchdog-parameters.txt b/Documentation/watchdog/watchdog-parameters.txt
index 17ddd822b456..04fddbacdbde 100644
--- a/Documentation/watchdog/watchdog-parameters.txt
+++ b/Documentation/watchdog/watchdog-parameters.txt
@@ -78,6 +78,11 @@ wd0_timeout: Default watchdog0 timeout in 1/10secs
78wd1_timeout: Default watchdog1 timeout in 1/10secs 78wd1_timeout: Default watchdog1 timeout in 1/10secs
79wd2_timeout: Default watchdog2 timeout in 1/10secs 79wd2_timeout: Default watchdog2 timeout in 1/10secs
80------------------------------------------------- 80-------------------------------------------------
81da9052wdt:
82timeout: Watchdog timeout in seconds. 2<= timeout <=131, default=2.048s
83nowayout: Watchdog cannot be stopped once started
84 (default=kernel config parameter)
85-------------------------------------------------
81davinci_wdt: 86davinci_wdt:
82heartbeat: Watchdog heartbeat period in seconds from 1 to 600, default 60 87heartbeat: Watchdog heartbeat period in seconds from 1 to 600, default 60
83------------------------------------------------- 88-------------------------------------------------
diff --git a/Documentation/x86/efi-stub.txt b/Documentation/x86/efi-stub.txt
new file mode 100644
index 000000000000..44e6bb6ead10
--- /dev/null
+++ b/Documentation/x86/efi-stub.txt
@@ -0,0 +1,65 @@
1 The EFI Boot Stub
2 ---------------------------
3
4On the x86 platform, a bzImage can masquerade as a PE/COFF image,
5thereby convincing EFI firmware loaders to load it as an EFI
6executable. The code that modifies the bzImage header, along with the
7EFI-specific entry point that the firmware loader jumps to are
8collectively known as the "EFI boot stub", and live in
9arch/x86/boot/header.S and arch/x86/boot/compressed/eboot.c,
10respectively.
11
12By using the EFI boot stub it's possible to boot a Linux kernel
13without the use of a conventional EFI boot loader, such as grub or
14elilo. Since the EFI boot stub performs the jobs of a boot loader, in
15a certain sense it *IS* the boot loader.
16
17The EFI boot stub is enabled with the CONFIG_EFI_STUB kernel option.
18
19
20**** How to install bzImage.efi
21
22The bzImage located in arch/x86/boot/bzImage must be copied to the EFI
23System Partiion (ESP) and renamed with the extension ".efi". Without
24the extension the EFI firmware loader will refuse to execute it. It's
25not possible to execute bzImage.efi from the usual Linux file systems
26because EFI firmware doesn't have support for them.
27
28
29**** Passing kernel parameters from the EFI shell
30
31Arguments to the kernel can be passed after bzImage.efi, e.g.
32
33 fs0:> bzImage.efi console=ttyS0 root=/dev/sda4
34
35
36**** The "initrd=" option
37
38Like most boot loaders, the EFI stub allows the user to specify
39multiple initrd files using the "initrd=" option. This is the only EFI
40stub-specific command line parameter, everything else is passed to the
41kernel when it boots.
42
43The path to the initrd file must be an absolute path from the
44beginning of the ESP, relative path names do not work. Also, the path
45is an EFI-style path and directory elements must be separated with
46backslashes (\). For example, given the following directory layout,
47
48fs0:>
49 Kernels\
50 bzImage.efi
51 initrd-large.img
52
53 Ramdisks\
54 initrd-small.img
55 initrd-medium.img
56
57to boot with the initrd-large.img file if the current working
58directory is fs0:\Kernels, the following command must be used,
59
60 fs0:\Kernels> bzImage.efi initrd=\Kernels\initrd-large.img
61
62Notice how bzImage.efi can be specified with a relative path. That's
63because the image we're executing is interpreted by the EFI shell,
64which understands relative paths, whereas the rest of the command line
65is passed to bzImage.efi.
diff --git a/Documentation/zh_CN/magic-number.txt b/Documentation/zh_CN/magic-number.txt
index f606ba8598cf..4263022f5002 100644
--- a/Documentation/zh_CN/magic-number.txt
+++ b/Documentation/zh_CN/magic-number.txt
@@ -160,7 +160,7 @@ QUEUE_MAGIC_USED 0xf7e1cc33 queue_entry drivers/scsi/arm/queue.c
160HTB_CMAGIC 0xFEFAFEF1 htb_class net/sched/sch_htb.c 160HTB_CMAGIC 0xFEFAFEF1 htb_class net/sched/sch_htb.c
161NMI_MAGIC 0x48414d4d455201 nmi_s arch/mips/include/asm/sn/nmi.h 161NMI_MAGIC 0x48414d4d455201 nmi_s arch/mips/include/asm/sn/nmi.h
162 162
163请注意,在声音记忆管理中仍然有每一些被定义的驱动魔术值。查看include/sound/sndmagic.h来获取他们完整的列表信息。很多OSS声音驱动拥有自己从声卡PCI ID构建的魔术值-他们也没有被列在这里。 163请注意,在声音记忆管理中仍然有一些特殊的为每个驱动定义的魔术值。查看include/sound/sndmagic.h来获取他们完整的列表信息。很多OSS声音驱动拥有自己从声卡PCI ID构建的魔术值-他们也没有被列在这里。
164 164
165IrDA子系统也使用了大量的自己的魔术值,查看include/net/irda/irda.h来获取他们完整的信息。 165IrDA子系统也使用了大量的自己的魔术值,查看include/net/irda/irda.h来获取他们完整的信息。
166 166