aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/ABI/testing/sysfs-block-bcache156
-rw-r--r--Documentation/ABI/testing/sysfs-bus-mei7
-rw-r--r--Documentation/ABI/testing/sysfs-bus-rbd20
-rw-r--r--Documentation/ABI/testing/sysfs-bus-usb6
-rw-r--r--Documentation/ABI/testing/sysfs-class-net-mesh8
-rw-r--r--Documentation/ABI/testing/sysfs-devices-lpss_ltr44
-rw-r--r--Documentation/ABI/testing/sysfs-devices-power_resources_wakeup13
-rw-r--r--Documentation/ABI/testing/sysfs-devices-system-cpu12
-rw-r--r--Documentation/ABI/testing/sysfs-driver-hid-roccat-isku12
-rw-r--r--Documentation/ABI/testing/sysfs-driver-hid-roccat-konepure105
-rw-r--r--Documentation/ABI/testing/sysfs-firmware-acpi26
-rw-r--r--Documentation/DocBook/80211.tmpl2
-rw-r--r--Documentation/DocBook/device-drivers.tmpl2
-rw-r--r--Documentation/DocBook/media/dvb/dvbproperty.xml52
-rw-r--r--Documentation/DocBook/media/v4l/common.xml14
-rw-r--r--Documentation/DocBook/media/v4l/compat.xml24
-rw-r--r--Documentation/DocBook/media/v4l/controls.xml87
-rw-r--r--Documentation/DocBook/media/v4l/io.xml6
-rw-r--r--Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml10
-rw-r--r--Documentation/DocBook/media/v4l/subdev-formats.xml206
-rw-r--r--Documentation/DocBook/media/v4l/v4l2.xml19
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-ident.xml9
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-info.xml223
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-dbg-g-register.xml29
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml240
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enuminput.xml5
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enumoutput.xml5
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml113
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml9
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml78
-rw-r--r--Documentation/DocBook/media_api.tmpl1
-rw-r--r--Documentation/DocBook/writing-an-alsa-driver.tmpl12
-rw-r--r--Documentation/EDID/1600x1200.S44
-rw-r--r--Documentation/EDID/HOWTO.txt12
-rw-r--r--Documentation/RCU/checklist.txt26
-rw-r--r--Documentation/RCU/lockdep.txt5
-rw-r--r--Documentation/RCU/rcubarrier.txt15
-rw-r--r--Documentation/RCU/stallwarn.txt35
-rw-r--r--Documentation/RCU/whatisRCU.txt4
-rw-r--r--Documentation/SubmittingPatches12
-rw-r--r--Documentation/acpi/enumeration.txt32
-rw-r--r--Documentation/arm/cluster-pm-race-avoidance.txt498
-rw-r--r--Documentation/arm/firmware.txt88
-rw-r--r--Documentation/arm/sunxi/clocks.txt56
-rw-r--r--Documentation/arm/vlocks.txt211
-rw-r--r--Documentation/backlight/lp855x-driver.txt7
-rw-r--r--Documentation/bcache.txt431
-rw-r--r--Documentation/block/cfq-iosched.txt47
-rw-r--r--Documentation/cgroups/00-INDEX2
-rw-r--r--Documentation/cgroups/cgroups.txt3
-rw-r--r--Documentation/cgroups/devices.txt70
-rw-r--r--Documentation/cgroups/memory.txt76
-rw-r--r--Documentation/cgroups/net_cls.txt34
-rw-r--r--Documentation/clk.txt15
-rw-r--r--Documentation/coccinelle.txt11
-rw-r--r--Documentation/cpu-freq/cpu-drivers.txt9
-rw-r--r--Documentation/cpu-freq/governors.txt31
-rw-r--r--Documentation/cpuidle/driver.txt6
-rw-r--r--Documentation/device-mapper/dm-raid.txt126
-rw-r--r--Documentation/devicetree/bindings/arm/altera/socfpga-clk-manager.txt11
-rw-r--r--Documentation/devicetree/bindings/arm/atmel-adc.txt13
-rw-r--r--Documentation/devicetree/bindings/arm/bcm/bcm,kona-timer.txt19
-rw-r--r--Documentation/devicetree/bindings/arm/msm/ssbi.txt18
-rw-r--r--Documentation/devicetree/bindings/arm/msm/timer.txt41
-rw-r--r--Documentation/devicetree/bindings/arm/omap/l3-noc.txt1
-rw-r--r--Documentation/devicetree/bindings/arm/omap/timer.txt17
-rw-r--r--Documentation/devicetree/bindings/arm/primecell.txt19
-rw-r--r--Documentation/devicetree/bindings/arm/samsung-boards.txt10
-rw-r--r--Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt60
-rw-r--r--Documentation/devicetree/bindings/arm/samsung/sysreg.txt7
-rw-r--r--Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt67
-rw-r--r--Documentation/devicetree/bindings/ata/imx-pata.txt17
-rw-r--r--Documentation/devicetree/bindings/ata/pata-arasan.txt22
-rw-r--r--Documentation/devicetree/bindings/clock/altr_socfpga.txt18
-rw-r--r--Documentation/devicetree/bindings/clock/axi-clkgen.txt22
-rw-r--r--Documentation/devicetree/bindings/clock/exynos4-clock.txt288
-rw-r--r--Documentation/devicetree/bindings/clock/exynos5250-clock.txt177
-rw-r--r--Documentation/devicetree/bindings/clock/exynos5440-clock.txt61
-rw-r--r--Documentation/devicetree/bindings/clock/fixed-factor-clock.txt24
-rw-r--r--Documentation/devicetree/bindings/clock/imx27-clock.txt117
-rw-r--r--Documentation/devicetree/bindings/clock/imx5-clock.txt14
-rw-r--r--Documentation/devicetree/bindings/clock/imx6q-clock.txt3
-rw-r--r--Documentation/devicetree/bindings/clock/nvidia,tegra114-car.txt303
-rw-r--r--Documentation/devicetree/bindings/clock/nvidia,tegra20-car.txt4
-rw-r--r--Documentation/devicetree/bindings/clock/silabs,si5351.txt114
-rw-r--r--Documentation/devicetree/bindings/clock/sunxi.txt151
-rw-r--r--Documentation/devicetree/bindings/cpufreq/arm_big_little_dt.txt65
-rw-r--r--Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt2
-rw-r--r--Documentation/devicetree/bindings/cpufreq/cpufreq-exynos5440.txt28
-rw-r--r--Documentation/devicetree/bindings/crypto/fsl-imx-sahara.txt15
-rw-r--r--Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt49
-rw-r--r--Documentation/devicetree/bindings/drm/exynos/g2d.txt22
-rw-r--r--Documentation/devicetree/bindings/fb/mxsfb.txt36
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-grgpio.txt26
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt47
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-omap.txt15
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-vt8500.txt24
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio.txt6
-rw-r--r--Documentation/devicetree/bindings/gpio/mrvl-gpio.txt7
-rw-r--r--Documentation/devicetree/bindings/gpu/samsung-g2d.txt20
-rw-r--r--Documentation/devicetree/bindings/hwmon/ntc_thermistor.txt29
-rw-r--r--Documentation/devicetree/bindings/hwrng/timeriomem_rng.txt18
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-arb-gpio-challenge.txt80
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-mxs.txt12
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-s3c2410.txt2
-rw-r--r--Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt60
-rw-r--r--Documentation/devicetree/bindings/i2c/trivial-devices.txt2
-rw-r--r--Documentation/devicetree/bindings/iio/iio-bindings.txt97
-rw-r--r--Documentation/devicetree/bindings/input/cros-ec-keyb.txt72
-rw-r--r--Documentation/devicetree/bindings/input/ps2keyb-mouse-apbps2.txt16
-rw-r--r--Documentation/devicetree/bindings/input/touchscreen/auo_pixcir_ts.txt30
-rw-r--r--Documentation/devicetree/bindings/input/touchscreen/sitronix-st1232.txt24
-rw-r--r--Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt (renamed from Documentation/devicetree/bindings/interrupt-controller/allwinner,sunxi-ic.txt)4
-rw-r--r--Documentation/devicetree/bindings/interrupt-controller/samsung,s3c24xx-irq.txt53
-rw-r--r--Documentation/devicetree/bindings/leds/tca6507.txt2
-rw-r--r--Documentation/devicetree/bindings/marvell.txt3
-rw-r--r--Documentation/devicetree/bindings/media/coda.txt30
-rw-r--r--Documentation/devicetree/bindings/media/exynos-fimc-lite.txt14
-rw-r--r--Documentation/devicetree/bindings/media/exynos4-fimc-is.txt49
-rw-r--r--Documentation/devicetree/bindings/media/s5p-mfc.txt21
-rw-r--r--Documentation/devicetree/bindings/media/samsung-fimc.txt197
-rw-r--r--Documentation/devicetree/bindings/media/samsung-mipi-csis.txt81
-rw-r--r--Documentation/devicetree/bindings/media/video-interfaces.txt228
-rw-r--r--Documentation/devicetree/bindings/metag/meta-intc.txt2
-rw-r--r--Documentation/devicetree/bindings/mfd/ab8500.txt6
-rw-r--r--Documentation/devicetree/bindings/mfd/as3711.txt73
-rw-r--r--Documentation/devicetree/bindings/mfd/cros-ec.txt56
-rw-r--r--Documentation/devicetree/bindings/mfd/mc13xxx.txt36
-rw-r--r--Documentation/devicetree/bindings/mfd/omap-usb-host.txt80
-rw-r--r--Documentation/devicetree/bindings/mfd/omap-usb-tll.txt17
-rw-r--r--Documentation/devicetree/bindings/misc/smc.txt14
-rw-r--r--Documentation/devicetree/bindings/misc/sram.txt16
-rw-r--r--Documentation/devicetree/bindings/mmc/davinci_mmc.txt33
-rw-r--r--Documentation/devicetree/bindings/mmc/fsl-imx-mmc.txt24
-rw-r--r--Documentation/devicetree/bindings/mmc/mxs-mmc.txt12
-rw-r--r--Documentation/devicetree/bindings/mmc/samsung-sdhci.txt35
-rw-r--r--Documentation/devicetree/bindings/mmc/sdhci-sirf.txt18
-rw-r--r--Documentation/devicetree/bindings/mtd/gpmi-nand.txt17
-rw-r--r--Documentation/devicetree/bindings/net/can/atmel-can.txt14
-rw-r--r--Documentation/devicetree/bindings/net/cpsw.txt16
-rw-r--r--Documentation/devicetree/bindings/net/dsa/dsa.txt91
-rw-r--r--Documentation/devicetree/bindings/net/marvell-orion-mdio.txt4
-rw-r--r--Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt2
-rw-r--r--Documentation/devicetree/bindings/pinctrl/brcm,bcm2835-gpio.txt2
-rw-r--r--Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt6
-rw-r--r--Documentation/devicetree/bindings/pinctrl/fsl,imx35-pinctrl.txt955
-rw-r--r--Documentation/devicetree/bindings/pinctrl/fsl,imx51-pinctrl.txt759
-rw-r--r--Documentation/devicetree/bindings/pinctrl/fsl,imx53-pinctrl.txt1174
-rw-r--r--Documentation/devicetree/bindings/pinctrl/fsl,imx6dl-pinctrl.txt38
-rw-r--r--Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt1596
-rw-r--r--Documentation/devicetree/bindings/pinctrl/fsl,imx6sl-pinctrl.txt39
-rw-r--r--Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt4
-rw-r--r--Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt109
-rw-r--r--Documentation/devicetree/bindings/pinctrl/pinctrl-vt8500.txt57
-rw-r--r--Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt3
-rw-r--r--Documentation/devicetree/bindings/power_supply/power_supply.txt23
-rw-r--r--Documentation/devicetree/bindings/power_supply/qnap-poweroff.txt2
-rw-r--r--Documentation/devicetree/bindings/power_supply/tps65090.txt17
-rw-r--r--Documentation/devicetree/bindings/powerpc/fsl/cpus.txt22
-rw-r--r--Documentation/devicetree/bindings/pwm/pwm-samsung.txt43
-rw-r--r--Documentation/devicetree/bindings/pwm/pwm-tiecap.txt12
-rw-r--r--Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt12
-rw-r--r--Documentation/devicetree/bindings/regulator/max8952.txt52
-rw-r--r--Documentation/devicetree/bindings/regulator/max8997-regulator.txt2
-rw-r--r--Documentation/devicetree/bindings/reset/fsl,imx-src.txt49
-rw-r--r--Documentation/devicetree/bindings/reset/reset.txt75
-rw-r--r--Documentation/devicetree/bindings/rng/brcm,bcm2835.txt13
-rw-r--r--Documentation/devicetree/bindings/rtc/atmel,at91rm9200-rtc.txt15
-rw-r--r--Documentation/devicetree/bindings/serial/pl011.txt17
-rw-r--r--Documentation/devicetree/bindings/serio/snps-arc_ps2.txt16
-rw-r--r--Documentation/devicetree/bindings/sound/ak5386.txt19
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt8
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt7
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt8
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt8
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt8
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt26
-rw-r--r--Documentation/devicetree/bindings/sound/ti,tas5086.txt32
-rw-r--r--Documentation/devicetree/bindings/sound/wm8994.txt58
-rw-r--r--Documentation/devicetree/bindings/spi/brcm,bcm2835-spi.txt22
-rw-r--r--Documentation/devicetree/bindings/spi/fsl-spi.txt3
-rw-r--r--Documentation/devicetree/bindings/spi/mxs-spi.txt12
-rw-r--r--Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt26
-rw-r--r--Documentation/devicetree/bindings/spi/spi-davinci.txt51
-rw-r--r--Documentation/devicetree/bindings/spi/spi-samsung.txt8
-rw-r--r--Documentation/devicetree/bindings/spi/spi_pl022.txt36
-rw-r--r--Documentation/devicetree/bindings/staging/dwc2.txt15
-rw-r--r--Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt5
-rw-r--r--Documentation/devicetree/bindings/timer/allwinner,sun4i-timer.txt (renamed from Documentation/devicetree/bindings/timer/allwinner,sunxi-timer.txt)4
-rw-r--r--Documentation/devicetree/bindings/timer/arm,sp804.txt29
-rw-r--r--Documentation/devicetree/bindings/timer/cadence,ttc-timer.txt17
-rw-r--r--Documentation/devicetree/bindings/timer/fsl,imxgpt.txt18
-rw-r--r--Documentation/devicetree/bindings/timer/samsung,exynos4210-mct.txt68
-rw-r--r--Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt16
-rw-r--r--Documentation/devicetree/bindings/tty/serial/of-serial.txt7
-rw-r--r--Documentation/devicetree/bindings/usb/ci13xxx-imx.txt2
-rw-r--r--Documentation/devicetree/bindings/usb/ehci-omap.txt32
-rw-r--r--Documentation/devicetree/bindings/usb/exynos-usb.txt50
-rw-r--r--Documentation/devicetree/bindings/usb/ohci-omap3.txt15
-rw-r--r--Documentation/devicetree/bindings/usb/omap-usb.txt41
-rw-r--r--Documentation/devicetree/bindings/usb/samsung-usbphy.txt78
-rw-r--r--Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt34
-rw-r--r--Documentation/devicetree/bindings/vendor-prefixes.txt2
-rw-r--r--Documentation/devicetree/bindings/video/backlight/lp855x.txt41
-rw-r--r--Documentation/devicetree/bindings/video/backlight/tps65217-backlight.txt27
-rw-r--r--Documentation/devicetree/bindings/video/samsung-fimd.txt65
-rw-r--r--Documentation/devicetree/bindings/video/via,vt8500-fb.txt48
-rw-r--r--Documentation/devicetree/bindings/video/wm,wm8505-fb.txt32
-rw-r--r--Documentation/devicetree/bindings/watchdog/sun4i-wdt.txt (renamed from Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt)6
-rw-r--r--Documentation/dma-buf-sharing.txt13
-rw-r--r--Documentation/filesystems/ext4.txt21
-rw-r--r--Documentation/filesystems/nfs/00-INDEX2
-rw-r--r--Documentation/filesystems/nfs/rpc-server-gss.txt91
-rw-r--r--Documentation/filesystems/vfat.txt26
-rw-r--r--Documentation/filesystems/xfs-self-describing-metadata.txt350
-rw-r--r--Documentation/hw_random.txt2
-rw-r--r--Documentation/hwmon/ab850022
-rw-r--r--Documentation/hwmon/abx50028
-rw-r--r--Documentation/hwmon/adm12752
-rw-r--r--Documentation/hwmon/adt741050
-rw-r--r--Documentation/hwmon/jc422
-rw-r--r--Documentation/hwmon/lineage-pem2
-rw-r--r--Documentation/hwmon/lm2506636
-rw-r--r--Documentation/hwmon/lm7517
-rw-r--r--Documentation/hwmon/lm9523436
-rw-r--r--Documentation/hwmon/ltc2978149
-rw-r--r--Documentation/hwmon/ltc42612
-rw-r--r--Documentation/hwmon/max160642
-rw-r--r--Documentation/hwmon/max160652
-rw-r--r--Documentation/hwmon/max344402
-rw-r--r--Documentation/hwmon/max86882
-rw-r--r--Documentation/hwmon/nct6775188
-rw-r--r--Documentation/hwmon/pmbus2
-rw-r--r--Documentation/hwmon/sht152
-rw-r--r--Documentation/hwmon/smm6652
-rw-r--r--Documentation/hwmon/tmp40125
-rw-r--r--Documentation/hwmon/ucd90002
-rw-r--r--Documentation/hwmon/ucd92002
-rw-r--r--Documentation/hwmon/zl61004
-rw-r--r--Documentation/i2c/busses/i2c-diolan-u2c2
-rw-r--r--Documentation/ia64/err_inject.txt2
-rw-r--r--Documentation/input/alps.txt67
-rw-r--r--Documentation/ioctl/ioctl-number.txt1
-rw-r--r--Documentation/iostats.txt2
-rw-r--r--Documentation/kbuild/kconfig.txt36
-rw-r--r--Documentation/kbuild/makefiles.txt7
-rw-r--r--Documentation/kdump/kdump.txt1
-rw-r--r--Documentation/kernel-parameters.txt136
-rw-r--r--Documentation/leds/00-INDEX2
-rw-r--r--Documentation/leds/leds-lp5521.txt19
-rw-r--r--Documentation/leds/leds-lp5562.txt120
-rw-r--r--Documentation/leds/leds-lp55xx.txt46
-rw-r--r--Documentation/md.txt16
-rw-r--r--Documentation/misc-devices/mei/mei-client-bus.txt138
-rw-r--r--Documentation/mmc/mmc-dev-attrs.txt1
-rw-r--r--Documentation/networking/ieee802154.txt5
-rw-r--r--Documentation/networking/ip-sysctl.txt53
-rw-r--r--Documentation/networking/ipvs-sysctl.txt7
-rw-r--r--Documentation/networking/netlink_mmap.txt339
-rw-r--r--Documentation/networking/packet_mmap.txt368
-rw-r--r--Documentation/networking/stmmac.txt45
-rw-r--r--Documentation/networking/tuntap.txt77
-rw-r--r--Documentation/pinctrl.txt112
-rw-r--r--Documentation/power/opp.txt25
-rw-r--r--Documentation/powerpc/00-INDEX4
-rw-r--r--Documentation/powerpc/ptrace.txt1
-rw-r--r--Documentation/powerpc/sound.txt81
-rw-r--r--Documentation/powerpc/zImage_layout.txt47
-rw-r--r--Documentation/printk-formats.txt4
-rw-r--r--Documentation/s390/CommonIO12
-rw-r--r--Documentation/s390/s390dbf.txt3
-rw-r--r--Documentation/scsi/LICENSE.qla2xxx2
-rw-r--r--Documentation/security/Smack.txt11
-rw-r--r--Documentation/sound/alsa/ALSA-Configuration.txt7
-rw-r--r--Documentation/sound/alsa/HD-Audio.txt10
-rw-r--r--Documentation/sound/alsa/seq_oss.html2
-rw-r--r--Documentation/sysctl/vm.txt50
-rw-r--r--Documentation/sysrq.txt20
-rw-r--r--Documentation/this_cpu_ops.txt205
-rw-r--r--Documentation/timers/NO_HZ.txt273
-rw-r--r--Documentation/trace/ftrace.txt2099
-rw-r--r--Documentation/trace/tracepoints.txt15
-rw-r--r--Documentation/trace/uprobetracer.txt114
-rw-r--r--Documentation/usb/power-management.txt10
-rw-r--r--Documentation/video4linux/CARDLIST.em28xx3
-rw-r--r--Documentation/video4linux/CARDLIST.tuner3
-rw-r--r--Documentation/video4linux/si476x.txt187
-rw-r--r--Documentation/virtual/00-INDEX3
-rw-r--r--Documentation/virtual/kvm/api.txt146
-rw-r--r--Documentation/virtual/kvm/devices/README1
-rw-r--r--Documentation/virtual/kvm/devices/mpic.txt53
-rw-r--r--Documentation/virtual/kvm/devices/xics.txt66
-rw-r--r--Documentation/virtual/virtio-spec.txt3210
-rw-r--r--Documentation/vm/overcommit-accounting8
-rw-r--r--Documentation/x86/x86_64/boot-options.txt14
-rw-r--r--Documentation/x86/x86_64/mm.txt4
296 files changed, 12923 insertions, 9685 deletions
diff --git a/Documentation/ABI/testing/sysfs-block-bcache b/Documentation/ABI/testing/sysfs-block-bcache
new file mode 100644
index 000000000000..9e4bbc5d51fd
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-block-bcache
@@ -0,0 +1,156 @@
1What: /sys/block/<disk>/bcache/unregister
2Date: November 2010
3Contact: Kent Overstreet <kent.overstreet@gmail.com>
4Description:
5 A write to this file causes the backing device or cache to be
6 unregistered. If a backing device had dirty data in the cache,
7 writeback mode is automatically disabled and all dirty data is
8 flushed before the device is unregistered. Caches unregister
9 all associated backing devices before unregistering themselves.
10
11What: /sys/block/<disk>/bcache/clear_stats
12Date: November 2010
13Contact: Kent Overstreet <kent.overstreet@gmail.com>
14Description:
15 Writing to this file resets all the statistics for the device.
16
17What: /sys/block/<disk>/bcache/cache
18Date: November 2010
19Contact: Kent Overstreet <kent.overstreet@gmail.com>
20Description:
21 For a backing device that has cache, a symlink to
22 the bcache/ dir of that cache.
23
24What: /sys/block/<disk>/bcache/cache_hits
25Date: November 2010
26Contact: Kent Overstreet <kent.overstreet@gmail.com>
27Description:
28 For backing devices: integer number of full cache hits,
29 counted per bio. A partial cache hit counts as a miss.
30
31What: /sys/block/<disk>/bcache/cache_misses
32Date: November 2010
33Contact: Kent Overstreet <kent.overstreet@gmail.com>
34Description:
35 For backing devices: integer number of cache misses.
36
37What: /sys/block/<disk>/bcache/cache_hit_ratio
38Date: November 2010
39Contact: Kent Overstreet <kent.overstreet@gmail.com>
40Description:
41 For backing devices: cache hits as a percentage.
42
43What: /sys/block/<disk>/bcache/sequential_cutoff
44Date: November 2010
45Contact: Kent Overstreet <kent.overstreet@gmail.com>
46Description:
47 For backing devices: Threshold past which sequential IO will
48 skip the cache. Read and written as bytes in human readable
49 units (i.e. echo 10M > sequntial_cutoff).
50
51What: /sys/block/<disk>/bcache/bypassed
52Date: November 2010
53Contact: Kent Overstreet <kent.overstreet@gmail.com>
54Description:
55 Sum of all reads and writes that have bypassed the cache (due
56 to the sequential cutoff). Expressed as bytes in human
57 readable units.
58
59What: /sys/block/<disk>/bcache/writeback
60Date: November 2010
61Contact: Kent Overstreet <kent.overstreet@gmail.com>
62Description:
63 For backing devices: When on, writeback caching is enabled and
64 writes will be buffered in the cache. When off, caching is in
65 writethrough mode; reads and writes will be added to the
66 cache but no write buffering will take place.
67
68What: /sys/block/<disk>/bcache/writeback_running
69Date: November 2010
70Contact: Kent Overstreet <kent.overstreet@gmail.com>
71Description:
72 For backing devices: when off, dirty data will not be written
73 from the cache to the backing device. The cache will still be
74 used to buffer writes until it is mostly full, at which point
75 writes transparently revert to writethrough mode. Intended only
76 for benchmarking/testing.
77
78What: /sys/block/<disk>/bcache/writeback_delay
79Date: November 2010
80Contact: Kent Overstreet <kent.overstreet@gmail.com>
81Description:
82 For backing devices: In writeback mode, when dirty data is
83 written to the cache and the cache held no dirty data for that
84 backing device, writeback from cache to backing device starts
85 after this delay, expressed as an integer number of seconds.
86
87What: /sys/block/<disk>/bcache/writeback_percent
88Date: November 2010
89Contact: Kent Overstreet <kent.overstreet@gmail.com>
90Description:
91 For backing devices: If nonzero, writeback from cache to
92 backing device only takes place when more than this percentage
93 of the cache is used, allowing more write coalescing to take
94 place and reducing total number of writes sent to the backing
95 device. Integer between 0 and 40.
96
97What: /sys/block/<disk>/bcache/synchronous
98Date: November 2010
99Contact: Kent Overstreet <kent.overstreet@gmail.com>
100Description:
101 For a cache, a boolean that allows synchronous mode to be
102 switched on and off. In synchronous mode all writes are ordered
103 such that the cache can reliably recover from unclean shutdown;
104 if disabled bcache will not generally wait for writes to
105 complete but if the cache is not shut down cleanly all data
106 will be discarded from the cache. Should not be turned off with
107 writeback caching enabled.
108
109What: /sys/block/<disk>/bcache/discard
110Date: November 2010
111Contact: Kent Overstreet <kent.overstreet@gmail.com>
112Description:
113 For a cache, a boolean allowing discard/TRIM to be turned off
114 or back on if the device supports it.
115
116What: /sys/block/<disk>/bcache/bucket_size
117Date: November 2010
118Contact: Kent Overstreet <kent.overstreet@gmail.com>
119Description:
120 For a cache, bucket size in human readable units, as set at
121 cache creation time; should match the erase block size of the
122 SSD for optimal performance.
123
124What: /sys/block/<disk>/bcache/nbuckets
125Date: November 2010
126Contact: Kent Overstreet <kent.overstreet@gmail.com>
127Description:
128 For a cache, the number of usable buckets.
129
130What: /sys/block/<disk>/bcache/tree_depth
131Date: November 2010
132Contact: Kent Overstreet <kent.overstreet@gmail.com>
133Description:
134 For a cache, height of the btree excluding leaf nodes (i.e. a
135 one node tree will have a depth of 0).
136
137What: /sys/block/<disk>/bcache/btree_cache_size
138Date: November 2010
139Contact: Kent Overstreet <kent.overstreet@gmail.com>
140Description:
141 Number of btree buckets/nodes that are currently cached in
142 memory; cache dynamically grows and shrinks in response to
143 memory pressure from the rest of the system.
144
145What: /sys/block/<disk>/bcache/written
146Date: November 2010
147Contact: Kent Overstreet <kent.overstreet@gmail.com>
148Description:
149 For a cache, total amount of data in human readable units
150 written to the cache, excluding all metadata.
151
152What: /sys/block/<disk>/bcache/btree_written
153Date: November 2010
154Contact: Kent Overstreet <kent.overstreet@gmail.com>
155Description:
156 For a cache, sum of all btree writes in human readable units.
diff --git a/Documentation/ABI/testing/sysfs-bus-mei b/Documentation/ABI/testing/sysfs-bus-mei
new file mode 100644
index 000000000000..2066f0bbd453
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-bus-mei
@@ -0,0 +1,7 @@
1What: /sys/bus/mei/devices/.../modalias
2Date: March 2013
3KernelVersion: 3.10
4Contact: Samuel Ortiz <sameo@linux.intel.com>
5 linux-mei@linux.intel.com
6Description: Stores the same MODALIAS value emitted by uevent
7 Format: mei:<mei device name>
diff --git a/Documentation/ABI/testing/sysfs-bus-rbd b/Documentation/ABI/testing/sysfs-bus-rbd
index cd9213ccf3dc..0a306476424e 100644
--- a/Documentation/ABI/testing/sysfs-bus-rbd
+++ b/Documentation/ABI/testing/sysfs-bus-rbd
@@ -66,27 +66,7 @@ current_snap
66 66
67 The current snapshot for which the device is mapped. 67 The current snapshot for which the device is mapped.
68 68
69snap_*
70
71 A directory per each snapshot
72
73parent 69parent
74 70
75 Information identifying the pool, image, and snapshot id for 71 Information identifying the pool, image, and snapshot id for
76 the parent image in a layered rbd image (format 2 only). 72 the parent image in a layered rbd image (format 2 only).
77
78Entries under /sys/bus/rbd/devices/<dev-id>/snap_<snap-name>
79-------------------------------------------------------------
80
81snap_id
82
83 The rados internal snapshot id assigned for this snapshot
84
85snap_size
86
87 The size of the image when this snapshot was taken.
88
89snap_features
90
91 A hexadecimal encoding of the feature bits for this snapshot.
92
diff --git a/Documentation/ABI/testing/sysfs-bus-usb b/Documentation/ABI/testing/sysfs-bus-usb
index c8baaf53594a..f093e59cbe5f 100644
--- a/Documentation/ABI/testing/sysfs-bus-usb
+++ b/Documentation/ABI/testing/sysfs-bus-usb
@@ -32,7 +32,7 @@ Date: January 2008
32KernelVersion: 2.6.25 32KernelVersion: 2.6.25
33Contact: Sarah Sharp <sarah.a.sharp@intel.com> 33Contact: Sarah Sharp <sarah.a.sharp@intel.com>
34Description: 34Description:
35 If CONFIG_PM and CONFIG_USB_SUSPEND are enabled, then this file 35 If CONFIG_PM_RUNTIME is enabled then this file
36 is present. When read, it returns the total time (in msec) 36 is present. When read, it returns the total time (in msec)
37 that the USB device has been connected to the machine. This 37 that the USB device has been connected to the machine. This
38 file is read-only. 38 file is read-only.
@@ -45,7 +45,7 @@ Date: January 2008
45KernelVersion: 2.6.25 45KernelVersion: 2.6.25
46Contact: Sarah Sharp <sarah.a.sharp@intel.com> 46Contact: Sarah Sharp <sarah.a.sharp@intel.com>
47Description: 47Description:
48 If CONFIG_PM and CONFIG_USB_SUSPEND are enabled, then this file 48 If CONFIG_PM_RUNTIME is enabled then this file
49 is present. When read, it returns the total time (in msec) 49 is present. When read, it returns the total time (in msec)
50 that the USB device has been active, i.e. not in a suspended 50 that the USB device has been active, i.e. not in a suspended
51 state. This file is read-only. 51 state. This file is read-only.
@@ -187,7 +187,7 @@ What: /sys/bus/usb/devices/.../power/usb2_hardware_lpm
187Date: September 2011 187Date: September 2011
188Contact: Andiry Xu <andiry.xu@amd.com> 188Contact: Andiry Xu <andiry.xu@amd.com>
189Description: 189Description:
190 If CONFIG_USB_SUSPEND is set and a USB 2.0 lpm-capable device 190 If CONFIG_PM_RUNTIME is set and a USB 2.0 lpm-capable device
191 is plugged in to a xHCI host which support link PM, it will 191 is plugged in to a xHCI host which support link PM, it will
192 perform a LPM test; if the test is passed and host supports 192 perform a LPM test; if the test is passed and host supports
193 USB2 hardware LPM (xHCI 1.0 feature), USB2 hardware LPM will 193 USB2 hardware LPM (xHCI 1.0 feature), USB2 hardware LPM will
diff --git a/Documentation/ABI/testing/sysfs-class-net-mesh b/Documentation/ABI/testing/sysfs-class-net-mesh
index bc41da61608d..bdcd8b4e38f2 100644
--- a/Documentation/ABI/testing/sysfs-class-net-mesh
+++ b/Documentation/ABI/testing/sysfs-class-net-mesh
@@ -67,6 +67,14 @@ Description:
67 Defines the penalty which will be applied to an 67 Defines the penalty which will be applied to an
68 originator message's tq-field on every hop. 68 originator message's tq-field on every hop.
69 69
70What: /sys/class/net/<mesh_iface>/mesh/network_coding
71Date: Nov 2012
72Contact: Martin Hundeboll <martin@hundeboll.net>
73Description:
74 Controls whether Network Coding (using some magic
75 to send fewer wifi packets but still the same
76 content) is enabled or not.
77
70What: /sys/class/net/<mesh_iface>/mesh/orig_interval 78What: /sys/class/net/<mesh_iface>/mesh/orig_interval
71Date: May 2010 79Date: May 2010
72Contact: Marek Lindner <lindner_marek@yahoo.de> 80Contact: Marek Lindner <lindner_marek@yahoo.de>
diff --git a/Documentation/ABI/testing/sysfs-devices-lpss_ltr b/Documentation/ABI/testing/sysfs-devices-lpss_ltr
new file mode 100644
index 000000000000..ea9298d9bbaf
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-devices-lpss_ltr
@@ -0,0 +1,44 @@
1What: /sys/devices/.../lpss_ltr/
2Date: March 2013
3Contact: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
4Description:
5 The /sys/devices/.../lpss_ltr/ directory is only present for
6 devices included into the Intel Lynxpoint Low Power Subsystem
7 (LPSS). If present, it contains attributes containing the LTR
8 mode and the values of LTR registers of the device.
9
10What: /sys/devices/.../lpss_ltr/ltr_mode
11Date: March 2013
12Contact: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
13Description:
14 The /sys/devices/.../lpss_ltr/ltr_mode attribute contains an
15 integer number (0 or 1) indicating whether or not the devices'
16 LTR functionality is working in the software mode (1).
17
18 This attribute is read-only. If the device's runtime PM status
19 is not "active", attempts to read from this attribute cause
20 -EAGAIN to be returned.
21
22What: /sys/devices/.../lpss_ltr/auto_ltr
23Date: March 2013
24Contact: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
25Description:
26 The /sys/devices/.../lpss_ltr/auto_ltr attribute contains the
27 current value of the device's AUTO_LTR register (raw)
28 represented as an 8-digit hexadecimal number.
29
30 This attribute is read-only. If the device's runtime PM status
31 is not "active", attempts to read from this attribute cause
32 -EAGAIN to be returned.
33
34What: /sys/devices/.../lpss_ltr/sw_ltr
35Date: March 2013
36Contact: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
37Description:
38 The /sys/devices/.../lpss_ltr/auto_ltr attribute contains the
39 current value of the device's SW_LTR register (raw) represented
40 as an 8-digit hexadecimal number.
41
42 This attribute is read-only. If the device's runtime PM status
43 is not "active", attempts to read from this attribute cause
44 -EAGAIN to be returned.
diff --git a/Documentation/ABI/testing/sysfs-devices-power_resources_wakeup b/Documentation/ABI/testing/sysfs-devices-power_resources_wakeup
new file mode 100644
index 000000000000..e0588feeb6e1
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-devices-power_resources_wakeup
@@ -0,0 +1,13 @@
1What: /sys/devices/.../power_resources_wakeup/
2Date: April 2013
3Contact: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
4Description:
5 The /sys/devices/.../power_resources_wakeup/ directory is only
6 present for device objects representing ACPI device nodes that
7 require ACPI power resources for wakeup signaling.
8
9 If present, it contains symbolic links to device directories
10 representing ACPI power resources that need to be turned on for
11 the given device node to be able to signal wakeup. The names of
12 the links are the same as the names of the directories they
13 point to.
diff --git a/Documentation/ABI/testing/sysfs-devices-system-cpu b/Documentation/ABI/testing/sysfs-devices-system-cpu
index 9c978dcae07d..2447698aed41 100644
--- a/Documentation/ABI/testing/sysfs-devices-system-cpu
+++ b/Documentation/ABI/testing/sysfs-devices-system-cpu
@@ -173,3 +173,15 @@ Description: Processor frequency boosting control
173 Boosting allows the CPU and the firmware to run at a frequency 173 Boosting allows the CPU and the firmware to run at a frequency
174 beyound it's nominal limit. 174 beyound it's nominal limit.
175 More details can be found in Documentation/cpu-freq/boost.txt 175 More details can be found in Documentation/cpu-freq/boost.txt
176
177
178What: /sys/devices/system/cpu/cpu#/crash_notes
179 /sys/devices/system/cpu/cpu#/crash_notes_size
180Date: April 2013
181Contact: kexec@lists.infradead.org
182Description: address and size of the percpu note.
183
184 crash_notes: the physical address of the memory that holds the
185 note of cpu#.
186
187 crash_notes_size: size of the note of cpu#.
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-roccat-isku b/Documentation/ABI/testing/sysfs-driver-hid-roccat-isku
index 9eca5a182e64..c601d0f2ac46 100644
--- a/Documentation/ABI/testing/sysfs-driver-hid-roccat-isku
+++ b/Documentation/ABI/testing/sysfs-driver-hid-roccat-isku
@@ -101,7 +101,8 @@ Date: June 2011
101Contact: Stefan Achatz <erazor_de@users.sourceforge.net> 101Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
102Description: When written, this file lets one set the backlight intensity for 102Description: When written, this file lets one set the backlight intensity for
103 a specific profile. Profile number is included in written data. 103 a specific profile. Profile number is included in written data.
104 The data has to be 10 bytes long. 104 The data has to be 10 bytes long for Isku, IskuFX needs 16 bytes
105 of data.
105 Before reading this file, control has to be written to select 106 Before reading this file, control has to be written to select
106 which profile to read. 107 which profile to read.
107Users: http://roccat.sourceforge.net 108Users: http://roccat.sourceforge.net
@@ -141,3 +142,12 @@ Description: When written, this file lets one trigger easyshift functionality
141 The data has to be 16 bytes long. 142 The data has to be 16 bytes long.
142 This file is writeonly. 143 This file is writeonly.
143Users: http://roccat.sourceforge.net 144Users: http://roccat.sourceforge.net
145
146What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/talkfx
147Date: February 2013
148Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
149Description: When written, this file lets one trigger temporary color schemes
150 from the host.
151 The data has to be 16 bytes long.
152 This file is writeonly.
153Users: http://roccat.sourceforge.net
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-roccat-konepure b/Documentation/ABI/testing/sysfs-driver-hid-roccat-konepure
new file mode 100644
index 000000000000..41a9b7fbfc79
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-driver-hid-roccat-konepure
@@ -0,0 +1,105 @@
1What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/konepure/roccatkonepure<minor>/actual_profile
2Date: December 2012
3Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
4Description: The mouse can store 5 profiles which can be switched by the
5 press of a button. actual_profile holds number of actual profile.
6 This value is persistent, so its value determines the profile
7 that's active when the mouse is powered on next time.
8 When written, the mouse activates the set profile immediately.
9 The data has to be 3 bytes long.
10 The mouse will reject invalid data.
11Users: http://roccat.sourceforge.net
12
13What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/konepure/roccatkonepure<minor>/control
14Date: December 2012
15Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
16Description: When written, this file lets one select which data from which
17 profile will be read next. The data has to be 3 bytes long.
18 This file is writeonly.
19Users: http://roccat.sourceforge.net
20
21What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/konepure/roccatkonepure<minor>/info
22Date: December 2012
23Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
24Description: When read, this file returns general data like firmware version.
25 When written, the device can be reset.
26 The data is 6 bytes long.
27Users: http://roccat.sourceforge.net
28
29What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/konepure/roccatkonepure<minor>/macro
30Date: December 2012
31Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
32Description: The mouse can store a macro with max 500 key/button strokes
33 internally.
34 When written, this file lets one set the sequence for a specific
35 button for a specific profile. Button and profile numbers are
36 included in written data. The data has to be 2082 bytes long.
37 This file is writeonly.
38Users: http://roccat.sourceforge.net
39
40What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/konepure/roccatkonepure<minor>/profile_buttons
41Date: December 2012
42Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
43Description: The mouse can store 5 profiles which can be switched by the
44 press of a button. A profile is split in settings and buttons.
45 profile_buttons holds information about button layout.
46 When written, this file lets one write the respective profile
47 buttons back to the mouse. The data has to be 59 bytes long.
48 The mouse will reject invalid data.
49 Which profile to write is determined by the profile number
50 contained in the data.
51 Before reading this file, control has to be written to select
52 which profile to read.
53Users: http://roccat.sourceforge.net
54
55What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/konepure/roccatkonepure<minor>/profile_settings
56Date: December 2012
57Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
58Description: The mouse can store 5 profiles which can be switched by the
59 press of a button. A profile is split in settings and buttons.
60 profile_settings holds information like resolution, sensitivity
61 and light effects.
62 When written, this file lets one write the respective profile
63 settings back to the mouse. The data has to be 31 bytes long.
64 The mouse will reject invalid data.
65 Which profile to write is determined by the profile number
66 contained in the data.
67 Before reading this file, control has to be written to select
68 which profile to read.
69Users: http://roccat.sourceforge.net
70
71What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/konepure/roccatkonepure<minor>/sensor
72Date: December 2012
73Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
74Description: The mouse has a tracking- and a distance-control-unit. These
75 can be activated/deactivated and the lift-off distance can be
76 set. The data has to be 6 bytes long.
77 This file is writeonly.
78Users: http://roccat.sourceforge.net
79
80What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/konepure/roccatkonepure<minor>/talk
81Date: December 2012
82Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
83Description: Used to active some easy* functions of the mouse from outside.
84 The data has to be 16 bytes long.
85 This file is writeonly.
86Users: http://roccat.sourceforge.net
87
88What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/konepure/roccatkonepure<minor>/tcu
89Date: December 2012
90Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
91Description: When written a calibration process for the tracking control unit
92 can be initiated/cancelled. Also lets one read/write sensor
93 registers.
94 The data has to be 4 bytes long.
95Users: http://roccat.sourceforge.net
96
97What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/konepure/roccatkonepure<minor>/tcu_image
98Date: December 2012
99Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
100Description: When read the mouse returns a 30x30 pixel image of the
101 sampled underground. This works only in the course of a
102 calibration process initiated with tcu.
103 The returned data is 1028 bytes in size.
104 This file is readonly.
105Users: http://roccat.sourceforge.net
diff --git a/Documentation/ABI/testing/sysfs-firmware-acpi b/Documentation/ABI/testing/sysfs-firmware-acpi
index dd930c8db41f..ce9bee98b43b 100644
--- a/Documentation/ABI/testing/sysfs-firmware-acpi
+++ b/Documentation/ABI/testing/sysfs-firmware-acpi
@@ -18,6 +18,32 @@ Description:
18 yoffset: The number of pixels between the top of the screen 18 yoffset: The number of pixels between the top of the screen
19 and the top edge of the image. 19 and the top edge of the image.
20 20
21What: /sys/firmware/acpi/hotplug/
22Date: February 2013
23Contact: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
24Description:
25 There are separate hotplug profiles for different classes of
26 devices supported by ACPI, such as containers, memory modules,
27 processors, PCI root bridges etc. A hotplug profile for a given
28 class of devices is a collection of settings defining the way
29 that class of devices will be handled by the ACPI core hotplug
30 code. Those profiles are represented in sysfs as subdirectories
31 of /sys/firmware/acpi/hotplug/.
32
33 The following setting is available to user space for each
34 hotplug profile:
35
36 enabled: If set, the ACPI core will handle notifications of
37 hotplug events associated with the given class of
38 devices and will allow those devices to be ejected with
39 the help of the _EJ0 control method. Unsetting it
40 effectively disables hotplug for the correspoinding
41 class of devices.
42
43 The value of the above attribute is an integer number: 1 (set)
44 or 0 (unset). Attempts to write any other values to it will
45 cause -EINVAL to be returned.
46
21What: /sys/firmware/acpi/interrupts/ 47What: /sys/firmware/acpi/interrupts/
22Date: February 2008 48Date: February 2008
23Contact: Len Brown <lenb@kernel.org> 49Contact: Len Brown <lenb@kernel.org>
diff --git a/Documentation/DocBook/80211.tmpl b/Documentation/DocBook/80211.tmpl
index 284ced7a228f..0f6a3edcd44b 100644
--- a/Documentation/DocBook/80211.tmpl
+++ b/Documentation/DocBook/80211.tmpl
@@ -437,7 +437,7 @@
437 </section> 437 </section>
438!Finclude/net/mac80211.h ieee80211_get_buffered_bc 438!Finclude/net/mac80211.h ieee80211_get_buffered_bc
439!Finclude/net/mac80211.h ieee80211_beacon_get 439!Finclude/net/mac80211.h ieee80211_beacon_get
440!Finclude/net/mac80211.h ieee80211_sta_eosp_irqsafe 440!Finclude/net/mac80211.h ieee80211_sta_eosp
441!Finclude/net/mac80211.h ieee80211_frame_release_type 441!Finclude/net/mac80211.h ieee80211_frame_release_type
442!Finclude/net/mac80211.h ieee80211_sta_ps_transition 442!Finclude/net/mac80211.h ieee80211_sta_ps_transition
443!Finclude/net/mac80211.h ieee80211_sta_ps_transition_ni 443!Finclude/net/mac80211.h ieee80211_sta_ps_transition_ni
diff --git a/Documentation/DocBook/device-drivers.tmpl b/Documentation/DocBook/device-drivers.tmpl
index 7514dbf0a679..c36892c072da 100644
--- a/Documentation/DocBook/device-drivers.tmpl
+++ b/Documentation/DocBook/device-drivers.tmpl
@@ -227,7 +227,7 @@ X!Isound/sound_firmware.c
227 <chapter id="uart16x50"> 227 <chapter id="uart16x50">
228 <title>16x50 UART Driver</title> 228 <title>16x50 UART Driver</title>
229!Edrivers/tty/serial/serial_core.c 229!Edrivers/tty/serial/serial_core.c
230!Edrivers/tty/serial/8250/8250.c 230!Edrivers/tty/serial/8250/8250_core.c
231 </chapter> 231 </chapter>
232 232
233 <chapter id="fbdev"> 233 <chapter id="fbdev">
diff --git a/Documentation/DocBook/media/dvb/dvbproperty.xml b/Documentation/DocBook/media/dvb/dvbproperty.xml
index 4a5eaeed0b9e..a9b15e34c5b2 100644
--- a/Documentation/DocBook/media/dvb/dvbproperty.xml
+++ b/Documentation/DocBook/media/dvb/dvbproperty.xml
@@ -1,6 +1,6 @@
1<section id="FE_GET_SET_PROPERTY"> 1<section id="FE_GET_SET_PROPERTY">
2<title><constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></title> 2<title><constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></title>
3<para>This section describes the DVB version 5 extention of the DVB-API, also 3<para>This section describes the DVB version 5 extension of the DVB-API, also
4called "S2API", as this API were added to provide support for DVB-S2. It was 4called "S2API", as this API were added to provide support for DVB-S2. It was
5designed to be able to replace the old frontend API. Yet, the DISEQC and 5designed to be able to replace the old frontend API. Yet, the DISEQC and
6the capability ioctls weren't implemented yet via the new way.</para> 6the capability ioctls weren't implemented yet via the new way.</para>
@@ -903,14 +903,12 @@ enum fe_interleaving {
903 <constant>svalue</constant> is for signed values of the measure (dB measures) 903 <constant>svalue</constant> is for signed values of the measure (dB measures)
904 and <constant>uvalue</constant> is for unsigned values (counters, relative scale)</para></listitem> 904 and <constant>uvalue</constant> is for unsigned values (counters, relative scale)</para></listitem>
905 <listitem><para><constant>scale</constant> - Scale for the value. It can be:</para> 905 <listitem><para><constant>scale</constant> - Scale for the value. It can be:</para>
906 <section id = "fecap-scale-params"> 906 <itemizedlist mark='bullet' id="fecap-scale-params">
907 <itemizedlist mark='bullet'>
908 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - The parameter is supported by the frontend, but it was not possible to collect it (could be a transitory or permanent condition)</para></listitem> 907 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - The parameter is supported by the frontend, but it was not possible to collect it (could be a transitory or permanent condition)</para></listitem>
909 <listitem><para><constant>FE_SCALE_DECIBEL</constant> - parameter is a signed value, measured in 1/1000 dB</para></listitem> 908 <listitem><para><constant>FE_SCALE_DECIBEL</constant> - parameter is a signed value, measured in 1/1000 dB</para></listitem>
910 <listitem><para><constant>FE_SCALE_RELATIVE</constant> - parameter is a unsigned value, where 0 means 0% and 65535 means 100%.</para></listitem> 909 <listitem><para><constant>FE_SCALE_RELATIVE</constant> - parameter is a unsigned value, where 0 means 0% and 65535 means 100%.</para></listitem>
911 <listitem><para><constant>FE_SCALE_COUNTER</constant> - parameter is a unsigned value that counts the occurrence of an event, like bit error, block error, or lapsed time.</para></listitem> 910 <listitem><para><constant>FE_SCALE_COUNTER</constant> - parameter is a unsigned value that counts the occurrence of an event, like bit error, block error, or lapsed time.</para></listitem>
912 </itemizedlist> 911 </itemizedlist>
913 </section>
914 </listitem> 912 </listitem>
915 </itemizedlist> 913 </itemizedlist>
916 <section id="DTV-STAT-SIGNAL-STRENGTH"> 914 <section id="DTV-STAT-SIGNAL-STRENGTH">
@@ -918,9 +916,9 @@ enum fe_interleaving {
918 <para>Indicates the signal strength level at the analog part of the tuner or of the demod.</para> 916 <para>Indicates the signal strength level at the analog part of the tuner or of the demod.</para>
919 <para>Possible scales for this metric are:</para> 917 <para>Possible scales for this metric are:</para>
920 <itemizedlist mark='bullet'> 918 <itemizedlist mark='bullet'>
921 <listitem><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</listitem> 919 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
922 <listitem><constant>FE_SCALE_DECIBEL</constant> - signal strength is in 0.0001 dBm units, power measured in miliwatts. This value is generally negative.</listitem> 920 <listitem><para><constant>FE_SCALE_DECIBEL</constant> - signal strength is in 0.0001 dBm units, power measured in miliwatts. This value is generally negative.</para></listitem>
923 <listitem><constant>FE_SCALE_RELATIVE</constant> - The frontend provides a 0% to 100% measurement for power (actually, 0 to 65535).</listitem> 921 <listitem><para><constant>FE_SCALE_RELATIVE</constant> - The frontend provides a 0% to 100% measurement for power (actually, 0 to 65535).</para></listitem>
924 </itemizedlist> 922 </itemizedlist>
925 </section> 923 </section>
926 <section id="DTV-STAT-CNR"> 924 <section id="DTV-STAT-CNR">
@@ -928,9 +926,9 @@ enum fe_interleaving {
928 <para>Indicates the Signal to Noise ratio for the main carrier.</para> 926 <para>Indicates the Signal to Noise ratio for the main carrier.</para>
929 <para>Possible scales for this metric are:</para> 927 <para>Possible scales for this metric are:</para>
930 <itemizedlist mark='bullet'> 928 <itemizedlist mark='bullet'>
931 <listitem><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</listitem> 929 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
932 <listitem><constant>FE_SCALE_DECIBEL</constant> - Signal/Noise ratio is in 0.0001 dB units.</listitem> 930 <listitem><para><constant>FE_SCALE_DECIBEL</constant> - Signal/Noise ratio is in 0.0001 dB units.</para></listitem>
933 <listitem><constant>FE_SCALE_RELATIVE</constant> - The frontend provides a 0% to 100% measurement for Signal/Noise (actually, 0 to 65535).</listitem> 931 <listitem><para><constant>FE_SCALE_RELATIVE</constant> - The frontend provides a 0% to 100% measurement for Signal/Noise (actually, 0 to 65535).</para></listitem>
934 </itemizedlist> 932 </itemizedlist>
935 </section> 933 </section>
936 <section id="DTV-STAT-PRE-ERROR-BIT-COUNT"> 934 <section id="DTV-STAT-PRE-ERROR-BIT-COUNT">
@@ -943,8 +941,8 @@ enum fe_interleaving {
943 The frontend may reset it when a channel/transponder is tuned.</para> 941 The frontend may reset it when a channel/transponder is tuned.</para>
944 <para>Possible scales for this metric are:</para> 942 <para>Possible scales for this metric are:</para>
945 <itemizedlist mark='bullet'> 943 <itemizedlist mark='bullet'>
946 <listitem><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</listitem> 944 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
947 <listitem><constant>FE_SCALE_COUNTER</constant> - Number of error bits counted before the inner coding.</listitem> 945 <listitem><para><constant>FE_SCALE_COUNTER</constant> - Number of error bits counted before the inner coding.</para></listitem>
948 </itemizedlist> 946 </itemizedlist>
949 </section> 947 </section>
950 <section id="DTV-STAT-PRE-TOTAL-BIT-COUNT"> 948 <section id="DTV-STAT-PRE-TOTAL-BIT-COUNT">
@@ -952,14 +950,14 @@ enum fe_interleaving {
952 <para>Measures the amount of bits received before the inner code block, during the same period as 950 <para>Measures the amount of bits received before the inner code block, during the same period as
953 <link linkend="DTV-STAT-PRE-ERROR-BIT-COUNT"><constant>DTV_STAT_PRE_ERROR_BIT_COUNT</constant></link> measurement was taken.</para> 951 <link linkend="DTV-STAT-PRE-ERROR-BIT-COUNT"><constant>DTV_STAT_PRE_ERROR_BIT_COUNT</constant></link> measurement was taken.</para>
954 <para>It should be noticed that this measurement can be smaller than the total amount of bits on the transport stream, 952 <para>It should be noticed that this measurement can be smaller than the total amount of bits on the transport stream,
955 as the frontend may need to manually restart the measurement, loosing some data between each measurement interval.</para> 953 as the frontend may need to manually restart the measurement, losing some data between each measurement interval.</para>
956 <para>This measurement is monotonically increased, as the frontend gets more bit count measurements. 954 <para>This measurement is monotonically increased, as the frontend gets more bit count measurements.
957 The frontend may reset it when a channel/transponder is tuned.</para> 955 The frontend may reset it when a channel/transponder is tuned.</para>
958 <para>Possible scales for this metric are:</para> 956 <para>Possible scales for this metric are:</para>
959 <itemizedlist mark='bullet'> 957 <itemizedlist mark='bullet'>
960 <listitem><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</listitem> 958 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
961 <listitem><constant>FE_SCALE_COUNTER</constant> - Number of bits counted while measuring 959 <listitem><para><constant>FE_SCALE_COUNTER</constant> - Number of bits counted while measuring
962 <link linkend="DTV-STAT-PRE-ERROR-BIT-COUNT"><constant>DTV_STAT_PRE_ERROR_BIT_COUNT</constant></link>.</listitem> 960 <link linkend="DTV-STAT-PRE-ERROR-BIT-COUNT"><constant>DTV_STAT_PRE_ERROR_BIT_COUNT</constant></link>.</para></listitem>
963 </itemizedlist> 961 </itemizedlist>
964 </section> 962 </section>
965 <section id="DTV-STAT-POST-ERROR-BIT-COUNT"> 963 <section id="DTV-STAT-POST-ERROR-BIT-COUNT">
@@ -972,8 +970,8 @@ enum fe_interleaving {
972 The frontend may reset it when a channel/transponder is tuned.</para> 970 The frontend may reset it when a channel/transponder is tuned.</para>
973 <para>Possible scales for this metric are:</para> 971 <para>Possible scales for this metric are:</para>
974 <itemizedlist mark='bullet'> 972 <itemizedlist mark='bullet'>
975 <listitem><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</listitem> 973 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
976 <listitem><constant>FE_SCALE_COUNTER</constant> - Number of error bits counted after the inner coding.</listitem> 974 <listitem><para><constant>FE_SCALE_COUNTER</constant> - Number of error bits counted after the inner coding.</para></listitem>
977 </itemizedlist> 975 </itemizedlist>
978 </section> 976 </section>
979 <section id="DTV-STAT-POST-TOTAL-BIT-COUNT"> 977 <section id="DTV-STAT-POST-TOTAL-BIT-COUNT">
@@ -981,14 +979,14 @@ enum fe_interleaving {
981 <para>Measures the amount of bits received after the inner coding, during the same period as 979 <para>Measures the amount of bits received after the inner coding, during the same period as
982 <link linkend="DTV-STAT-POST-ERROR-BIT-COUNT"><constant>DTV_STAT_POST_ERROR_BIT_COUNT</constant></link> measurement was taken.</para> 980 <link linkend="DTV-STAT-POST-ERROR-BIT-COUNT"><constant>DTV_STAT_POST_ERROR_BIT_COUNT</constant></link> measurement was taken.</para>
983 <para>It should be noticed that this measurement can be smaller than the total amount of bits on the transport stream, 981 <para>It should be noticed that this measurement can be smaller than the total amount of bits on the transport stream,
984 as the frontend may need to manually restart the measurement, loosing some data between each measurement interval.</para> 982 as the frontend may need to manually restart the measurement, losing some data between each measurement interval.</para>
985 <para>This measurement is monotonically increased, as the frontend gets more bit count measurements. 983 <para>This measurement is monotonically increased, as the frontend gets more bit count measurements.
986 The frontend may reset it when a channel/transponder is tuned.</para> 984 The frontend may reset it when a channel/transponder is tuned.</para>
987 <para>Possible scales for this metric are:</para> 985 <para>Possible scales for this metric are:</para>
988 <itemizedlist mark='bullet'> 986 <itemizedlist mark='bullet'>
989 <listitem><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</listitem> 987 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
990 <listitem><constant>FE_SCALE_COUNTER</constant> - Number of bits counted while measuring 988 <listitem><para><constant>FE_SCALE_COUNTER</constant> - Number of bits counted while measuring
991 <link linkend="DTV-STAT-POST-ERROR-BIT-COUNT"><constant>DTV_STAT_POST_ERROR_BIT_COUNT</constant></link>.</listitem> 989 <link linkend="DTV-STAT-POST-ERROR-BIT-COUNT"><constant>DTV_STAT_POST_ERROR_BIT_COUNT</constant></link>.</para></listitem>
992 </itemizedlist> 990 </itemizedlist>
993 </section> 991 </section>
994 <section id="DTV-STAT-ERROR-BLOCK-COUNT"> 992 <section id="DTV-STAT-ERROR-BLOCK-COUNT">
@@ -998,8 +996,8 @@ enum fe_interleaving {
998 The frontend may reset it when a channel/transponder is tuned.</para> 996 The frontend may reset it when a channel/transponder is tuned.</para>
999 <para>Possible scales for this metric are:</para> 997 <para>Possible scales for this metric are:</para>
1000 <itemizedlist mark='bullet'> 998 <itemizedlist mark='bullet'>
1001 <listitem><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</listitem> 999 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
1002 <listitem><constant>FE_SCALE_COUNTER</constant> - Number of error blocks counted after the outer coding.</listitem> 1000 <listitem><para><constant>FE_SCALE_COUNTER</constant> - Number of error blocks counted after the outer coding.</para></listitem>
1003 </itemizedlist> 1001 </itemizedlist>
1004 </section> 1002 </section>
1005 <section id="DTV-STAT-TOTAL-BLOCK-COUNT"> 1003 <section id="DTV-STAT-TOTAL-BLOCK-COUNT">
@@ -1011,9 +1009,9 @@ enum fe_interleaving {
1011 by <link linkend="DTV-STAT-TOTAL-BLOCK-COUNT"><constant>DTV-STAT-TOTAL-BLOCK-COUNT</constant></link>.</para> 1009 by <link linkend="DTV-STAT-TOTAL-BLOCK-COUNT"><constant>DTV-STAT-TOTAL-BLOCK-COUNT</constant></link>.</para>
1012 <para>Possible scales for this metric are:</para> 1010 <para>Possible scales for this metric are:</para>
1013 <itemizedlist mark='bullet'> 1011 <itemizedlist mark='bullet'>
1014 <listitem><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</listitem> 1012 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
1015 <listitem><constant>FE_SCALE_COUNTER</constant> - Number of blocks counted while measuring 1013 <listitem><para><constant>FE_SCALE_COUNTER</constant> - Number of blocks counted while measuring
1016 <link linkend="DTV-STAT-ERROR-BLOCK-COUNT"><constant>DTV_STAT_ERROR_BLOCK_COUNT</constant></link>.</listitem> 1014 <link linkend="DTV-STAT-ERROR-BLOCK-COUNT"><constant>DTV_STAT_ERROR_BLOCK_COUNT</constant></link>.</para></listitem>
1017 </itemizedlist> 1015 </itemizedlist>
1018 </section> 1016 </section>
1019 </section> 1017 </section>
diff --git a/Documentation/DocBook/media/v4l/common.xml b/Documentation/DocBook/media/v4l/common.xml
index ae06afbbb3a9..1ddf354aa997 100644
--- a/Documentation/DocBook/media/v4l/common.xml
+++ b/Documentation/DocBook/media/v4l/common.xml
@@ -750,15 +750,6 @@ header can be used to get the timings of the formats in the <xref linkend="cea86
750<xref linkend="vesadmt" /> standards. 750<xref linkend="vesadmt" /> standards.
751 </para> 751 </para>
752 </listitem> 752 </listitem>
753 <listitem>
754 <para>DV Presets: Digital Video (DV) presets (<emphasis role="bold">deprecated</emphasis>).
755 These are IDs representing a
756video timing at the input/output. Presets are pre-defined timings implemented
757by the hardware according to video standards. A __u32 data type is used to represent
758a preset unlike the bit mask that is used in &v4l2-std-id; allowing future extensions
759to support as many different presets as needed. This API is deprecated in favor of the DV Timings
760API.</para>
761 </listitem>
762 </itemizedlist> 753 </itemizedlist>
763 <para>To enumerate and query the attributes of the DV timings supported by a device, 754 <para>To enumerate and query the attributes of the DV timings supported by a device,
764 applications use the &VIDIOC-ENUM-DV-TIMINGS; and &VIDIOC-DV-TIMINGS-CAP; ioctls. 755 applications use the &VIDIOC-ENUM-DV-TIMINGS; and &VIDIOC-DV-TIMINGS-CAP; ioctls.
@@ -766,11 +757,6 @@ API.</para>
766&VIDIOC-S-DV-TIMINGS; ioctl and to get current DV timings they use the 757&VIDIOC-S-DV-TIMINGS; ioctl and to get current DV timings they use the
767&VIDIOC-G-DV-TIMINGS; ioctl. To detect the DV timings as seen by the video receiver applications 758&VIDIOC-G-DV-TIMINGS; ioctl. To detect the DV timings as seen by the video receiver applications
768use the &VIDIOC-QUERY-DV-TIMINGS; ioctl.</para> 759use the &VIDIOC-QUERY-DV-TIMINGS; ioctl.</para>
769 <para>To enumerate and query the attributes of DV presets supported by a device,
770applications use the &VIDIOC-ENUM-DV-PRESETS; ioctl. To get the current DV preset,
771applications use the &VIDIOC-G-DV-PRESET; ioctl and to set a preset they use the
772&VIDIOC-S-DV-PRESET; ioctl. To detect the preset as seen by the video receiver applications
773use the &VIDIOC-QUERY-DV-PRESET; ioctl.</para>
774 <para>Applications can make use of the <xref linkend="input-capabilities" /> and 760 <para>Applications can make use of the <xref linkend="input-capabilities" /> and
775<xref linkend="output-capabilities"/> flags to decide what ioctls are available to set the 761<xref linkend="output-capabilities"/> flags to decide what ioctls are available to set the
776video timings for the device.</para> 762video timings for the device.</para>
diff --git a/Documentation/DocBook/media/v4l/compat.xml b/Documentation/DocBook/media/v4l/compat.xml
index 104a1a2b8849..f43542ae2981 100644
--- a/Documentation/DocBook/media/v4l/compat.xml
+++ b/Documentation/DocBook/media/v4l/compat.xml
@@ -2310,6 +2310,9 @@ more information.</para>
2310 <listitem> 2310 <listitem>
2311 <para>Added FM Modulator (FM TX) Extended Control Class: <constant>V4L2_CTRL_CLASS_FM_TX</constant> and their Control IDs.</para> 2311 <para>Added FM Modulator (FM TX) Extended Control Class: <constant>V4L2_CTRL_CLASS_FM_TX</constant> and their Control IDs.</para>
2312 </listitem> 2312 </listitem>
2313<listitem>
2314 <para>Added FM Receiver (FM RX) Extended Control Class: <constant>V4L2_CTRL_CLASS_FM_RX</constant> and their Control IDs.</para>
2315 </listitem>
2313 <listitem> 2316 <listitem>
2314 <para>Added Remote Controller chapter, describing the default Remote Controller mapping for media devices.</para> 2317 <para>Added Remote Controller chapter, describing the default Remote Controller mapping for media devices.</para>
2315 </listitem> 2318 </listitem>
@@ -2493,6 +2496,23 @@ that used it. It was originally scheduled for removal in 2.6.35.
2493 </orderedlist> 2496 </orderedlist>
2494 </section> 2497 </section>
2495 2498
2499 <section>
2500 <title>V4L2 in Linux 3.10</title>
2501 <orderedlist>
2502 <listitem>
2503 <para>Removed obsolete and unused DV_PRESET ioctls
2504 VIDIOC_G_DV_PRESET, VIDIOC_S_DV_PRESET, VIDIOC_QUERY_DV_PRESET and
2505 VIDIOC_ENUM_DV_PRESET. Remove the related v4l2_input/output capability
2506 flags V4L2_IN_CAP_PRESETS and V4L2_OUT_CAP_PRESETS.
2507 </para>
2508 </listitem>
2509 <listitem>
2510 <para>Added new debugging ioctl &VIDIOC-DBG-G-CHIP-INFO;.
2511 </para>
2512 </listitem>
2513 </orderedlist>
2514 </section>
2515
2496 <section id="other"> 2516 <section id="other">
2497 <title>Relation of V4L2 to other Linux multimedia APIs</title> 2517 <title>Relation of V4L2 to other Linux multimedia APIs</title>
2498 2518
@@ -2625,8 +2645,8 @@ interfaces and should not be implemented in new drivers.</para>
2625<xref linkend="extended-controls" />.</para> 2645<xref linkend="extended-controls" />.</para>
2626 </listitem> 2646 </listitem>
2627 <listitem> 2647 <listitem>
2628 <para>&VIDIOC-G-DV-PRESET;, &VIDIOC-S-DV-PRESET;, &VIDIOC-ENUM-DV-PRESETS; and 2648 <para>VIDIOC_G_DV_PRESET, VIDIOC_S_DV_PRESET, VIDIOC_ENUM_DV_PRESETS and
2629 &VIDIOC-QUERY-DV-PRESET; ioctls. Use the DV Timings API (<xref linkend="dv-timings" />).</para> 2649 VIDIOC_QUERY_DV_PRESET ioctls. Use the DV Timings API (<xref linkend="dv-timings" />).</para>
2630 </listitem> 2650 </listitem>
2631 <listitem> 2651 <listitem>
2632 <para><constant>VIDIOC_SUBDEV_G_CROP</constant> and 2652 <para><constant>VIDIOC_SUBDEV_G_CROP</constant> and
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml
index 9e8f85498678..8d7a77928d49 100644
--- a/Documentation/DocBook/media/v4l/controls.xml
+++ b/Documentation/DocBook/media/v4l/controls.xml
@@ -2300,6 +2300,12 @@ Possible values are:</entry>
2300 </row> 2300 </row>
2301 <row><entry></entry></row> 2301 <row><entry></entry></row>
2302 <row> 2302 <row>
2303 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER</constant>&nbsp;</entry>
2304 <entry>boolean</entry>
2305 </row><row><entry spanname="descr">Repeat the video sequence headers. Repeating these
2306headers makes random access to the video stream easier. Applicable to the MPEG1, 2 and 4 encoder.</entry>
2307 </row>
2308 <row>
2303 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER</constant>&nbsp;</entry> 2309 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER</constant>&nbsp;</entry>
2304 <entry>boolean</entry> 2310 <entry>boolean</entry>
2305 </row><row><entry spanname="descr">Enabled the deblocking post processing filter for MPEG4 decoder. 2311 </row><row><entry spanname="descr">Enabled the deblocking post processing filter for MPEG4 decoder.
@@ -3136,6 +3142,13 @@ giving priority to the center of the metered area.</entry>
3136 <entry><constant>V4L2_EXPOSURE_METERING_SPOT</constant>&nbsp;</entry> 3142 <entry><constant>V4L2_EXPOSURE_METERING_SPOT</constant>&nbsp;</entry>
3137 <entry>Measure only very small area at the center of the frame.</entry> 3143 <entry>Measure only very small area at the center of the frame.</entry>
3138 </row> 3144 </row>
3145 <row>
3146 <entry><constant>V4L2_EXPOSURE_METERING_MATRIX</constant>&nbsp;</entry>
3147 <entry>A multi-zone metering. The light intensity is measured
3148in several points of the frame and the the results are combined. The
3149algorithm of the zones selection and their significance in calculating the
3150final value is device dependant.</entry>
3151 </row>
3139 </tbody> 3152 </tbody>
3140 </entrytbl> 3153 </entrytbl>
3141 </row> 3154 </row>
@@ -3848,7 +3861,7 @@ in Hz. The range and step are driver-specific.</entry>
3848 </row> 3861 </row>
3849 <row> 3862 <row>
3850 <entry spanname="id"><constant>V4L2_CID_TUNE_PREEMPHASIS</constant>&nbsp;</entry> 3863 <entry spanname="id"><constant>V4L2_CID_TUNE_PREEMPHASIS</constant>&nbsp;</entry>
3851 <entry>integer</entry> 3864 <entry>enum v4l2_preemphasis</entry>
3852 </row> 3865 </row>
3853 <row id="v4l2-preemphasis"><entry spanname="descr">Configures the pre-emphasis value for broadcasting. 3866 <row id="v4l2-preemphasis"><entry spanname="descr">Configures the pre-emphasis value for broadcasting.
3854A pre-emphasis filter is applied to the broadcast to accentuate the high audio frequencies. 3867A pre-emphasis filter is applied to the broadcast to accentuate the high audio frequencies.
@@ -4687,4 +4700,76 @@ interface and may change in the future.</para>
4687 </table> 4700 </table>
4688 4701
4689 </section> 4702 </section>
4703
4704 <section id="fm-rx-controls">
4705 <title>FM Receiver Control Reference</title>
4706
4707 <para>The FM Receiver (FM_RX) class includes controls for common features of
4708 FM Reception capable devices.</para>
4709
4710 <table pgwide="1" frame="none" id="fm-rx-control-id">
4711 <title>FM_RX Control IDs</title>
4712
4713 <tgroup cols="4">
4714 <colspec colname="c1" colwidth="1*" />
4715 <colspec colname="c2" colwidth="6*" />
4716 <colspec colname="c3" colwidth="2*" />
4717 <colspec colname="c4" colwidth="6*" />
4718 <spanspec namest="c1" nameend="c2" spanname="id" />
4719 <spanspec namest="c2" nameend="c4" spanname="descr" />
4720 <thead>
4721 <row>
4722 <entry spanname="id" align="left">ID</entry>
4723 <entry align="left">Type</entry>
4724 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
4725 </row>
4726 </thead>
4727 <tbody valign="top">
4728 <row><entry></entry></row>
4729 <row>
4730 <entry spanname="id"><constant>V4L2_CID_FM_RX_CLASS</constant>&nbsp;</entry>
4731 <entry>class</entry>
4732 </row><row><entry spanname="descr">The FM_RX class
4733descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a
4734description of this control class.</entry>
4735 </row>
4736 <row>
4737 <entry spanname="id"><constant>V4L2_CID_RDS_RECEPTION</constant>&nbsp;</entry>
4738 <entry>boolean</entry>
4739 </row><row><entry spanname="descr">Enables/disables RDS
4740 reception by the radio tuner</entry>
4741 </row>
4742 <row>
4743 <entry spanname="id"><constant>V4L2_CID_TUNE_DEEMPHASIS</constant>&nbsp;</entry>
4744 <entry>enum v4l2_deemphasis</entry>
4745 </row>
4746 <row id="v4l2-deemphasis"><entry spanname="descr">Configures the de-emphasis value for reception.
4747A de-emphasis filter is applied to the broadcast to accentuate the high audio frequencies.
4748Depending on the region, a time constant of either 50 or 75 useconds is used. The enum&nbsp;v4l2_deemphasis
4749defines possible values for de-emphasis. Here they are:</entry>
4750 </row><row>
4751 <entrytbl spanname="descr" cols="2">
4752 <tbody valign="top">
4753 <row>
4754 <entry><constant>V4L2_DEEMPHASIS_DISABLED</constant>&nbsp;</entry>
4755 <entry>No de-emphasis is applied.</entry>
4756 </row>
4757 <row>
4758 <entry><constant>V4L2_DEEMPHASIS_50_uS</constant>&nbsp;</entry>
4759 <entry>A de-emphasis of 50 uS is used.</entry>
4760 </row>
4761 <row>
4762 <entry><constant>V4L2_DEEMPHASIS_75_uS</constant>&nbsp;</entry>
4763 <entry>A de-emphasis of 75 uS is used.</entry>
4764 </row>
4765 </tbody>
4766 </entrytbl>
4767
4768 </row>
4769 <row><entry></entry></row>
4770 </tbody>
4771 </tgroup>
4772 </table>
4773
4774 </section>
4690</section> 4775</section>
diff --git a/Documentation/DocBook/media/v4l/io.xml b/Documentation/DocBook/media/v4l/io.xml
index e6c58559ca6b..2c4c068dde83 100644
--- a/Documentation/DocBook/media/v4l/io.xml
+++ b/Documentation/DocBook/media/v4l/io.xml
@@ -1145,6 +1145,12 @@ in which case caches have not been used.</entry>
1145 same clock outside V4L2, use 1145 same clock outside V4L2, use
1146 <function>clock_gettime(2)</function> .</entry> 1146 <function>clock_gettime(2)</function> .</entry>
1147 </row> 1147 </row>
1148 <row>
1149 <entry><constant>V4L2_BUF_FLAG_TIMESTAMP_COPY</constant></entry>
1150 <entry>0x4000</entry>
1151 <entry>The CAPTURE buffer timestamp has been taken from the
1152 corresponding OUTPUT buffer. This flag applies only to mem2mem devices.</entry>
1153 </row>
1148 </tbody> 1154 </tbody>
1149 </tgroup> 1155 </tgroup>
1150 </table> 1156 </table>
diff --git a/Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml b/Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml
index 576b68b33f2c..116c301656e0 100644
--- a/Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml
+++ b/Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml
@@ -272,6 +272,16 @@
272 <entry><constant>MEDIA_ENT_T_V4L2_SUBDEV_LENS</constant></entry> 272 <entry><constant>MEDIA_ENT_T_V4L2_SUBDEV_LENS</constant></entry>
273 <entry>Lens controller</entry> 273 <entry>Lens controller</entry>
274 </row> 274 </row>
275 <row>
276 <entry><constant>MEDIA_ENT_T_V4L2_SUBDEV_DECODER</constant></entry>
277 <entry>Video decoder, the basic function of the video decoder is to
278 accept analogue video from a wide variety of sources such as
279 broadcast, DVD players, cameras and video cassette recorders, in
280 either NTSC, PAL or HD format and still occasionally SECAM, separate
281 it into its component parts, luminance and chrominance, and output
282 it in some digital video standard, with appropriate embedded timing
283 signals.</entry>
284 </row>
275 </tbody> 285 </tbody>
276 </tgroup> 286 </tgroup>
277 </table> 287 </table>
diff --git a/Documentation/DocBook/media/v4l/subdev-formats.xml b/Documentation/DocBook/media/v4l/subdev-formats.xml
index cc51372ed5e0..adc61982df7b 100644
--- a/Documentation/DocBook/media/v4l/subdev-formats.xml
+++ b/Documentation/DocBook/media/v4l/subdev-formats.xml
@@ -93,19 +93,35 @@
93 93
94 <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-rgb"> 94 <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-rgb">
95 <title>RGB formats</title> 95 <title>RGB formats</title>
96 <tgroup cols="11"> 96 <tgroup cols="27">
97 <colspec colname="id" align="left" /> 97 <colspec colname="id" align="left" />
98 <colspec colname="code" align="center"/> 98 <colspec colname="code" align="center"/>
99 <colspec colname="bit" /> 99 <colspec colname="bit" />
100 <colspec colnum="4" colname="b07" align="center" /> 100 <colspec colnum="4" colname="b23" align="center" />
101 <colspec colnum="5" colname="b06" align="center" /> 101 <colspec colnum="5" colname="b22" align="center" />
102 <colspec colnum="6" colname="b05" align="center" /> 102 <colspec colnum="6" colname="b21" align="center" />
103 <colspec colnum="7" colname="b04" align="center" /> 103 <colspec colnum="7" colname="b20" align="center" />
104 <colspec colnum="8" colname="b03" align="center" /> 104 <colspec colnum="8" colname="b19" align="center" />
105 <colspec colnum="9" colname="b02" align="center" /> 105 <colspec colnum="9" colname="b18" align="center" />
106 <colspec colnum="10" colname="b01" align="center" /> 106 <colspec colnum="10" colname="b17" align="center" />
107 <colspec colnum="11" colname="b00" align="center" /> 107 <colspec colnum="11" colname="b16" align="center" />
108 <spanspec namest="b07" nameend="b00" spanname="b0" /> 108 <colspec colnum="12" colname="b15" align="center" />
109 <colspec colnum="13" colname="b14" align="center" />
110 <colspec colnum="14" colname="b13" align="center" />
111 <colspec colnum="15" colname="b12" align="center" />
112 <colspec colnum="16" colname="b11" align="center" />
113 <colspec colnum="17" colname="b10" align="center" />
114 <colspec colnum="18" colname="b09" align="center" />
115 <colspec colnum="19" colname="b08" align="center" />
116 <colspec colnum="20" colname="b07" align="center" />
117 <colspec colnum="21" colname="b06" align="center" />
118 <colspec colnum="22" colname="b05" align="center" />
119 <colspec colnum="23" colname="b04" align="center" />
120 <colspec colnum="24" colname="b03" align="center" />
121 <colspec colnum="25" colname="b02" align="center" />
122 <colspec colnum="26" colname="b01" align="center" />
123 <colspec colnum="27" colname="b00" align="center" />
124 <spanspec namest="b23" nameend="b00" spanname="b0" />
109 <thead> 125 <thead>
110 <row> 126 <row>
111 <entry>Identifier</entry> 127 <entry>Identifier</entry>
@@ -117,6 +133,22 @@
117 <entry></entry> 133 <entry></entry>
118 <entry></entry> 134 <entry></entry>
119 <entry>Bit</entry> 135 <entry>Bit</entry>
136 <entry>23</entry>
137 <entry>22</entry>
138 <entry>21</entry>
139 <entry>20</entry>
140 <entry>19</entry>
141 <entry>18</entry>
142 <entry>17</entry>
143 <entry>16</entry>
144 <entry>15</entry>
145 <entry>14</entry>
146 <entry>13</entry>
147 <entry>12</entry>
148 <entry>11</entry>
149 <entry>10</entry>
150 <entry>9</entry>
151 <entry>8</entry>
120 <entry>7</entry> 152 <entry>7</entry>
121 <entry>6</entry> 153 <entry>6</entry>
122 <entry>5</entry> 154 <entry>5</entry>
@@ -132,6 +164,7 @@
132 <entry>V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE</entry> 164 <entry>V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE</entry>
133 <entry>0x1001</entry> 165 <entry>0x1001</entry>
134 <entry></entry> 166 <entry></entry>
167 &dash-ent-16;
135 <entry>0</entry> 168 <entry>0</entry>
136 <entry>0</entry> 169 <entry>0</entry>
137 <entry>0</entry> 170 <entry>0</entry>
@@ -145,6 +178,7 @@
145 <entry></entry> 178 <entry></entry>
146 <entry></entry> 179 <entry></entry>
147 <entry></entry> 180 <entry></entry>
181 &dash-ent-16;
148 <entry>g<subscript>3</subscript></entry> 182 <entry>g<subscript>3</subscript></entry>
149 <entry>g<subscript>2</subscript></entry> 183 <entry>g<subscript>2</subscript></entry>
150 <entry>g<subscript>1</subscript></entry> 184 <entry>g<subscript>1</subscript></entry>
@@ -158,6 +192,7 @@
158 <entry>V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE</entry> 192 <entry>V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE</entry>
159 <entry>0x1002</entry> 193 <entry>0x1002</entry>
160 <entry></entry> 194 <entry></entry>
195 &dash-ent-16;
161 <entry>g<subscript>3</subscript></entry> 196 <entry>g<subscript>3</subscript></entry>
162 <entry>g<subscript>2</subscript></entry> 197 <entry>g<subscript>2</subscript></entry>
163 <entry>g<subscript>1</subscript></entry> 198 <entry>g<subscript>1</subscript></entry>
@@ -171,6 +206,7 @@
171 <entry></entry> 206 <entry></entry>
172 <entry></entry> 207 <entry></entry>
173 <entry></entry> 208 <entry></entry>
209 &dash-ent-16;
174 <entry>0</entry> 210 <entry>0</entry>
175 <entry>0</entry> 211 <entry>0</entry>
176 <entry>0</entry> 212 <entry>0</entry>
@@ -184,6 +220,7 @@
184 <entry>V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE</entry> 220 <entry>V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE</entry>
185 <entry>0x1003</entry> 221 <entry>0x1003</entry>
186 <entry></entry> 222 <entry></entry>
223 &dash-ent-16;
187 <entry>0</entry> 224 <entry>0</entry>
188 <entry>r<subscript>4</subscript></entry> 225 <entry>r<subscript>4</subscript></entry>
189 <entry>r<subscript>3</subscript></entry> 226 <entry>r<subscript>3</subscript></entry>
@@ -197,6 +234,7 @@
197 <entry></entry> 234 <entry></entry>
198 <entry></entry> 235 <entry></entry>
199 <entry></entry> 236 <entry></entry>
237 &dash-ent-16;
200 <entry>g<subscript>2</subscript></entry> 238 <entry>g<subscript>2</subscript></entry>
201 <entry>g<subscript>1</subscript></entry> 239 <entry>g<subscript>1</subscript></entry>
202 <entry>g<subscript>0</subscript></entry> 240 <entry>g<subscript>0</subscript></entry>
@@ -210,6 +248,7 @@
210 <entry>V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE</entry> 248 <entry>V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE</entry>
211 <entry>0x1004</entry> 249 <entry>0x1004</entry>
212 <entry></entry> 250 <entry></entry>
251 &dash-ent-16;
213 <entry>g<subscript>2</subscript></entry> 252 <entry>g<subscript>2</subscript></entry>
214 <entry>g<subscript>1</subscript></entry> 253 <entry>g<subscript>1</subscript></entry>
215 <entry>g<subscript>0</subscript></entry> 254 <entry>g<subscript>0</subscript></entry>
@@ -223,6 +262,7 @@
223 <entry></entry> 262 <entry></entry>
224 <entry></entry> 263 <entry></entry>
225 <entry></entry> 264 <entry></entry>
265 &dash-ent-16;
226 <entry>0</entry> 266 <entry>0</entry>
227 <entry>r<subscript>4</subscript></entry> 267 <entry>r<subscript>4</subscript></entry>
228 <entry>r<subscript>3</subscript></entry> 268 <entry>r<subscript>3</subscript></entry>
@@ -236,6 +276,7 @@
236 <entry>V4L2_MBUS_FMT_BGR565_2X8_BE</entry> 276 <entry>V4L2_MBUS_FMT_BGR565_2X8_BE</entry>
237 <entry>0x1005</entry> 277 <entry>0x1005</entry>
238 <entry></entry> 278 <entry></entry>
279 &dash-ent-16;
239 <entry>b<subscript>4</subscript></entry> 280 <entry>b<subscript>4</subscript></entry>
240 <entry>b<subscript>3</subscript></entry> 281 <entry>b<subscript>3</subscript></entry>
241 <entry>b<subscript>2</subscript></entry> 282 <entry>b<subscript>2</subscript></entry>
@@ -249,6 +290,7 @@
249 <entry></entry> 290 <entry></entry>
250 <entry></entry> 291 <entry></entry>
251 <entry></entry> 292 <entry></entry>
293 &dash-ent-16;
252 <entry>g<subscript>2</subscript></entry> 294 <entry>g<subscript>2</subscript></entry>
253 <entry>g<subscript>1</subscript></entry> 295 <entry>g<subscript>1</subscript></entry>
254 <entry>g<subscript>0</subscript></entry> 296 <entry>g<subscript>0</subscript></entry>
@@ -262,6 +304,7 @@
262 <entry>V4L2_MBUS_FMT_BGR565_2X8_LE</entry> 304 <entry>V4L2_MBUS_FMT_BGR565_2X8_LE</entry>
263 <entry>0x1006</entry> 305 <entry>0x1006</entry>
264 <entry></entry> 306 <entry></entry>
307 &dash-ent-16;
265 <entry>g<subscript>2</subscript></entry> 308 <entry>g<subscript>2</subscript></entry>
266 <entry>g<subscript>1</subscript></entry> 309 <entry>g<subscript>1</subscript></entry>
267 <entry>g<subscript>0</subscript></entry> 310 <entry>g<subscript>0</subscript></entry>
@@ -275,6 +318,7 @@
275 <entry></entry> 318 <entry></entry>
276 <entry></entry> 319 <entry></entry>
277 <entry></entry> 320 <entry></entry>
321 &dash-ent-16;
278 <entry>b<subscript>4</subscript></entry> 322 <entry>b<subscript>4</subscript></entry>
279 <entry>b<subscript>3</subscript></entry> 323 <entry>b<subscript>3</subscript></entry>
280 <entry>b<subscript>2</subscript></entry> 324 <entry>b<subscript>2</subscript></entry>
@@ -288,6 +332,7 @@
288 <entry>V4L2_MBUS_FMT_RGB565_2X8_BE</entry> 332 <entry>V4L2_MBUS_FMT_RGB565_2X8_BE</entry>
289 <entry>0x1007</entry> 333 <entry>0x1007</entry>
290 <entry></entry> 334 <entry></entry>
335 &dash-ent-16;
291 <entry>r<subscript>4</subscript></entry> 336 <entry>r<subscript>4</subscript></entry>
292 <entry>r<subscript>3</subscript></entry> 337 <entry>r<subscript>3</subscript></entry>
293 <entry>r<subscript>2</subscript></entry> 338 <entry>r<subscript>2</subscript></entry>
@@ -301,6 +346,7 @@
301 <entry></entry> 346 <entry></entry>
302 <entry></entry> 347 <entry></entry>
303 <entry></entry> 348 <entry></entry>
349 &dash-ent-16;
304 <entry>g<subscript>2</subscript></entry> 350 <entry>g<subscript>2</subscript></entry>
305 <entry>g<subscript>1</subscript></entry> 351 <entry>g<subscript>1</subscript></entry>
306 <entry>g<subscript>0</subscript></entry> 352 <entry>g<subscript>0</subscript></entry>
@@ -314,6 +360,7 @@
314 <entry>V4L2_MBUS_FMT_RGB565_2X8_LE</entry> 360 <entry>V4L2_MBUS_FMT_RGB565_2X8_LE</entry>
315 <entry>0x1008</entry> 361 <entry>0x1008</entry>
316 <entry></entry> 362 <entry></entry>
363 &dash-ent-16;
317 <entry>g<subscript>2</subscript></entry> 364 <entry>g<subscript>2</subscript></entry>
318 <entry>g<subscript>1</subscript></entry> 365 <entry>g<subscript>1</subscript></entry>
319 <entry>g<subscript>0</subscript></entry> 366 <entry>g<subscript>0</subscript></entry>
@@ -327,6 +374,27 @@
327 <entry></entry> 374 <entry></entry>
328 <entry></entry> 375 <entry></entry>
329 <entry></entry> 376 <entry></entry>
377 &dash-ent-16;
378 <entry>r<subscript>4</subscript></entry>
379 <entry>r<subscript>3</subscript></entry>
380 <entry>r<subscript>2</subscript></entry>
381 <entry>r<subscript>1</subscript></entry>
382 <entry>r<subscript>0</subscript></entry>
383 <entry>g<subscript>5</subscript></entry>
384 <entry>g<subscript>4</subscript></entry>
385 <entry>g<subscript>3</subscript></entry>
386 </row>
387 <row id="V4L2-MBUS-FMT-RGB666-1X18">
388 <entry>V4L2_MBUS_FMT_RGB666_1X18</entry>
389 <entry>0x1009</entry>
390 <entry></entry>
391 <entry>-</entry>
392 <entry>-</entry>
393 <entry>-</entry>
394 <entry>-</entry>
395 <entry>-</entry>
396 <entry>-</entry>
397 <entry>r<subscript>5</subscript></entry>
330 <entry>r<subscript>4</subscript></entry> 398 <entry>r<subscript>4</subscript></entry>
331 <entry>r<subscript>3</subscript></entry> 399 <entry>r<subscript>3</subscript></entry>
332 <entry>r<subscript>2</subscript></entry> 400 <entry>r<subscript>2</subscript></entry>
@@ -335,6 +403,124 @@
335 <entry>g<subscript>5</subscript></entry> 403 <entry>g<subscript>5</subscript></entry>
336 <entry>g<subscript>4</subscript></entry> 404 <entry>g<subscript>4</subscript></entry>
337 <entry>g<subscript>3</subscript></entry> 405 <entry>g<subscript>3</subscript></entry>
406 <entry>g<subscript>2</subscript></entry>
407 <entry>g<subscript>1</subscript></entry>
408 <entry>g<subscript>0</subscript></entry>
409 <entry>b<subscript>5</subscript></entry>
410 <entry>b<subscript>4</subscript></entry>
411 <entry>b<subscript>3</subscript></entry>
412 <entry>b<subscript>2</subscript></entry>
413 <entry>b<subscript>1</subscript></entry>
414 <entry>b<subscript>0</subscript></entry>
415 </row>
416 <row id="V4L2-MBUS-FMT-RGB888-1X24">
417 <entry>V4L2_MBUS_FMT_RGB888_1X24</entry>
418 <entry>0x100a</entry>
419 <entry></entry>
420 <entry>r<subscript>7</subscript></entry>
421 <entry>r<subscript>6</subscript></entry>
422 <entry>r<subscript>5</subscript></entry>
423 <entry>r<subscript>4</subscript></entry>
424 <entry>r<subscript>3</subscript></entry>
425 <entry>r<subscript>2</subscript></entry>
426 <entry>r<subscript>1</subscript></entry>
427 <entry>r<subscript>0</subscript></entry>
428 <entry>g<subscript>7</subscript></entry>
429 <entry>g<subscript>6</subscript></entry>
430 <entry>g<subscript>5</subscript></entry>
431 <entry>g<subscript>4</subscript></entry>
432 <entry>g<subscript>3</subscript></entry>
433 <entry>g<subscript>2</subscript></entry>
434 <entry>g<subscript>1</subscript></entry>
435 <entry>g<subscript>0</subscript></entry>
436 <entry>b<subscript>7</subscript></entry>
437 <entry>b<subscript>6</subscript></entry>
438 <entry>b<subscript>5</subscript></entry>
439 <entry>b<subscript>4</subscript></entry>
440 <entry>b<subscript>3</subscript></entry>
441 <entry>b<subscript>2</subscript></entry>
442 <entry>b<subscript>1</subscript></entry>
443 <entry>b<subscript>0</subscript></entry>
444 </row>
445 <row id="V4L2-MBUS-FMT-RGB888-2X12-BE">
446 <entry>V4L2_MBUS_FMT_RGB888_2X12_BE</entry>
447 <entry>0x100b</entry>
448 <entry></entry>
449 &dash-ent-10;
450 <entry>-</entry>
451 <entry>-</entry>
452 <entry>r<subscript>7</subscript></entry>
453 <entry>r<subscript>6</subscript></entry>
454 <entry>r<subscript>5</subscript></entry>
455 <entry>r<subscript>4</subscript></entry>
456 <entry>r<subscript>3</subscript></entry>
457 <entry>r<subscript>2</subscript></entry>
458 <entry>r<subscript>1</subscript></entry>
459 <entry>r<subscript>0</subscript></entry>
460 <entry>g<subscript>7</subscript></entry>
461 <entry>g<subscript>6</subscript></entry>
462 <entry>g<subscript>5</subscript></entry>
463 <entry>g<subscript>4</subscript></entry>
464 </row>
465 <row>
466 <entry></entry>
467 <entry></entry>
468 <entry></entry>
469 &dash-ent-10;
470 <entry>-</entry>
471 <entry>-</entry>
472 <entry>g<subscript>3</subscript></entry>
473 <entry>g<subscript>2</subscript></entry>
474 <entry>g<subscript>1</subscript></entry>
475 <entry>g<subscript>0</subscript></entry>
476 <entry>b<subscript>7</subscript></entry>
477 <entry>b<subscript>6</subscript></entry>
478 <entry>b<subscript>5</subscript></entry>
479 <entry>b<subscript>4</subscript></entry>
480 <entry>b<subscript>3</subscript></entry>
481 <entry>b<subscript>2</subscript></entry>
482 <entry>b<subscript>1</subscript></entry>
483 <entry>b<subscript>0</subscript></entry>
484 </row>
485 <row id="V4L2-MBUS-FMT-RGB888-2X12-LE">
486 <entry>V4L2_MBUS_FMT_RGB888_2X12_LE</entry>
487 <entry>0x100c</entry>
488 <entry></entry>
489 &dash-ent-10;
490 <entry>-</entry>
491 <entry>-</entry>
492 <entry>g<subscript>3</subscript></entry>
493 <entry>g<subscript>2</subscript></entry>
494 <entry>g<subscript>1</subscript></entry>
495 <entry>g<subscript>0</subscript></entry>
496 <entry>b<subscript>7</subscript></entry>
497 <entry>b<subscript>6</subscript></entry>
498 <entry>b<subscript>5</subscript></entry>
499 <entry>b<subscript>4</subscript></entry>
500 <entry>b<subscript>3</subscript></entry>
501 <entry>b<subscript>2</subscript></entry>
502 <entry>b<subscript>1</subscript></entry>
503 <entry>b<subscript>0</subscript></entry>
504 </row>
505 <row>
506 <entry></entry>
507 <entry></entry>
508 <entry></entry>
509 &dash-ent-10;
510 <entry>-</entry>
511 <entry>-</entry>
512 <entry>r<subscript>7</subscript></entry>
513 <entry>r<subscript>6</subscript></entry>
514 <entry>r<subscript>5</subscript></entry>
515 <entry>r<subscript>4</subscript></entry>
516 <entry>r<subscript>3</subscript></entry>
517 <entry>r<subscript>2</subscript></entry>
518 <entry>r<subscript>1</subscript></entry>
519 <entry>r<subscript>0</subscript></entry>
520 <entry>g<subscript>7</subscript></entry>
521 <entry>g<subscript>6</subscript></entry>
522 <entry>g<subscript>5</subscript></entry>
523 <entry>g<subscript>4</subscript></entry>
338 </row> 524 </row>
339 </tbody> 525 </tbody>
340 </tgroup> 526 </tgroup>
diff --git a/Documentation/DocBook/media/v4l/v4l2.xml b/Documentation/DocBook/media/v4l/v4l2.xml
index a3cce18384e9..bfc93cdcf696 100644
--- a/Documentation/DocBook/media/v4l/v4l2.xml
+++ b/Documentation/DocBook/media/v4l/v4l2.xml
@@ -124,6 +124,7 @@ Remote Controller chapter.</contrib>
124 <year>2010</year> 124 <year>2010</year>
125 <year>2011</year> 125 <year>2011</year>
126 <year>2012</year> 126 <year>2012</year>
127 <year>2013</year>
127 <holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin 128 <holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin
128Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab, 129Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab,
129 Pawel Osciak</holder> 130 Pawel Osciak</holder>
@@ -140,12 +141,22 @@ structs, ioctls) must be noted in more detail in the history chapter
140applications. --> 141applications. -->
141 142
142 <revision> 143 <revision>
144 <revnumber>3.10</revnumber>
145 <date>2013-03-25</date>
146 <authorinitials>hv</authorinitials>
147 <revremark>Remove obsolete and unused DV_PRESET ioctls:
148 VIDIOC_G_DV_PRESET, VIDIOC_S_DV_PRESET, VIDIOC_QUERY_DV_PRESET and
149 VIDIOC_ENUM_DV_PRESET. Remove the related v4l2_input/output capability
150 flags V4L2_IN_CAP_PRESETS and V4L2_OUT_CAP_PRESETS. Added VIDIOC_DBG_G_CHIP_INFO.
151 </revremark>
152 </revision>
153
154 <revision>
143 <revnumber>3.9</revnumber> 155 <revnumber>3.9</revnumber>
144 <date>2012-12-03</date> 156 <date>2012-12-03</date>
145 <authorinitials>sa, sn</authorinitials> 157 <authorinitials>sa, sn</authorinitials>
146 <revremark>Added timestamp types to v4l2_buffer. 158 <revremark>Added timestamp types to v4l2_buffer.
147 Added <constant>V4L2_EVENT_CTRL_CH_RANGE</constant> control 159 Added V4L2_EVENT_CTRL_CH_RANGE control event changes flag.
148 event changes flag, see <xref linkend="changes-flags"/>.
149 </revremark> 160 </revremark>
150 </revision> 161 </revision>
151 162
@@ -537,6 +548,7 @@ and discussions on the V4L mailing list.</revremark>
537 &sub-create-bufs; 548 &sub-create-bufs;
538 &sub-cropcap; 549 &sub-cropcap;
539 &sub-dbg-g-chip-ident; 550 &sub-dbg-g-chip-ident;
551 &sub-dbg-g-chip-info;
540 &sub-dbg-g-register; 552 &sub-dbg-g-register;
541 &sub-decoder-cmd; 553 &sub-decoder-cmd;
542 &sub-dqevent; 554 &sub-dqevent;
@@ -544,7 +556,6 @@ and discussions on the V4L mailing list.</revremark>
544 &sub-encoder-cmd; 556 &sub-encoder-cmd;
545 &sub-enumaudio; 557 &sub-enumaudio;
546 &sub-enumaudioout; 558 &sub-enumaudioout;
547 &sub-enum-dv-presets;
548 &sub-enum-dv-timings; 559 &sub-enum-dv-timings;
549 &sub-enum-fmt; 560 &sub-enum-fmt;
550 &sub-enum-framesizes; 561 &sub-enum-framesizes;
@@ -558,7 +569,6 @@ and discussions on the V4L mailing list.</revremark>
558 &sub-g-audioout; 569 &sub-g-audioout;
559 &sub-g-crop; 570 &sub-g-crop;
560 &sub-g-ctrl; 571 &sub-g-ctrl;
561 &sub-g-dv-preset;
562 &sub-g-dv-timings; 572 &sub-g-dv-timings;
563 &sub-g-enc-index; 573 &sub-g-enc-index;
564 &sub-g-ext-ctrls; 574 &sub-g-ext-ctrls;
@@ -582,7 +592,6 @@ and discussions on the V4L mailing list.</revremark>
582 &sub-querybuf; 592 &sub-querybuf;
583 &sub-querycap; 593 &sub-querycap;
584 &sub-queryctrl; 594 &sub-queryctrl;
585 &sub-query-dv-preset;
586 &sub-query-dv-timings; 595 &sub-query-dv-timings;
587 &sub-querystd; 596 &sub-querystd;
588 &sub-reqbufs; 597 &sub-reqbufs;
diff --git a/Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-ident.xml b/Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-ident.xml
index 4ecd966808de..921e18550d26 100644
--- a/Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-ident.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-ident.xml
@@ -200,10 +200,10 @@ the values from <xref linkend="chip-ids" />.</entry>
200 &cs-def; 200 &cs-def;
201 <tbody valign="top"> 201 <tbody valign="top">
202 <row> 202 <row>
203 <entry><constant>V4L2_CHIP_MATCH_HOST</constant></entry> 203 <entry><constant>V4L2_CHIP_MATCH_BRIDGE</constant></entry>
204 <entry>0</entry> 204 <entry>0</entry>
205 <entry>Match the nth chip on the card, zero for the 205 <entry>Match the nth chip on the card, zero for the
206 host chip. Does not match &i2c; chips.</entry> 206 bridge chip. Does not match sub-devices.</entry>
207 </row> 207 </row>
208 <row> 208 <row>
209 <entry><constant>V4L2_CHIP_MATCH_I2C_DRIVER</constant></entry> 209 <entry><constant>V4L2_CHIP_MATCH_I2C_DRIVER</constant></entry>
@@ -220,6 +220,11 @@ the values from <xref linkend="chip-ids" />.</entry>
220 <entry>3</entry> 220 <entry>3</entry>
221 <entry>Match the nth anciliary AC97 chip.</entry> 221 <entry>Match the nth anciliary AC97 chip.</entry>
222 </row> 222 </row>
223 <row>
224 <entry><constant>V4L2_CHIP_MATCH_SUBDEV</constant></entry>
225 <entry>4</entry>
226 <entry>Match the nth sub-device. Can't be used with this ioctl.</entry>
227 </row>
223 </tbody> 228 </tbody>
224 </tgroup> 229 </tgroup>
225 </table> 230 </table>
diff --git a/Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-info.xml b/Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-info.xml
new file mode 100644
index 000000000000..e1cece6c5de1
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-info.xml
@@ -0,0 +1,223 @@
1<refentry id="vidioc-dbg-g-chip-info">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_DBG_G_CHIP_INFO</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_DBG_G_CHIP_INFO</refname>
9 <refpurpose>Identify the chips on a TV card</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_dbg_chip_info
19*<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_DBG_G_CHIP_INFO</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
55 <para>This is an <link
56linkend="experimental">experimental</link> interface and may change in
57the future.</para>
58 </note>
59
60 <para>For driver debugging purposes this ioctl allows test
61applications to query the driver about the chips present on the TV
62card. Regular applications must not use it. When you found a chip
63specific bug, please contact the linux-media mailing list (&v4l-ml;)
64so it can be fixed.</para>
65
66 <para>Additionally the Linux kernel must be compiled with the
67<constant>CONFIG_VIDEO_ADV_DEBUG</constant> option to enable this ioctl.</para>
68
69 <para>To query the driver applications must initialize the
70<structfield>match.type</structfield> and
71<structfield>match.addr</structfield> or <structfield>match.name</structfield>
72fields of a &v4l2-dbg-chip-info;
73and call <constant>VIDIOC_DBG_G_CHIP_INFO</constant> with a pointer to
74this structure. On success the driver stores information about the
75selected chip in the <structfield>name</structfield> and
76<structfield>flags</structfield> fields. On failure the structure
77remains unchanged.</para>
78
79 <para>When <structfield>match.type</structfield> is
80<constant>V4L2_CHIP_MATCH_BRIDGE</constant>,
81<structfield>match.addr</structfield> selects the nth bridge 'chip'
82on the TV card. You can enumerate all chips by starting at zero and
83incrementing <structfield>match.addr</structfield> by one until
84<constant>VIDIOC_DBG_G_CHIP_INFO</constant> fails with an &EINVAL;.
85The number zero always selects the bridge chip itself, &eg; the chip
86connected to the PCI or USB bus. Non-zero numbers identify specific
87parts of the bridge chip such as an AC97 register block.</para>
88
89 <para>When <structfield>match.type</structfield> is
90<constant>V4L2_CHIP_MATCH_SUBDEV</constant>,
91<structfield>match.addr</structfield> selects the nth sub-device. This
92allows you to enumerate over all sub-devices.</para>
93
94 <para>On success, the <structfield>name</structfield> field will
95contain a chip name and the <structfield>flags</structfield> field will
96contain <constant>V4L2_CHIP_FL_READABLE</constant> if the driver supports
97reading registers from the device or <constant>V4L2_CHIP_FL_WRITABLE</constant>
98if the driver supports writing registers to the device.</para>
99
100 <para>We recommended the <application>v4l2-dbg</application>
101utility over calling this ioctl directly. It is available from the
102LinuxTV v4l-dvb repository; see <ulink
103url="http://linuxtv.org/repo/">http://linuxtv.org/repo/</ulink> for
104access instructions.</para>
105
106 <!-- Note for convenience vidioc-dbg-g-register.sgml
107 contains a duplicate of this table. -->
108 <table pgwide="1" frame="none" id="name-v4l2-dbg-match">
109 <title>struct <structname>v4l2_dbg_match</structname></title>
110 <tgroup cols="4">
111 &cs-ustr;
112 <tbody valign="top">
113 <row>
114 <entry>__u32</entry>
115 <entry><structfield>type</structfield></entry>
116 <entry>See <xref linkend="name-chip-match-types" /> for a list of
117possible types.</entry>
118 </row>
119 <row>
120 <entry>union</entry>
121 <entry>(anonymous)</entry>
122 </row>
123 <row>
124 <entry></entry>
125 <entry>__u32</entry>
126 <entry><structfield>addr</structfield></entry>
127 <entry>Match a chip by this number, interpreted according
128to the <structfield>type</structfield> field.</entry>
129 </row>
130 <row>
131 <entry></entry>
132 <entry>char</entry>
133 <entry><structfield>name[32]</structfield></entry>
134 <entry>Match a chip by this name, interpreted according
135to the <structfield>type</structfield> field.</entry>
136 </row>
137 </tbody>
138 </tgroup>
139 </table>
140
141 <table pgwide="1" frame="none" id="v4l2-dbg-chip-info">
142 <title>struct <structname>v4l2_dbg_chip_info</structname></title>
143 <tgroup cols="3">
144 &cs-str;
145 <tbody valign="top">
146 <row>
147 <entry>struct v4l2_dbg_match</entry>
148 <entry><structfield>match</structfield></entry>
149 <entry>How to match the chip, see <xref linkend="name-v4l2-dbg-match" />.</entry>
150 </row>
151 <row>
152 <entry>char</entry>
153 <entry><structfield>name[32]</structfield></entry>
154 <entry>The name of the chip.</entry>
155 </row>
156 <row>
157 <entry>__u32</entry>
158 <entry><structfield>flags</structfield></entry>
159 <entry>Set by the driver. If <constant>V4L2_CHIP_FL_READABLE</constant>
160is set, then the driver supports reading registers from the device. If
161<constant>V4L2_CHIP_FL_WRITABLE</constant> is set, then it supports writing registers.</entry>
162 </row>
163 <row>
164 <entry>__u32</entry>
165 <entry><structfield>reserved[8]</structfield></entry>
166 <entry>Reserved fields, both application and driver must set these to 0.</entry>
167 </row>
168 </tbody>
169 </tgroup>
170 </table>
171
172 <!-- Note for convenience vidioc-dbg-g-register.sgml
173 contains a duplicate of this table. -->
174 <table pgwide="1" frame="none" id="name-chip-match-types">
175 <title>Chip Match Types</title>
176 <tgroup cols="3">
177 &cs-def;
178 <tbody valign="top">
179 <row>
180 <entry><constant>V4L2_CHIP_MATCH_BRIDGE</constant></entry>
181 <entry>0</entry>
182 <entry>Match the nth chip on the card, zero for the
183 bridge chip. Does not match sub-devices.</entry>
184 </row>
185 <row>
186 <entry><constant>V4L2_CHIP_MATCH_I2C_DRIVER</constant></entry>
187 <entry>1</entry>
188 <entry>Match an &i2c; chip by its driver name. Can't be used with this ioctl.</entry>
189 </row>
190 <row>
191 <entry><constant>V4L2_CHIP_MATCH_I2C_ADDR</constant></entry>
192 <entry>2</entry>
193 <entry>Match a chip by its 7 bit &i2c; bus address. Can't be used with this ioctl.</entry>
194 </row>
195 <row>
196 <entry><constant>V4L2_CHIP_MATCH_AC97</constant></entry>
197 <entry>3</entry>
198 <entry>Match the nth anciliary AC97 chip. Can't be used with this ioctl.</entry>
199 </row>
200 <row>
201 <entry><constant>V4L2_CHIP_MATCH_SUBDEV</constant></entry>
202 <entry>4</entry>
203 <entry>Match the nth sub-device.</entry>
204 </row>
205 </tbody>
206 </tgroup>
207 </table>
208 </refsect1>
209
210 <refsect1>
211 &return-value;
212
213 <variablelist>
214 <varlistentry>
215 <term><errorcode>EINVAL</errorcode></term>
216 <listitem>
217 <para>The <structfield>match_type</structfield> is invalid or
218no device could be matched.</para>
219 </listitem>
220 </varlistentry>
221 </variablelist>
222 </refsect1>
223</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-dbg-g-register.xml b/Documentation/DocBook/media/v4l/vidioc-dbg-g-register.xml
index a44aebc7997a..d13bac9e2445 100644
--- a/Documentation/DocBook/media/v4l/vidioc-dbg-g-register.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-dbg-g-register.xml
@@ -87,7 +87,7 @@ written into the register.</para>
87 87
88 <para>To read a register applications must initialize the 88 <para>To read a register applications must initialize the
89<structfield>match.type</structfield>, 89<structfield>match.type</structfield>,
90<structfield>match.chip</structfield> or <structfield>match.name</structfield> and 90<structfield>match.addr</structfield> or <structfield>match.name</structfield> and
91<structfield>reg</structfield> fields, and call 91<structfield>reg</structfield> fields, and call
92<constant>VIDIOC_DBG_G_REGISTER</constant> with a pointer to this 92<constant>VIDIOC_DBG_G_REGISTER</constant> with a pointer to this
93structure. On success the driver stores the register value in the 93structure. On success the driver stores the register value in the
@@ -95,11 +95,11 @@ structure. On success the driver stores the register value in the
95unchanged.</para> 95unchanged.</para>
96 96
97 <para>When <structfield>match.type</structfield> is 97 <para>When <structfield>match.type</structfield> is
98<constant>V4L2_CHIP_MATCH_HOST</constant>, 98<constant>V4L2_CHIP_MATCH_BRIDGE</constant>,
99<structfield>match.addr</structfield> selects the nth non-&i2c; chip 99<structfield>match.addr</structfield> selects the nth non-sub-device chip
100on the TV card. The number zero always selects the host chip, &eg; the 100on the TV card. The number zero always selects the host chip, &eg; the
101chip connected to the PCI or USB bus. You can find out which chips are 101chip connected to the PCI or USB bus. You can find out which chips are
102present with the &VIDIOC-DBG-G-CHIP-IDENT; ioctl.</para> 102present with the &VIDIOC-DBG-G-CHIP-INFO; ioctl.</para>
103 103
104 <para>When <structfield>match.type</structfield> is 104 <para>When <structfield>match.type</structfield> is
105<constant>V4L2_CHIP_MATCH_I2C_DRIVER</constant>, 105<constant>V4L2_CHIP_MATCH_I2C_DRIVER</constant>,
@@ -109,7 +109,7 @@ For instance
109supported by the saa7127 driver, regardless of its &i2c; bus address. 109supported by the saa7127 driver, regardless of its &i2c; bus address.
110When multiple chips supported by the same driver are present, the 110When multiple chips supported by the same driver are present, the
111effect of these ioctls is undefined. Again with the 111effect of these ioctls is undefined. Again with the
112&VIDIOC-DBG-G-CHIP-IDENT; ioctl you can find out which &i2c; chips are 112&VIDIOC-DBG-G-CHIP-INFO; ioctl you can find out which &i2c; chips are
113present.</para> 113present.</para>
114 114
115 <para>When <structfield>match.type</structfield> is 115 <para>When <structfield>match.type</structfield> is
@@ -122,19 +122,23 @@ bus address.</para>
122<structfield>match.addr</structfield> selects the nth AC97 chip 122<structfield>match.addr</structfield> selects the nth AC97 chip
123on the TV card.</para> 123on the TV card.</para>
124 124
125 <para>When <structfield>match.type</structfield> is
126<constant>V4L2_CHIP_MATCH_SUBDEV</constant>,
127<structfield>match.addr</structfield> selects the nth sub-device.</para>
128
125 <note> 129 <note>
126 <title>Success not guaranteed</title> 130 <title>Success not guaranteed</title>
127 131
128 <para>Due to a flaw in the Linux &i2c; bus driver these ioctls may 132 <para>Due to a flaw in the Linux &i2c; bus driver these ioctls may
129return successfully without actually reading or writing a register. To 133return successfully without actually reading or writing a register. To
130catch the most likely failure we recommend a &VIDIOC-DBG-G-CHIP-IDENT; 134catch the most likely failure we recommend a &VIDIOC-DBG-G-CHIP-INFO;
131call confirming the presence of the selected &i2c; chip.</para> 135call confirming the presence of the selected &i2c; chip.</para>
132 </note> 136 </note>
133 137
134 <para>These ioctls are optional, not all drivers may support them. 138 <para>These ioctls are optional, not all drivers may support them.
135However when a driver supports these ioctls it must also support 139However when a driver supports these ioctls it must also support
136&VIDIOC-DBG-G-CHIP-IDENT;. Conversely it may support 140&VIDIOC-DBG-G-CHIP-INFO;. Conversely it may support
137<constant>VIDIOC_DBG_G_CHIP_IDENT</constant> but not these ioctls.</para> 141<constant>VIDIOC_DBG_G_CHIP_INFO</constant> but not these ioctls.</para>
138 142
139 <para><constant>VIDIOC_DBG_G_REGISTER</constant> and 143 <para><constant>VIDIOC_DBG_G_REGISTER</constant> and
140<constant>VIDIOC_DBG_S_REGISTER</constant> were introduced in Linux 144<constant>VIDIOC_DBG_S_REGISTER</constant> were introduced in Linux
@@ -217,10 +221,10 @@ register.</entry>
217 &cs-def; 221 &cs-def;
218 <tbody valign="top"> 222 <tbody valign="top">
219 <row> 223 <row>
220 <entry><constant>V4L2_CHIP_MATCH_HOST</constant></entry> 224 <entry><constant>V4L2_CHIP_MATCH_BRIDGE</constant></entry>
221 <entry>0</entry> 225 <entry>0</entry>
222 <entry>Match the nth chip on the card, zero for the 226 <entry>Match the nth chip on the card, zero for the
223 host chip. Does not match &i2c; chips.</entry> 227 bridge chip. Does not match sub-devices.</entry>
224 </row> 228 </row>
225 <row> 229 <row>
226 <entry><constant>V4L2_CHIP_MATCH_I2C_DRIVER</constant></entry> 230 <entry><constant>V4L2_CHIP_MATCH_I2C_DRIVER</constant></entry>
@@ -237,6 +241,11 @@ register.</entry>
237 <entry>3</entry> 241 <entry>3</entry>
238 <entry>Match the nth anciliary AC97 chip.</entry> 242 <entry>Match the nth anciliary AC97 chip.</entry>
239 </row> 243 </row>
244 <row>
245 <entry><constant>V4L2_CHIP_MATCH_SUBDEV</constant></entry>
246 <entry>4</entry>
247 <entry>Match the nth sub-device.</entry>
248 </row>
240 </tbody> 249 </tbody>
241 </tgroup> 250 </tgroup>
242 </table> 251 </table>
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml b/Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml
deleted file mode 100644
index fced5fb0dbf0..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml
+++ /dev/null
@@ -1,240 +0,0 @@
1<refentry id="vidioc-enum-dv-presets">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_ENUM_DV_PRESETS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_ENUM_DV_PRESETS</refname>
9 <refpurpose>Enumerate supported Digital Video presets</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_enum_preset *<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_PRESETS</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 <para>This ioctl is <emphasis role="bold">deprecated</emphasis>.
52 New drivers and applications should use &VIDIOC-ENUM-DV-TIMINGS; instead.
53 </para>
54
55 <para>To query the attributes of a DV preset, applications initialize the
56<structfield>index</structfield> field and zero the reserved array of &v4l2-dv-enum-preset;
57and call the <constant>VIDIOC_ENUM_DV_PRESETS</constant> ioctl with a pointer to this
58structure. Drivers fill the rest of the structure or return an
59&EINVAL; when the index is out of bounds. To enumerate all DV Presets supported,
60applications shall begin at index zero, incrementing by one until the
61driver returns <errorcode>EINVAL</errorcode>. Drivers may enumerate a
62different set of DV presets after switching the video input or
63output.</para>
64
65 <table pgwide="1" frame="none" id="v4l2-dv-enum-preset">
66 <title>struct <structname>v4l2_dv_enum_presets</structname></title>
67 <tgroup cols="3">
68 &cs-str;
69 <tbody valign="top">
70 <row>
71 <entry>__u32</entry>
72 <entry><structfield>index</structfield></entry>
73 <entry>Number of the DV preset, set by the
74application.</entry>
75 </row>
76 <row>
77 <entry>__u32</entry>
78 <entry><structfield>preset</structfield></entry>
79 <entry>This field identifies one of the DV preset values listed in <xref linkend="v4l2-dv-presets-vals"/>.</entry>
80 </row>
81 <row>
82 <entry>__u8</entry>
83 <entry><structfield>name</structfield>[24]</entry>
84 <entry>Name of the preset, a NUL-terminated ASCII string, for example: "720P-60", "1080I-60". This information is
85intended for the user.</entry>
86 </row>
87 <row>
88 <entry>__u32</entry>
89 <entry><structfield>width</structfield></entry>
90 <entry>Width of the active video in pixels for the DV preset.</entry>
91 </row>
92 <row>
93 <entry>__u32</entry>
94 <entry><structfield>height</structfield></entry>
95 <entry>Height of the active video in lines for the DV preset.</entry>
96 </row>
97 <row>
98 <entry>__u32</entry>
99 <entry><structfield>reserved</structfield>[4]</entry>
100 <entry>Reserved for future extensions. Drivers must set the array to zero.</entry>
101 </row>
102 </tbody>
103 </tgroup>
104 </table>
105
106 <table pgwide="1" frame="none" id="v4l2-dv-presets-vals">
107 <title>struct <structname>DV Presets</structname></title>
108 <tgroup cols="3">
109 &cs-str;
110 <tbody valign="top">
111 <row>
112 <entry>Preset</entry>
113 <entry>Preset value</entry>
114 <entry>Description</entry>
115 </row>
116 <row>
117 <entry></entry>
118 <entry></entry>
119 <entry></entry>
120 </row>
121 <row>
122 <entry>V4L2_DV_INVALID</entry>
123 <entry>0</entry>
124 <entry>Invalid preset value.</entry>
125 </row>
126 <row>
127 <entry>V4L2_DV_480P59_94</entry>
128 <entry>1</entry>
129 <entry>720x480 progressive video at 59.94 fps as per BT.1362.</entry>
130 </row>
131 <row>
132 <entry>V4L2_DV_576P50</entry>
133 <entry>2</entry>
134 <entry>720x576 progressive video at 50 fps as per BT.1362.</entry>
135 </row>
136 <row>
137 <entry>V4L2_DV_720P24</entry>
138 <entry>3</entry>
139 <entry>1280x720 progressive video at 24 fps as per SMPTE 296M.</entry>
140 </row>
141 <row>
142 <entry>V4L2_DV_720P25</entry>
143 <entry>4</entry>
144 <entry>1280x720 progressive video at 25 fps as per SMPTE 296M.</entry>
145 </row>
146 <row>
147 <entry>V4L2_DV_720P30</entry>
148 <entry>5</entry>
149 <entry>1280x720 progressive video at 30 fps as per SMPTE 296M.</entry>
150 </row>
151 <row>
152 <entry>V4L2_DV_720P50</entry>
153 <entry>6</entry>
154 <entry>1280x720 progressive video at 50 fps as per SMPTE 296M.</entry>
155 </row>
156 <row>
157 <entry>V4L2_DV_720P59_94</entry>
158 <entry>7</entry>
159 <entry>1280x720 progressive video at 59.94 fps as per SMPTE 274M.</entry>
160 </row>
161 <row>
162 <entry>V4L2_DV_720P60</entry>
163 <entry>8</entry>
164 <entry>1280x720 progressive video at 60 fps as per SMPTE 274M/296M.</entry>
165 </row>
166 <row>
167 <entry>V4L2_DV_1080I29_97</entry>
168 <entry>9</entry>
169 <entry>1920x1080 interlaced video at 29.97 fps as per BT.1120/SMPTE 274M.</entry>
170 </row>
171 <row>
172 <entry>V4L2_DV_1080I30</entry>
173 <entry>10</entry>
174 <entry>1920x1080 interlaced video at 30 fps as per BT.1120/SMPTE 274M.</entry>
175 </row>
176 <row>
177 <entry>V4L2_DV_1080I25</entry>
178 <entry>11</entry>
179 <entry>1920x1080 interlaced video at 25 fps as per BT.1120.</entry>
180 </row>
181 <row>
182 <entry>V4L2_DV_1080I50</entry>
183 <entry>12</entry>
184 <entry>1920x1080 interlaced video at 50 fps as per SMPTE 296M.</entry>
185 </row>
186 <row>
187 <entry>V4L2_DV_1080I60</entry>
188 <entry>13</entry>
189 <entry>1920x1080 interlaced video at 60 fps as per SMPTE 296M.</entry>
190 </row>
191 <row>
192 <entry>V4L2_DV_1080P24</entry>
193 <entry>14</entry>
194 <entry>1920x1080 progressive video at 24 fps as per SMPTE 296M.</entry>
195 </row>
196 <row>
197 <entry>V4L2_DV_1080P25</entry>
198 <entry>15</entry>
199 <entry>1920x1080 progressive video at 25 fps as per SMPTE 296M.</entry>
200 </row>
201 <row>
202 <entry>V4L2_DV_1080P30</entry>
203 <entry>16</entry>
204 <entry>1920x1080 progressive video at 30 fps as per SMPTE 296M.</entry>
205 </row>
206 <row>
207 <entry>V4L2_DV_1080P50</entry>
208 <entry>17</entry>
209 <entry>1920x1080 progressive video at 50 fps as per BT.1120.</entry>
210 </row>
211 <row>
212 <entry>V4L2_DV_1080P60</entry>
213 <entry>18</entry>
214 <entry>1920x1080 progressive video at 60 fps as per BT.1120.</entry>
215 </row>
216 </tbody>
217 </tgroup>
218 </table>
219 </refsect1>
220
221 <refsect1>
222 &return-value;
223
224 <variablelist>
225 <varlistentry>
226 <term><errorcode>EINVAL</errorcode></term>
227 <listitem>
228 <para>The &v4l2-dv-enum-preset; <structfield>index</structfield>
229is out of bounds.</para>
230 </listitem>
231 </varlistentry>
232 <varlistentry>
233 <term><errorcode>ENODATA</errorcode></term>
234 <listitem>
235 <para>Digital video presets are not supported for this input or output.</para>
236 </listitem>
237 </varlistentry>
238 </variablelist>
239 </refsect1>
240</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-enuminput.xml b/Documentation/DocBook/media/v4l/vidioc-enuminput.xml
index 3c9a81305ad4..493a39a8ef21 100644
--- a/Documentation/DocBook/media/v4l/vidioc-enuminput.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enuminput.xml
@@ -278,11 +278,6 @@ input/output interface to linux-media@vger.kernel.org on 19 Oct 2009.
278 &cs-def; 278 &cs-def;
279 <tbody valign="top"> 279 <tbody valign="top">
280 <row> 280 <row>
281 <entry><constant>V4L2_IN_CAP_PRESETS</constant></entry>
282 <entry>0x00000001</entry>
283 <entry>This input supports setting DV presets by using VIDIOC_S_DV_PRESET.</entry>
284 </row>
285 <row>
286 <entry><constant>V4L2_IN_CAP_DV_TIMINGS</constant></entry> 281 <entry><constant>V4L2_IN_CAP_DV_TIMINGS</constant></entry>
287 <entry>0x00000002</entry> 282 <entry>0x00000002</entry>
288 <entry>This input supports setting video timings by using VIDIOC_S_DV_TIMINGS.</entry> 283 <entry>This input supports setting video timings by using VIDIOC_S_DV_TIMINGS.</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml b/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml
index f4ab0798545d..2654e097df39 100644
--- a/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml
@@ -163,11 +163,6 @@ input/output interface to linux-media@vger.kernel.org on 19 Oct 2009.
163 &cs-def; 163 &cs-def;
164 <tbody valign="top"> 164 <tbody valign="top">
165 <row> 165 <row>
166 <entry><constant>V4L2_OUT_CAP_PRESETS</constant></entry>
167 <entry>0x00000001</entry>
168 <entry>This output supports setting DV presets by using VIDIOC_S_DV_PRESET.</entry>
169 </row>
170 <row>
171 <entry><constant>V4L2_OUT_CAP_DV_TIMINGS</constant></entry> 166 <entry><constant>V4L2_OUT_CAP_DV_TIMINGS</constant></entry>
172 <entry>0x00000002</entry> 167 <entry>0x00000002</entry>
173 <entry>This output supports setting video timings by using VIDIOC_S_DV_TIMINGS.</entry> 168 <entry>This output supports setting video timings by using VIDIOC_S_DV_TIMINGS.</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml b/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml
deleted file mode 100644
index b9ea37634f6c..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml
+++ /dev/null
@@ -1,113 +0,0 @@
1<refentry id="vidioc-g-dv-preset">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_DV_PRESET, VIDIOC_S_DV_PRESET</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_G_DV_PRESET</refname>
9 <refname>VIDIOC_S_DV_PRESET</refname>
10 <refpurpose>Query or select the DV preset of the current input or output</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_preset *<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_G_DV_PRESET, VIDIOC_S_DV_PRESET</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 <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
57 <para>To query and select the current DV preset, applications
58use the <constant>VIDIOC_G_DV_PRESET</constant> and <constant>VIDIOC_S_DV_PRESET</constant>
59ioctls which take a pointer to a &v4l2-dv-preset; type as argument.
60Applications must zero the reserved array in &v4l2-dv-preset;.
61<constant>VIDIOC_G_DV_PRESET</constant> returns a dv preset in the field
62<structfield>preset</structfield> of &v4l2-dv-preset;.</para>
63
64 <para><constant>VIDIOC_S_DV_PRESET</constant> accepts a pointer to a &v4l2-dv-preset;
65that has the preset value to be set. Applications must zero the reserved array in &v4l2-dv-preset;.
66If the preset is not supported, it returns an &EINVAL; </para>
67 </refsect1>
68
69 <refsect1>
70 &return-value;
71
72 <variablelist>
73 <varlistentry>
74 <term><errorcode>EINVAL</errorcode></term>
75 <listitem>
76 <para>This ioctl is not supported, or the
77<constant>VIDIOC_S_DV_PRESET</constant>,<constant>VIDIOC_S_DV_PRESET</constant> parameter was unsuitable.</para>
78 </listitem>
79 </varlistentry>
80 <varlistentry>
81 <term><errorcode>ENODATA</errorcode></term>
82 <listitem>
83 <para>Digital video presets are not supported for this input or output.</para>
84 </listitem>
85 </varlistentry>
86 <varlistentry>
87 <term><errorcode>EBUSY</errorcode></term>
88 <listitem>
89 <para>The device is busy and therefore can not change the preset.</para>
90 </listitem>
91 </varlistentry>
92 </variablelist>
93
94 <table pgwide="1" frame="none" id="v4l2-dv-preset">
95 <title>struct <structname>v4l2_dv_preset</structname></title>
96 <tgroup cols="3">
97 &cs-str;
98 <tbody valign="top">
99 <row>
100 <entry>__u32</entry>
101 <entry><structfield>preset</structfield></entry>
102 <entry>Preset value to represent the digital video timings</entry>
103 </row>
104 <row>
105 <entry>__u32</entry>
106 <entry><structfield>reserved[4]</structfield></entry>
107 <entry>Reserved fields for future use</entry>
108 </row>
109 </tbody>
110 </tgroup>
111 </table>
112 </refsect1>
113</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml b/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
index 4e16112df992..b3bb9575b2e0 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
@@ -319,6 +319,15 @@ These controls are described in <xref
319 processing controls. These controls are described in <xref 319 processing controls. These controls are described in <xref
320 linkend="image-process-controls" />.</entry> 320 linkend="image-process-controls" />.</entry>
321 </row> 321 </row>
322
323 <row>
324 <entry><constant>V4L2_CTRL_CLASS_FM_RX</constant></entry>
325 <entry>0xa10000</entry>
326 <entry>The class containing FM Receiver (FM RX) controls.
327These controls are described in <xref
328 linkend="fm-rx-controls" />.</entry>
329 </row>
330
322 </tbody> 331 </tbody>
323 </tgroup> 332 </tgroup>
324 </table> 333 </table>
diff --git a/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml b/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml
deleted file mode 100644
index 68b49d09e245..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml
+++ /dev/null
@@ -1,78 +0,0 @@
1<refentry id="vidioc-query-dv-preset">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_QUERY_DV_PRESET</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_QUERY_DV_PRESET</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_preset *<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_PRESET</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 <para>This ioctl is <emphasis role="bold">deprecated</emphasis>.
53 New drivers and applications should use &VIDIOC-QUERY-DV-TIMINGS; instead.
54 </para>
55
56 <para>The hardware may be able to detect the current DV preset
57automatically, similar to sensing the video standard. To do so, applications
58call <constant> VIDIOC_QUERY_DV_PRESET</constant> with a pointer to a
59&v4l2-dv-preset; type. Once the hardware detects a preset, that preset is
60returned in the preset field of &v4l2-dv-preset;. If the preset could not be
61detected because there was no signal, or the signal was unreliable, or the
62signal did not map to a supported preset, then the value V4L2_DV_INVALID is
63returned.</para>
64 </refsect1>
65
66 <refsect1>
67 &return-value;
68
69 <variablelist>
70 <varlistentry>
71 <term><errorcode>ENODATA</errorcode></term>
72 <listitem>
73 <para>Digital video presets are not supported for this input or output.</para>
74 </listitem>
75 </varlistentry>
76 </variablelist>
77 </refsect1>
78</refentry>
diff --git a/Documentation/DocBook/media_api.tmpl b/Documentation/DocBook/media_api.tmpl
index 1f6593deb995..6a8b7158697f 100644
--- a/Documentation/DocBook/media_api.tmpl
+++ b/Documentation/DocBook/media_api.tmpl
@@ -23,6 +23,7 @@
23<!-- LinuxTV v4l-dvb repository. --> 23<!-- LinuxTV v4l-dvb repository. -->
24<!ENTITY v4l-dvb "<ulink url='http://linuxtv.org/repo/'>http://linuxtv.org/repo/</ulink>"> 24<!ENTITY v4l-dvb "<ulink url='http://linuxtv.org/repo/'>http://linuxtv.org/repo/</ulink>">
25<!ENTITY dash-ent-10 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>"> 25<!ENTITY dash-ent-10 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
26<!ENTITY dash-ent-16 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
26]> 27]>
27 28
28<book id="media_api"> 29<book id="media_api">
diff --git a/Documentation/DocBook/writing-an-alsa-driver.tmpl b/Documentation/DocBook/writing-an-alsa-driver.tmpl
index bd6fee22c4dd..06741e925985 100644
--- a/Documentation/DocBook/writing-an-alsa-driver.tmpl
+++ b/Documentation/DocBook/writing-an-alsa-driver.tmpl
@@ -6164,14 +6164,12 @@ struct _snd_pcm_runtime {
6164 6164
6165 <para> 6165 <para>
6166 The macro takes an conditional expression to evaluate. 6166 The macro takes an conditional expression to evaluate.
6167 When <constant>CONFIG_SND_DEBUG</constant>, is set, the 6167 When <constant>CONFIG_SND_DEBUG</constant>, is set, if the
6168 expression is actually evaluated. If it's non-zero, it shows 6168 expression is non-zero, it shows the warning message such as
6169 the warning message such as
6170 <computeroutput>BUG? (xxx)</computeroutput> 6169 <computeroutput>BUG? (xxx)</computeroutput>
6171 normally followed by stack trace. It returns the evaluated 6170 normally followed by stack trace.
6172 value. 6171
6173 When no <constant>CONFIG_SND_DEBUG</constant> is set, this 6172 In both cases it returns the evaluated value.
6174 macro always returns zero.
6175 </para> 6173 </para>
6176 6174
6177 </section> 6175 </section>
diff --git a/Documentation/EDID/1600x1200.S b/Documentation/EDID/1600x1200.S
new file mode 100644
index 000000000000..0ded64cfd1f5
--- /dev/null
+++ b/Documentation/EDID/1600x1200.S
@@ -0,0 +1,44 @@
1/*
2 1600x1200.S: EDID data set for standard 1600x1200 60 Hz monitor
3
4 Copyright (C) 2013 Carsten Emde <C.Emde@osadl.org>
5
6 This program is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License
8 as published by the Free Software Foundation; either version 2
9 of the License, or (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19*/
20
21/* EDID */
22#define VERSION 1
23#define REVISION 3
24
25/* Display */
26#define CLOCK 162000 /* kHz */
27#define XPIX 1600
28#define YPIX 1200
29#define XY_RATIO XY_RATIO_4_3
30#define XBLANK 560
31#define YBLANK 50
32#define XOFFSET 64
33#define XPULSE 192
34#define YOFFSET (63+1)
35#define YPULSE (63+3)
36#define DPI 72
37#define VFREQ 60 /* Hz */
38#define TIMING_NAME "Linux UXGA"
39#define ESTABLISHED_TIMINGS_BITS 0x00 /* none */
40#define HSYNC_POL 1
41#define VSYNC_POL 1
42#define CRC 0x9d
43
44#include "edid.S"
diff --git a/Documentation/EDID/HOWTO.txt b/Documentation/EDID/HOWTO.txt
index 2d0a8f09475d..7146db1d9e8c 100644
--- a/Documentation/EDID/HOWTO.txt
+++ b/Documentation/EDID/HOWTO.txt
@@ -18,12 +18,12 @@ CONFIG_DRM_LOAD_EDID_FIRMWARE was introduced. It allows to provide an
18individually prepared or corrected EDID data set in the /lib/firmware 18individually prepared or corrected EDID data set in the /lib/firmware
19directory from where it is loaded via the firmware interface. The code 19directory from where it is loaded via the firmware interface. The code
20(see drivers/gpu/drm/drm_edid_load.c) contains built-in data sets for 20(see drivers/gpu/drm/drm_edid_load.c) contains built-in data sets for
21commonly used screen resolutions (1024x768, 1280x1024, 1680x1050, 21commonly used screen resolutions (1024x768, 1280x1024, 1600x1200,
221920x1080) as binary blobs, but the kernel source tree does not contain 221680x1050, 1920x1080) as binary blobs, but the kernel source tree does
23code to create these data. In order to elucidate the origin of the 23not contain code to create these data. In order to elucidate the origin
24built-in binary EDID blobs and to facilitate the creation of individual 24of the built-in binary EDID blobs and to facilitate the creation of
25data for a specific misbehaving monitor, commented sources and a 25individual data for a specific misbehaving monitor, commented sources
26Makefile environment are given here. 26and a Makefile environment are given here.
27 27
28To create binary EDID and C source code files from the existing data 28To create binary EDID and C source code files from the existing data
29material, simply type "make". 29material, simply type "make".
diff --git a/Documentation/RCU/checklist.txt b/Documentation/RCU/checklist.txt
index 31ef8fe07f82..79e789b8b8ea 100644
--- a/Documentation/RCU/checklist.txt
+++ b/Documentation/RCU/checklist.txt
@@ -217,9 +217,14 @@ over a rather long period of time, but improvements are always welcome!
217 whether the increased speed is worth it. 217 whether the increased speed is worth it.
218 218
2198. Although synchronize_rcu() is slower than is call_rcu(), it 2198. Although synchronize_rcu() is slower than is call_rcu(), it
220 usually results in simpler code. So, unless update performance 220 usually results in simpler code. So, unless update performance is
221 is critically important or the updaters cannot block, 221 critically important, the updaters cannot block, or the latency of
222 synchronize_rcu() should be used in preference to call_rcu(). 222 synchronize_rcu() is visible from userspace, synchronize_rcu()
223 should be used in preference to call_rcu(). Furthermore,
224 kfree_rcu() usually results in even simpler code than does
225 synchronize_rcu() without synchronize_rcu()'s multi-millisecond
226 latency. So please take advantage of kfree_rcu()'s "fire and
227 forget" memory-freeing capabilities where it applies.
223 228
224 An especially important property of the synchronize_rcu() 229 An especially important property of the synchronize_rcu()
225 primitive is that it automatically self-limits: if grace periods 230 primitive is that it automatically self-limits: if grace periods
@@ -268,7 +273,8 @@ over a rather long period of time, but improvements are always welcome!
268 e. Periodically invoke synchronize_rcu(), permitting a limited 273 e. Periodically invoke synchronize_rcu(), permitting a limited
269 number of updates per grace period. 274 number of updates per grace period.
270 275
271 The same cautions apply to call_rcu_bh() and call_rcu_sched(). 276 The same cautions apply to call_rcu_bh(), call_rcu_sched(),
277 call_srcu(), and kfree_rcu().
272 278
2739. All RCU list-traversal primitives, which include 2799. All RCU list-traversal primitives, which include
274 rcu_dereference(), list_for_each_entry_rcu(), and 280 rcu_dereference(), list_for_each_entry_rcu(), and
@@ -296,9 +302,9 @@ over a rather long period of time, but improvements are always welcome!
296 all currently executing rcu_read_lock()-protected RCU read-side 302 all currently executing rcu_read_lock()-protected RCU read-side
297 critical sections complete. It does -not- necessarily guarantee 303 critical sections complete. It does -not- necessarily guarantee
298 that all currently running interrupts, NMIs, preempt_disable() 304 that all currently running interrupts, NMIs, preempt_disable()
299 code, or idle loops will complete. Therefore, if you do not have 305 code, or idle loops will complete. Therefore, if your
300 rcu_read_lock()-protected read-side critical sections, do -not- 306 read-side critical sections are protected by something other
301 use synchronize_rcu(). 307 than rcu_read_lock(), do -not- use synchronize_rcu().
302 308
303 Similarly, disabling preemption is not an acceptable substitute 309 Similarly, disabling preemption is not an acceptable substitute
304 for rcu_read_lock(). Code that attempts to use preemption 310 for rcu_read_lock(). Code that attempts to use preemption
@@ -401,9 +407,9 @@ over a rather long period of time, but improvements are always welcome!
401 read-side critical sections. It is the responsibility of the 407 read-side critical sections. It is the responsibility of the
402 RCU update-side primitives to deal with this. 408 RCU update-side primitives to deal with this.
403 409
40417. Use CONFIG_PROVE_RCU, CONFIG_DEBUG_OBJECTS_RCU_HEAD, and 41017. Use CONFIG_PROVE_RCU, CONFIG_DEBUG_OBJECTS_RCU_HEAD, and the
405 the __rcu sparse checks to validate your RCU code. These 411 __rcu sparse checks (enabled by CONFIG_SPARSE_RCU_POINTER) to
406 can help find problems as follows: 412 validate your RCU code. These can help find problems as follows:
407 413
408 CONFIG_PROVE_RCU: check that accesses to RCU-protected data 414 CONFIG_PROVE_RCU: check that accesses to RCU-protected data
409 structures are carried out under the proper RCU 415 structures are carried out under the proper RCU
diff --git a/Documentation/RCU/lockdep.txt b/Documentation/RCU/lockdep.txt
index a102d4b3724b..cd83d2348fef 100644
--- a/Documentation/RCU/lockdep.txt
+++ b/Documentation/RCU/lockdep.txt
@@ -64,6 +64,11 @@ checking of rcu_dereference() primitives:
64 but retain the compiler constraints that prevent duplicating 64 but retain the compiler constraints that prevent duplicating
65 or coalescsing. This is useful when when testing the 65 or coalescsing. This is useful when when testing the
66 value of the pointer itself, for example, against NULL. 66 value of the pointer itself, for example, against NULL.
67 rcu_access_index(idx):
68 Return the value of the index and omit all barriers, but
69 retain the compiler constraints that prevent duplicating
70 or coalescsing. This is useful when when testing the
71 value of the index itself, for example, against -1.
67 72
68The rcu_dereference_check() check expression can be any boolean 73The rcu_dereference_check() check expression can be any boolean
69expression, but would normally include a lockdep expression. However, 74expression, but would normally include a lockdep expression. However,
diff --git a/Documentation/RCU/rcubarrier.txt b/Documentation/RCU/rcubarrier.txt
index 38428c125135..2e319d1b9ef2 100644
--- a/Documentation/RCU/rcubarrier.txt
+++ b/Documentation/RCU/rcubarrier.txt
@@ -79,7 +79,20 @@ complete. Pseudo-code using rcu_barrier() is as follows:
79 2. Execute rcu_barrier(). 79 2. Execute rcu_barrier().
80 3. Allow the module to be unloaded. 80 3. Allow the module to be unloaded.
81 81
82The rcutorture module makes use of rcu_barrier in its exit function 82There are also rcu_barrier_bh(), rcu_barrier_sched(), and srcu_barrier()
83functions for the other flavors of RCU, and you of course must match
84the flavor of rcu_barrier() with that of call_rcu(). If your module
85uses multiple flavors of call_rcu(), then it must also use multiple
86flavors of rcu_barrier() when unloading that module. For example, if
87it uses call_rcu_bh(), call_srcu() on srcu_struct_1, and call_srcu() on
88srcu_struct_2(), then the following three lines of code will be required
89when unloading:
90
91 1 rcu_barrier_bh();
92 2 srcu_barrier(&srcu_struct_1);
93 3 srcu_barrier(&srcu_struct_2);
94
95The rcutorture module makes use of rcu_barrier() in its exit function
83as follows: 96as follows:
84 97
85 1 static void 98 1 static void
diff --git a/Documentation/RCU/stallwarn.txt b/Documentation/RCU/stallwarn.txt
index 1927151b386b..8e9359de1d28 100644
--- a/Documentation/RCU/stallwarn.txt
+++ b/Documentation/RCU/stallwarn.txt
@@ -92,14 +92,14 @@ If the CONFIG_RCU_CPU_STALL_INFO kernel configuration parameter is set,
92more information is printed with the stall-warning message, for example: 92more information is printed with the stall-warning message, for example:
93 93
94 INFO: rcu_preempt detected stall on CPU 94 INFO: rcu_preempt detected stall on CPU
95 0: (63959 ticks this GP) idle=241/3fffffffffffffff/0 95 0: (63959 ticks this GP) idle=241/3fffffffffffffff/0 softirq=82/543
96 (t=65000 jiffies) 96 (t=65000 jiffies)
97 97
98In kernels with CONFIG_RCU_FAST_NO_HZ, even more information is 98In kernels with CONFIG_RCU_FAST_NO_HZ, even more information is
99printed: 99printed:
100 100
101 INFO: rcu_preempt detected stall on CPU 101 INFO: rcu_preempt detected stall on CPU
102 0: (64628 ticks this GP) idle=dd5/3fffffffffffffff/0 drain=0 . timer not pending 102 0: (64628 ticks this GP) idle=dd5/3fffffffffffffff/0 softirq=82/543 last_accelerate: a345/d342 nonlazy_posted: 25 .D
103 (t=65000 jiffies) 103 (t=65000 jiffies)
104 104
105The "(64628 ticks this GP)" indicates that this CPU has taken more 105The "(64628 ticks this GP)" indicates that this CPU has taken more
@@ -116,13 +116,28 @@ number between the two "/"s is the value of the nesting, which will
116be a small positive number if in the idle loop and a very large positive 116be a small positive number if in the idle loop and a very large positive
117number (as shown above) otherwise. 117number (as shown above) otherwise.
118 118
119For CONFIG_RCU_FAST_NO_HZ kernels, the "drain=0" indicates that the CPU is 119The "softirq=" portion of the message tracks the number of RCU softirq
120not in the process of trying to force itself into dyntick-idle state, the 120handlers that the stalled CPU has executed. The number before the "/"
121"." indicates that the CPU has not given up forcing RCU into dyntick-idle 121is the number that had executed since boot at the time that this CPU
122mode (it would be "H" otherwise), and the "timer not pending" indicates 122last noted the beginning of a grace period, which might be the current
123that the CPU has not recently forced RCU into dyntick-idle mode (it 123(stalled) grace period, or it might be some earlier grace period (for
124would otherwise indicate the number of microseconds remaining in this 124example, if the CPU might have been in dyntick-idle mode for an extended
125forced state). 125time period. The number after the "/" is the number that have executed
126since boot until the current time. If this latter number stays constant
127across repeated stall-warning messages, it is possible that RCU's softirq
128handlers are no longer able to execute on this CPU. This can happen if
129the stalled CPU is spinning with interrupts are disabled, or, in -rt
130kernels, if a high-priority process is starving RCU's softirq handler.
131
132For CONFIG_RCU_FAST_NO_HZ kernels, the "last_accelerate:" prints the
133low-order 16 bits (in hex) of the jiffies counter when this CPU last
134invoked rcu_try_advance_all_cbs() from rcu_needs_cpu() or last invoked
135rcu_accelerate_cbs() from rcu_prepare_for_idle(). The "nonlazy_posted:"
136prints the number of non-lazy callbacks posted since the last call to
137rcu_needs_cpu(). Finally, an "L" indicates that there are currently
138no non-lazy callbacks ("." is printed otherwise, as shown above) and
139"D" indicates that dyntick-idle processing is enabled ("." is printed
140otherwise, for example, if disabled via the "nohz=" kernel boot parameter).
126 141
127 142
128Multiple Warnings From One Stall 143Multiple Warnings From One Stall
@@ -176,7 +191,7 @@ o A CPU-bound real-time task in a CONFIG_PREEMPT_RT kernel that
176o A hardware or software issue shuts off the scheduler-clock 191o A hardware or software issue shuts off the scheduler-clock
177 interrupt on a CPU that is not in dyntick-idle mode. This 192 interrupt on a CPU that is not in dyntick-idle mode. This
178 problem really has happened, and seems to be most likely to 193 problem really has happened, and seems to be most likely to
179 result in RCU CPU stall warnings for CONFIG_NO_HZ=n kernels. 194 result in RCU CPU stall warnings for CONFIG_NO_HZ_COMMON=n kernels.
180 195
181o A bug in the RCU implementation. 196o A bug in the RCU implementation.
182 197
diff --git a/Documentation/RCU/whatisRCU.txt b/Documentation/RCU/whatisRCU.txt
index 0cc7820967f4..10df0b82f459 100644
--- a/Documentation/RCU/whatisRCU.txt
+++ b/Documentation/RCU/whatisRCU.txt
@@ -265,9 +265,9 @@ rcu_dereference()
265 rcu_read_lock(); 265 rcu_read_lock();
266 p = rcu_dereference(head.next); 266 p = rcu_dereference(head.next);
267 rcu_read_unlock(); 267 rcu_read_unlock();
268 x = p->address; 268 x = p->address; /* BUG!!! */
269 rcu_read_lock(); 269 rcu_read_lock();
270 y = p->data; 270 y = p->data; /* BUG!!! */
271 rcu_read_unlock(); 271 rcu_read_unlock();
272 272
273 Holding a reference from one RCU read-side critical section 273 Holding a reference from one RCU read-side critical section
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index c379a2a6949f..6e97e73d87b5 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -60,8 +60,7 @@ own source tree. For example:
60"dontdiff" is a list of files which are generated by the kernel during 60"dontdiff" is a list of files which are generated by the kernel during
61the build process, and should be ignored in any diff(1)-generated 61the build process, and should be ignored in any diff(1)-generated
62patch. The "dontdiff" file is included in the kernel tree in 62patch. The "dontdiff" file is included in the kernel tree in
632.6.12 and later. For earlier kernel versions, you can get it 632.6.12 and later.
64from <http://www.xenotime.net/linux/doc/dontdiff>.
65 64
66Make sure your patch does not include any extra files which do not 65Make sure your patch does not include any extra files which do not
67belong in a patch submission. Make sure to review your patch -after- 66belong in a patch submission. Make sure to review your patch -after-
@@ -421,7 +420,7 @@ person it names. This tag documents that potentially interested parties
421have been included in the discussion 420have been included in the discussion
422 421
423 422
42414) Using Reported-by:, Tested-by: and Reviewed-by: 42314) Using Reported-by:, Tested-by:, Reviewed-by: and Suggested-by:
425 424
426If this patch fixes a problem reported by somebody else, consider adding a 425If this patch fixes a problem reported by somebody else, consider adding a
427Reported-by: tag to credit the reporter for their contribution. Please 426Reported-by: tag to credit the reporter for their contribution. Please
@@ -469,6 +468,13 @@ done on the patch. Reviewed-by: tags, when supplied by reviewers known to
469understand the subject area and to perform thorough reviews, will normally 468understand the subject area and to perform thorough reviews, will normally
470increase the likelihood of your patch getting into the kernel. 469increase the likelihood of your patch getting into the kernel.
471 470
471A Suggested-by: tag indicates that the patch idea is suggested by the person
472named and ensures credit to the person for the idea. Please note that this
473tag should not be added without the reporter's permission, especially if the
474idea was not posted in a public forum. That said, if we diligently credit our
475idea reporters, they will, hopefully, be inspired to help us again in the
476future.
477
472 478
47315) The canonical patch format 47915) The canonical patch format
474 480
diff --git a/Documentation/acpi/enumeration.txt b/Documentation/acpi/enumeration.txt
index 94a656131885..b0d541042ac6 100644
--- a/Documentation/acpi/enumeration.txt
+++ b/Documentation/acpi/enumeration.txt
@@ -199,6 +199,8 @@ the device to the driver. For example:
199 { 199 {
200 Name (SBUF, ResourceTemplate() 200 Name (SBUF, ResourceTemplate()
201 { 201 {
202 ...
203 // Used to power on/off the device
202 GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, 204 GpioIo (Exclusive, PullDefault, 0x0000, 0x0000,
203 IoRestrictionOutputOnly, "\\_SB.PCI0.GPI0", 205 IoRestrictionOutputOnly, "\\_SB.PCI0.GPI0",
204 0x00, ResourceConsumer,,) 206 0x00, ResourceConsumer,,)
@@ -206,10 +208,20 @@ the device to the driver. For example:
206 // Pin List 208 // Pin List
207 0x0055 209 0x0055
208 } 210 }
211
212 // Interrupt for the device
213 GpioInt (Edge, ActiveHigh, ExclusiveAndWake, PullNone,
214 0x0000, "\\_SB.PCI0.GPI0", 0x00, ResourceConsumer,,)
215 {
216 // Pin list
217 0x0058
218 }
219
209 ... 220 ...
210 221
211 Return (SBUF)
212 } 222 }
223
224 Return (SBUF)
213 } 225 }
214 226
215These GPIO numbers are controller relative and path "\\_SB.PCI0.GPI0" 227These GPIO numbers are controller relative and path "\\_SB.PCI0.GPI0"
@@ -220,6 +232,24 @@ The driver can do this by including <linux/acpi_gpio.h> and then calling
220acpi_get_gpio(path, gpio). This will return the Linux GPIO number or 232acpi_get_gpio(path, gpio). This will return the Linux GPIO number or
221negative errno if there was no translation found. 233negative errno if there was no translation found.
222 234
235In a simple case of just getting the Linux GPIO number from device
236resources one can use acpi_get_gpio_by_index() helper function. It takes
237pointer to the device and index of the GpioIo/GpioInt descriptor in the
238device resources list. For example:
239
240 int gpio_irq, gpio_power;
241 int ret;
242
243 gpio_irq = acpi_get_gpio_by_index(dev, 1, NULL);
244 if (gpio_irq < 0)
245 /* handle error */
246
247 gpio_power = acpi_get_gpio_by_index(dev, 0, NULL);
248 if (gpio_power < 0)
249 /* handle error */
250
251 /* Now we can use the GPIO numbers */
252
223Other GpioIo parameters must be converted first by the driver to be 253Other GpioIo parameters must be converted first by the driver to be
224suitable to the gpiolib before passing them. 254suitable to the gpiolib before passing them.
225 255
diff --git a/Documentation/arm/cluster-pm-race-avoidance.txt b/Documentation/arm/cluster-pm-race-avoidance.txt
new file mode 100644
index 000000000000..750b6fc24af9
--- /dev/null
+++ b/Documentation/arm/cluster-pm-race-avoidance.txt
@@ -0,0 +1,498 @@
1Cluster-wide Power-up/power-down race avoidance algorithm
2=========================================================
3
4This file documents the algorithm which is used to coordinate CPU and
5cluster setup and teardown operations and to manage hardware coherency
6controls safely.
7
8The section "Rationale" explains what the algorithm is for and why it is
9needed. "Basic model" explains general concepts using a simplified view
10of the system. The other sections explain the actual details of the
11algorithm in use.
12
13
14Rationale
15---------
16
17In a system containing multiple CPUs, it is desirable to have the
18ability to turn off individual CPUs when the system is idle, reducing
19power consumption and thermal dissipation.
20
21In a system containing multiple clusters of CPUs, it is also desirable
22to have the ability to turn off entire clusters.
23
24Turning entire clusters off and on is a risky business, because it
25involves performing potentially destructive operations affecting a group
26of independently running CPUs, while the OS continues to run. This
27means that we need some coordination in order to ensure that critical
28cluster-level operations are only performed when it is truly safe to do
29so.
30
31Simple locking may not be sufficient to solve this problem, because
32mechanisms like Linux spinlocks may rely on coherency mechanisms which
33are not immediately enabled when a cluster powers up. Since enabling or
34disabling those mechanisms may itself be a non-atomic operation (such as
35writing some hardware registers and invalidating large caches), other
36methods of coordination are required in order to guarantee safe
37power-down and power-up at the cluster level.
38
39The mechanism presented in this document describes a coherent memory
40based protocol for performing the needed coordination. It aims to be as
41lightweight as possible, while providing the required safety properties.
42
43
44Basic model
45-----------
46
47Each cluster and CPU is assigned a state, as follows:
48
49 DOWN
50 COMING_UP
51 UP
52 GOING_DOWN
53
54 +---------> UP ----------+
55 | v
56
57 COMING_UP GOING_DOWN
58
59 ^ |
60 +--------- DOWN <--------+
61
62
63DOWN: The CPU or cluster is not coherent, and is either powered off or
64 suspended, or is ready to be powered off or suspended.
65
66COMING_UP: The CPU or cluster has committed to moving to the UP state.
67 It may be part way through the process of initialisation and
68 enabling coherency.
69
70UP: The CPU or cluster is active and coherent at the hardware
71 level. A CPU in this state is not necessarily being used
72 actively by the kernel.
73
74GOING_DOWN: The CPU or cluster has committed to moving to the DOWN
75 state. It may be part way through the process of teardown and
76 coherency exit.
77
78
79Each CPU has one of these states assigned to it at any point in time.
80The CPU states are described in the "CPU state" section, below.
81
82Each cluster is also assigned a state, but it is necessary to split the
83state value into two parts (the "cluster" state and "inbound" state) and
84to introduce additional states in order to avoid races between different
85CPUs in the cluster simultaneously modifying the state. The cluster-
86level states are described in the "Cluster state" section.
87
88To help distinguish the CPU states from cluster states in this
89discussion, the state names are given a CPU_ prefix for the CPU states,
90and a CLUSTER_ or INBOUND_ prefix for the cluster states.
91
92
93CPU state
94---------
95
96In this algorithm, each individual core in a multi-core processor is
97referred to as a "CPU". CPUs are assumed to be single-threaded:
98therefore, a CPU can only be doing one thing at a single point in time.
99
100This means that CPUs fit the basic model closely.
101
102The algorithm defines the following states for each CPU in the system:
103
104 CPU_DOWN
105 CPU_COMING_UP
106 CPU_UP
107 CPU_GOING_DOWN
108
109 cluster setup and
110 CPU setup complete policy decision
111 +-----------> CPU_UP ------------+
112 | v
113
114 CPU_COMING_UP CPU_GOING_DOWN
115
116 ^ |
117 +----------- CPU_DOWN <----------+
118 policy decision CPU teardown complete
119 or hardware event
120
121
122The definitions of the four states correspond closely to the states of
123the basic model.
124
125Transitions between states occur as follows.
126
127A trigger event (spontaneous) means that the CPU can transition to the
128next state as a result of making local progress only, with no
129requirement for any external event to happen.
130
131
132CPU_DOWN:
133
134 A CPU reaches the CPU_DOWN state when it is ready for
135 power-down. On reaching this state, the CPU will typically
136 power itself down or suspend itself, via a WFI instruction or a
137 firmware call.
138
139 Next state: CPU_COMING_UP
140 Conditions: none
141
142 Trigger events:
143
144 a) an explicit hardware power-up operation, resulting
145 from a policy decision on another CPU;
146
147 b) a hardware event, such as an interrupt.
148
149
150CPU_COMING_UP:
151
152 A CPU cannot start participating in hardware coherency until the
153 cluster is set up and coherent. If the cluster is not ready,
154 then the CPU will wait in the CPU_COMING_UP state until the
155 cluster has been set up.
156
157 Next state: CPU_UP
158 Conditions: The CPU's parent cluster must be in CLUSTER_UP.
159 Trigger events: Transition of the parent cluster to CLUSTER_UP.
160
161 Refer to the "Cluster state" section for a description of the
162 CLUSTER_UP state.
163
164
165CPU_UP:
166 When a CPU reaches the CPU_UP state, it is safe for the CPU to
167 start participating in local coherency.
168
169 This is done by jumping to the kernel's CPU resume code.
170
171 Note that the definition of this state is slightly different
172 from the basic model definition: CPU_UP does not mean that the
173 CPU is coherent yet, but it does mean that it is safe to resume
174 the kernel. The kernel handles the rest of the resume
175 procedure, so the remaining steps are not visible as part of the
176 race avoidance algorithm.
177
178 The CPU remains in this state until an explicit policy decision
179 is made to shut down or suspend the CPU.
180
181 Next state: CPU_GOING_DOWN
182 Conditions: none
183 Trigger events: explicit policy decision
184
185
186CPU_GOING_DOWN:
187
188 While in this state, the CPU exits coherency, including any
189 operations required to achieve this (such as cleaning data
190 caches).
191
192 Next state: CPU_DOWN
193 Conditions: local CPU teardown complete
194 Trigger events: (spontaneous)
195
196
197Cluster state
198-------------
199
200A cluster is a group of connected CPUs with some common resources.
201Because a cluster contains multiple CPUs, it can be doing multiple
202things at the same time. This has some implications. In particular, a
203CPU can start up while another CPU is tearing the cluster down.
204
205In this discussion, the "outbound side" is the view of the cluster state
206as seen by a CPU tearing the cluster down. The "inbound side" is the
207view of the cluster state as seen by a CPU setting the CPU up.
208
209In order to enable safe coordination in such situations, it is important
210that a CPU which is setting up the cluster can advertise its state
211independently of the CPU which is tearing down the cluster. For this
212reason, the cluster state is split into two parts:
213
214 "cluster" state: The global state of the cluster; or the state
215 on the outbound side:
216
217 CLUSTER_DOWN
218 CLUSTER_UP
219 CLUSTER_GOING_DOWN
220
221 "inbound" state: The state of the cluster on the inbound side.
222
223 INBOUND_NOT_COMING_UP
224 INBOUND_COMING_UP
225
226
227 The different pairings of these states results in six possible
228 states for the cluster as a whole:
229
230 CLUSTER_UP
231 +==========> INBOUND_NOT_COMING_UP -------------+
232 # |
233 |
234 CLUSTER_UP <----+ |
235 INBOUND_COMING_UP | v
236
237 ^ CLUSTER_GOING_DOWN CLUSTER_GOING_DOWN
238 # INBOUND_COMING_UP <=== INBOUND_NOT_COMING_UP
239
240 CLUSTER_DOWN | |
241 INBOUND_COMING_UP <----+ |
242 |
243 ^ |
244 +=========== CLUSTER_DOWN <------------+
245 INBOUND_NOT_COMING_UP
246
247 Transitions -----> can only be made by the outbound CPU, and
248 only involve changes to the "cluster" state.
249
250 Transitions ===##> can only be made by the inbound CPU, and only
251 involve changes to the "inbound" state, except where there is no
252 further transition possible on the outbound side (i.e., the
253 outbound CPU has put the cluster into the CLUSTER_DOWN state).
254
255 The race avoidance algorithm does not provide a way to determine
256 which exact CPUs within the cluster play these roles. This must
257 be decided in advance by some other means. Refer to the section
258 "Last man and first man selection" for more explanation.
259
260
261 CLUSTER_DOWN/INBOUND_NOT_COMING_UP is the only state where the
262 cluster can actually be powered down.
263
264 The parallelism of the inbound and outbound CPUs is observed by
265 the existence of two different paths from CLUSTER_GOING_DOWN/
266 INBOUND_NOT_COMING_UP (corresponding to GOING_DOWN in the basic
267 model) to CLUSTER_DOWN/INBOUND_COMING_UP (corresponding to
268 COMING_UP in the basic model). The second path avoids cluster
269 teardown completely.
270
271 CLUSTER_UP/INBOUND_COMING_UP is equivalent to UP in the basic
272 model. The final transition to CLUSTER_UP/INBOUND_NOT_COMING_UP
273 is trivial and merely resets the state machine ready for the
274 next cycle.
275
276 Details of the allowable transitions follow.
277
278 The next state in each case is notated
279
280 <cluster state>/<inbound state> (<transitioner>)
281
282 where the <transitioner> is the side on which the transition
283 can occur; either the inbound or the outbound side.
284
285
286CLUSTER_DOWN/INBOUND_NOT_COMING_UP:
287
288 Next state: CLUSTER_DOWN/INBOUND_COMING_UP (inbound)
289 Conditions: none
290 Trigger events:
291
292 a) an explicit hardware power-up operation, resulting
293 from a policy decision on another CPU;
294
295 b) a hardware event, such as an interrupt.
296
297
298CLUSTER_DOWN/INBOUND_COMING_UP:
299
300 In this state, an inbound CPU sets up the cluster, including
301 enabling of hardware coherency at the cluster level and any
302 other operations (such as cache invalidation) which are required
303 in order to achieve this.
304
305 The purpose of this state is to do sufficient cluster-level
306 setup to enable other CPUs in the cluster to enter coherency
307 safely.
308
309 Next state: CLUSTER_UP/INBOUND_COMING_UP (inbound)
310 Conditions: cluster-level setup and hardware coherency complete
311 Trigger events: (spontaneous)
312
313
314CLUSTER_UP/INBOUND_COMING_UP:
315
316 Cluster-level setup is complete and hardware coherency is
317 enabled for the cluster. Other CPUs in the cluster can safely
318 enter coherency.
319
320 This is a transient state, leading immediately to
321 CLUSTER_UP/INBOUND_NOT_COMING_UP. All other CPUs on the cluster
322 should consider treat these two states as equivalent.
323
324 Next state: CLUSTER_UP/INBOUND_NOT_COMING_UP (inbound)
325 Conditions: none
326 Trigger events: (spontaneous)
327
328
329CLUSTER_UP/INBOUND_NOT_COMING_UP:
330
331 Cluster-level setup is complete and hardware coherency is
332 enabled for the cluster. Other CPUs in the cluster can safely
333 enter coherency.
334
335 The cluster will remain in this state until a policy decision is
336 made to power the cluster down.
337
338 Next state: CLUSTER_GOING_DOWN/INBOUND_NOT_COMING_UP (outbound)
339 Conditions: none
340 Trigger events: policy decision to power down the cluster
341
342
343CLUSTER_GOING_DOWN/INBOUND_NOT_COMING_UP:
344
345 An outbound CPU is tearing the cluster down. The selected CPU
346 must wait in this state until all CPUs in the cluster are in the
347 CPU_DOWN state.
348
349 When all CPUs are in the CPU_DOWN state, the cluster can be torn
350 down, for example by cleaning data caches and exiting
351 cluster-level coherency.
352
353 To avoid wasteful unnecessary teardown operations, the outbound
354 should check the inbound cluster state for asynchronous
355 transitions to INBOUND_COMING_UP. Alternatively, individual
356 CPUs can be checked for entry into CPU_COMING_UP or CPU_UP.
357
358
359 Next states:
360
361 CLUSTER_DOWN/INBOUND_NOT_COMING_UP (outbound)
362 Conditions: cluster torn down and ready to power off
363 Trigger events: (spontaneous)
364
365 CLUSTER_GOING_DOWN/INBOUND_COMING_UP (inbound)
366 Conditions: none
367 Trigger events:
368
369 a) an explicit hardware power-up operation,
370 resulting from a policy decision on another
371 CPU;
372
373 b) a hardware event, such as an interrupt.
374
375
376CLUSTER_GOING_DOWN/INBOUND_COMING_UP:
377
378 The cluster is (or was) being torn down, but another CPU has
379 come online in the meantime and is trying to set up the cluster
380 again.
381
382 If the outbound CPU observes this state, it has two choices:
383
384 a) back out of teardown, restoring the cluster to the
385 CLUSTER_UP state;
386
387 b) finish tearing the cluster down and put the cluster
388 in the CLUSTER_DOWN state; the inbound CPU will
389 set up the cluster again from there.
390
391 Choice (a) permits the removal of some latency by avoiding
392 unnecessary teardown and setup operations in situations where
393 the cluster is not really going to be powered down.
394
395
396 Next states:
397
398 CLUSTER_UP/INBOUND_COMING_UP (outbound)
399 Conditions: cluster-level setup and hardware
400 coherency complete
401 Trigger events: (spontaneous)
402
403 CLUSTER_DOWN/INBOUND_COMING_UP (outbound)
404 Conditions: cluster torn down and ready to power off
405 Trigger events: (spontaneous)
406
407
408Last man and First man selection
409--------------------------------
410
411The CPU which performs cluster tear-down operations on the outbound side
412is commonly referred to as the "last man".
413
414The CPU which performs cluster setup on the inbound side is commonly
415referred to as the "first man".
416
417The race avoidance algorithm documented above does not provide a
418mechanism to choose which CPUs should play these roles.
419
420
421Last man:
422
423When shutting down the cluster, all the CPUs involved are initially
424executing Linux and hence coherent. Therefore, ordinary spinlocks can
425be used to select a last man safely, before the CPUs become
426non-coherent.
427
428
429First man:
430
431Because CPUs may power up asynchronously in response to external wake-up
432events, a dynamic mechanism is needed to make sure that only one CPU
433attempts to play the first man role and do the cluster-level
434initialisation: any other CPUs must wait for this to complete before
435proceeding.
436
437Cluster-level initialisation may involve actions such as configuring
438coherency controls in the bus fabric.
439
440The current implementation in mcpm_head.S uses a separate mutual exclusion
441mechanism to do this arbitration. This mechanism is documented in
442detail in vlocks.txt.
443
444
445Features and Limitations
446------------------------
447
448Implementation:
449
450 The current ARM-based implementation is split between
451 arch/arm/common/mcpm_head.S (low-level inbound CPU operations) and
452 arch/arm/common/mcpm_entry.c (everything else):
453
454 __mcpm_cpu_going_down() signals the transition of a CPU to the
455 CPU_GOING_DOWN state.
456
457 __mcpm_cpu_down() signals the transition of a CPU to the CPU_DOWN
458 state.
459
460 A CPU transitions to CPU_COMING_UP and then to CPU_UP via the
461 low-level power-up code in mcpm_head.S. This could
462 involve CPU-specific setup code, but in the current
463 implementation it does not.
464
465 __mcpm_outbound_enter_critical() and __mcpm_outbound_leave_critical()
466 handle transitions from CLUSTER_UP to CLUSTER_GOING_DOWN
467 and from there to CLUSTER_DOWN or back to CLUSTER_UP (in
468 the case of an aborted cluster power-down).
469
470 These functions are more complex than the __mcpm_cpu_*()
471 functions due to the extra inter-CPU coordination which
472 is needed for safe transitions at the cluster level.
473
474 A cluster transitions from CLUSTER_DOWN back to CLUSTER_UP via
475 the low-level power-up code in mcpm_head.S. This
476 typically involves platform-specific setup code,
477 provided by the platform-specific power_up_setup
478 function registered via mcpm_sync_init.
479
480Deep topologies:
481
482 As currently described and implemented, the algorithm does not
483 support CPU topologies involving more than two levels (i.e.,
484 clusters of clusters are not supported). The algorithm could be
485 extended by replicating the cluster-level states for the
486 additional topological levels, and modifying the transition
487 rules for the intermediate (non-outermost) cluster levels.
488
489
490Colophon
491--------
492
493Originally created and documented by Dave Martin for Linaro Limited, in
494collaboration with Nicolas Pitre and Achin Gupta.
495
496Copyright (C) 2012-2013 Linaro Limited
497Distributed under the terms of Version 2 of the GNU General Public
498License, as defined in linux/COPYING.
diff --git a/Documentation/arm/firmware.txt b/Documentation/arm/firmware.txt
new file mode 100644
index 000000000000..c2e468fe7b0b
--- /dev/null
+++ b/Documentation/arm/firmware.txt
@@ -0,0 +1,88 @@
1Interface for registering and calling firmware-specific operations for ARM.
2----
3Written by Tomasz Figa <t.figa@samsung.com>
4
5Some boards are running with secure firmware running in TrustZone secure
6world, which changes the way some things have to be initialized. This makes
7a need to provide an interface for such platforms to specify available firmware
8operations and call them when needed.
9
10Firmware operations can be specified using struct firmware_ops
11
12 struct firmware_ops {
13 /*
14 * Enters CPU idle mode
15 */
16 int (*do_idle)(void);
17 /*
18 * Sets boot address of specified physical CPU
19 */
20 int (*set_cpu_boot_addr)(int cpu, unsigned long boot_addr);
21 /*
22 * Boots specified physical CPU
23 */
24 int (*cpu_boot)(int cpu);
25 /*
26 * Initializes L2 cache
27 */
28 int (*l2x0_init)(void);
29 };
30
31and then registered with register_firmware_ops function
32
33 void register_firmware_ops(const struct firmware_ops *ops)
34
35the ops pointer must be non-NULL.
36
37There is a default, empty set of operations provided, so there is no need to
38set anything if platform does not require firmware operations.
39
40To call a firmware operation, a helper macro is provided
41
42 #define call_firmware_op(op, ...) \
43 ((firmware_ops->op) ? firmware_ops->op(__VA_ARGS__) : (-ENOSYS))
44
45the macro checks if the operation is provided and calls it or otherwise returns
46-ENOSYS to signal that given operation is not available (for example, to allow
47fallback to legacy operation).
48
49Example of registering firmware operations:
50
51 /* board file */
52
53 static int platformX_do_idle(void)
54 {
55 /* tell platformX firmware to enter idle */
56 return 0;
57 }
58
59 static int platformX_cpu_boot(int i)
60 {
61 /* tell platformX firmware to boot CPU i */
62 return 0;
63 }
64
65 static const struct firmware_ops platformX_firmware_ops = {
66 .do_idle = exynos_do_idle,
67 .cpu_boot = exynos_cpu_boot,
68 /* other operations not available on platformX */
69 };
70
71 /* init_early callback of machine descriptor */
72 static void __init board_init_early(void)
73 {
74 register_firmware_ops(&platformX_firmware_ops);
75 }
76
77Example of using a firmware operation:
78
79 /* some platform code, e.g. SMP initialization */
80
81 __raw_writel(virt_to_phys(exynos4_secondary_startup),
82 CPU1_BOOT_REG);
83
84 /* Call Exynos specific smc call */
85 if (call_firmware_op(cpu_boot, cpu) == -ENOSYS)
86 cpu_boot_legacy(...); /* Try legacy way */
87
88 gic_raise_softirq(cpumask_of(cpu), 1);
diff --git a/Documentation/arm/sunxi/clocks.txt b/Documentation/arm/sunxi/clocks.txt
new file mode 100644
index 000000000000..e09a88aa3136
--- /dev/null
+++ b/Documentation/arm/sunxi/clocks.txt
@@ -0,0 +1,56 @@
1Frequently asked questions about the sunxi clock system
2=======================================================
3
4This document contains useful bits of information that people tend to ask
5about the sunxi clock system, as well as accompanying ASCII art when adequate.
6
7Q: Why is the main 24MHz oscillator gatable? Wouldn't that break the
8 system?
9
10A: The 24MHz oscillator allows gating to save power. Indeed, if gated
11 carelessly the system would stop functioning, but with the right
12 steps, one can gate it and keep the system running. Consider this
13 simplified suspend example:
14
15 While the system is operational, you would see something like
16
17 24MHz 32kHz
18 |
19 PLL1
20 \
21 \_ CPU Mux
22 |
23 [CPU]
24
25 When you are about to suspend, you switch the CPU Mux to the 32kHz
26 oscillator:
27
28 24Mhz 32kHz
29 | |
30 PLL1 |
31 /
32 CPU Mux _/
33 |
34 [CPU]
35
36 Finally you can gate the main oscillator
37
38 32kHz
39 |
40 |
41 /
42 CPU Mux _/
43 |
44 [CPU]
45
46Q: Were can I learn more about the sunxi clocks?
47
48A: The linux-sunxi wiki contains a page documenting the clock registers,
49 you can find it at
50
51 http://linux-sunxi.org/A10/CCM
52
53 The authoritative source for information at this time is the ccmu driver
54 released by Allwinner, you can find it at
55
56 https://github.com/linux-sunxi/linux-sunxi/tree/sunxi-3.0/arch/arm/mach-sun4i/clock/ccmu
diff --git a/Documentation/arm/vlocks.txt b/Documentation/arm/vlocks.txt
new file mode 100644
index 000000000000..415960a9bab0
--- /dev/null
+++ b/Documentation/arm/vlocks.txt
@@ -0,0 +1,211 @@
1vlocks for Bare-Metal Mutual Exclusion
2======================================
3
4Voting Locks, or "vlocks" provide a simple low-level mutual exclusion
5mechanism, with reasonable but minimal requirements on the memory
6system.
7
8These are intended to be used to coordinate critical activity among CPUs
9which are otherwise non-coherent, in situations where the hardware
10provides no other mechanism to support this and ordinary spinlocks
11cannot be used.
12
13
14vlocks make use of the atomicity provided by the memory system for
15writes to a single memory location. To arbitrate, every CPU "votes for
16itself", by storing a unique number to a common memory location. The
17final value seen in that memory location when all the votes have been
18cast identifies the winner.
19
20In order to make sure that the election produces an unambiguous result
21in finite time, a CPU will only enter the election in the first place if
22no winner has been chosen and the election does not appear to have
23started yet.
24
25
26Algorithm
27---------
28
29The easiest way to explain the vlocks algorithm is with some pseudo-code:
30
31
32 int currently_voting[NR_CPUS] = { 0, };
33 int last_vote = -1; /* no votes yet */
34
35 bool vlock_trylock(int this_cpu)
36 {
37 /* signal our desire to vote */
38 currently_voting[this_cpu] = 1;
39 if (last_vote != -1) {
40 /* someone already volunteered himself */
41 currently_voting[this_cpu] = 0;
42 return false; /* not ourself */
43 }
44
45 /* let's suggest ourself */
46 last_vote = this_cpu;
47 currently_voting[this_cpu] = 0;
48
49 /* then wait until everyone else is done voting */
50 for_each_cpu(i) {
51 while (currently_voting[i] != 0)
52 /* wait */;
53 }
54
55 /* result */
56 if (last_vote == this_cpu)
57 return true; /* we won */
58 return false;
59 }
60
61 bool vlock_unlock(void)
62 {
63 last_vote = -1;
64 }
65
66
67The currently_voting[] array provides a way for the CPUs to determine
68whether an election is in progress, and plays a role analogous to the
69"entering" array in Lamport's bakery algorithm [1].
70
71However, once the election has started, the underlying memory system
72atomicity is used to pick the winner. This avoids the need for a static
73priority rule to act as a tie-breaker, or any counters which could
74overflow.
75
76As long as the last_vote variable is globally visible to all CPUs, it
77will contain only one value that won't change once every CPU has cleared
78its currently_voting flag.
79
80
81Features and limitations
82------------------------
83
84 * vlocks are not intended to be fair. In the contended case, it is the
85 _last_ CPU which attempts to get the lock which will be most likely
86 to win.
87
88 vlocks are therefore best suited to situations where it is necessary
89 to pick a unique winner, but it does not matter which CPU actually
90 wins.
91
92 * Like other similar mechanisms, vlocks will not scale well to a large
93 number of CPUs.
94
95 vlocks can be cascaded in a voting hierarchy to permit better scaling
96 if necessary, as in the following hypothetical example for 4096 CPUs:
97
98 /* first level: local election */
99 my_town = towns[(this_cpu >> 4) & 0xf];
100 I_won = vlock_trylock(my_town, this_cpu & 0xf);
101 if (I_won) {
102 /* we won the town election, let's go for the state */
103 my_state = states[(this_cpu >> 8) & 0xf];
104 I_won = vlock_lock(my_state, this_cpu & 0xf));
105 if (I_won) {
106 /* and so on */
107 I_won = vlock_lock(the_whole_country, this_cpu & 0xf];
108 if (I_won) {
109 /* ... */
110 }
111 vlock_unlock(the_whole_country);
112 }
113 vlock_unlock(my_state);
114 }
115 vlock_unlock(my_town);
116
117
118ARM implementation
119------------------
120
121The current ARM implementation [2] contains some optimisations beyond
122the basic algorithm:
123
124 * By packing the members of the currently_voting array close together,
125 we can read the whole array in one transaction (providing the number
126 of CPUs potentially contending the lock is small enough). This
127 reduces the number of round-trips required to external memory.
128
129 In the ARM implementation, this means that we can use a single load
130 and comparison:
131
132 LDR Rt, [Rn]
133 CMP Rt, #0
134
135 ...in place of code equivalent to:
136
137 LDRB Rt, [Rn]
138 CMP Rt, #0
139 LDRBEQ Rt, [Rn, #1]
140 CMPEQ Rt, #0
141 LDRBEQ Rt, [Rn, #2]
142 CMPEQ Rt, #0
143 LDRBEQ Rt, [Rn, #3]
144 CMPEQ Rt, #0
145
146 This cuts down on the fast-path latency, as well as potentially
147 reducing bus contention in contended cases.
148
149 The optimisation relies on the fact that the ARM memory system
150 guarantees coherency between overlapping memory accesses of
151 different sizes, similarly to many other architectures. Note that
152 we do not care which element of currently_voting appears in which
153 bits of Rt, so there is no need to worry about endianness in this
154 optimisation.
155
156 If there are too many CPUs to read the currently_voting array in
157 one transaction then multiple transations are still required. The
158 implementation uses a simple loop of word-sized loads for this
159 case. The number of transactions is still fewer than would be
160 required if bytes were loaded individually.
161
162
163 In principle, we could aggregate further by using LDRD or LDM, but
164 to keep the code simple this was not attempted in the initial
165 implementation.
166
167
168 * vlocks are currently only used to coordinate between CPUs which are
169 unable to enable their caches yet. This means that the
170 implementation removes many of the barriers which would be required
171 when executing the algorithm in cached memory.
172
173 packing of the currently_voting array does not work with cached
174 memory unless all CPUs contending the lock are cache-coherent, due
175 to cache writebacks from one CPU clobbering values written by other
176 CPUs. (Though if all the CPUs are cache-coherent, you should be
177 probably be using proper spinlocks instead anyway).
178
179
180 * The "no votes yet" value used for the last_vote variable is 0 (not
181 -1 as in the pseudocode). This allows statically-allocated vlocks
182 to be implicitly initialised to an unlocked state simply by putting
183 them in .bss.
184
185 An offset is added to each CPU's ID for the purpose of setting this
186 variable, so that no CPU uses the value 0 for its ID.
187
188
189Colophon
190--------
191
192Originally created and documented by Dave Martin for Linaro Limited, for
193use in ARM-based big.LITTLE platforms, with review and input gratefully
194received from Nicolas Pitre and Achin Gupta. Thanks to Nicolas for
195grabbing most of this text out of the relevant mail thread and writing
196up the pseudocode.
197
198Copyright (C) 2012-2013 Linaro Limited
199Distributed under the terms of Version 2 of the GNU General Public
200License, as defined in linux/COPYING.
201
202
203References
204----------
205
206[1] Lamport, L. "A New Solution of Dijkstra's Concurrent Programming
207 Problem", Communications of the ACM 17, 8 (August 1974), 453-455.
208
209 http://en.wikipedia.org/wiki/Lamport%27s_bakery_algorithm
210
211[2] linux/arch/arm/common/vlock.S, www.kernel.org.
diff --git a/Documentation/backlight/lp855x-driver.txt b/Documentation/backlight/lp855x-driver.txt
index 18b06ca038ea..1c732f0c6758 100644
--- a/Documentation/backlight/lp855x-driver.txt
+++ b/Documentation/backlight/lp855x-driver.txt
@@ -32,14 +32,10 @@ Platform data for lp855x
32For supporting platform specific data, the lp855x platform data can be used. 32For supporting platform specific data, the lp855x platform data can be used.
33 33
34* name : Backlight driver name. If it is not defined, default name is set. 34* name : Backlight driver name. If it is not defined, default name is set.
35* mode : Brightness control mode. PWM or register based.
36* device_control : Value of DEVICE CONTROL register. 35* device_control : Value of DEVICE CONTROL register.
37* initial_brightness : Initial value of backlight brightness. 36* initial_brightness : Initial value of backlight brightness.
38* period_ns : Platform specific PWM period value. unit is nano. 37* period_ns : Platform specific PWM period value. unit is nano.
39 Only valid when brightness is pwm input mode. 38 Only valid when brightness is pwm input mode.
40* load_new_rom_data :
41 0 : use default configuration data
42 1 : update values of eeprom or eprom registers on loading driver
43* size_program : Total size of lp855x_rom_data. 39* size_program : Total size of lp855x_rom_data.
44* rom_data : List of new eeprom/eprom registers. 40* rom_data : List of new eeprom/eprom registers.
45 41
@@ -54,10 +50,8 @@ static struct lp855x_rom_data lp8552_eeprom_arr[] = {
54 50
55static struct lp855x_platform_data lp8552_pdata = { 51static struct lp855x_platform_data lp8552_pdata = {
56 .name = "lcd-bl", 52 .name = "lcd-bl",
57 .mode = REGISTER_BASED,
58 .device_control = I2C_CONFIG(LP8552), 53 .device_control = I2C_CONFIG(LP8552),
59 .initial_brightness = INITIAL_BRT, 54 .initial_brightness = INITIAL_BRT,
60 .load_new_rom_data = 1,
61 .size_program = ARRAY_SIZE(lp8552_eeprom_arr), 55 .size_program = ARRAY_SIZE(lp8552_eeprom_arr),
62 .rom_data = lp8552_eeprom_arr, 56 .rom_data = lp8552_eeprom_arr,
63}; 57};
@@ -65,7 +59,6 @@ static struct lp855x_platform_data lp8552_pdata = {
65example 2) lp8556 platform data : pwm input mode with default rom data 59example 2) lp8556 platform data : pwm input mode with default rom data
66 60
67static struct lp855x_platform_data lp8556_pdata = { 61static struct lp855x_platform_data lp8556_pdata = {
68 .mode = PWM_BASED,
69 .device_control = PWM_CONFIG(LP8556), 62 .device_control = PWM_CONFIG(LP8556),
70 .initial_brightness = INITIAL_BRT, 63 .initial_brightness = INITIAL_BRT,
71 .period_ns = 1000000, 64 .period_ns = 1000000,
diff --git a/Documentation/bcache.txt b/Documentation/bcache.txt
new file mode 100644
index 000000000000..77db8809bd96
--- /dev/null
+++ b/Documentation/bcache.txt
@@ -0,0 +1,431 @@
1Say you've got a big slow raid 6, and an X-25E or three. Wouldn't it be
2nice if you could use them as cache... Hence bcache.
3
4Wiki and git repositories are at:
5 http://bcache.evilpiepirate.org
6 http://evilpiepirate.org/git/linux-bcache.git
7 http://evilpiepirate.org/git/bcache-tools.git
8
9It's designed around the performance characteristics of SSDs - it only allocates
10in erase block sized buckets, and it uses a hybrid btree/log to track cached
11extants (which can be anywhere from a single sector to the bucket size). It's
12designed to avoid random writes at all costs; it fills up an erase block
13sequentially, then issues a discard before reusing it.
14
15Both writethrough and writeback caching are supported. Writeback defaults to
16off, but can be switched on and off arbitrarily at runtime. Bcache goes to
17great lengths to protect your data - it reliably handles unclean shutdown. (It
18doesn't even have a notion of a clean shutdown; bcache simply doesn't return
19writes as completed until they're on stable storage).
20
21Writeback caching can use most of the cache for buffering writes - writing
22dirty data to the backing device is always done sequentially, scanning from the
23start to the end of the index.
24
25Since random IO is what SSDs excel at, there generally won't be much benefit
26to caching large sequential IO. Bcache detects sequential IO and skips it;
27it also keeps a rolling average of the IO sizes per task, and as long as the
28average is above the cutoff it will skip all IO from that task - instead of
29caching the first 512k after every seek. Backups and large file copies should
30thus entirely bypass the cache.
31
32In the event of a data IO error on the flash it will try to recover by reading
33from disk or invalidating cache entries. For unrecoverable errors (meta data
34or dirty data), caching is automatically disabled; if dirty data was present
35in the cache it first disables writeback caching and waits for all dirty data
36to be flushed.
37
38Getting started:
39You'll need make-bcache from the bcache-tools repository. Both the cache device
40and backing device must be formatted before use.
41 make-bcache -B /dev/sdb
42 make-bcache -C /dev/sdc
43
44make-bcache has the ability to format multiple devices at the same time - if
45you format your backing devices and cache device at the same time, you won't
46have to manually attach:
47 make-bcache -B /dev/sda /dev/sdb -C /dev/sdc
48
49To make bcache devices known to the kernel, echo them to /sys/fs/bcache/register:
50
51 echo /dev/sdb > /sys/fs/bcache/register
52 echo /dev/sdc > /sys/fs/bcache/register
53
54To register your bcache devices automatically, you could add something like
55this to an init script:
56
57 echo /dev/sd* > /sys/fs/bcache/register_quiet
58
59It'll look for bcache superblocks and ignore everything that doesn't have one.
60
61Registering the backing device makes the bcache show up in /dev; you can now
62format it and use it as normal. But the first time using a new bcache device,
63it'll be running in passthrough mode until you attach it to a cache. See the
64section on attaching.
65
66The devices show up at /dev/bcacheN, and can be controlled via sysfs from
67/sys/block/bcacheN/bcache:
68
69 mkfs.ext4 /dev/bcache0
70 mount /dev/bcache0 /mnt
71
72Cache devices are managed as sets; multiple caches per set isn't supported yet
73but will allow for mirroring of metadata and dirty data in the future. Your new
74cache set shows up as /sys/fs/bcache/<UUID>
75
76ATTACHING:
77
78After your cache device and backing device are registered, the backing device
79must be attached to your cache set to enable caching. Attaching a backing
80device to a cache set is done thusly, with the UUID of the cache set in
81/sys/fs/bcache:
82
83 echo <UUID> > /sys/block/bcache0/bcache/attach
84
85This only has to be done once. The next time you reboot, just reregister all
86your bcache devices. If a backing device has data in a cache somewhere, the
87/dev/bcache# device won't be created until the cache shows up - particularly
88important if you have writeback caching turned on.
89
90If you're booting up and your cache device is gone and never coming back, you
91can force run the backing device:
92
93 echo 1 > /sys/block/sdb/bcache/running
94
95(You need to use /sys/block/sdb (or whatever your backing device is called), not
96/sys/block/bcache0, because bcache0 doesn't exist yet. If you're using a
97partition, the bcache directory would be at /sys/block/sdb/sdb2/bcache)
98
99The backing device will still use that cache set if it shows up in the future,
100but all the cached data will be invalidated. If there was dirty data in the
101cache, don't expect the filesystem to be recoverable - you will have massive
102filesystem corruption, though ext4's fsck does work miracles.
103
104ERROR HANDLING:
105
106Bcache tries to transparently handle IO errors to/from the cache device without
107affecting normal operation; if it sees too many errors (the threshold is
108configurable, and defaults to 0) it shuts down the cache device and switches all
109the backing devices to passthrough mode.
110
111 - For reads from the cache, if they error we just retry the read from the
112 backing device.
113
114 - For writethrough writes, if the write to the cache errors we just switch to
115 invalidating the data at that lba in the cache (i.e. the same thing we do for
116 a write that bypasses the cache)
117
118 - For writeback writes, we currently pass that error back up to the
119 filesystem/userspace. This could be improved - we could retry it as a write
120 that skips the cache so we don't have to error the write.
121
122 - When we detach, we first try to flush any dirty data (if we were running in
123 writeback mode). It currently doesn't do anything intelligent if it fails to
124 read some of the dirty data, though.
125
126TROUBLESHOOTING PERFORMANCE:
127
128Bcache has a bunch of config options and tunables. The defaults are intended to
129be reasonable for typical desktop and server workloads, but they're not what you
130want for getting the best possible numbers when benchmarking.
131
132 - Bad write performance
133
134 If write performance is not what you expected, you probably wanted to be
135 running in writeback mode, which isn't the default (not due to a lack of
136 maturity, but simply because in writeback mode you'll lose data if something
137 happens to your SSD)
138
139 # echo writeback > /sys/block/bcache0/cache_mode
140
141 - Bad performance, or traffic not going to the SSD that you'd expect
142
143 By default, bcache doesn't cache everything. It tries to skip sequential IO -
144 because you really want to be caching the random IO, and if you copy a 10
145 gigabyte file you probably don't want that pushing 10 gigabytes of randomly
146 accessed data out of your cache.
147
148 But if you want to benchmark reads from cache, and you start out with fio
149 writing an 8 gigabyte test file - so you want to disable that.
150
151 # echo 0 > /sys/block/bcache0/bcache/sequential_cutoff
152
153 To set it back to the default (4 mb), do
154
155 # echo 4M > /sys/block/bcache0/bcache/sequential_cutoff
156
157 - Traffic's still going to the spindle/still getting cache misses
158
159 In the real world, SSDs don't always keep up with disks - particularly with
160 slower SSDs, many disks being cached by one SSD, or mostly sequential IO. So
161 you want to avoid being bottlenecked by the SSD and having it slow everything
162 down.
163
164 To avoid that bcache tracks latency to the cache device, and gradually
165 throttles traffic if the latency exceeds a threshold (it does this by
166 cranking down the sequential bypass).
167
168 You can disable this if you need to by setting the thresholds to 0:
169
170 # echo 0 > /sys/fs/bcache/<cache set>/congested_read_threshold_us
171 # echo 0 > /sys/fs/bcache/<cache set>/congested_write_threshold_us
172
173 The default is 2000 us (2 milliseconds) for reads, and 20000 for writes.
174
175 - Still getting cache misses, of the same data
176
177 One last issue that sometimes trips people up is actually an old bug, due to
178 the way cache coherency is handled for cache misses. If a btree node is full,
179 a cache miss won't be able to insert a key for the new data and the data
180 won't be written to the cache.
181
182 In practice this isn't an issue because as soon as a write comes along it'll
183 cause the btree node to be split, and you need almost no write traffic for
184 this to not show up enough to be noticable (especially since bcache's btree
185 nodes are huge and index large regions of the device). But when you're
186 benchmarking, if you're trying to warm the cache by reading a bunch of data
187 and there's no other traffic - that can be a problem.
188
189 Solution: warm the cache by doing writes, or use the testing branch (there's
190 a fix for the issue there).
191
192SYSFS - BACKING DEVICE:
193
194attach
195 Echo the UUID of a cache set to this file to enable caching.
196
197cache_mode
198 Can be one of either writethrough, writeback, writearound or none.
199
200clear_stats
201 Writing to this file resets the running total stats (not the day/hour/5 minute
202 decaying versions).
203
204detach
205 Write to this file to detach from a cache set. If there is dirty data in the
206 cache, it will be flushed first.
207
208dirty_data
209 Amount of dirty data for this backing device in the cache. Continuously
210 updated unlike the cache set's version, but may be slightly off.
211
212label
213 Name of underlying device.
214
215readahead
216 Size of readahead that should be performed. Defaults to 0. If set to e.g.
217 1M, it will round cache miss reads up to that size, but without overlapping
218 existing cache entries.
219
220running
221 1 if bcache is running (i.e. whether the /dev/bcache device exists, whether
222 it's in passthrough mode or caching).
223
224sequential_cutoff
225 A sequential IO will bypass the cache once it passes this threshhold; the
226 most recent 128 IOs are tracked so sequential IO can be detected even when
227 it isn't all done at once.
228
229sequential_merge
230 If non zero, bcache keeps a list of the last 128 requests submitted to compare
231 against all new requests to determine which new requests are sequential
232 continuations of previous requests for the purpose of determining sequential
233 cutoff. This is necessary if the sequential cutoff value is greater than the
234 maximum acceptable sequential size for any single request.
235
236state
237 The backing device can be in one of four different states:
238
239 no cache: Has never been attached to a cache set.
240
241 clean: Part of a cache set, and there is no cached dirty data.
242
243 dirty: Part of a cache set, and there is cached dirty data.
244
245 inconsistent: The backing device was forcibly run by the user when there was
246 dirty data cached but the cache set was unavailable; whatever data was on the
247 backing device has likely been corrupted.
248
249stop
250 Write to this file to shut down the bcache device and close the backing
251 device.
252
253writeback_delay
254 When dirty data is written to the cache and it previously did not contain
255 any, waits some number of seconds before initiating writeback. Defaults to
256 30.
257
258writeback_percent
259 If nonzero, bcache tries to keep around this percentage of the cache dirty by
260 throttling background writeback and using a PD controller to smoothly adjust
261 the rate.
262
263writeback_rate
264 Rate in sectors per second - if writeback_percent is nonzero, background
265 writeback is throttled to this rate. Continuously adjusted by bcache but may
266 also be set by the user.
267
268writeback_running
269 If off, writeback of dirty data will not take place at all. Dirty data will
270 still be added to the cache until it is mostly full; only meant for
271 benchmarking. Defaults to on.
272
273SYSFS - BACKING DEVICE STATS:
274
275There are directories with these numbers for a running total, as well as
276versions that decay over the past day, hour and 5 minutes; they're also
277aggregated in the cache set directory as well.
278
279bypassed
280 Amount of IO (both reads and writes) that has bypassed the cache
281
282cache_hits
283cache_misses
284cache_hit_ratio
285 Hits and misses are counted per individual IO as bcache sees them; a
286 partial hit is counted as a miss.
287
288cache_bypass_hits
289cache_bypass_misses
290 Hits and misses for IO that is intended to skip the cache are still counted,
291 but broken out here.
292
293cache_miss_collisions
294 Counts instances where data was going to be inserted into the cache from a
295 cache miss, but raced with a write and data was already present (usually 0
296 since the synchronization for cache misses was rewritten)
297
298cache_readaheads
299 Count of times readahead occured.
300
301SYSFS - CACHE SET:
302
303average_key_size
304 Average data per key in the btree.
305
306bdev<0..n>
307 Symlink to each of the attached backing devices.
308
309block_size
310 Block size of the cache devices.
311
312btree_cache_size
313 Amount of memory currently used by the btree cache
314
315bucket_size
316 Size of buckets
317
318cache<0..n>
319 Symlink to each of the cache devices comprising this cache set.
320
321cache_available_percent
322 Percentage of cache device free.
323
324clear_stats
325 Clears the statistics associated with this cache
326
327dirty_data
328 Amount of dirty data is in the cache (updated when garbage collection runs).
329
330flash_vol_create
331 Echoing a size to this file (in human readable units, k/M/G) creates a thinly
332 provisioned volume backed by the cache set.
333
334io_error_halflife
335io_error_limit
336 These determines how many errors we accept before disabling the cache.
337 Each error is decayed by the half life (in # ios). If the decaying count
338 reaches io_error_limit dirty data is written out and the cache is disabled.
339
340journal_delay_ms
341 Journal writes will delay for up to this many milliseconds, unless a cache
342 flush happens sooner. Defaults to 100.
343
344root_usage_percent
345 Percentage of the root btree node in use. If this gets too high the node
346 will split, increasing the tree depth.
347
348stop
349 Write to this file to shut down the cache set - waits until all attached
350 backing devices have been shut down.
351
352tree_depth
353 Depth of the btree (A single node btree has depth 0).
354
355unregister
356 Detaches all backing devices and closes the cache devices; if dirty data is
357 present it will disable writeback caching and wait for it to be flushed.
358
359SYSFS - CACHE SET INTERNAL:
360
361This directory also exposes timings for a number of internal operations, with
362separate files for average duration, average frequency, last occurence and max
363duration: garbage collection, btree read, btree node sorts and btree splits.
364
365active_journal_entries
366 Number of journal entries that are newer than the index.
367
368btree_nodes
369 Total nodes in the btree.
370
371btree_used_percent
372 Average fraction of btree in use.
373
374bset_tree_stats
375 Statistics about the auxiliary search trees
376
377btree_cache_max_chain
378 Longest chain in the btree node cache's hash table
379
380cache_read_races
381 Counts instances where while data was being read from the cache, the bucket
382 was reused and invalidated - i.e. where the pointer was stale after the read
383 completed. When this occurs the data is reread from the backing device.
384
385trigger_gc
386 Writing to this file forces garbage collection to run.
387
388SYSFS - CACHE DEVICE:
389
390block_size
391 Minimum granularity of writes - should match hardware sector size.
392
393btree_written
394 Sum of all btree writes, in (kilo/mega/giga) bytes
395
396bucket_size
397 Size of buckets
398
399cache_replacement_policy
400 One of either lru, fifo or random.
401
402discard
403 Boolean; if on a discard/TRIM will be issued to each bucket before it is
404 reused. Defaults to off, since SATA TRIM is an unqueued command (and thus
405 slow).
406
407freelist_percent
408 Size of the freelist as a percentage of nbuckets. Can be written to to
409 increase the number of buckets kept on the freelist, which lets you
410 artificially reduce the size of the cache at runtime. Mostly for testing
411 purposes (i.e. testing how different size caches affect your hit rate), but
412 since buckets are discarded when they move on to the freelist will also make
413 the SSD's garbage collection easier by effectively giving it more reserved
414 space.
415
416io_errors
417 Number of errors that have occured, decayed by io_error_halflife.
418
419metadata_written
420 Sum of all non data writes (btree writes and all other metadata).
421
422nbuckets
423 Total buckets in this cache
424
425priority_stats
426 Statistics about how recently data in the cache has been accessed. This can
427 reveal your working set size.
428
429written
430 Sum of all data that has been written to the cache; comparison with
431 btree_written gives the amount of write inflation in bcache.
diff --git a/Documentation/block/cfq-iosched.txt b/Documentation/block/cfq-iosched.txt
index a5eb7d19a65d..9887f0414c16 100644
--- a/Documentation/block/cfq-iosched.txt
+++ b/Documentation/block/cfq-iosched.txt
@@ -5,7 +5,7 @@ The main aim of CFQ scheduler is to provide a fair allocation of the disk
5I/O bandwidth for all the processes which requests an I/O operation. 5I/O bandwidth for all the processes which requests an I/O operation.
6 6
7CFQ maintains the per process queue for the processes which request I/O 7CFQ maintains the per process queue for the processes which request I/O
8operation(syncronous requests). In case of asynchronous requests, all the 8operation(synchronous requests). In case of asynchronous requests, all the
9requests from all the processes are batched together according to their 9requests from all the processes are batched together according to their
10process's I/O priority. 10process's I/O priority.
11 11
@@ -66,6 +66,47 @@ This parameter is used to set the timeout of synchronous requests. Default
66value of this is 124ms. In case to favor synchronous requests over asynchronous 66value of this is 124ms. In case to favor synchronous requests over asynchronous
67one, this value should be decreased relative to fifo_expire_async. 67one, this value should be decreased relative to fifo_expire_async.
68 68
69group_idle
70-----------
71This parameter forces idling at the CFQ group level instead of CFQ
72queue level. This was introduced after after a bottleneck was observed
73in higher end storage due to idle on sequential queue and allow dispatch
74from a single queue. The idea with this parameter is that it can be run with
75slice_idle=0 and group_idle=8, so that idling does not happen on individual
76queues in the group but happens overall on the group and thus still keeps the
77IO controller working.
78Not idling on individual queues in the group will dispatch requests from
79multiple queues in the group at the same time and achieve higher throughput
80on higher end storage.
81
82Default value for this parameter is 8ms.
83
84latency
85-------
86This parameter is used to enable/disable the latency mode of the CFQ
87scheduler. If latency mode (called low_latency) is enabled, CFQ tries
88to recompute the slice time for each process based on the target_latency set
89for the system. This favors fairness over throughput. Disabling low
90latency (setting it to 0) ignores target latency, allowing each process in the
91system to get a full time slice.
92
93By default low latency mode is enabled.
94
95target_latency
96--------------
97This parameter is used to calculate the time slice for a process if cfq's
98latency mode is enabled. It will ensure that sync requests have an estimated
99latency. But if sequential workload is higher(e.g. sequential read),
100then to meet the latency constraints, throughput may decrease because of less
101time for each process to issue I/O request before the cfq queue is switched.
102
103Though this can be overcome by disabling the latency_mode, it may increase
104the read latency for some applications. This parameter allows for changing
105target_latency through the sysfs interface which can provide the balanced
106throughput and read latency.
107
108Default value for target_latency is 300ms.
109
69slice_async 110slice_async
70----------- 111-----------
71This parameter is same as of slice_sync but for asynchronous queue. The 112This parameter is same as of slice_sync but for asynchronous queue. The
@@ -98,8 +139,8 @@ in the device exceeds this parameter. This parameter is used for synchronous
98request. 139request.
99 140
100In case of storage with several disk, this setting can limit the parallel 141In case of storage with several disk, this setting can limit the parallel
101processing of request. Therefore, increasing the value can imporve the 142processing of request. Therefore, increasing the value can improve the
102performace although this can cause the latency of some I/O to increase due 143performance although this can cause the latency of some I/O to increase due
103to more number of requests. 144to more number of requests.
104 145
105CFQ Group scheduling 146CFQ Group scheduling
diff --git a/Documentation/cgroups/00-INDEX b/Documentation/cgroups/00-INDEX
index f5635a09c3f6..bc461b6425a7 100644
--- a/Documentation/cgroups/00-INDEX
+++ b/Documentation/cgroups/00-INDEX
@@ -18,6 +18,8 @@ memcg_test.txt
18 - Memory Resource Controller; implementation details. 18 - Memory Resource Controller; implementation details.
19memory.txt 19memory.txt
20 - Memory Resource Controller; design, accounting, interface, testing. 20 - Memory Resource Controller; design, accounting, interface, testing.
21net_cls.txt
22 - Network classifier cgroups details and usages.
21net_prio.txt 23net_prio.txt
22 - Network priority cgroups details and usages. 24 - Network priority cgroups details and usages.
23resource_counter.txt 25resource_counter.txt
diff --git a/Documentation/cgroups/cgroups.txt b/Documentation/cgroups/cgroups.txt
index bcf1a00b06a1..638bf17ff869 100644
--- a/Documentation/cgroups/cgroups.txt
+++ b/Documentation/cgroups/cgroups.txt
@@ -442,7 +442,7 @@ You can attach the current shell task by echoing 0:
442You can use the cgroup.procs file instead of the tasks file to move all 442You can use the cgroup.procs file instead of the tasks file to move all
443threads in a threadgroup at once. Echoing the PID of any task in a 443threads in a threadgroup at once. Echoing the PID of any task in a
444threadgroup to cgroup.procs causes all tasks in that threadgroup to be 444threadgroup to cgroup.procs causes all tasks in that threadgroup to be
445be attached to the cgroup. Writing 0 to cgroup.procs moves all tasks 445attached to the cgroup. Writing 0 to cgroup.procs moves all tasks
446in the writing task's threadgroup. 446in the writing task's threadgroup.
447 447
448Note: Since every task is always a member of exactly one cgroup in each 448Note: Since every task is always a member of exactly one cgroup in each
@@ -580,6 +580,7 @@ propagation along the hierarchy. See the comment on
580cgroup_for_each_descendant_pre() for details. 580cgroup_for_each_descendant_pre() for details.
581 581
582void css_offline(struct cgroup *cgrp); 582void css_offline(struct cgroup *cgrp);
583(cgroup_mutex held by caller)
583 584
584This is the counterpart of css_online() and called iff css_online() 585This is the counterpart of css_online() and called iff css_online()
585has succeeded on @cgrp. This signifies the beginning of the end of 586has succeeded on @cgrp. This signifies the beginning of the end of
diff --git a/Documentation/cgroups/devices.txt b/Documentation/cgroups/devices.txt
index 16624a7f8222..3c1095ca02ea 100644
--- a/Documentation/cgroups/devices.txt
+++ b/Documentation/cgroups/devices.txt
@@ -13,9 +13,7 @@ either an integer or * for all. Access is a composition of r
13The root device cgroup starts with rwm to 'all'. A child device 13The root device cgroup starts with rwm to 'all'. A child device
14cgroup gets a copy of the parent. Administrators can then remove 14cgroup gets a copy of the parent. Administrators can then remove
15devices from the whitelist or add new entries. A child cgroup can 15devices from the whitelist or add new entries. A child cgroup can
16never receive a device access which is denied by its parent. However 16never receive a device access which is denied by its parent.
17when a device access is removed from a parent it will not also be
18removed from the child(ren).
19 17
202. User Interface 182. User Interface
21 19
@@ -50,3 +48,69 @@ task to a new cgroup. (Again we'll probably want to change that).
50 48
51A cgroup may not be granted more permissions than the cgroup's 49A cgroup may not be granted more permissions than the cgroup's
52parent has. 50parent has.
51
524. Hierarchy
53
54device cgroups maintain hierarchy by making sure a cgroup never has more
55access permissions than its parent. Every time an entry is written to
56a cgroup's devices.deny file, all its children will have that entry removed
57from their whitelist and all the locally set whitelist entries will be
58re-evaluated. In case one of the locally set whitelist entries would provide
59more access than the cgroup's parent, it'll be removed from the whitelist.
60
61Example:
62 A
63 / \
64 B
65
66 group behavior exceptions
67 A allow "b 8:* rwm", "c 116:1 rw"
68 B deny "c 1:3 rwm", "c 116:2 rwm", "b 3:* rwm"
69
70If a device is denied in group A:
71 # echo "c 116:* r" > A/devices.deny
72it'll propagate down and after revalidating B's entries, the whitelist entry
73"c 116:2 rwm" will be removed:
74
75 group whitelist entries denied devices
76 A all "b 8:* rwm", "c 116:* rw"
77 B "c 1:3 rwm", "b 3:* rwm" all the rest
78
79In case parent's exceptions change and local exceptions are not allowed
80anymore, they'll be deleted.
81
82Notice that new whitelist entries will not be propagated:
83 A
84 / \
85 B
86
87 group whitelist entries denied devices
88 A "c 1:3 rwm", "c 1:5 r" all the rest
89 B "c 1:3 rwm", "c 1:5 r" all the rest
90
91when adding "c *:3 rwm":
92 # echo "c *:3 rwm" >A/devices.allow
93
94the result:
95 group whitelist entries denied devices
96 A "c *:3 rwm", "c 1:5 r" all the rest
97 B "c 1:3 rwm", "c 1:5 r" all the rest
98
99but now it'll be possible to add new entries to B:
100 # echo "c 2:3 rwm" >B/devices.allow
101 # echo "c 50:3 r" >B/devices.allow
102or even
103 # echo "c *:3 rwm" >B/devices.allow
104
105Allowing or denying all by writing 'a' to devices.allow or devices.deny will
106not be possible once the device cgroups has children.
107
1084.1 Hierarchy (internal implementation)
109
110device cgroups is implemented internally using a behavior (ALLOW, DENY) and a
111list of exceptions. The internal state is controlled using the same user
112interface to preserve compatibility with the previous whitelist-only
113implementation. Removal or addition of exceptions that will reduce the access
114to devices will be propagated down the hierarchy.
115For every propagated exception, the effective rules will be re-evaluated based
116on current parent's access rules.
diff --git a/Documentation/cgroups/memory.txt b/Documentation/cgroups/memory.txt
index 8b8c28b9864c..ddf4f93967a9 100644
--- a/Documentation/cgroups/memory.txt
+++ b/Documentation/cgroups/memory.txt
@@ -40,6 +40,7 @@ Features:
40 - soft limit 40 - soft limit
41 - moving (recharging) account at moving a task is selectable. 41 - moving (recharging) account at moving a task is selectable.
42 - usage threshold notifier 42 - usage threshold notifier
43 - memory pressure notifier
43 - oom-killer disable knob and oom-notifier 44 - oom-killer disable knob and oom-notifier
44 - Root cgroup has no limit controls. 45 - Root cgroup has no limit controls.
45 46
@@ -65,6 +66,7 @@ Brief summary of control files.
65 memory.stat # show various statistics 66 memory.stat # show various statistics
66 memory.use_hierarchy # set/show hierarchical account enabled 67 memory.use_hierarchy # set/show hierarchical account enabled
67 memory.force_empty # trigger forced move charge to parent 68 memory.force_empty # trigger forced move charge to parent
69 memory.pressure_level # set memory pressure notifications
68 memory.swappiness # set/show swappiness parameter of vmscan 70 memory.swappiness # set/show swappiness parameter of vmscan
69 (See sysctl's vm.swappiness) 71 (See sysctl's vm.swappiness)
70 memory.move_charge_at_immigrate # set/show controls of moving charges 72 memory.move_charge_at_immigrate # set/show controls of moving charges
@@ -194,7 +196,7 @@ the cgroup that brought it in -- this will happen on memory pressure).
194But see section 8.2: when moving a task to another cgroup, its pages may 196But see section 8.2: when moving a task to another cgroup, its pages may
195be recharged to the new cgroup, if move_charge_at_immigrate has been chosen. 197be recharged to the new cgroup, if move_charge_at_immigrate has been chosen.
196 198
197Exception: If CONFIG_CGROUP_CGROUP_MEMCG_SWAP is not used. 199Exception: If CONFIG_MEMCG_SWAP is not used.
198When you do swapoff and make swapped-out pages of shmem(tmpfs) to 200When you do swapoff and make swapped-out pages of shmem(tmpfs) to
199be backed into memory in force, charges for pages are accounted against the 201be backed into memory in force, charges for pages are accounted against the
200caller of swapoff rather than the users of shmem. 202caller of swapoff rather than the users of shmem.
@@ -478,7 +480,9 @@ memory.stat file includes following statistics
478 480
479# per-memory cgroup local status 481# per-memory cgroup local status
480cache - # of bytes of page cache memory. 482cache - # of bytes of page cache memory.
481rss - # of bytes of anonymous and swap cache memory. 483rss - # of bytes of anonymous and swap cache memory (includes
484 transparent hugepages).
485rss_huge - # of bytes of anonymous transparent hugepages.
482mapped_file - # of bytes of mapped file (includes tmpfs/shmem) 486mapped_file - # of bytes of mapped file (includes tmpfs/shmem)
483pgpgin - # of charging events to the memory cgroup. The charging 487pgpgin - # of charging events to the memory cgroup. The charging
484 event happens each time a page is accounted as either mapped 488 event happens each time a page is accounted as either mapped
@@ -762,7 +766,73 @@ At reading, current status of OOM is shown.
762 under_oom 0 or 1 (if 1, the memory cgroup is under OOM, tasks may 766 under_oom 0 or 1 (if 1, the memory cgroup is under OOM, tasks may
763 be stopped.) 767 be stopped.)
764 768
76511. TODO 76911. Memory Pressure
770
771The pressure level notifications can be used to monitor the memory
772allocation cost; based on the pressure, applications can implement
773different strategies of managing their memory resources. The pressure
774levels are defined as following:
775
776The "low" level means that the system is reclaiming memory for new
777allocations. Monitoring this reclaiming activity might be useful for
778maintaining cache level. Upon notification, the program (typically
779"Activity Manager") might analyze vmstat and act in advance (i.e.
780prematurely shutdown unimportant services).
781
782The "medium" level means that the system is experiencing medium memory
783pressure, the system might be making swap, paging out active file caches,
784etc. Upon this event applications may decide to further analyze
785vmstat/zoneinfo/memcg or internal memory usage statistics and free any
786resources that can be easily reconstructed or re-read from a disk.
787
788The "critical" level means that the system is actively thrashing, it is
789about to out of memory (OOM) or even the in-kernel OOM killer is on its
790way to trigger. Applications should do whatever they can to help the
791system. It might be too late to consult with vmstat or any other
792statistics, so it's advisable to take an immediate action.
793
794The events are propagated upward until the event is handled, i.e. the
795events are not pass-through. Here is what this means: for example you have
796three cgroups: A->B->C. Now you set up an event listener on cgroups A, B
797and C, and suppose group C experiences some pressure. In this situation,
798only group C will receive the notification, i.e. groups A and B will not
799receive it. This is done to avoid excessive "broadcasting" of messages,
800which disturbs the system and which is especially bad if we are low on
801memory or thrashing. So, organize the cgroups wisely, or propagate the
802events manually (or, ask us to implement the pass-through events,
803explaining why would you need them.)
804
805The file memory.pressure_level is only used to setup an eventfd. To
806register a notification, an application must:
807
808- create an eventfd using eventfd(2);
809- open memory.pressure_level;
810- write string like "<event_fd> <fd of memory.pressure_level> <level>"
811 to cgroup.event_control.
812
813Application will be notified through eventfd when memory pressure is at
814the specific level (or higher). Read/write operations to
815memory.pressure_level are no implemented.
816
817Test:
818
819 Here is a small script example that makes a new cgroup, sets up a
820 memory limit, sets up a notification in the cgroup and then makes child
821 cgroup experience a critical pressure:
822
823 # cd /sys/fs/cgroup/memory/
824 # mkdir foo
825 # cd foo
826 # cgroup_event_listener memory.pressure_level low &
827 # echo 8000000 > memory.limit_in_bytes
828 # echo 8000000 > memory.memsw.limit_in_bytes
829 # echo $$ > tasks
830 # dd if=/dev/zero | read x
831
832 (Expect a bunch of notifications, and eventually, the oom-killer will
833 trigger.)
834
83512. TODO
766 836
7671. Add support for accounting huge pages (as a separate controller) 8371. Add support for accounting huge pages (as a separate controller)
7682. Make per-cgroup scanner reclaim not-shared pages first 8382. Make per-cgroup scanner reclaim not-shared pages first
diff --git a/Documentation/cgroups/net_cls.txt b/Documentation/cgroups/net_cls.txt
new file mode 100644
index 000000000000..9face6bb578a
--- /dev/null
+++ b/Documentation/cgroups/net_cls.txt
@@ -0,0 +1,34 @@
1Network classifier cgroup
2-------------------------
3
4The Network classifier cgroup provides an interface to
5tag network packets with a class identifier (classid).
6
7The Traffic Controller (tc) can be used to assign
8different priorities to packets from different cgroups.
9
10Creating a net_cls cgroups instance creates a net_cls.classid file.
11This net_cls.classid value is initialized to 0.
12
13You can write hexadecimal values to net_cls.classid; the format for these
14values is 0xAAAABBBB; AAAA is the major handle number and BBBB
15is the minor handle number.
16Reading net_cls.classid yields a decimal result.
17
18Example:
19mkdir /sys/fs/cgroup/net_cls
20mount -t cgroup -onet_cls net_cls /sys/fs/cgroup/net_cls
21mkdir /sys/fs/cgroup/net_cls/0
22echo 0x100001 > /sys/fs/cgroup/net_cls/0/net_cls.classid
23 - setting a 10:1 handle.
24
25cat /sys/fs/cgroup/net_cls/0/net_cls.classid
261048577
27
28configuring tc:
29tc qdisc add dev eth0 root handle 10: htb
30
31tc class add dev eth0 parent 10: classid 10:1 htb rate 40mbit
32 - creating traffic class 10:1
33
34tc filter add dev eth0 parent 10: protocol ip prio 10 handle 1: cgroup
diff --git a/Documentation/clk.txt b/Documentation/clk.txt
index 1943fae014fd..b9911c27f496 100644
--- a/Documentation/clk.txt
+++ b/Documentation/clk.txt
@@ -174,9 +174,9 @@ int clk_foo_enable(struct clk_hw *hw)
174}; 174};
175 175
176Below is a matrix detailing which clk_ops are mandatory based upon the 176Below is a matrix detailing which clk_ops are mandatory based upon the
177hardware capbilities of that clock. A cell marked as "y" means 177hardware capabilities of that clock. A cell marked as "y" means
178mandatory, a cell marked as "n" implies that either including that 178mandatory, a cell marked as "n" implies that either including that
179callback is invalid or otherwise uneccesary. Empty cells are either 179callback is invalid or otherwise unnecessary. Empty cells are either
180optional or must be evaluated on a case-by-case basis. 180optional or must be evaluated on a case-by-case basis.
181 181
182 clock hardware characteristics 182 clock hardware characteristics
@@ -231,3 +231,14 @@ To better enforce this policy, always follow this simple rule: any
231statically initialized clock data MUST be defined in a separate file 231statically initialized clock data MUST be defined in a separate file
232from the logic that implements its ops. Basically separate the logic 232from the logic that implements its ops. Basically separate the logic
233from the data and all is well. 233from the data and all is well.
234
235 Part 6 - Disabling clock gating of unused clocks
236
237Sometimes during development it can be useful to be able to bypass the
238default disabling of unused clocks. For example, if drivers aren't enabling
239clocks properly but rely on them being on from the bootloader, bypassing
240the disabling means that the driver will remain functional while the issues
241are sorted out.
242
243To bypass this disabling, include "clk_ignore_unused" in the bootargs to the
244kernel.
diff --git a/Documentation/coccinelle.txt b/Documentation/coccinelle.txt
index dffa2d620d6d..18de78599dd4 100644
--- a/Documentation/coccinelle.txt
+++ b/Documentation/coccinelle.txt
@@ -114,7 +114,7 @@ To apply Coccinelle to a specific directory, M= can be used.
114For example, to check drivers/net/wireless/ one may write: 114For example, to check drivers/net/wireless/ one may write:
115 115
116 make coccicheck M=drivers/net/wireless/ 116 make coccicheck M=drivers/net/wireless/
117 117
118To apply Coccinelle on a file basis, instead of a directory basis, the 118To apply Coccinelle on a file basis, instead of a directory basis, the
119following command may be used: 119following command may be used:
120 120
@@ -134,6 +134,15 @@ MODE variable explained above.
134In this mode, there is no information about semantic patches 134In this mode, there is no information about semantic patches
135displayed, and no commit message proposed. 135displayed, and no commit message proposed.
136 136
137 Additional flags
138~~~~~~~~~~~~~~~~~~
139
140Additional flags can be passed to spatch through the SPFLAGS
141variable.
142
143 make SPFLAGS=--use_glimpse coccicheck
144
145See spatch --help to learn more about spatch options.
137 146
138 Proposing new semantic patches 147 Proposing new semantic patches
139~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 148~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/Documentation/cpu-freq/cpu-drivers.txt b/Documentation/cpu-freq/cpu-drivers.txt
index 72f70b16d299..a3585eac83b6 100644
--- a/Documentation/cpu-freq/cpu-drivers.txt
+++ b/Documentation/cpu-freq/cpu-drivers.txt
@@ -108,8 +108,9 @@ policy->governor must contain the "default policy" for
108 cpufreq_driver.target is called with 108 cpufreq_driver.target is called with
109 these values. 109 these values.
110 110
111For setting some of these values, the frequency table helpers might be 111For setting some of these values (cpuinfo.min[max]_freq, policy->min[max]), the
112helpful. See the section 2 for more information on them. 112frequency table helpers might be helpful. See the section 2 for more information
113on them.
113 114
114SMP systems normally have same clock source for a group of cpus. For these the 115SMP systems normally have same clock source for a group of cpus. For these the
115.init() would be called only once for the first online cpu. Here the .init() 116.init() would be called only once for the first online cpu. Here the .init()
@@ -184,10 +185,10 @@ the reference implementation in drivers/cpufreq/longrun.c
184As most cpufreq processors only allow for being set to a few specific 185As most cpufreq processors only allow for being set to a few specific
185frequencies, a "frequency table" with some functions might assist in 186frequencies, a "frequency table" with some functions might assist in
186some work of the processor driver. Such a "frequency table" consists 187some work of the processor driver. Such a "frequency table" consists
187of an array of struct cpufreq_freq_table entries, with any value in 188of an array of struct cpufreq_frequency_table entries, with any value in
188"index" you want to use, and the corresponding frequency in 189"index" you want to use, and the corresponding frequency in
189"frequency". At the end of the table, you need to add a 190"frequency". At the end of the table, you need to add a
190cpufreq_freq_table entry with frequency set to CPUFREQ_TABLE_END. And 191cpufreq_frequency_table entry with frequency set to CPUFREQ_TABLE_END. And
191if you want to skip one entry in the table, set the frequency to 192if you want to skip one entry in the table, set the frequency to
192CPUFREQ_ENTRY_INVALID. The entries don't need to be in ascending 193CPUFREQ_ENTRY_INVALID. The entries don't need to be in ascending
193order. 194order.
diff --git a/Documentation/cpu-freq/governors.txt b/Documentation/cpu-freq/governors.txt
index c7a2eb8450c2..219970ba54b7 100644
--- a/Documentation/cpu-freq/governors.txt
+++ b/Documentation/cpu-freq/governors.txt
@@ -131,8 +131,8 @@ sampling_rate_min:
131The sampling rate is limited by the HW transition latency: 131The sampling rate is limited by the HW transition latency:
132transition_latency * 100 132transition_latency * 100
133Or by kernel restrictions: 133Or by kernel restrictions:
134If CONFIG_NO_HZ is set, the limit is 10ms fixed. 134If CONFIG_NO_HZ_COMMON is set, the limit is 10ms fixed.
135If CONFIG_NO_HZ is not set or nohz=off boot parameter is used, the 135If CONFIG_NO_HZ_COMMON is not set or nohz=off boot parameter is used, the
136limits depend on the CONFIG_HZ option: 136limits depend on the CONFIG_HZ option:
137HZ=1000: min=20000us (20ms) 137HZ=1000: min=20000us (20ms)
138HZ=250: min=80000us (80ms) 138HZ=250: min=80000us (80ms)
@@ -167,6 +167,27 @@ of load evaluation and helping the CPU stay at its top speed when truly
167busy, rather than shifting back and forth in speed. This tunable has no 167busy, rather than shifting back and forth in speed. This tunable has no
168effect on behavior at lower speeds/lower CPU loads. 168effect on behavior at lower speeds/lower CPU loads.
169 169
170powersave_bias: this parameter takes a value between 0 to 1000. It
171defines the percentage (times 10) value of the target frequency that
172will be shaved off of the target. For example, when set to 100 -- 10%,
173when ondemand governor would have targeted 1000 MHz, it will target
1741000 MHz - (10% of 1000 MHz) = 900 MHz instead. This is set to 0
175(disabled) by default.
176When AMD frequency sensitivity powersave bias driver --
177drivers/cpufreq/amd_freq_sensitivity.c is loaded, this parameter
178defines the workload frequency sensitivity threshold in which a lower
179frequency is chosen instead of ondemand governor's original target.
180The frequency sensitivity is a hardware reported (on AMD Family 16h
181Processors and above) value between 0 to 100% that tells software how
182the performance of the workload running on a CPU will change when
183frequency changes. A workload with sensitivity of 0% (memory/IO-bound)
184will not perform any better on higher core frequency, whereas a
185workload with sensitivity of 100% (CPU-bound) will perform better
186higher the frequency. When the driver is loaded, this is set to 400
187by default -- for CPUs running workloads with sensitivity value below
18840%, a lower frequency is chosen. Unloading the driver or writing 0
189will disable this feature.
190
170 191
1712.5 Conservative 1922.5 Conservative
172---------------- 193----------------
@@ -191,6 +212,12 @@ governor but for the opposite direction. For example when set to its
191default value of '20' it means that if the CPU usage needs to be below 212default value of '20' it means that if the CPU usage needs to be below
19220% between samples to have the frequency decreased. 21320% between samples to have the frequency decreased.
193 214
215sampling_down_factor: similar functionality as in "ondemand" governor.
216But in "conservative", it controls the rate at which the kernel makes
217a decision on when to decrease the frequency while running in any
218speed. Load for frequency increase is still evaluated every
219sampling rate.
220
1943. The Governor Interface in the CPUfreq Core 2213. The Governor Interface in the CPUfreq Core
195============================================= 222=============================================
196 223
diff --git a/Documentation/cpuidle/driver.txt b/Documentation/cpuidle/driver.txt
index 7a9e09ece931..1b0d81d92583 100644
--- a/Documentation/cpuidle/driver.txt
+++ b/Documentation/cpuidle/driver.txt
@@ -15,11 +15,17 @@ has mechanisms in place to support actual entry-exit into CPU idle states.
15cpuidle driver initializes the cpuidle_device structure for each CPU device 15cpuidle driver initializes the cpuidle_device structure for each CPU device
16and registers with cpuidle using cpuidle_register_device. 16and registers with cpuidle using cpuidle_register_device.
17 17
18If all the idle states are the same, the wrapper function cpuidle_register
19could be used instead.
20
18It can also support the dynamic changes (like battery <-> AC), by using 21It can also support the dynamic changes (like battery <-> AC), by using
19cpuidle_pause_and_lock, cpuidle_disable_device and cpuidle_enable_device, 22cpuidle_pause_and_lock, cpuidle_disable_device and cpuidle_enable_device,
20cpuidle_resume_and_unlock. 23cpuidle_resume_and_unlock.
21 24
22Interfaces: 25Interfaces:
26extern int cpuidle_register(struct cpuidle_driver *drv,
27 const struct cpumask *const coupled_cpus);
28extern int cpuidle_unregister(struct cpuidle_driver *drv);
23extern int cpuidle_register_driver(struct cpuidle_driver *drv); 29extern int cpuidle_register_driver(struct cpuidle_driver *drv);
24extern void cpuidle_unregister_driver(struct cpuidle_driver *drv); 30extern void cpuidle_unregister_driver(struct cpuidle_driver *drv);
25extern int cpuidle_register_device(struct cpuidle_device *dev); 31extern int cpuidle_register_device(struct cpuidle_device *dev);
diff --git a/Documentation/device-mapper/dm-raid.txt b/Documentation/device-mapper/dm-raid.txt
index 56fb62b09fc5..e9192283e5a5 100644
--- a/Documentation/device-mapper/dm-raid.txt
+++ b/Documentation/device-mapper/dm-raid.txt
@@ -1,10 +1,13 @@
1dm-raid 1dm-raid
2------- 2=======
3 3
4The device-mapper RAID (dm-raid) target provides a bridge from DM to MD. 4The device-mapper RAID (dm-raid) target provides a bridge from DM to MD.
5It allows the MD RAID drivers to be accessed using a device-mapper 5It allows the MD RAID drivers to be accessed using a device-mapper
6interface. 6interface.
7 7
8
9Mapping Table Interface
10-----------------------
8The target is named "raid" and it accepts the following parameters: 11The target is named "raid" and it accepts the following parameters:
9 12
10 <raid_type> <#raid_params> <raid_params> \ 13 <raid_type> <#raid_params> <raid_params> \
@@ -30,6 +33,7 @@ The target is named "raid" and it accepts the following parameters:
30 raid10 Various RAID10 inspired algorithms chosen by additional params 33 raid10 Various RAID10 inspired algorithms chosen by additional params
31 - RAID10: Striped Mirrors (aka 'Striping on top of mirrors') 34 - RAID10: Striped Mirrors (aka 'Striping on top of mirrors')
32 - RAID1E: Integrated Adjacent Stripe Mirroring 35 - RAID1E: Integrated Adjacent Stripe Mirroring
36 - RAID1E: Integrated Offset Stripe Mirroring
33 - and other similar RAID10 variants 37 - and other similar RAID10 variants
34 38
35 Reference: Chapter 4 of 39 Reference: Chapter 4 of
@@ -46,7 +50,7 @@ The target is named "raid" and it accepts the following parameters:
46 followed by optional parameters (in any order): 50 followed by optional parameters (in any order):
47 [sync|nosync] Force or prevent RAID initialization. 51 [sync|nosync] Force or prevent RAID initialization.
48 52
49 [rebuild <idx>] Rebuild drive number idx (first drive is 0). 53 [rebuild <idx>] Rebuild drive number 'idx' (first drive is 0).
50 54
51 [daemon_sleep <ms>] 55 [daemon_sleep <ms>]
52 Interval between runs of the bitmap daemon that 56 Interval between runs of the bitmap daemon that
@@ -55,24 +59,24 @@ The target is named "raid" and it accepts the following parameters:
55 59
56 [min_recovery_rate <kB/sec/disk>] Throttle RAID initialization 60 [min_recovery_rate <kB/sec/disk>] Throttle RAID initialization
57 [max_recovery_rate <kB/sec/disk>] Throttle RAID initialization 61 [max_recovery_rate <kB/sec/disk>] Throttle RAID initialization
58 [write_mostly <idx>] Drive index is write-mostly 62 [write_mostly <idx>] Mark drive index 'idx' write-mostly.
59 [max_write_behind <sectors>] See '-write-behind=' (man mdadm) 63 [max_write_behind <sectors>] See '--write-behind=' (man mdadm)
60 [stripe_cache <sectors>] Stripe cache size (higher RAIDs only) 64 [stripe_cache <sectors>] Stripe cache size (RAID 4/5/6 only)
61 [region_size <sectors>] 65 [region_size <sectors>]
62 The region_size multiplied by the number of regions is the 66 The region_size multiplied by the number of regions is the
63 logical size of the array. The bitmap records the device 67 logical size of the array. The bitmap records the device
64 synchronisation state for each region. 68 synchronisation state for each region.
65 69
66 [raid10_copies <# copies>] 70 [raid10_copies <# copies>]
67 [raid10_format near] 71 [raid10_format <near|far|offset>]
68 These two options are used to alter the default layout of 72 These two options are used to alter the default layout of
69 a RAID10 configuration. The number of copies is can be 73 a RAID10 configuration. The number of copies is can be
70 specified, but the default is 2. There are other variations 74 specified, but the default is 2. There are also three
71 to how the copies are laid down - the default and only current 75 variations to how the copies are laid down - the default
72 option is "near". Near copies are what most people think of 76 is "near". Near copies are what most people think of with
73 with respect to mirroring. If these options are left 77 respect to mirroring. If these options are left unspecified,
74 unspecified, or 'raid10_copies 2' and/or 'raid10_format near' 78 or 'raid10_copies 2' and/or 'raid10_format near' are given,
75 are given, then the layouts for 2, 3 and 4 devices are: 79 then the layouts for 2, 3 and 4 devices are:
76 2 drives 3 drives 4 drives 80 2 drives 3 drives 4 drives
77 -------- ---------- -------------- 81 -------- ---------- --------------
78 A1 A1 A1 A1 A2 A1 A1 A2 A2 82 A1 A1 A1 A1 A2 A1 A1 A2 A2
@@ -85,6 +89,33 @@ The target is named "raid" and it accepts the following parameters:
85 3-device layout is what might be called a 'RAID1E - Integrated 89 3-device layout is what might be called a 'RAID1E - Integrated
86 Adjacent Stripe Mirroring'. 90 Adjacent Stripe Mirroring'.
87 91
92 If 'raid10_copies 2' and 'raid10_format far', then the layouts
93 for 2, 3 and 4 devices are:
94 2 drives 3 drives 4 drives
95 -------- -------------- --------------------
96 A1 A2 A1 A2 A3 A1 A2 A3 A4
97 A3 A4 A4 A5 A6 A5 A6 A7 A8
98 A5 A6 A7 A8 A9 A9 A10 A11 A12
99 .. .. .. .. .. .. .. .. ..
100 A2 A1 A3 A1 A2 A2 A1 A4 A3
101 A4 A3 A6 A4 A5 A6 A5 A8 A7
102 A6 A5 A9 A7 A8 A10 A9 A12 A11
103 .. .. .. .. .. .. .. .. ..
104
105 If 'raid10_copies 2' and 'raid10_format offset', then the
106 layouts for 2, 3 and 4 devices are:
107 2 drives 3 drives 4 drives
108 -------- ------------ -----------------
109 A1 A2 A1 A2 A3 A1 A2 A3 A4
110 A2 A1 A3 A1 A2 A2 A1 A4 A3
111 A3 A4 A4 A5 A6 A5 A6 A7 A8
112 A4 A3 A6 A4 A5 A6 A5 A8 A7
113 A5 A6 A7 A8 A9 A9 A10 A11 A12
114 A6 A5 A9 A7 A8 A10 A9 A12 A11
115 .. .. .. .. .. .. .. .. ..
116 Here we see layouts closely akin to 'RAID1E - Integrated
117 Offset Stripe Mirroring'.
118
88<#raid_devs>: The number of devices composing the array. 119<#raid_devs>: The number of devices composing the array.
89 Each device consists of two entries. The first is the device 120 Each device consists of two entries. The first is the device
90 containing the metadata (if any); the second is the one containing the 121 containing the metadata (if any); the second is the one containing the
@@ -94,7 +125,7 @@ The target is named "raid" and it accepts the following parameters:
94 given for both the metadata and data drives for a given position. 125 given for both the metadata and data drives for a given position.
95 126
96 127
97Example tables 128Example Tables
98-------------- 129--------------
99# RAID4 - 4 data drives, 1 parity (no metadata devices) 130# RAID4 - 4 data drives, 1 parity (no metadata devices)
100# No metadata devices specified to hold superblock/bitmap info 131# No metadata devices specified to hold superblock/bitmap info
@@ -113,26 +144,70 @@ Example tables
113 raid4 4 2048 sync min_recovery_rate 20 \ 144 raid4 4 2048 sync min_recovery_rate 20 \
114 5 8:17 8:18 8:33 8:34 8:49 8:50 8:65 8:66 8:81 8:82 145 5 8:17 8:18 8:33 8:34 8:49 8:50 8:65 8:66 8:81 8:82
115 146
147
148Status Output
149-------------
116'dmsetup table' displays the table used to construct the mapping. 150'dmsetup table' displays the table used to construct the mapping.
117The optional parameters are always printed in the order listed 151The optional parameters are always printed in the order listed
118above with "sync" or "nosync" always output ahead of the other 152above with "sync" or "nosync" always output ahead of the other
119arguments, regardless of the order used when originally loading the table. 153arguments, regardless of the order used when originally loading the table.
120Arguments that can be repeated are ordered by value. 154Arguments that can be repeated are ordered by value.
121 155
122'dmsetup status' yields information on the state and health of the 156
123array. 157'dmsetup status' yields information on the state and health of the array.
124The output is as follows: 158The output is as follows (normally a single line, but expanded here for
159clarity):
1251: <s> <l> raid \ 1601: <s> <l> raid \
1262: <raid_type> <#devices> <1 health char for each dev> <resync_ratio> 1612: <raid_type> <#devices> <health_chars> \
1623: <sync_ratio> <sync_action> <mismatch_cnt>
127 163
128Line 1 is the standard output produced by device-mapper. 164Line 1 is the standard output produced by device-mapper.
129Line 2 is produced by the raid target, and best explained by example: 165Line 2 & 3 are produced by the raid target and are best explained by example:
130 0 1960893648 raid raid4 5 AAAAA 2/490221568 166 0 1960893648 raid raid4 5 AAAAA 2/490221568 init 0
131Here we can see the RAID type is raid4, there are 5 devices - all of 167Here we can see the RAID type is raid4, there are 5 devices - all of
132which are 'A'live, and the array is 2/490221568 complete with recovery. 168which are 'A'live, and the array is 2/490221568 complete with its initial
133Faulty or missing devices are marked 'D'. Devices that are out-of-sync 169recovery. Here is a fuller description of the individual fields:
134are marked 'a'. 170 <raid_type> Same as the <raid_type> used to create the array.
135 171 <health_chars> One char for each device, indicating: 'A' = alive and
172 in-sync, 'a' = alive but not in-sync, 'D' = dead/failed.
173 <sync_ratio> The ratio indicating how much of the array has undergone
174 the process described by 'sync_action'. If the
175 'sync_action' is "check" or "repair", then the process
176 of "resync" or "recover" can be considered complete.
177 <sync_action> One of the following possible states:
178 idle - No synchronization action is being performed.
179 frozen - The current action has been halted.
180 resync - Array is undergoing its initial synchronization
181 or is resynchronizing after an unclean shutdown
182 (possibly aided by a bitmap).
183 recover - A device in the array is being rebuilt or
184 replaced.
185 check - A user-initiated full check of the array is
186 being performed. All blocks are read and
187 checked for consistency. The number of
188 discrepancies found are recorded in
189 <mismatch_cnt>. No changes are made to the
190 array by this action.
191 repair - The same as "check", but discrepancies are
192 corrected.
193 reshape - The array is undergoing a reshape.
194 <mismatch_cnt> The number of discrepancies found between mirror copies
195 in RAID1/10 or wrong parity values found in RAID4/5/6.
196 This value is valid only after a "check" of the array
197 is performed. A healthy array has a 'mismatch_cnt' of 0.
198
199Message Interface
200-----------------
201The dm-raid target will accept certain actions through the 'message' interface.
202('man dmsetup' for more information on the message interface.) These actions
203include:
204 "idle" - Halt the current sync action.
205 "frozen" - Freeze the current sync action.
206 "resync" - Initiate/continue a resync.
207 "recover"- Initiate/continue a recover process.
208 "check" - Initiate a check (i.e. a "scrub") of the array.
209 "repair" - Initiate a repair of the array.
210 "reshape"- Currently unsupported (-EINVAL).
136 211
137Version History 212Version History
138--------------- 213---------------
@@ -142,3 +217,8 @@ Version History
1421.3.0 Added support for RAID 10 2171.3.0 Added support for RAID 10
1431.3.1 Allow device replacement/rebuild for RAID 10 2181.3.1 Allow device replacement/rebuild for RAID 10
1441.3.2 Fix/improve redundancy checking for RAID10 2191.3.2 Fix/improve redundancy checking for RAID10
2201.4.0 Non-functional change. Removes arg from mapping function.
2211.4.1 RAID10 fix redundancy validation checks (commit 55ebbb5).
2221.4.2 Add RAID10 "far" and "offset" algorithm support.
2231.5.0 Add message interface to allow manipulation of the sync_action.
224 New status (STATUSTYPE_INFO) fields: sync_action and mismatch_cnt.
diff --git a/Documentation/devicetree/bindings/arm/altera/socfpga-clk-manager.txt b/Documentation/devicetree/bindings/arm/altera/socfpga-clk-manager.txt
new file mode 100644
index 000000000000..2c28f1d12f45
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/altera/socfpga-clk-manager.txt
@@ -0,0 +1,11 @@
1Altera SOCFPGA Clock Manager
2
3Required properties:
4- compatible : "altr,clk-mgr"
5- reg : Should contain base address and length for Clock Manager
6
7Example:
8 clkmgr@ffd04000 {
9 compatible = "altr,clk-mgr";
10 reg = <0xffd04000 0x1000>;
11 };
diff --git a/Documentation/devicetree/bindings/arm/atmel-adc.txt b/Documentation/devicetree/bindings/arm/atmel-adc.txt
index c63097d6afeb..16769d9cedd6 100644
--- a/Documentation/devicetree/bindings/arm/atmel-adc.txt
+++ b/Documentation/devicetree/bindings/arm/atmel-adc.txt
@@ -14,9 +14,19 @@ Required properties:
14 - atmel,adc-status-register: Offset of the Interrupt Status Register 14 - atmel,adc-status-register: Offset of the Interrupt Status Register
15 - atmel,adc-trigger-register: Offset of the Trigger Register 15 - atmel,adc-trigger-register: Offset of the Trigger Register
16 - atmel,adc-vref: Reference voltage in millivolts for the conversions 16 - atmel,adc-vref: Reference voltage in millivolts for the conversions
17 - atmel,adc-res: List of resolution in bits supported by the ADC. List size
18 must be two at least.
19 - atmel,adc-res-names: Contains one identifier string for each resolution
20 in atmel,adc-res property. "lowres" and "highres"
21 identifiers are required.
17 22
18Optional properties: 23Optional properties:
19 - atmel,adc-use-external: Boolean to enable of external triggers 24 - atmel,adc-use-external: Boolean to enable of external triggers
25 - atmel,adc-use-res: String corresponding to an identifier from
26 atmel,adc-res-names property. If not specified, the highest
27 resolution will be used.
28 - atmel,adc-sleep-mode: Boolean to enable sleep mode when no conversion
29 - atmel,adc-sample-hold-time: Sample and Hold Time in microseconds
20 30
21Optional trigger Nodes: 31Optional trigger Nodes:
22 - Required properties: 32 - Required properties:
@@ -40,6 +50,9 @@ adc0: adc@fffb0000 {
40 atmel,adc-trigger-register = <0x08>; 50 atmel,adc-trigger-register = <0x08>;
41 atmel,adc-use-external; 51 atmel,adc-use-external;
42 atmel,adc-vref = <3300>; 52 atmel,adc-vref = <3300>;
53 atmel,adc-res = <8 10>;
54 atmel,adc-res-names = "lowres", "highres";
55 atmel,adc-use-res = "lowres";
43 56
44 trigger@0 { 57 trigger@0 {
45 trigger-name = "external-rising"; 58 trigger-name = "external-rising";
diff --git a/Documentation/devicetree/bindings/arm/bcm/bcm,kona-timer.txt b/Documentation/devicetree/bindings/arm/bcm/bcm,kona-timer.txt
new file mode 100644
index 000000000000..59fa6e68d4f6
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/bcm/bcm,kona-timer.txt
@@ -0,0 +1,19 @@
1Broadcom Kona Family timer
2-----------------------------------------------------
3This timer is used in the following Broadcom SoCs:
4 BCM11130, BCM11140, BCM11351, BCM28145, BCM28155
5
6Required properties:
7- compatible : "bcm,kona-timer"
8- reg : Register range for the timer
9- interrupts : interrupt for the timer
10- clock-frequency: frequency that the clock operates
11
12Example:
13 timer@35006000 {
14 compatible = "bcm,kona-timer";
15 reg = <0x35006000 0x1000>;
16 interrupts = <0x0 7 0x4>;
17 clock-frequency = <32768>;
18 };
19
diff --git a/Documentation/devicetree/bindings/arm/msm/ssbi.txt b/Documentation/devicetree/bindings/arm/msm/ssbi.txt
new file mode 100644
index 000000000000..54fd5ced3401
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/msm/ssbi.txt
@@ -0,0 +1,18 @@
1* Qualcomm SSBI
2
3Some Qualcomm MSM devices contain a point-to-point serial bus used to
4communicate with a limited range of devices (mostly power management
5chips).
6
7These require the following properties:
8
9- compatible: "qcom,ssbi"
10
11- qcom,controller-type
12 indicates the SSBI bus variant the controller should use to talk
13 with the slave device. This should be one of "ssbi", "ssbi2", or
14 "pmic-arbiter". The type chosen is determined by the attached
15 slave.
16
17The slave device should be the single child node of the ssbi device
18with a compatible field.
diff --git a/Documentation/devicetree/bindings/arm/msm/timer.txt b/Documentation/devicetree/bindings/arm/msm/timer.txt
index 8c5907b9cae8..c6ef8f13dc7e 100644
--- a/Documentation/devicetree/bindings/arm/msm/timer.txt
+++ b/Documentation/devicetree/bindings/arm/msm/timer.txt
@@ -3,36 +3,35 @@
3Properties: 3Properties:
4 4
5- compatible : Should at least contain "qcom,msm-timer". More specific 5- compatible : Should at least contain "qcom,msm-timer". More specific
6 properties such as "qcom,msm-gpt" and "qcom,msm-dgt" specify a general 6 properties specify which subsystem the timers are paired with.
7 purpose timer and a debug timer respectively.
8 7
9- interrupts : Interrupt indicating a match event. 8 "qcom,kpss-timer" - krait subsystem
9 "qcom,scss-timer" - scorpion subsystem
10 10
11- reg : Specifies the base address of the timer registers. The second region 11- interrupts : Interrupts for the the debug timer, the first general purpose
12 specifies an optional register used to configure the clock divider. 12 timer, and optionally a second general purpose timer in that
13 order.
13 14
14- clock-frequency : The frequency of the timer in Hz. 15- reg : Specifies the base address of the timer registers.
16
17- clock-frequency : The frequency of the debug timer and the general purpose
18 timer(s) in Hz in that order.
15 19
16Optional: 20Optional:
17 21
18- cpu-offset : per-cpu offset used when the timer is accessed without the 22- cpu-offset : per-cpu offset used when the timer is accessed without the
19 CPU remapping facilities. The offset is cpu-offset * cpu-nr. 23 CPU remapping facilities. The offset is
24 cpu-offset + (0x10000 * cpu-nr).
20 25
21Example: 26Example:
22 27
23 timer@200a004 { 28 timer@200a000 {
24 compatible = "qcom,msm-gpt", "qcom,msm-timer"; 29 compatible = "qcom,scss-timer", "qcom,msm-timer";
25 interrupts = <1 2 0x301>; 30 interrupts = <1 1 0x301>,
26 reg = <0x0200a004 0x10>; 31 <1 2 0x301>,
27 clock-frequency = <32768>; 32 <1 3 0x301>;
28 cpu-offset = <0x40000>; 33 reg = <0x0200a000 0x100>;
29 }; 34 clock-frequency = <19200000>,
30 35 <32768>;
31 timer@200a024 {
32 compatible = "qcom,msm-dgt", "qcom,msm-timer";
33 interrupts = <1 3 0x301>;
34 reg = <0x0200a024 0x10>,
35 <0x0200a034 0x4>;
36 clock-frequency = <6750000>;
37 cpu-offset = <0x40000>; 36 cpu-offset = <0x40000>;
38 }; 37 };
diff --git a/Documentation/devicetree/bindings/arm/omap/l3-noc.txt b/Documentation/devicetree/bindings/arm/omap/l3-noc.txt
index 6888a5efc860..c0105de55cbd 100644
--- a/Documentation/devicetree/bindings/arm/omap/l3-noc.txt
+++ b/Documentation/devicetree/bindings/arm/omap/l3-noc.txt
@@ -6,6 +6,7 @@ provided by Arteris.
6Required properties: 6Required properties:
7- compatible : Should be "ti,omap3-l3-smx" for OMAP3 family 7- compatible : Should be "ti,omap3-l3-smx" for OMAP3 family
8 Should be "ti,omap4-l3-noc" for OMAP4 family 8 Should be "ti,omap4-l3-noc" for OMAP4 family
9- reg: Contains L3 register address range for each noc domain.
9- ti,hwmods: "l3_main_1", ... One hwmod for each noc domain. 10- ti,hwmods: "l3_main_1", ... One hwmod for each noc domain.
10 11
11Examples: 12Examples:
diff --git a/Documentation/devicetree/bindings/arm/omap/timer.txt b/Documentation/devicetree/bindings/arm/omap/timer.txt
index 8732d4d41f8b..d02e27c764ec 100644
--- a/Documentation/devicetree/bindings/arm/omap/timer.txt
+++ b/Documentation/devicetree/bindings/arm/omap/timer.txt
@@ -1,7 +1,20 @@
1OMAP Timer bindings 1OMAP Timer bindings
2 2
3Required properties: 3Required properties:
4- compatible: Must be "ti,omap2-timer" for OMAP2+ controllers. 4- compatible: Should be set to one of the below. Please note that
5 OMAP44xx devices have timer instances that are 100%
6 register compatible with OMAP3xxx devices as well as
7 newer timers that are not 100% register compatible.
8 So for OMAP44xx devices timer instances may use
9 different compatible strings.
10
11 ti,omap2420-timer (applicable to OMAP24xx devices)
12 ti,omap3430-timer (applicable to OMAP3xxx/44xx devices)
13 ti,omap4430-timer (applicable to OMAP44xx devices)
14 ti,omap5430-timer (applicable to OMAP543x devices)
15 ti,am335x-timer (applicable to AM335x devices)
16 ti,am335x-timer-1ms (applicable to AM335x devices)
17
5- reg: Contains timer register address range (base address and 18- reg: Contains timer register address range (base address and
6 length). 19 length).
7- interrupts: Contains the interrupt information for the timer. The 20- interrupts: Contains the interrupt information for the timer. The
@@ -22,7 +35,7 @@ Optional properties:
22Example: 35Example:
23 36
24timer12: timer@48304000 { 37timer12: timer@48304000 {
25 compatible = "ti,omap2-timer"; 38 compatible = "ti,omap3430-timer";
26 reg = <0x48304000 0x400>; 39 reg = <0x48304000 0x400>;
27 interrupts = <95>; 40 interrupts = <95>;
28 ti,hwmods = "timer12" 41 ti,hwmods = "timer12"
diff --git a/Documentation/devicetree/bindings/arm/primecell.txt b/Documentation/devicetree/bindings/arm/primecell.txt
index 64fc82bc8928..0df6acacfaea 100644
--- a/Documentation/devicetree/bindings/arm/primecell.txt
+++ b/Documentation/devicetree/bindings/arm/primecell.txt
@@ -16,14 +16,31 @@ Optional properties:
16- clocks : From common clock binding. First clock is phandle to clock for apb 16- clocks : From common clock binding. First clock is phandle to clock for apb
17 pclk. Additional clocks are optional and specific to those peripherals. 17 pclk. Additional clocks are optional and specific to those peripherals.
18- clock-names : From common clock binding. Shall be "apb_pclk" for first clock. 18- clock-names : From common clock binding. Shall be "apb_pclk" for first clock.
19- dmas : From common DMA binding. If present, refers to one or more dma channels.
20- dma-names : From common DMA binding, needs to match the 'dmas' property.
21 Devices with exactly one receive and transmit channel shall name
22 these "rx" and "tx", respectively.
23- pinctrl-<n> : Pinctrl states as described in bindings/pinctrl/pinctrl-bindings.txt
24- pinctrl-names : Names corresponding to the numbered pinctrl states
25- interrupts : one or more interrupt specifiers
26- interrupt-names : names corresponding to the interrupts properties
19 27
20Example: 28Example:
21 29
22serial@fff36000 { 30serial@fff36000 {
23 compatible = "arm,pl011", "arm,primecell"; 31 compatible = "arm,pl011", "arm,primecell";
24 arm,primecell-periphid = <0x00341011>; 32 arm,primecell-periphid = <0x00341011>;
33
25 clocks = <&pclk>; 34 clocks = <&pclk>;
26 clock-names = "apb_pclk"; 35 clock-names = "apb_pclk";
27 36
37 dmas = <&dma-controller 4>, <&dma-controller 5>;
38 dma-names = "rx", "tx";
39
40 pinctrl-0 = <&uart0_default_mux>, <&uart0_default_mode>;
41 pinctrl-1 = <&uart0_sleep_mode>;
42 pinctrl-names = "default","sleep";
43
44 interrupts = <0 11 0x4>;
28}; 45};
29 46
diff --git a/Documentation/devicetree/bindings/arm/samsung-boards.txt b/Documentation/devicetree/bindings/arm/samsung-boards.txt
index 0bf68be56fd1..2168ed31e1b0 100644
--- a/Documentation/devicetree/bindings/arm/samsung-boards.txt
+++ b/Documentation/devicetree/bindings/arm/samsung-boards.txt
@@ -6,3 +6,13 @@ Required root node properties:
6 - compatible = should be one or more of the following. 6 - compatible = should be one or more of the following.
7 (a) "samsung,smdkv310" - for Samsung's SMDKV310 eval board. 7 (a) "samsung,smdkv310" - for Samsung's SMDKV310 eval board.
8 (b) "samsung,exynos4210" - for boards based on Exynos4210 SoC. 8 (b) "samsung,exynos4210" - for boards based on Exynos4210 SoC.
9
10Optional:
11 - firmware node, specifying presence and type of secure firmware:
12 - compatible: only "samsung,secure-firmware" is currently supported
13 - reg: address of non-secure SYSRAM used for communication with firmware
14
15 firmware@0203F000 {
16 compatible = "samsung,secure-firmware";
17 reg = <0x0203F000 0x1000>;
18 };
diff --git a/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt b/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt
new file mode 100644
index 000000000000..47ada1dff216
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt
@@ -0,0 +1,60 @@
1Samsung Exynos Analog to Digital Converter bindings
2
3The devicetree bindings are for the new ADC driver written for
4Exynos4 and upward SoCs from Samsung.
5
6New driver handles the following
71. Supports ADC IF found on EXYNOS4412/EXYNOS5250
8 and future SoCs from Samsung
92. Add ADC driver under iio/adc framework
103. Also adds the Documentation for device tree bindings
11
12Required properties:
13- compatible: Must be "samsung,exynos-adc-v1"
14 for exynos4412/5250 controllers.
15 Must be "samsung,exynos-adc-v2" for
16 future controllers.
17- reg: Contains ADC register address range (base address and
18 length) and the address of the phy enable register.
19- interrupts: Contains the interrupt information for the timer. The
20 format is being dependent on which interrupt controller
21 the Samsung device uses.
22- #io-channel-cells = <1>; As ADC has multiple outputs
23- clocks From common clock binding: handle to adc clock.
24- clock-names From common clock binding: Shall be "adc".
25- vdd-supply VDD input supply.
26
27Note: child nodes can be added for auto probing from device tree.
28
29Example: adding device info in dtsi file
30
31adc: adc@12D10000 {
32 compatible = "samsung,exynos-adc-v1";
33 reg = <0x12D10000 0x100>, <0x10040718 0x4>;
34 interrupts = <0 106 0>;
35 #io-channel-cells = <1>;
36 io-channel-ranges;
37
38 clocks = <&clock 303>;
39 clock-names = "adc";
40
41 vdd-supply = <&buck5_reg>;
42};
43
44
45Example: Adding child nodes in dts file
46
47adc@12D10000 {
48
49 /* NTC thermistor is a hwmon device */
50 ncp15wb473@0 {
51 compatible = "ntc,ncp15wb473";
52 pullup-uV = <1800000>;
53 pullup-ohm = <47000>;
54 pulldown-ohm = <0>;
55 io-channels = <&adc 4>;
56 };
57};
58
59Note: Does not apply to ADC driver under arch/arm/plat-samsung/
60Note: The child node can be added under the adc node or separately.
diff --git a/Documentation/devicetree/bindings/arm/samsung/sysreg.txt b/Documentation/devicetree/bindings/arm/samsung/sysreg.txt
new file mode 100644
index 000000000000..5039c0a12f55
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/samsung/sysreg.txt
@@ -0,0 +1,7 @@
1SAMSUNG S5P/Exynos SoC series System Registers (SYSREG)
2
3Properties:
4 - name : should be 'sysreg';
5 - compatible : should contain "samsung,<chip name>-sysreg", "syscon";
6 For Exynos4 SoC series it should be "samsung,exynos4-sysreg", "syscon";
7 - reg : offset and length of the register set.
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt
index b5846e21cc2e..1608a54e90e1 100644
--- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt
+++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt
@@ -1,19 +1,84 @@
1NVIDIA Tegra Power Management Controller (PMC) 1NVIDIA Tegra Power Management Controller (PMC)
2 2
3Properties: 3The PMC block interacts with an external Power Management Unit. The PMC
4mostly controls the entry and exit of the system from different sleep
5modes. It provides power-gating controllers for SoC and CPU power-islands.
6
7Required properties:
4- name : Should be pmc 8- name : Should be pmc
5- compatible : Should contain "nvidia,tegra<chip>-pmc". 9- compatible : Should contain "nvidia,tegra<chip>-pmc".
6- reg : Offset and length of the register set for the device 10- reg : Offset and length of the register set for the device
11- clocks : Must contain an entry for each entry in clock-names.
12- clock-names : Must include the following entries:
13 "pclk" (The Tegra clock of that name),
14 "clk32k_in" (The 32KHz clock input to Tegra).
15
16Optional properties:
7- nvidia,invert-interrupt : If present, inverts the PMU interrupt signal. 17- nvidia,invert-interrupt : If present, inverts the PMU interrupt signal.
8 The PMU is an external Power Management Unit, whose interrupt output 18 The PMU is an external Power Management Unit, whose interrupt output
9 signal is fed into the PMC. This signal is optionally inverted, and then 19 signal is fed into the PMC. This signal is optionally inverted, and then
10 fed into the ARM GIC. The PMC is not involved in the detection or 20 fed into the ARM GIC. The PMC is not involved in the detection or
11 handling of this interrupt signal, merely its inversion. 21 handling of this interrupt signal, merely its inversion.
22- nvidia,suspend-mode : The suspend mode that the platform should use.
23 Valid values are 0, 1 and 2:
24 0 (LP0): CPU + Core voltage off and DRAM in self-refresh
25 1 (LP1): CPU voltage off and DRAM in self-refresh
26 2 (LP2): CPU voltage off
27- nvidia,core-power-req-active-high : Boolean, core power request active-high
28- nvidia,sys-clock-req-active-high : Boolean, system clock request active-high
29- nvidia,combined-power-req : Boolean, combined power request for CPU & Core
30- nvidia,cpu-pwr-good-en : Boolean, CPU power good signal (from PMIC to PMC)
31 is enabled.
32
33Required properties when nvidia,suspend-mode is specified:
34- nvidia,cpu-pwr-good-time : CPU power good time in uS.
35- nvidia,cpu-pwr-off-time : CPU power off time in uS.
36- nvidia,core-pwr-good-time : <Oscillator-stable-time Power-stable-time>
37 Core power good time in uS.
38- nvidia,core-pwr-off-time : Core power off time in uS.
39
40Required properties when nvidia,suspend-mode=<0>:
41- nvidia,lp0-vec : <start length> Starting address and length of LP0 vector
42 The LP0 vector contains the warm boot code that is executed by AVP when
43 resuming from the LP0 state. The AVP (Audio-Video Processor) is an ARM7
44 processor and always being the first boot processor when chip is power on
45 or resume from deep sleep mode. When the system is resumed from the deep
46 sleep mode, the warm boot code will restore some PLLs, clocks and then
47 bring up CPU0 for resuming the system.
12 48
13Example: 49Example:
14 50
51/ SoC dts including file
15pmc@7000f400 { 52pmc@7000f400 {
16 compatible = "nvidia,tegra20-pmc"; 53 compatible = "nvidia,tegra20-pmc";
17 reg = <0x7000e400 0x400>; 54 reg = <0x7000e400 0x400>;
55 clocks = <&tegra_car 110>, <&clk32k_in>;
56 clock-names = "pclk", "clk32k_in";
18 nvidia,invert-interrupt; 57 nvidia,invert-interrupt;
58 nvidia,suspend-mode = <1>;
59 nvidia,cpu-pwr-good-time = <2000>;
60 nvidia,cpu-pwr-off-time = <100>;
61 nvidia,core-pwr-good-time = <3845 3845>;
62 nvidia,core-pwr-off-time = <458>;
63 nvidia,core-power-req-active-high;
64 nvidia,sys-clock-req-active-high;
65 nvidia,lp0-vec = <0xbdffd000 0x2000>;
66};
67
68/ Tegra board dts file
69{
70 ...
71 clocks {
72 compatible = "simple-bus";
73 #address-cells = <1>;
74 #size-cells = <0>;
75
76 clk32k_in: clock {
77 compatible = "fixed-clock";
78 reg=<0>;
79 #clock-cells = <0>;
80 clock-frequency = <32768>;
81 };
82 };
83 ...
19}; 84};
diff --git a/Documentation/devicetree/bindings/ata/imx-pata.txt b/Documentation/devicetree/bindings/ata/imx-pata.txt
new file mode 100644
index 000000000000..e38d73414b0d
--- /dev/null
+++ b/Documentation/devicetree/bindings/ata/imx-pata.txt
@@ -0,0 +1,17 @@
1* Freescale i.MX PATA Controller
2
3Required properties:
4- compatible: "fsl,imx27-pata"
5- reg: Address range of the PATA Controller
6- interrupts: The interrupt of the PATA Controller
7- clocks: the clocks for the PATA Controller
8
9Example:
10
11 pata: pata@83fe0000 {
12 compatible = "fsl,imx51-pata", "fsl,imx27-pata";
13 reg = <0x83fe0000 0x4000>;
14 interrupts = <70>;
15 clocks = <&clks 161>;
16 status = "disabled";
17 };
diff --git a/Documentation/devicetree/bindings/ata/pata-arasan.txt b/Documentation/devicetree/bindings/ata/pata-arasan.txt
index 95ec7f825ede..2aff154be84e 100644
--- a/Documentation/devicetree/bindings/ata/pata-arasan.txt
+++ b/Documentation/devicetree/bindings/ata/pata-arasan.txt
@@ -6,6 +6,26 @@ Required properties:
6- interrupt-parent: Should be the phandle for the interrupt controller 6- interrupt-parent: Should be the phandle for the interrupt controller
7 that services interrupts for this device 7 that services interrupts for this device
8- interrupt: Should contain the CF interrupt number 8- interrupt: Should contain the CF interrupt number
9- clock-frequency: Interface clock rate, in Hz, one of
10 25000000
11 33000000
12 40000000
13 50000000
14 66000000
15 75000000
16 100000000
17 125000000
18 150000000
19 166000000
20 200000000
21
22Optional properties:
23- arasan,broken-udma: if present, UDMA mode is unusable
24- arasan,broken-mwdma: if present, MWDMA mode is unusable
25- arasan,broken-pio: if present, PIO mode is unusable
26- dmas: one DMA channel, as described in bindings/dma/dma.txt
27 required unless both UDMA and MWDMA mode are broken
28- dma-names: the corresponding channel name, must be "data"
9 29
10Example: 30Example:
11 31
@@ -14,4 +34,6 @@ Example:
14 reg = <0xfc000000 0x1000>; 34 reg = <0xfc000000 0x1000>;
15 interrupt-parent = <&vic1>; 35 interrupt-parent = <&vic1>;
16 interrupts = <12>; 36 interrupts = <12>;
37 dmas = <&dma-controller 23>;
38 dma-names = "data";
17 }; 39 };
diff --git a/Documentation/devicetree/bindings/clock/altr_socfpga.txt b/Documentation/devicetree/bindings/clock/altr_socfpga.txt
new file mode 100644
index 000000000000..bd0c8416a5c8
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/altr_socfpga.txt
@@ -0,0 +1,18 @@
1Device Tree Clock bindings for Altera's SoCFPGA platform
2
3This binding uses the common clock binding[1].
4
5[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
6
7Required properties:
8- compatible : shall be one of the following:
9 "altr,socfpga-pll-clock" - for a PLL clock
10 "altr,socfpga-perip-clock" - The peripheral clock divided from the
11 PLL clock.
12- reg : shall be the control register offset from CLOCK_MANAGER's base for the clock.
13- clocks : shall be the input parent clock phandle for the clock. This is
14 either an oscillator or a pll output.
15- #clock-cells : from common clock binding, shall be set to 0.
16
17Optional properties:
18- fixed-divider : If clocks have a fixed divider value, use this property.
diff --git a/Documentation/devicetree/bindings/clock/axi-clkgen.txt b/Documentation/devicetree/bindings/clock/axi-clkgen.txt
new file mode 100644
index 000000000000..028b493e97ff
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/axi-clkgen.txt
@@ -0,0 +1,22 @@
1Binding for the axi-clkgen clock generator
2
3This binding uses the common clock binding[1].
4
5[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
6
7Required properties:
8- compatible : shall be "adi,axi-clkgen".
9- #clock-cells : from common clock binding; Should always be set to 0.
10- reg : Address and length of the axi-clkgen register set.
11- clocks : Phandle and clock specifier for the parent clock.
12
13Optional properties:
14- clock-output-names : From common clock binding.
15
16Example:
17 clock@0xff000000 {
18 compatible = "adi,axi-clkgen";
19 #clock-cells = <0>;
20 reg = <0xff000000 0x1000>;
21 clocks = <&osc 1>;
22 };
diff --git a/Documentation/devicetree/bindings/clock/exynos4-clock.txt b/Documentation/devicetree/bindings/clock/exynos4-clock.txt
new file mode 100644
index 000000000000..ea5e26f16aec
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/exynos4-clock.txt
@@ -0,0 +1,288 @@
1* Samsung Exynos4 Clock Controller
2
3The Exynos4 clock controller generates and supplies clock to various controllers
4within the Exynos4 SoC. The clock binding described here is applicable to all
5SoC's in the Exynos4 family.
6
7Required Properties:
8
9- comptible: should be one of the following.
10 - "samsung,exynos4210-clock" - controller compatible with Exynos4210 SoC.
11 - "samsung,exynos4412-clock" - controller compatible with Exynos4412 SoC.
12
13- reg: physical base address of the controller and length of memory mapped
14 region.
15
16- #clock-cells: should be 1.
17
18The following is the list of clocks generated by the controller. Each clock is
19assigned an identifier and client nodes use this identifier to specify the
20clock which they consume. Some of the clocks are available only on a particular
21Exynos4 SoC and this is specified where applicable.
22
23
24 [Core Clocks]
25
26 Clock ID SoC (if specific)
27 -----------------------------------------------
28
29 xxti 1
30 xusbxti 2
31 fin_pll 3
32 fout_apll 4
33 fout_mpll 5
34 fout_epll 6
35 fout_vpll 7
36 sclk_apll 8
37 sclk_mpll 9
38 sclk_epll 10
39 sclk_vpll 11
40 arm_clk 12
41 aclk200 13
42 aclk100 14
43 aclk160 15
44 aclk133 16
45 mout_mpll_user_t 17 Exynos4x12
46 mout_mpll_user_c 18 Exynos4x12
47 mout_core 19
48 mout_apll 20
49
50
51 [Clock Gate for Special Clocks]
52
53 Clock ID SoC (if specific)
54 -----------------------------------------------
55
56 sclk_fimc0 128
57 sclk_fimc1 129
58 sclk_fimc2 130
59 sclk_fimc3 131
60 sclk_cam0 132
61 sclk_cam1 133
62 sclk_csis0 134
63 sclk_csis1 135
64 sclk_hdmi 136
65 sclk_mixer 137
66 sclk_dac 138
67 sclk_pixel 139
68 sclk_fimd0 140
69 sclk_mdnie0 141 Exynos4412
70 sclk_mdnie_pwm0 12 142 Exynos4412
71 sclk_mipi0 143
72 sclk_audio0 144
73 sclk_mmc0 145
74 sclk_mmc1 146
75 sclk_mmc2 147
76 sclk_mmc3 148
77 sclk_mmc4 149
78 sclk_sata 150 Exynos4210
79 sclk_uart0 151
80 sclk_uart1 152
81 sclk_uart2 153
82 sclk_uart3 154
83 sclk_uart4 155
84 sclk_audio1 156
85 sclk_audio2 157
86 sclk_spdif 158
87 sclk_spi0 159
88 sclk_spi1 160
89 sclk_spi2 161
90 sclk_slimbus 162
91 sclk_fimd1 163 Exynos4210
92 sclk_mipi1 164 Exynos4210
93 sclk_pcm1 165
94 sclk_pcm2 166
95 sclk_i2s1 167
96 sclk_i2s2 168
97 sclk_mipihsi 169 Exynos4412
98 sclk_mfc 170
99 sclk_pcm0 171
100 sclk_g3d 172
101 sclk_pwm_isp 173 Exynos4x12
102 sclk_spi0_isp 174 Exynos4x12
103 sclk_spi1_isp 175 Exynos4x12
104 sclk_uart_isp 176 Exynos4x12
105
106 [Peripheral Clock Gates]
107
108 Clock ID SoC (if specific)
109 -----------------------------------------------
110
111 fimc0 256
112 fimc1 257
113 fimc2 258
114 fimc3 259
115 csis0 260
116 csis1 261
117 jpeg 262
118 smmu_fimc0 263
119 smmu_fimc1 264
120 smmu_fimc2 265
121 smmu_fimc3 266
122 smmu_jpeg 267
123 vp 268
124 mixer 269
125 tvenc 270 Exynos4210
126 hdmi 271
127 smmu_tv 272
128 mfc 273
129 smmu_mfcl 274
130 smmu_mfcr 275
131 g3d 276
132 g2d 277 Exynos4210
133 rotator 278 Exynos4210
134 mdma 279 Exynos4210
135 smmu_g2d 280 Exynos4210
136 smmu_rotator 281 Exynos4210
137 smmu_mdma 282 Exynos4210
138 fimd0 283
139 mie0 284
140 mdnie0 285 Exynos4412
141 dsim0 286
142 smmu_fimd0 287
143 fimd1 288 Exynos4210
144 mie1 289 Exynos4210
145 dsim1 290 Exynos4210
146 smmu_fimd1 291 Exynos4210
147 pdma0 292
148 pdma1 293
149 pcie_phy 294
150 sata_phy 295 Exynos4210
151 tsi 296
152 sdmmc0 297
153 sdmmc1 298
154 sdmmc2 299
155 sdmmc3 300
156 sdmmc4 301
157 sata 302 Exynos4210
158 sromc 303
159 usb_host 304
160 usb_device 305
161 pcie 306
162 onenand 307
163 nfcon 308
164 smmu_pcie 309
165 gps 310
166 smmu_gps 311
167 uart0 312
168 uart1 313
169 uart2 314
170 uart3 315
171 uart4 316
172 i2c0 317
173 i2c1 318
174 i2c2 319
175 i2c3 320
176 i2c4 321
177 i2c5 322
178 i2c6 323
179 i2c7 324
180 i2c_hdmi 325
181 tsadc 326
182 spi0 327
183 spi1 328
184 spi2 329
185 i2s1 330
186 i2s2 331
187 pcm0 332
188 i2s0 333
189 pcm1 334
190 pcm2 335
191 pwm 336
192 slimbus 337
193 spdif 338
194 ac97 339
195 modemif 340
196 chipid 341
197 sysreg 342
198 hdmi_cec 343
199 mct 344
200 wdt 345
201 rtc 346
202 keyif 347
203 audss 348
204 mipi_hsi 349 Exynos4210
205 mdma2 350 Exynos4210
206 pixelasyncm0 351
207 pixelasyncm1 352
208 fimc_lite0 353 Exynos4x12
209 fimc_lite1 354 Exynos4x12
210 ppmuispx 355 Exynos4x12
211 ppmuispmx 356 Exynos4x12
212 fimc_isp 357 Exynos4x12
213 fimc_drc 358 Exynos4x12
214 fimc_fd 359 Exynos4x12
215 mcuisp 360 Exynos4x12
216 gicisp 361 Exynos4x12
217 smmu_isp 362 Exynos4x12
218 smmu_drc 363 Exynos4x12
219 smmu_fd 364 Exynos4x12
220 smmu_lite0 365 Exynos4x12
221 smmu_lite1 366 Exynos4x12
222 mcuctl_isp 367 Exynos4x12
223 mpwm_isp 368 Exynos4x12
224 i2c0_isp 369 Exynos4x12
225 i2c1_isp 370 Exynos4x12
226 mtcadc_isp 371 Exynos4x12
227 pwm_isp 372 Exynos4x12
228 wdt_isp 373 Exynos4x12
229 uart_isp 374 Exynos4x12
230 asyncaxim 375 Exynos4x12
231 smmu_ispcx 376 Exynos4x12
232 spi0_isp 377 Exynos4x12
233 spi1_isp 378 Exynos4x12
234 pwm_isp_sclk 379 Exynos4x12
235 spi0_isp_sclk 380 Exynos4x12
236 spi1_isp_sclk 381 Exynos4x12
237 uart_isp_sclk 382 Exynos4x12
238
239 [Mux Clocks]
240
241 Clock ID SoC (if specific)
242 -----------------------------------------------
243
244 mout_fimc0 384
245 mout_fimc1 385
246 mout_fimc2 386
247 mout_fimc3 387
248 mout_cam0 388
249 mout_cam1 389
250 mout_csis0 390
251 mout_csis1 391
252 mout_g3d0 392
253 mout_g3d1 393
254 mout_g3d 394
255 aclk400_mcuisp 395 Exynos4x12
256
257 [Div Clocks]
258
259 Clock ID SoC (if specific)
260 -----------------------------------------------
261
262 div_isp0 450 Exynos4x12
263 div_isp1 451 Exynos4x12
264 div_mcuisp0 452 Exynos4x12
265 div_mcuisp1 453 Exynos4x12
266 div_aclk200 454 Exynos4x12
267 div_aclk400_mcuisp 455 Exynos4x12
268
269
270Example 1: An example of a clock controller node is listed below.
271
272 clock: clock-controller@0x10030000 {
273 compatible = "samsung,exynos4210-clock";
274 reg = <0x10030000 0x20000>;
275 #clock-cells = <1>;
276 };
277
278Example 2: UART controller node that consumes the clock generated by the clock
279 controller. Refer to the standard clock bindings for information
280 about 'clocks' and 'clock-names' property.
281
282 serial@13820000 {
283 compatible = "samsung,exynos4210-uart";
284 reg = <0x13820000 0x100>;
285 interrupts = <0 54 0>;
286 clocks = <&clock 314>, <&clock 153>;
287 clock-names = "uart", "clk_uart_baud0";
288 };
diff --git a/Documentation/devicetree/bindings/clock/exynos5250-clock.txt b/Documentation/devicetree/bindings/clock/exynos5250-clock.txt
new file mode 100644
index 000000000000..781a6276adf7
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/exynos5250-clock.txt
@@ -0,0 +1,177 @@
1* Samsung Exynos5250 Clock Controller
2
3The Exynos5250 clock controller generates and supplies clock to various
4controllers within the Exynos5250 SoC.
5
6Required Properties:
7
8- comptible: should be one of the following.
9 - "samsung,exynos5250-clock" - controller compatible with Exynos5250 SoC.
10
11- reg: physical base address of the controller and length of memory mapped
12 region.
13
14- #clock-cells: should be 1.
15
16The following is the list of clocks generated by the controller. Each clock is
17assigned an identifier and client nodes use this identifier to specify the
18clock which they consume.
19
20
21 [Core Clocks]
22
23 Clock ID
24 ----------------------------
25
26 fin_pll 1
27
28 [Clock Gate for Special Clocks]
29
30 Clock ID
31 ----------------------------
32
33 sclk_cam_bayer 128
34 sclk_cam0 129
35 sclk_cam1 130
36 sclk_gscl_wa 131
37 sclk_gscl_wb 132
38 sclk_fimd1 133
39 sclk_mipi1 134
40 sclk_dp 135
41 sclk_hdmi 136
42 sclk_pixel 137
43 sclk_audio0 138
44 sclk_mmc0 139
45 sclk_mmc1 140
46 sclk_mmc2 141
47 sclk_mmc3 142
48 sclk_sata 143
49 sclk_usb3 144
50 sclk_jpeg 145
51 sclk_uart0 146
52 sclk_uart1 147
53 sclk_uart2 148
54 sclk_uart3 149
55 sclk_pwm 150
56 sclk_audio1 151
57 sclk_audio2 152
58 sclk_spdif 153
59 sclk_spi0 154
60 sclk_spi1 155
61 sclk_spi2 156
62
63
64 [Peripheral Clock Gates]
65
66 Clock ID
67 ----------------------------
68
69 gscl0 256
70 gscl1 257
71 gscl2 258
72 gscl3 259
73 gscl_wa 260
74 gscl_wb 261
75 smmu_gscl0 262
76 smmu_gscl1 263
77 smmu_gscl2 264
78 smmu_gscl3 265
79 mfc 266
80 smmu_mfcl 267
81 smmu_mfcr 268
82 rotator 269
83 jpeg 270
84 mdma1 271
85 smmu_rotator 272
86 smmu_jpeg 273
87 smmu_mdma1 274
88 pdma0 275
89 pdma1 276
90 sata 277
91 usbotg 278
92 mipi_hsi 279
93 sdmmc0 280
94 sdmmc1 281
95 sdmmc2 282
96 sdmmc3 283
97 sromc 284
98 usb2 285
99 usb3 286
100 sata_phyctrl 287
101 sata_phyi2c 288
102 uart0 289
103 uart1 290
104 uart2 291
105 uart3 292
106 uart4 293
107 i2c0 294
108 i2c1 295
109 i2c2 296
110 i2c3 297
111 i2c4 298
112 i2c5 299
113 i2c6 300
114 i2c7 301
115 i2c_hdmi 302
116 adc 303
117 spi0 304
118 spi1 305
119 spi2 306
120 i2s1 307
121 i2s2 308
122 pcm1 309
123 pcm2 310
124 pwm 311
125 spdif 312
126 ac97 313
127 hsi2c0 314
128 hsi2c1 315
129 hs12c2 316
130 hs12c3 317
131 chipid 318
132 sysreg 319
133 pmu 320
134 cmu_top 321
135 cmu_core 322
136 cmu_mem 323
137 tzpc0 324
138 tzpc1 325
139 tzpc2 326
140 tzpc3 327
141 tzpc4 328
142 tzpc5 329
143 tzpc6 330
144 tzpc7 331
145 tzpc8 332
146 tzpc9 333
147 hdmi_cec 334
148 mct 335
149 wdt 336
150 rtc 337
151 tmu 338
152 fimd1 339
153 mie1 340
154 dsim0 341
155 dp 342
156 mixer 343
157 hdmi 345
158
159Example 1: An example of a clock controller node is listed below.
160
161 clock: clock-controller@0x10010000 {
162 compatible = "samsung,exynos5250-clock";
163 reg = <0x10010000 0x30000>;
164 #clock-cells = <1>;
165 };
166
167Example 2: UART controller node that consumes the clock generated by the clock
168 controller. Refer to the standard clock bindings for information
169 about 'clocks' and 'clock-names' property.
170
171 serial@13820000 {
172 compatible = "samsung,exynos4210-uart";
173 reg = <0x13820000 0x100>;
174 interrupts = <0 54 0>;
175 clocks = <&clock 314>, <&clock 153>;
176 clock-names = "uart", "clk_uart_baud0";
177 };
diff --git a/Documentation/devicetree/bindings/clock/exynos5440-clock.txt b/Documentation/devicetree/bindings/clock/exynos5440-clock.txt
new file mode 100644
index 000000000000..4499e9966bc9
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/exynos5440-clock.txt
@@ -0,0 +1,61 @@
1* Samsung Exynos5440 Clock Controller
2
3The Exynos5440 clock controller generates and supplies clock to various
4controllers within the Exynos5440 SoC.
5
6Required Properties:
7
8- comptible: should be "samsung,exynos5440-clock".
9
10- reg: physical base address of the controller and length of memory mapped
11 region.
12
13- #clock-cells: should be 1.
14
15The following is the list of clocks generated by the controller. Each clock is
16assigned an identifier and client nodes use this identifier to specify the
17clock which they consume.
18
19
20 [Core Clocks]
21
22 Clock ID
23 ----------------------------
24
25 xtal 1
26 arm_clk 2
27
28 [Peripheral Clock Gates]
29
30 Clock ID
31 ----------------------------
32
33 spi_baud 16
34 pb0_250 17
35 pr0_250 18
36 pr1_250 19
37 b_250 20
38 b_125 21
39 b_200 22
40 sata 23
41 usb 24
42 gmac0 25
43 cs250 26
44 pb0_250_o 27
45 pr0_250_o 28
46 pr1_250_o 29
47 b_250_o 30
48 b_125_o 31
49 b_200_o 32
50 sata_o 33
51 usb_o 34
52 gmac0_o 35
53 cs250_o 36
54
55Example: An example of a clock controller node is listed below.
56
57 clock: clock-controller@0x10010000 {
58 compatible = "samsung,exynos5440-clock";
59 reg = <0x160000 0x10000>;
60 #clock-cells = <1>;
61 };
diff --git a/Documentation/devicetree/bindings/clock/fixed-factor-clock.txt b/Documentation/devicetree/bindings/clock/fixed-factor-clock.txt
new file mode 100644
index 000000000000..5757f9abfc26
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/fixed-factor-clock.txt
@@ -0,0 +1,24 @@
1Binding for simple fixed factor rate clock sources.
2
3This binding uses the common clock binding[1].
4
5[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
6
7Required properties:
8- compatible : shall be "fixed-factor-clock".
9- #clock-cells : from common clock binding; shall be set to 0.
10- clock-div: fixed divider.
11- clock-mult: fixed multiplier.
12- clocks: parent clock.
13
14Optional properties:
15- clock-output-names : From common clock binding.
16
17Example:
18 clock {
19 compatible = "fixed-factor-clock";
20 clocks = <&parentclk>;
21 #clock-cells = <0>;
22 div = <2>;
23 mult = <1>;
24 };
diff --git a/Documentation/devicetree/bindings/clock/imx27-clock.txt b/Documentation/devicetree/bindings/clock/imx27-clock.txt
new file mode 100644
index 000000000000..ab1a56e9de9d
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/imx27-clock.txt
@@ -0,0 +1,117 @@
1* Clock bindings for Freescale i.MX27
2
3Required properties:
4- compatible: Should be "fsl,imx27-ccm"
5- reg: Address and length of the register set
6- interrupts: Should contain CCM interrupt
7- #clock-cells: Should be <1>
8
9The clock consumer should specify the desired clock by having the clock
10ID in its "clocks" phandle cell. The following is a full list of i.MX27
11clocks and IDs.
12
13 Clock ID
14 -----------------------
15 dummy 0
16 ckih 1
17 ckil 2
18 mpll 3
19 spll 4
20 mpll_main2 5
21 ahb 6
22 ipg 7
23 nfc_div 8
24 per1_div 9
25 per2_div 10
26 per3_div 11
27 per4_div 12
28 vpu_sel 13
29 vpu_div 14
30 usb_div 15
31 cpu_sel 16
32 clko_sel 17
33 cpu_div 18
34 clko_div 19
35 ssi1_sel 20
36 ssi2_sel 21
37 ssi1_div 22
38 ssi2_div 23
39 clko_en 24
40 ssi2_ipg_gate 25
41 ssi1_ipg_gate 26
42 slcdc_ipg_gate 27
43 sdhc3_ipg_gate 28
44 sdhc2_ipg_gate 29
45 sdhc1_ipg_gate 30
46 scc_ipg_gate 31
47 sahara_ipg_gate 32
48 rtc_ipg_gate 33
49 pwm_ipg_gate 34
50 owire_ipg_gate 35
51 lcdc_ipg_gate 36
52 kpp_ipg_gate 37
53 iim_ipg_gate 38
54 i2c2_ipg_gate 39
55 i2c1_ipg_gate 40
56 gpt6_ipg_gate 41
57 gpt5_ipg_gate 42
58 gpt4_ipg_gate 43
59 gpt3_ipg_gate 44
60 gpt2_ipg_gate 45
61 gpt1_ipg_gate 46
62 gpio_ipg_gate 47
63 fec_ipg_gate 48
64 emma_ipg_gate 49
65 dma_ipg_gate 50
66 cspi3_ipg_gate 51
67 cspi2_ipg_gate 52
68 cspi1_ipg_gate 53
69 nfc_baud_gate 54
70 ssi2_baud_gate 55
71 ssi1_baud_gate 56
72 vpu_baud_gate 57
73 per4_gate 58
74 per3_gate 59
75 per2_gate 60
76 per1_gate 61
77 usb_ahb_gate 62
78 slcdc_ahb_gate 63
79 sahara_ahb_gate 64
80 lcdc_ahb_gate 65
81 vpu_ahb_gate 66
82 fec_ahb_gate 67
83 emma_ahb_gate 68
84 emi_ahb_gate 69
85 dma_ahb_gate 70
86 csi_ahb_gate 71
87 brom_ahb_gate 72
88 ata_ahb_gate 73
89 wdog_ipg_gate 74
90 usb_ipg_gate 75
91 uart6_ipg_gate 76
92 uart5_ipg_gate 77
93 uart4_ipg_gate 78
94 uart3_ipg_gate 79
95 uart2_ipg_gate 80
96 uart1_ipg_gate 81
97 ckih_div1p5 82
98 fpm 83
99 mpll_osc_sel 84
100 mpll_sel 85
101
102Examples:
103
104clks: ccm@10027000{
105 compatible = "fsl,imx27-ccm";
106 reg = <0x10027000 0x1000>;
107 #clock-cells = <1>;
108};
109
110uart1: serial@1000a000 {
111 compatible = "fsl,imx27-uart", "fsl,imx21-uart";
112 reg = <0x1000a000 0x1000>;
113 interrupts = <20>;
114 clocks = <&clks 81>, <&clks 61>;
115 clock-names = "ipg", "per";
116 status = "disabled";
117};
diff --git a/Documentation/devicetree/bindings/clock/imx5-clock.txt b/Documentation/devicetree/bindings/clock/imx5-clock.txt
index 2a0c904c46ae..d71b4b2c077d 100644
--- a/Documentation/devicetree/bindings/clock/imx5-clock.txt
+++ b/Documentation/devicetree/bindings/clock/imx5-clock.txt
@@ -38,7 +38,6 @@ clocks and IDs.
38 usb_phy_podf 23 38 usb_phy_podf 23
39 cpu_podf 24 39 cpu_podf 24
40 di_pred 25 40 di_pred 25
41 tve_di 26
42 tve_s 27 41 tve_s 27
43 uart1_ipg_gate 28 42 uart1_ipg_gate 28
44 uart1_per_gate 29 43 uart1_per_gate 29
@@ -172,6 +171,19 @@ clocks and IDs.
172 can1_serial_gate 157 171 can1_serial_gate 157
173 can1_ipg_gate 158 172 can1_ipg_gate 158
174 owire_gate 159 173 owire_gate 159
174 gpu3d_s 160
175 gpu2d_s 161
176 gpu3d_gate 162
177 gpu2d_gate 163
178 garb_gate 164
179 cko1_sel 165
180 cko1_podf 166
181 cko1 167
182 cko2_sel 168
183 cko2_podf 169
184 cko2 170
185 srtc_gate 171
186 pata_gate 172
175 187
176Examples (for mx53): 188Examples (for mx53):
177 189
diff --git a/Documentation/devicetree/bindings/clock/imx6q-clock.txt b/Documentation/devicetree/bindings/clock/imx6q-clock.txt
index 969b38e06ad3..6deb6fd1c7cd 100644
--- a/Documentation/devicetree/bindings/clock/imx6q-clock.txt
+++ b/Documentation/devicetree/bindings/clock/imx6q-clock.txt
@@ -205,6 +205,9 @@ clocks and IDs.
205 enet_ref 190 205 enet_ref 190
206 usbphy1_gate 191 206 usbphy1_gate 191
207 usbphy2_gate 192 207 usbphy2_gate 192
208 pll4_post_div 193
209 pll5_post_div 194
210 pll5_video_div 195
208 211
209Examples: 212Examples:
210 213
diff --git a/Documentation/devicetree/bindings/clock/nvidia,tegra114-car.txt b/Documentation/devicetree/bindings/clock/nvidia,tegra114-car.txt
new file mode 100644
index 000000000000..d6cb083b90a2
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/nvidia,tegra114-car.txt
@@ -0,0 +1,303 @@
1NVIDIA Tegra114 Clock And Reset Controller
2
3This binding uses the common clock binding:
4Documentation/devicetree/bindings/clock/clock-bindings.txt
5
6The CAR (Clock And Reset) Controller on Tegra is the HW module responsible
7for muxing and gating Tegra's clocks, and setting their rates.
8
9Required properties :
10- compatible : Should be "nvidia,tegra114-car"
11- reg : Should contain CAR registers location and length
12- clocks : Should contain phandle and clock specifiers for two clocks:
13 the 32 KHz "32k_in", and the board-specific oscillator "osc".
14- #clock-cells : Should be 1.
15 In clock consumers, this cell represents the clock ID exposed by the CAR.
16
17 The first 160 clocks are numbered to match the bits in the CAR's CLK_OUT_ENB
18 registers. These IDs often match those in the CAR's RST_DEVICES registers,
19 but not in all cases. Some bits in CLK_OUT_ENB affect multiple clocks. In
20 this case, those clocks are assigned IDs above 160 in order to highlight
21 this issue. Implementations that interpret these clock IDs as bit values
22 within the CLK_OUT_ENB or RST_DEVICES registers should be careful to
23 explicitly handle these special cases.
24
25 The balance of the clocks controlled by the CAR are assigned IDs of 160 and
26 above.
27
28 0 unassigned
29 1 unassigned
30 2 unassigned
31 3 unassigned
32 4 rtc
33 5 timer
34 6 uarta
35 7 unassigned (register bit affects uartb and vfir)
36 8 unassigned
37 9 sdmmc2
38 10 unassigned (register bit affects spdif_in and spdif_out)
39 11 i2s1
40 12 i2c1
41 13 ndflash
42 14 sdmmc1
43 15 sdmmc4
44 16 unassigned
45 17 pwm
46 18 i2s2
47 19 epp
48 20 unassigned (register bit affects vi and vi_sensor)
49 21 2d
50 22 usbd
51 23 isp
52 24 3d
53 25 unassigned
54 26 disp2
55 27 disp1
56 28 host1x
57 29 vcp
58 30 i2s0
59 31 unassigned
60
61 32 unassigned
62 33 unassigned
63 34 apbdma
64 35 unassigned
65 36 kbc
66 37 unassigned
67 38 unassigned
68 39 unassigned (register bit affects fuse and fuse_burn)
69 40 kfuse
70 41 sbc1
71 42 nor
72 43 unassigned
73 44 sbc2
74 45 unassigned
75 46 sbc3
76 47 i2c5
77 48 dsia
78 49 unassigned
79 50 mipi
80 51 hdmi
81 52 csi
82 53 unassigned
83 54 i2c2
84 55 uartc
85 56 mipi-cal
86 57 emc
87 58 usb2
88 59 usb3
89 60 msenc
90 61 vde
91 62 bsea
92 63 bsev
93
94 64 unassigned
95 65 uartd
96 66 unassigned
97 67 i2c3
98 68 sbc4
99 69 sdmmc3
100 70 unassigned
101 71 owr
102 72 afi
103 73 csite
104 74 unassigned
105 75 unassigned
106 76 la
107 77 trace
108 78 soc_therm
109 79 dtv
110 80 ndspeed
111 81 i2cslow
112 82 dsib
113 83 tsec
114 84 unassigned
115 85 unassigned
116 86 unassigned
117 87 unassigned
118 88 unassigned
119 89 xusb_host
120 90 unassigned
121 91 msenc
122 92 csus
123 93 unassigned
124 94 unassigned
125 95 unassigned (bit affects xusb_dev and xusb_dev_src)
126
127 96 unassigned
128 97 unassigned
129 98 unassigned
130 99 mselect
131 100 tsensor
132 101 i2s3
133 102 i2s4
134 103 i2c4
135 104 sbc5
136 105 sbc6
137 106 d_audio
138 107 apbif
139 108 dam0
140 109 dam1
141 110 dam2
142 111 hda2codec_2x
143 112 unassigned
144 113 audio0_2x
145 114 audio1_2x
146 115 audio2_2x
147 116 audio3_2x
148 117 audio4_2x
149 118 spdif_2x
150 119 actmon
151 120 extern1
152 121 extern2
153 122 extern3
154 123 unassigned
155 124 unassigned
156 125 hda
157 126 unassigned
158 127 se
159
160 128 hda2hdmi
161 129 unassigned
162 130 unassigned
163 131 unassigned
164 132 unassigned
165 133 unassigned
166 134 unassigned
167 135 unassigned
168 136 unassigned
169 137 unassigned
170 138 unassigned
171 139 unassigned
172 140 unassigned
173 141 unassigned
174 142 unassigned
175 143 unassigned (bit affects xusb_falcon_src, xusb_fs_src,
176 xusb_host_src and xusb_ss_src)
177 144 cilab
178 145 cilcd
179 146 cile
180 147 dsialp
181 148 dsiblp
182 149 unassigned
183 150 dds
184 151 unassigned
185 152 dp2
186 153 amx
187 154 adx
188 155 unassigned (bit affects dfll_ref and dfll_soc)
189 156 xusb_ss
190
191 192 uartb
192 193 vfir
193 194 spdif_in
194 195 spdif_out
195 196 vi
196 197 vi_sensor
197 198 fuse
198 199 fuse_burn
199 200 clk_32k
200 201 clk_m
201 202 clk_m_div2
202 203 clk_m_div4
203 204 pll_ref
204 205 pll_c
205 206 pll_c_out1
206 207 pll_c2
207 208 pll_c3
208 209 pll_m
209 210 pll_m_out1
210 211 pll_p
211 212 pll_p_out1
212 213 pll_p_out2
213 214 pll_p_out3
214 215 pll_p_out4
215 216 pll_a
216 217 pll_a_out0
217 218 pll_d
218 219 pll_d_out0
219 220 pll_d2
220 221 pll_d2_out0
221 222 pll_u
222 223 pll_u_480M
223 224 pll_u_60M
224 225 pll_u_48M
225 226 pll_u_12M
226 227 pll_x
227 228 pll_x_out0
228 229 pll_re_vco
229 230 pll_re_out
230 231 pll_e_out0
231 232 spdif_in_sync
232 233 i2s0_sync
233 234 i2s1_sync
234 235 i2s2_sync
235 236 i2s3_sync
236 237 i2s4_sync
237 238 vimclk_sync
238 239 audio0
239 240 audio1
240 241 audio2
241 242 audio3
242 243 audio4
243 244 spdif
244 245 clk_out_1
245 246 clk_out_2
246 247 clk_out_3
247 248 blink
248 252 xusb_host_src
249 253 xusb_falcon_src
250 254 xusb_fs_src
251 255 xusb_ss_src
252 256 xusb_dev_src
253 257 xusb_dev
254 258 xusb_hs_src
255 259 sclk
256 260 hclk
257 261 pclk
258 262 cclk_g
259 263 cclk_lp
260 264 dfll_ref
261 265 dfll_soc
262
263Example SoC include file:
264
265/ {
266 tegra_car: clock {
267 compatible = "nvidia,tegra114-car";
268 reg = <0x60006000 0x1000>;
269 #clock-cells = <1>;
270 };
271
272 usb@c5004000 {
273 clocks = <&tegra_car 58>; /* usb2 */
274 };
275};
276
277Example board file:
278
279/ {
280 clocks {
281 compatible = "simple-bus";
282 #address-cells = <1>;
283 #size-cells = <0>;
284
285 osc: clock@0 {
286 compatible = "fixed-clock";
287 reg = <0>;
288 #clock-cells = <0>;
289 clock-frequency = <12000000>;
290 };
291
292 clk_32k: clock@1 {
293 compatible = "fixed-clock";
294 reg = <1>;
295 #clock-cells = <0>;
296 clock-frequency = <32768>;
297 };
298 };
299
300 &tegra_car {
301 clocks = <&clk_32k> <&osc>;
302 };
303};
diff --git a/Documentation/devicetree/bindings/clock/nvidia,tegra20-car.txt b/Documentation/devicetree/bindings/clock/nvidia,tegra20-car.txt
index 0921fac73528..e885680f6b45 100644
--- a/Documentation/devicetree/bindings/clock/nvidia,tegra20-car.txt
+++ b/Documentation/devicetree/bindings/clock/nvidia,tegra20-car.txt
@@ -120,8 +120,8 @@ Required properties :
120 90 clk_d 120 90 clk_d
121 91 unassigned 121 91 unassigned
122 92 sus 122 92 sus
123 93 cdev1 123 93 cdev2
124 94 cdev2 124 94 cdev1
125 95 unassigned 125 95 unassigned
126 126
127 96 uart2 127 96 uart2
diff --git a/Documentation/devicetree/bindings/clock/silabs,si5351.txt b/Documentation/devicetree/bindings/clock/silabs,si5351.txt
new file mode 100644
index 000000000000..cc374651662c
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/silabs,si5351.txt
@@ -0,0 +1,114 @@
1Binding for Silicon Labs Si5351a/b/c programmable i2c clock generator.
2
3Reference
4[1] Si5351A/B/C Data Sheet
5 http://www.silabs.com/Support%20Documents/TechnicalDocs/Si5351.pdf
6
7The Si5351a/b/c are programmable i2c clock generators with upto 8 output
8clocks. Si5351a also has a reduced pin-count package (MSOP10) where only
93 output clocks are accessible. The internal structure of the clock
10generators can be found in [1].
11
12==I2C device node==
13
14Required properties:
15- compatible: shall be one of "silabs,si5351{a,a-msop,b,c}".
16- reg: i2c device address, shall be 0x60 or 0x61.
17- #clock-cells: from common clock binding; shall be set to 1.
18- clocks: from common clock binding; list of parent clock
19 handles, shall be xtal reference clock or xtal and clkin for
20 si5351c only.
21- #address-cells: shall be set to 1.
22- #size-cells: shall be set to 0.
23
24Optional properties:
25- silabs,pll-source: pair of (number, source) for each pll. Allows
26 to overwrite clock source of pll A (number=0) or B (number=1).
27
28==Child nodes==
29
30Each of the clock outputs can be overwritten individually by
31using a child node to the I2C device node. If a child node for a clock
32output is not set, the eeprom configuration is not overwritten.
33
34Required child node properties:
35- reg: number of clock output.
36
37Optional child node properties:
38- silabs,clock-source: source clock of the output divider stage N, shall be
39 0 = multisynth N
40 1 = multisynth 0 for output clocks 0-3, else multisynth4
41 2 = xtal
42 3 = clkin (si5351c only)
43- silabs,drive-strength: output drive strength in mA, shall be one of {2,4,6,8}.
44- silabs,multisynth-source: source pll A(0) or B(1) of corresponding multisynth
45 divider.
46- silabs,pll-master: boolean, multisynth can change pll frequency.
47
48==Example==
49
50/* 25MHz reference crystal */
51ref25: ref25M {
52 compatible = "fixed-clock";
53 #clock-cells = <0>;
54 clock-frequency = <25000000>;
55};
56
57i2c-master-node {
58
59 /* Si5351a msop10 i2c clock generator */
60 si5351a: clock-generator@60 {
61 compatible = "silabs,si5351a-msop";
62 reg = <0x60>;
63 #address-cells = <1>;
64 #size-cells = <0>;
65 #clock-cells = <1>;
66
67 /* connect xtal input to 25MHz reference */
68 clocks = <&ref25>;
69
70 /* connect xtal input as source of pll0 and pll1 */
71 silabs,pll-source = <0 0>, <1 0>;
72
73 /*
74 * overwrite clkout0 configuration with:
75 * - 8mA output drive strength
76 * - pll0 as clock source of multisynth0
77 * - multisynth0 as clock source of output divider
78 * - multisynth0 can change pll0
79 * - set initial clock frequency of 74.25MHz
80 */
81 clkout0 {
82 reg = <0>;
83 silabs,drive-strength = <8>;
84 silabs,multisynth-source = <0>;
85 silabs,clock-source = <0>;
86 silabs,pll-master;
87 clock-frequency = <74250000>;
88 };
89
90 /*
91 * overwrite clkout1 configuration with:
92 * - 4mA output drive strength
93 * - pll1 as clock source of multisynth1
94 * - multisynth1 as clock source of output divider
95 * - multisynth1 can change pll1
96 */
97 clkout1 {
98 reg = <1>;
99 silabs,drive-strength = <4>;
100 silabs,multisynth-source = <1>;
101 silabs,clock-source = <0>;
102 pll-master;
103 };
104
105 /*
106 * overwrite clkout2 configuration with:
107 * - xtal as clock source of output divider
108 */
109 clkout2 {
110 reg = <2>;
111 silabs,clock-source = <2>;
112 };
113 };
114};
diff --git a/Documentation/devicetree/bindings/clock/sunxi.txt b/Documentation/devicetree/bindings/clock/sunxi.txt
new file mode 100644
index 000000000000..729f52426fe1
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/sunxi.txt
@@ -0,0 +1,151 @@
1Device Tree Clock bindings for arch-sunxi
2
3This binding uses the common clock binding[1].
4
5[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
6
7Required properties:
8- compatible : shall be one of the following:
9 "allwinner,sun4i-osc-clk" - for a gatable oscillator
10 "allwinner,sun4i-pll1-clk" - for the main PLL clock
11 "allwinner,sun4i-cpu-clk" - for the CPU multiplexer clock
12 "allwinner,sun4i-axi-clk" - for the AXI clock
13 "allwinner,sun4i-axi-gates-clk" - for the AXI gates
14 "allwinner,sun4i-ahb-clk" - for the AHB clock
15 "allwinner,sun4i-ahb-gates-clk" - for the AHB gates
16 "allwinner,sun4i-apb0-clk" - for the APB0 clock
17 "allwinner,sun4i-apb0-gates-clk" - for the APB0 gates
18 "allwinner,sun4i-apb1-clk" - for the APB1 clock
19 "allwinner,sun4i-apb1-mux-clk" - for the APB1 clock muxing
20 "allwinner,sun4i-apb1-gates-clk" - for the APB1 gates
21
22Required properties for all clocks:
23- reg : shall be the control register address for the clock.
24- clocks : shall be the input parent clock(s) phandle for the clock
25- #clock-cells : from common clock binding; shall be set to 0 except for
26 "allwinner,sun4i-*-gates-clk" where it shall be set to 1
27
28Additionally, "allwinner,sun4i-*-gates-clk" clocks require:
29- clock-output-names : the corresponding gate names that the clock controls
30
31For example:
32
33osc24M: osc24M@01c20050 {
34 #clock-cells = <0>;
35 compatible = "allwinner,sun4i-osc-clk";
36 reg = <0x01c20050 0x4>;
37 clocks = <&osc24M_fixed>;
38};
39
40pll1: pll1@01c20000 {
41 #clock-cells = <0>;
42 compatible = "allwinner,sun4i-pll1-clk";
43 reg = <0x01c20000 0x4>;
44 clocks = <&osc24M>;
45};
46
47cpu: cpu@01c20054 {
48 #clock-cells = <0>;
49 compatible = "allwinner,sun4i-cpu-clk";
50 reg = <0x01c20054 0x4>;
51 clocks = <&osc32k>, <&osc24M>, <&pll1>;
52};
53
54
55
56Gate clock outputs
57
58The "allwinner,sun4i-*-gates-clk" clocks provide several gatable outputs;
59their corresponding offsets as present on sun4i are listed below. Note that
60some of these gates are not present on sun5i.
61
62 * AXI gates ("allwinner,sun4i-axi-gates-clk")
63
64 DRAM 0
65
66 * AHB gates ("allwinner,sun4i-ahb-gates-clk")
67
68 USB0 0
69 EHCI0 1
70 OHCI0 2*
71 EHCI1 3
72 OHCI1 4*
73 SS 5
74 DMA 6
75 BIST 7
76 MMC0 8
77 MMC1 9
78 MMC2 10
79 MMC3 11
80 MS 12**
81 NAND 13
82 SDRAM 14
83
84 ACE 16
85 EMAC 17
86 TS 18
87
88 SPI0 20
89 SPI1 21
90 SPI2 22
91 SPI3 23
92 PATA 24
93 SATA 25**
94 GPS 26*
95
96 VE 32
97 TVD 33
98 TVE0 34
99 TVE1 35
100 LCD0 36
101 LCD1 37
102
103 CSI0 40
104 CSI1 41
105
106 HDMI 43
107 DE_BE0 44
108 DE_BE1 45
109 DE_FE0 46
110 DE_FE1 47
111
112 MP 50
113
114 MALI400 52
115
116 * APB0 gates ("allwinner,sun4i-apb0-gates-clk")
117
118 CODEC 0
119 SPDIF 1*
120 AC97 2
121 IIS 3
122
123 PIO 5
124 IR0 6
125 IR1 7
126
127 KEYPAD 10
128
129 * APB1 gates ("allwinner,sun4i-apb1-gates-clk")
130
131 I2C0 0
132 I2C1 1
133 I2C2 2
134
135 CAN 4
136 SCR 5
137 PS20 6
138 PS21 7
139
140 UART0 16
141 UART1 17
142 UART2 18
143 UART3 19
144 UART4 20
145 UART5 21
146 UART6 22
147 UART7 23
148
149Notation:
150 [*]: The datasheet didn't mention these, but they are present on AW code
151 [**]: The datasheet had this marked as "NC" but they are used on AW code
diff --git a/Documentation/devicetree/bindings/cpufreq/arm_big_little_dt.txt b/Documentation/devicetree/bindings/cpufreq/arm_big_little_dt.txt
new file mode 100644
index 000000000000..0715695e94a9
--- /dev/null
+++ b/Documentation/devicetree/bindings/cpufreq/arm_big_little_dt.txt
@@ -0,0 +1,65 @@
1Generic ARM big LITTLE cpufreq driver's DT glue
2-----------------------------------------------
3
4This is DT specific glue layer for generic cpufreq driver for big LITTLE
5systems.
6
7Both required and optional properties listed below must be defined
8under node /cpus/cpu@x. Where x is the first cpu inside a cluster.
9
10FIXME: Cpus should boot in the order specified in DT and all cpus for a cluster
11must be present contiguously. Generic DT driver will check only node 'x' for
12cpu:x.
13
14Required properties:
15- operating-points: Refer to Documentation/devicetree/bindings/power/opp.txt
16 for details
17
18Optional properties:
19- clock-latency: Specify the possible maximum transition latency for clock,
20 in unit of nanoseconds.
21
22Examples:
23
24cpus {
25 #address-cells = <1>;
26 #size-cells = <0>;
27
28 cpu@0 {
29 compatible = "arm,cortex-a15";
30 reg = <0>;
31 next-level-cache = <&L2>;
32 operating-points = <
33 /* kHz uV */
34 792000 1100000
35 396000 950000
36 198000 850000
37 >;
38 clock-latency = <61036>; /* two CLK32 periods */
39 };
40
41 cpu@1 {
42 compatible = "arm,cortex-a15";
43 reg = <1>;
44 next-level-cache = <&L2>;
45 };
46
47 cpu@100 {
48 compatible = "arm,cortex-a7";
49 reg = <100>;
50 next-level-cache = <&L2>;
51 operating-points = <
52 /* kHz uV */
53 792000 950000
54 396000 750000
55 198000 450000
56 >;
57 clock-latency = <61036>; /* two CLK32 periods */
58 };
59
60 cpu@101 {
61 compatible = "arm,cortex-a7";
62 reg = <101>;
63 next-level-cache = <&L2>;
64 };
65};
diff --git a/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt b/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt
index 4416ccc33472..051f764bedb8 100644
--- a/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt
+++ b/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt
@@ -32,7 +32,7 @@ cpus {
32 396000 950000 32 396000 950000
33 198000 850000 33 198000 850000
34 >; 34 >;
35 transition-latency = <61036>; /* two CLK32 periods */ 35 clock-latency = <61036>; /* two CLK32 periods */
36 }; 36 };
37 37
38 cpu@1 { 38 cpu@1 {
diff --git a/Documentation/devicetree/bindings/cpufreq/cpufreq-exynos5440.txt b/Documentation/devicetree/bindings/cpufreq/cpufreq-exynos5440.txt
new file mode 100644
index 000000000000..caff1a57436f
--- /dev/null
+++ b/Documentation/devicetree/bindings/cpufreq/cpufreq-exynos5440.txt
@@ -0,0 +1,28 @@
1
2Exynos5440 cpufreq driver
3-------------------
4
5Exynos5440 SoC cpufreq driver for CPU frequency scaling.
6
7Required properties:
8- interrupts: Interrupt to know the completion of cpu frequency change.
9- operating-points: Table of frequencies and voltage CPU could be transitioned into,
10 in the decreasing order. Frequency should be in KHz units and voltage
11 should be in microvolts.
12
13Optional properties:
14- clock-latency: Clock monitor latency in microsecond.
15
16All the required listed above must be defined under node cpufreq.
17
18Example:
19--------
20 cpufreq@160000 {
21 compatible = "samsung,exynos5440-cpufreq";
22 reg = <0x160000 0x1000>;
23 interrupts = <0 57 0>;
24 operating-points = <
25 1000000 975000
26 800000 925000>;
27 clock-latency = <100000>;
28 };
diff --git a/Documentation/devicetree/bindings/crypto/fsl-imx-sahara.txt b/Documentation/devicetree/bindings/crypto/fsl-imx-sahara.txt
new file mode 100644
index 000000000000..5c65eccd0e56
--- /dev/null
+++ b/Documentation/devicetree/bindings/crypto/fsl-imx-sahara.txt
@@ -0,0 +1,15 @@
1Freescale SAHARA Cryptographic Accelerator included in some i.MX chips.
2Currently only i.MX27 is supported.
3
4Required properties:
5- compatible : Should be "fsl,<soc>-sahara"
6- reg : Should contain SAHARA registers location and length
7- interrupts : Should contain SAHARA interrupt number
8
9Example:
10
11sah@10025000 {
12 compatible = "fsl,imx27-sahara";
13 reg = < 0x10025000 0x800>;
14 interrupts = <75>;
15};
diff --git a/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt b/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt
index ded0398d3bdc..a4873e5e3e36 100644
--- a/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt
+++ b/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt
@@ -3,17 +3,58 @@
3Required properties: 3Required properties:
4- compatible : Should be "fsl,<chip>-dma-apbh" or "fsl,<chip>-dma-apbx" 4- compatible : Should be "fsl,<chip>-dma-apbh" or "fsl,<chip>-dma-apbx"
5- reg : Should contain registers location and length 5- reg : Should contain registers location and length
6- interrupts : Should contain the interrupt numbers of DMA channels.
7 If a channel is empty/reserved, 0 should be filled in place.
8- #dma-cells : Must be <1>. The number cell specifies the channel ID.
9- dma-channels : Number of channels supported by the DMA controller
10
11Optional properties:
12- interrupt-names : Name of DMA channel interrupts
6 13
7Supported chips: 14Supported chips:
8imx23, imx28. 15imx23, imx28.
9 16
10Examples: 17Examples:
11dma-apbh@80004000 { 18
19dma_apbh: dma-apbh@80004000 {
12 compatible = "fsl,imx28-dma-apbh"; 20 compatible = "fsl,imx28-dma-apbh";
13 reg = <0x80004000 2000>; 21 reg = <0x80004000 0x2000>;
22 interrupts = <82 83 84 85
23 88 88 88 88
24 88 88 88 88
25 87 86 0 0>;
26 interrupt-names = "ssp0", "ssp1", "ssp2", "ssp3",
27 "gpmi0", "gmpi1", "gpmi2", "gmpi3",
28 "gpmi4", "gmpi5", "gpmi6", "gmpi7",
29 "hsadc", "lcdif", "empty", "empty";
30 #dma-cells = <1>;
31 dma-channels = <16>;
14}; 32};
15 33
16dma-apbx@80024000 { 34dma_apbx: dma-apbx@80024000 {
17 compatible = "fsl,imx28-dma-apbx"; 35 compatible = "fsl,imx28-dma-apbx";
18 reg = <0x80024000 2000>; 36 reg = <0x80024000 0x2000>;
37 interrupts = <78 79 66 0
38 80 81 68 69
39 70 71 72 73
40 74 75 76 77>;
41 interrupt-names = "auart4-rx", "aurat4-tx", "spdif-tx", "empty",
42 "saif0", "saif1", "i2c0", "i2c1",
43 "auart0-rx", "auart0-tx", "auart1-rx", "auart1-tx",
44 "auart2-rx", "auart2-tx", "auart3-rx", "auart3-tx";
45 #dma-cells = <1>;
46 dma-channels = <16>;
47};
48
49DMA clients connected to the MXS DMA controller must use the format
50described in the dma.txt file.
51
52Examples:
53
54auart0: serial@8006a000 {
55 compatible = "fsl,imx28-auart", "fsl,imx23-auart";
56 reg = <0x8006a000 0x2000>;
57 interrupts = <112>;
58 dmas = <&dma_apbx 8>, <&dma_apbx 9>;
59 dma-names = "rx", "tx";
19}; 60};
diff --git a/Documentation/devicetree/bindings/drm/exynos/g2d.txt b/Documentation/devicetree/bindings/drm/exynos/g2d.txt
deleted file mode 100644
index 1eb124d35a99..000000000000
--- a/Documentation/devicetree/bindings/drm/exynos/g2d.txt
+++ /dev/null
@@ -1,22 +0,0 @@
1Samsung 2D Graphic Accelerator using DRM frame work
2
3Samsung FIMG2D is a graphics 2D accelerator which supports Bit Block Transfer.
4We set the drawing-context registers for configuring rendering parameters and
5then start rendering.
6This driver is for SOCs which contain G2D IPs with version 4.1.
7
8Required properties:
9 -compatible:
10 should be "samsung,exynos-g2d-41".
11 -reg:
12 physical base address of the controller and length
13 of memory mapped region.
14 -interrupts:
15 interrupt combiner values.
16
17Example:
18 g2d {
19 compatible = "samsung,exynos-g2d-41";
20 reg = <0x10850000 0x1000>;
21 interrupts = <0 91 0>;
22 };
diff --git a/Documentation/devicetree/bindings/fb/mxsfb.txt b/Documentation/devicetree/bindings/fb/mxsfb.txt
index b41e5e52a676..96ec5179c8a0 100644
--- a/Documentation/devicetree/bindings/fb/mxsfb.txt
+++ b/Documentation/devicetree/bindings/fb/mxsfb.txt
@@ -5,9 +5,16 @@ Required properties:
5 imx23 and imx28. 5 imx23 and imx28.
6- reg: Address and length of the register set for lcdif 6- reg: Address and length of the register set for lcdif
7- interrupts: Should contain lcdif interrupts 7- interrupts: Should contain lcdif interrupts
8- display : phandle to display node (see below for details)
8 9
9Optional properties: 10* display node
10- panel-enable-gpios : Should specify the gpio for panel enable 11
12Required properties:
13- bits-per-pixel : <16> for RGB565, <32> for RGB888/666.
14- bus-width : number of data lines. Could be <8>, <16>, <18> or <24>.
15
16Required sub-node:
17- display-timings : Refer to binding doc display-timing.txt for details.
11 18
12Examples: 19Examples:
13 20
@@ -15,5 +22,28 @@ lcdif@80030000 {
15 compatible = "fsl,imx28-lcdif"; 22 compatible = "fsl,imx28-lcdif";
16 reg = <0x80030000 2000>; 23 reg = <0x80030000 2000>;
17 interrupts = <38 86>; 24 interrupts = <38 86>;
18 panel-enable-gpios = <&gpio3 30 0>; 25
26 display: display {
27 bits-per-pixel = <32>;
28 bus-width = <24>;
29
30 display-timings {
31 native-mode = <&timing0>;
32 timing0: timing0 {
33 clock-frequency = <33500000>;
34 hactive = <800>;
35 vactive = <480>;
36 hfront-porch = <164>;
37 hback-porch = <89>;
38 hsync-len = <10>;
39 vback-porch = <23>;
40 vfront-porch = <10>;
41 vsync-len = <10>;
42 hsync-active = <0>;
43 vsync-active = <0>;
44 de-active = <1>;
45 pixelclk-active = <0>;
46 };
47 };
48 };
19}; 49};
diff --git a/Documentation/devicetree/bindings/gpio/gpio-grgpio.txt b/Documentation/devicetree/bindings/gpio/gpio-grgpio.txt
new file mode 100644
index 000000000000..e466598105fc
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-grgpio.txt
@@ -0,0 +1,26 @@
1Aeroflex Gaisler GRGPIO General Purpose I/O cores.
2
3The GRGPIO GPIO core is available in the GRLIB VHDL IP core library.
4
5Note: In the ordinary environment for the GRGPIO core, a Leon SPARC system,
6these properties are built from information in the AMBA plug&play.
7
8Required properties:
9
10- name : Should be "GAISLER_GPIO" or "01_01a"
11
12- reg : Address and length of the register set for the device
13
14- interrupts : Interrupt numbers for this device
15
16Optional properties:
17
18- nbits : The number of gpio lines. If not present driver assumes 32 lines.
19
20- irqmap : An array with an index for each gpio line. An index is either a valid
21 index into the interrupts property array, or 0xffffffff that indicates
22 no irq for that line. Driver provides no interrupt support if not
23 present.
24
25For further information look in the documentation for the GLIB IP core library:
26http://www.gaisler.com/products/grlib/grip.pdf
diff --git a/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt b/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt
new file mode 100644
index 000000000000..629d0ef17308
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt
@@ -0,0 +1,47 @@
1Microchip MCP2308/MCP23S08/MCP23017/MCP23S17 driver for
28-/16-bit I/O expander with serial interface (I2C/SPI)
3
4Required properties:
5- compatible : Should be
6 - "mcp,mcp23s08" for 8 GPIO SPI version
7 - "mcp,mcp23s17" for 16 GPIO SPI version
8 - "mcp,mcp23008" for 8 GPIO I2C version or
9 - "mcp,mcp23017" for 16 GPIO I2C version of the chip
10- #gpio-cells : Should be two.
11 - first cell is the pin number
12 - second cell is used to specify flags. Flags are currently unused.
13- gpio-controller : Marks the device node as a GPIO controller.
14- reg : For an address on its bus. I2C uses this a the I2C address of the chip.
15 SPI uses this to specify the chipselect line which the chip is
16 connected to. The driver and the SPI variant of the chip support
17 multiple chips on the same chipselect. Have a look at
18 mcp,spi-present-mask below.
19
20Required device specific properties (only for SPI chips):
21- mcp,spi-present-mask : This is a present flag, that makes only sense for SPI
22 chips - as the name suggests. Multiple SPI chips can share the same
23 SPI chipselect. Set a bit in bit0-7 in this mask to 1 if there is a
24 chip connected with the corresponding spi address set. For example if
25 you have a chip with address 3 connected, you have to set bit3 to 1,
26 which is 0x08. mcp23s08 chip variant only supports bits 0-3. It is not
27 possible to mix mcp23s08 and mcp23s17 on the same chipselect. Set at
28 least one bit to 1 for SPI chips.
29- spi-max-frequency = The maximum frequency this chip is able to handle
30
31Example I2C:
32gpiom1: gpio@20 {
33 compatible = "mcp,mcp23017";
34 gpio-controller;
35 #gpio-cells = <2>;
36 reg = <0x20>;
37};
38
39Example SPI:
40gpiom1: gpio@0 {
41 compatible = "mcp,mcp23s17";
42 gpio-controller;
43 #gpio-cells = <2>;
44 spi-present-mask = <0x01>;
45 reg = <0>;
46 spi-max-frequency = <1000000>;
47};
diff --git a/Documentation/devicetree/bindings/gpio/gpio-omap.txt b/Documentation/devicetree/bindings/gpio/gpio-omap.txt
index bff51a2fee1e..8d950522e7fa 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-omap.txt
+++ b/Documentation/devicetree/bindings/gpio/gpio-omap.txt
@@ -5,12 +5,12 @@ Required properties:
5 - "ti,omap2-gpio" for OMAP2 controllers 5 - "ti,omap2-gpio" for OMAP2 controllers
6 - "ti,omap3-gpio" for OMAP3 controllers 6 - "ti,omap3-gpio" for OMAP3 controllers
7 - "ti,omap4-gpio" for OMAP4 controllers 7 - "ti,omap4-gpio" for OMAP4 controllers
8- gpio-controller : Marks the device node as a GPIO controller.
8- #gpio-cells : Should be two. 9- #gpio-cells : Should be two.
9 - first cell is the pin number 10 - first cell is the pin number
10 - second cell is used to specify optional parameters (unused) 11 - second cell is used to specify optional parameters (unused)
11- gpio-controller : Marks the device node as a GPIO controller. 12- interrupt-controller: Mark the device node as an interrupt controller.
12- #interrupt-cells : Should be 2. 13- #interrupt-cells : Should be 2.
13- interrupt-controller: Mark the device node as an interrupt controller
14 The first cell is the GPIO number. 14 The first cell is the GPIO number.
15 The second cell is used to specify flags: 15 The second cell is used to specify flags:
16 bits[3:0] trigger type and level flags: 16 bits[3:0] trigger type and level flags:
@@ -20,8 +20,11 @@ Required properties:
20 8 = active low level-sensitive. 20 8 = active low level-sensitive.
21 21
22OMAP specific properties: 22OMAP specific properties:
23- ti,hwmods: Name of the hwmod associated to the GPIO: 23- ti,hwmods: Name of the hwmod associated to the GPIO:
24 "gpio<X>", <X> being the 1-based instance number from the HW spec 24 "gpio<X>", <X> being the 1-based instance number
25 from the HW spec.
26- ti,gpio-always-on: Indicates if a GPIO bank is always powered and
27 so will never lose its logic state.
25 28
26 29
27Example: 30Example:
@@ -29,8 +32,8 @@ Example:
29gpio4: gpio4 { 32gpio4: gpio4 {
30 compatible = "ti,omap4-gpio"; 33 compatible = "ti,omap4-gpio";
31 ti,hwmods = "gpio4"; 34 ti,hwmods = "gpio4";
32 #gpio-cells = <2>;
33 gpio-controller; 35 gpio-controller;
34 #interrupt-cells = <2>; 36 #gpio-cells = <2>;
35 interrupt-controller; 37 interrupt-controller;
38 #interrupt-cells = <2>;
36}; 39};
diff --git a/Documentation/devicetree/bindings/gpio/gpio-vt8500.txt b/Documentation/devicetree/bindings/gpio/gpio-vt8500.txt
deleted file mode 100644
index f4dc5233167e..000000000000
--- a/Documentation/devicetree/bindings/gpio/gpio-vt8500.txt
+++ /dev/null
@@ -1,24 +0,0 @@
1VIA/Wondermedia VT8500 GPIO Controller
2-----------------------------------------------------
3
4Required properties:
5- compatible : "via,vt8500-gpio", "wm,wm8505-gpio"
6 or "wm,wm8650-gpio" depending on your SoC
7- reg : Should contain 1 register range (address and length)
8- #gpio-cells : should be <3>.
9 1) bank
10 2) pin number
11 3) flags - should be 0
12
13Example:
14
15 gpio: gpio-controller@d8110000 {
16 compatible = "via,vt8500-gpio";
17 gpio-controller;
18 reg = <0xd8110000 0x10000>;
19 #gpio-cells = <3>;
20 };
21
22 vibrate {
23 gpios = <&gpio 0 1 0>; /* Bank 0, Pin 1, No flags */
24 };
diff --git a/Documentation/devicetree/bindings/gpio/gpio.txt b/Documentation/devicetree/bindings/gpio/gpio.txt
index a33628759d36..d933af370697 100644
--- a/Documentation/devicetree/bindings/gpio/gpio.txt
+++ b/Documentation/devicetree/bindings/gpio/gpio.txt
@@ -98,7 +98,7 @@ announce the pinrange to the pin ctrl subsystem. For example,
98 compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank"; 98 compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank";
99 reg = <0x1460 0x18>; 99 reg = <0x1460 0x18>;
100 gpio-controller; 100 gpio-controller;
101 gpio-ranges = <&pinctrl1 20 10>, <&pinctrl2 50 20>; 101 gpio-ranges = <&pinctrl1 0 20 10>, <&pinctrl2 10 50 20>;
102 102
103 } 103 }
104 104
@@ -107,8 +107,8 @@ where,
107 107
108 Next values specify the base pin and number of pins for the range 108 Next values specify the base pin and number of pins for the range
109 handled by 'qe_pio_e' gpio. In the given example from base pin 20 to 109 handled by 'qe_pio_e' gpio. In the given example from base pin 20 to
110 pin 29 under pinctrl1 and pin 50 to pin 69 under pinctrl2 is handled 110 pin 29 under pinctrl1 with gpio offset 0 and pin 50 to pin 69 under
111 by this gpio controller. 111 pinctrl2 with gpio offset 10 is handled by this gpio controller.
112 112
113The pinctrl node must have "#gpio-range-cells" property to show number of 113The pinctrl node must have "#gpio-range-cells" property to show number of
114arguments to pass with phandle from gpio controllers node. 114arguments to pass with phandle from gpio controllers node.
diff --git a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt b/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
index e13787498bcf..9b3f1d4a88d6 100644
--- a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
+++ b/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
@@ -1,7 +1,10 @@
1* Marvell PXA GPIO controller 1* Marvell PXA GPIO controller
2 2
3Required properties: 3Required properties:
4- compatible : Should be "mrvl,pxa-gpio" or "mrvl,mmp-gpio" 4- compatible : Should be "intel,pxa25x-gpio", "intel,pxa26x-gpio",
5 "intel,pxa27x-gpio", "intel,pxa3xx-gpio",
6 "marvell,pxa93x-gpio", "marvell,mmp-gpio" or
7 "marvell,mmp2-gpio".
5- reg : Address and length of the register set for the device 8- reg : Address and length of the register set for the device
6- interrupts : Should be the port interrupt shared by all gpio pins. 9- interrupts : Should be the port interrupt shared by all gpio pins.
7 There're three gpio interrupts in arch-pxa, and they're gpio0, 10 There're three gpio interrupts in arch-pxa, and they're gpio0,
@@ -18,7 +21,7 @@ Required properties:
18Example: 21Example:
19 22
20 gpio: gpio@d4019000 { 23 gpio: gpio@d4019000 {
21 compatible = "mrvl,mmp-gpio"; 24 compatible = "marvell,mmp-gpio";
22 reg = <0xd4019000 0x1000>; 25 reg = <0xd4019000 0x1000>;
23 interrupts = <49>; 26 interrupts = <49>;
24 interrupt-name = "gpio_mux"; 27 interrupt-name = "gpio_mux";
diff --git a/Documentation/devicetree/bindings/gpu/samsung-g2d.txt b/Documentation/devicetree/bindings/gpu/samsung-g2d.txt
new file mode 100644
index 000000000000..2b14a940eb75
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpu/samsung-g2d.txt
@@ -0,0 +1,20 @@
1* Samsung 2D Graphics Accelerator
2
3Required properties:
4 - compatible : value should be one among the following:
5 (a) "samsung,s5pv210-g2d" for G2D IP present in S5PV210 & Exynos4210 SoC
6 (b) "samsung,exynos4212-g2d" for G2D IP present in Exynos4x12 SoCs
7 (c) "samsung,exynos5250-g2d" for G2D IP present in Exynos5250 SoC
8
9 - reg : Physical base address of the IP registers and length of memory
10 mapped region.
11
12 - interrupts : G2D interrupt number to the CPU.
13
14Example:
15 g2d@12800000 {
16 compatible = "samsung,s5pv210-g2d";
17 reg = <0x12800000 0x1000>;
18 interrupts = <0 89 0>;
19 status = "disabled";
20 };
diff --git a/Documentation/devicetree/bindings/hwmon/ntc_thermistor.txt b/Documentation/devicetree/bindings/hwmon/ntc_thermistor.txt
new file mode 100644
index 000000000000..c6f66674f19c
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/ntc_thermistor.txt
@@ -0,0 +1,29 @@
1NTC Thermistor hwmon sensors
2-------------------------------
3
4Requires node properties:
5- "compatible" value : one of
6 "ntc,ncp15wb473"
7 "ntc,ncp18wb473"
8 "ntc,ncp21wb473"
9 "ntc,ncp03wb473"
10 "ntc,ncp15wl333"
11- "pullup-uv" Pull up voltage in micro volts
12- "pullup-ohm" Pull up resistor value in ohms
13- "pulldown-ohm" Pull down resistor value in ohms
14- "connected-positive" Always ON, If not specified.
15 Status change is possible.
16- "io-channels" Channel node of ADC to be used for
17 conversion.
18
19Read more about iio bindings at
20 Documentation/devicetree/bindings/iio/iio-bindings.txt
21
22Example:
23 ncp15wb473@0 {
24 compatible = "ntc,ncp15wb473";
25 pullup-uv = <1800000>;
26 pullup-ohm = <47000>;
27 pulldown-ohm = <0>;
28 io-channels = <&adc 3>;
29 };
diff --git a/Documentation/devicetree/bindings/hwrng/timeriomem_rng.txt b/Documentation/devicetree/bindings/hwrng/timeriomem_rng.txt
new file mode 100644
index 000000000000..6616d15866a3
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwrng/timeriomem_rng.txt
@@ -0,0 +1,18 @@
1HWRNG support for the timeriomem_rng driver
2
3Required properties:
4- compatible : "timeriomem_rng"
5- reg : base address to sample from
6- period : wait time in microseconds to use between samples
7
8N.B. currently 'reg' must be four bytes wide and aligned
9
10Example:
11
12hwrng@44 {
13 #address-cells = <1>;
14 #size-cells = <1>;
15 compatible = "timeriomem_rng";
16 reg = <0x44 0x04>;
17 period = <1000000>;
18};
diff --git a/Documentation/devicetree/bindings/i2c/i2c-arb-gpio-challenge.txt b/Documentation/devicetree/bindings/i2c/i2c-arb-gpio-challenge.txt
new file mode 100644
index 000000000000..1ac8ea8ade1d
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/i2c-arb-gpio-challenge.txt
@@ -0,0 +1,80 @@
1GPIO-based I2C Arbitration Using a Challenge & Response Mechanism
2=================================================================
3This uses GPIO lines and a challenge & response mechanism to arbitrate who is
4the master of an I2C bus in a multimaster situation.
5
6In many cases using GPIOs to arbitrate is not needed and a design can use
7the standard I2C multi-master rules. Using GPIOs is generally useful in
8the case where there is a device on the bus that has errata and/or bugs
9that makes standard multimaster mode not feasible.
10
11
12Algorithm:
13
14All masters on the bus have a 'bus claim' line which is an output that the
15others can see. These are all active low with pull-ups enabled. We'll
16describe these lines as:
17
18- OUR_CLAIM: output from us signaling to other hosts that we want the bus
19- THEIR_CLAIMS: output from others signaling that they want the bus
20
21The basic algorithm is to assert your line when you want the bus, then make
22sure that the other side doesn't want it also. A detailed explanation is best
23done with an example.
24
25Let's say we want to claim the bus. We:
261. Assert OUR_CLAIM.
272. Waits a little bit for the other sides to notice (slew time, say 10
28 microseconds).
293. Check THEIR_CLAIMS. If none are asserted then the we have the bus and we are
30 done.
314. Otherwise, wait for a few milliseconds and see if THEIR_CLAIMS are released.
325. If not, back off, release the claim and wait for a few more milliseconds.
336. Go back to 1 (until retry time has expired).
34
35
36Required properties:
37- compatible: i2c-arb-gpio-challenge
38- our-claim-gpio: The GPIO that we use to claim the bus.
39- their-claim-gpios: The GPIOs that the other sides use to claim the bus.
40 Note that some implementations may only support a single other master.
41- Standard I2C mux properties. See mux.txt in this directory.
42- Single I2C child bus node at reg 0. See mux.txt in this directory.
43
44Optional properties:
45- slew-delay-us: microseconds to wait for a GPIO to go high. Default is 10 us.
46- wait-retry-us: we'll attempt another claim after this many microseconds.
47 Default is 3000 us.
48- wait-free-us: we'll give up after this many microseconds. Default is 50000 us.
49
50
51Example:
52 i2c@12CA0000 {
53 compatible = "acme,some-i2c-device";
54 #address-cells = <1>;
55 #size-cells = <0>;
56 };
57
58 i2c-arbitrator {
59 compatible = "i2c-arb-gpio-challenge";
60 #address-cells = <1>;
61 #size-cells = <0>;
62
63 i2c-parent = <&{/i2c@12CA0000}>;
64
65 our-claim-gpio = <&gpf0 3 1>;
66 their-claim-gpios = <&gpe0 4 1>;
67 slew-delay-us = <10>;
68 wait-retry-us = <3000>;
69 wait-free-us = <50000>;
70
71 i2c@0 {
72 reg = <0>;
73 #address-cells = <1>;
74 #size-cells = <0>;
75
76 i2c@52 {
77 // Normal I2C device
78 };
79 };
80 };
diff --git a/Documentation/devicetree/bindings/i2c/i2c-mxs.txt b/Documentation/devicetree/bindings/i2c/i2c-mxs.txt
index 7a3fe9e5f4cb..4e1c8ac01eba 100644
--- a/Documentation/devicetree/bindings/i2c/i2c-mxs.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-mxs.txt
@@ -3,10 +3,13 @@
3Required properties: 3Required properties:
4- compatible: Should be "fsl,<chip>-i2c" 4- compatible: Should be "fsl,<chip>-i2c"
5- reg: Should contain registers location and length 5- reg: Should contain registers location and length
6- interrupts: Should contain ERROR and DMA interrupts 6- interrupts: Should contain ERROR interrupt number
7- clock-frequency: Desired I2C bus clock frequency in Hz. 7- clock-frequency: Desired I2C bus clock frequency in Hz.
8 Only 100000Hz and 400000Hz modes are supported. 8 Only 100000Hz and 400000Hz modes are supported.
9- fsl,i2c-dma-channel: APBX DMA channel for the I2C 9- dmas: DMA specifier, consisting of a phandle to DMA controller node
10 and I2C DMA channel ID.
11 Refer to dma.txt and fsl-mxs-dma.txt for details.
12- dma-names: Must be "rx-tx".
10 13
11Examples: 14Examples:
12 15
@@ -15,7 +18,8 @@ i2c0: i2c@80058000 {
15 #size-cells = <0>; 18 #size-cells = <0>;
16 compatible = "fsl,imx28-i2c"; 19 compatible = "fsl,imx28-i2c";
17 reg = <0x80058000 2000>; 20 reg = <0x80058000 2000>;
18 interrupts = <111 68>; 21 interrupts = <111>;
19 clock-frequency = <100000>; 22 clock-frequency = <100000>;
20 fsl,i2c-dma-channel = <6>; 23 dmas = <&dma_apbx 6>;
24 dma-names = "rx-tx";
21}; 25};
diff --git a/Documentation/devicetree/bindings/i2c/i2c-s3c2410.txt b/Documentation/devicetree/bindings/i2c/i2c-s3c2410.txt
index f98d4c5b5cca..296eb4536129 100644
--- a/Documentation/devicetree/bindings/i2c/i2c-s3c2410.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-s3c2410.txt
@@ -26,7 +26,7 @@ Required for all cases except "samsung,s3c2440-hdmiphy-i2c":
26 - pinctrl-names: Should contain only one value - "default". 26 - pinctrl-names: Should contain only one value - "default".
27 27
28Optional properties: 28Optional properties:
29 - samsung,i2c-slave-addr: Slave address in multi-master enviroment. If not 29 - samsung,i2c-slave-addr: Slave address in multi-master environment. If not
30 specified, default value is 0. 30 specified, default value is 0.
31 - samsung,i2c-max-bus-freq: Desired frequency in Hz of the bus. If not 31 - samsung,i2c-max-bus-freq: Desired frequency in Hz of the bus. If not
32 specified, the default value in Hz is 100000. 32 specified, the default value in Hz is 100000.
diff --git a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt
new file mode 100644
index 000000000000..ef77cc7a0e46
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt
@@ -0,0 +1,60 @@
1NVIDIA Tegra20/Tegra30/Tegra114 I2C controller driver.
2
3Required properties:
4- compatible : should be:
5 "nvidia,tegra114-i2c"
6 "nvidia,tegra30-i2c"
7 "nvidia,tegra20-i2c"
8 "nvidia,tegra20-i2c-dvc"
9 Details of compatible are as follows:
10 nvidia,tegra20-i2c-dvc: Tegra20 has specific I2C controller called as DVC I2C
11 controller. This only support master mode of I2C communication. Register
12 interface/offset and interrupts handling are different than generic I2C
13 controller. Driver of DVC I2C controller is only compatible with
14 "nvidia,tegra20-i2c-dvc".
15 nvidia,tegra20-i2c: Tegra20 has 4 generic I2C controller. This can support
16 master and slave mode of I2C communication. The i2c-tegra driver only
17 support master mode of I2C communication. Driver of I2C controller is
18 only compatible with "nvidia,tegra20-i2c".
19 nvidia,tegra30-i2c: Tegra30 has 5 generic I2C controller. This controller is
20 very much similar to Tegra20 I2C controller with additional feature:
21 Continue Transfer Support. This feature helps to implement M_NO_START
22 as per I2C core API transfer flags. Driver of I2C controller is
23 compatible with "nvidia,tegra30-i2c" to enable the continue transfer
24 support. This is also compatible with "nvidia,tegra20-i2c" without
25 continue transfer support.
26 nvidia,tegra114-i2c: Tegra114 has 5 generic I2C controller. This controller is
27 very much similar to Tegra30 I2C controller with some hardware
28 modification:
29 - Tegra30/Tegra20 I2C controller has 2 clock source called div-clk and
30 fast-clk. Tegra114 has only one clock source called as div-clk and
31 hence clock mechanism is changed in I2C controller.
32 - Tegra30/Tegra20 I2C controller has enabled per packet transfer by
33 default and there is no way to disable it. Tegra114 has this
34 interrupt disable by default and SW need to enable explicitly.
35 Due to above changes, Tegra114 I2C driver makes incompatible with
36 previous hardware driver. Hence, tegra114 I2C controller is compatible
37 with "nvidia,tegra114-i2c".
38- reg: Should contain I2C controller registers physical address and length.
39- interrupts: Should contain I2C controller interrupts.
40- address-cells: Address cells for I2C device address.
41- size-cells: Size of the I2C device address.
42- clocks: Clock ID as per
43 Documentation/devicetree/bindings/clock/tegra<chip-id>.txt
44 for I2C controller.
45- clock-names: Name of the clock:
46 Tegra20/Tegra30 I2C controller: "div-clk and "fast-clk".
47 Tegra114 I2C controller: "div-clk".
48
49Example:
50
51 i2c@7000c000 {
52 compatible = "nvidia,tegra20-i2c";
53 reg = <0x7000c000 0x100>;
54 interrupts = <0 38 0x04>;
55 #address-cells = <1>;
56 #size-cells = <0>;
57 clocks = <&tegra_car 12>, <&tegra_car 124>;
58 clock-names = "div-clk", "fast-clk";
59 status = "disabled";
60 };
diff --git a/Documentation/devicetree/bindings/i2c/trivial-devices.txt b/Documentation/devicetree/bindings/i2c/trivial-devices.txt
index 446859fcdca4..ad6a73852f08 100644
--- a/Documentation/devicetree/bindings/i2c/trivial-devices.txt
+++ b/Documentation/devicetree/bindings/i2c/trivial-devices.txt
@@ -35,6 +35,8 @@ fsl,mc13892 MC13892: Power Management Integrated Circuit (PMIC) for i.MX35/51
35fsl,mma8450 MMA8450Q: Xtrinsic Low-power, 3-axis Xtrinsic Accelerometer 35fsl,mma8450 MMA8450Q: Xtrinsic Low-power, 3-axis Xtrinsic Accelerometer
36fsl,mpr121 MPR121: Proximity Capacitive Touch Sensor Controller 36fsl,mpr121 MPR121: Proximity Capacitive Touch Sensor Controller
37fsl,sgtl5000 SGTL5000: Ultra Low-Power Audio Codec 37fsl,sgtl5000 SGTL5000: Ultra Low-Power Audio Codec
38infineon,slb9635tt Infineon SLB9635 (Soft-) I2C TPM (old protocol, max 100khz)
39infineon,slb9645tt Infineon SLB9645 I2C TPM (new protocol, max 400khz)
38maxim,ds1050 5 Bit Programmable, Pulse-Width Modulator 40maxim,ds1050 5 Bit Programmable, Pulse-Width Modulator
39maxim,max1237 Low-Power, 4-/12-Channel, 2-Wire Serial, 12-Bit ADCs 41maxim,max1237 Low-Power, 4-/12-Channel, 2-Wire Serial, 12-Bit ADCs
40maxim,max6625 9-Bit/12-Bit Temperature Sensors with I²C-Compatible Serial Interface 42maxim,max6625 9-Bit/12-Bit Temperature Sensors with I²C-Compatible Serial Interface
diff --git a/Documentation/devicetree/bindings/iio/iio-bindings.txt b/Documentation/devicetree/bindings/iio/iio-bindings.txt
new file mode 100644
index 000000000000..0b447d9ad196
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/iio-bindings.txt
@@ -0,0 +1,97 @@
1This binding is derived from clock bindings, and based on suggestions
2from Lars-Peter Clausen [1].
3
4Sources of IIO channels can be represented by any node in the device
5tree. Those nodes are designated as IIO providers. IIO consumer
6nodes use a phandle and IIO specifier pair to connect IIO provider
7outputs to IIO inputs. Similar to the gpio specifiers, an IIO
8specifier is an array of one or more cells identifying the IIO
9output on a device. The length of an IIO specifier is defined by the
10value of a #io-channel-cells property in the IIO provider node.
11
12[1] http://marc.info/?l=linux-iio&m=135902119507483&w=2
13
14==IIO providers==
15
16Required properties:
17#io-channel-cells: Number of cells in an IIO specifier; Typically 0 for nodes
18 with a single IIO output and 1 for nodes with multiple
19 IIO outputs.
20
21Example for a simple configuration with no trigger:
22
23 adc: voltage-sensor@35 {
24 compatible = "maxim,max1139";
25 reg = <0x35>;
26 #io-channel-cells = <1>;
27 };
28
29Example for a configuration with trigger:
30
31 adc@35 {
32 compatible = "some-vendor,some-adc";
33 reg = <0x35>;
34
35 adc1: iio-device@0 {
36 #io-channel-cells = <1>;
37 /* other properties */
38 };
39 adc2: iio-device@1 {
40 #io-channel-cells = <1>;
41 /* other properties */
42 };
43 };
44
45==IIO consumers==
46
47Required properties:
48io-channels: List of phandle and IIO specifier pairs, one pair
49 for each IIO input to the device. Note: if the
50 IIO provider specifies '0' for #io-channel-cells,
51 then only the phandle portion of the pair will appear.
52
53Optional properties:
54io-channel-names:
55 List of IIO input name strings sorted in the same
56 order as the io-channels property. Consumers drivers
57 will use io-channel-names to match IIO input names
58 with IIO specifiers.
59io-channel-ranges:
60 Empty property indicating that child nodes can inherit named
61 IIO channels from this node. Useful for bus nodes to provide
62 and IIO channel to their children.
63
64For example:
65
66 device {
67 io-channels = <&adc 1>, <&ref 0>;
68 io-channel-names = "vcc", "vdd";
69 };
70
71This represents a device with two IIO inputs, named "vcc" and "vdd".
72The vcc channel is connected to output 1 of the &adc device, and the
73vdd channel is connected to output 0 of the &ref device.
74
75==Example==
76
77 adc: max1139@35 {
78 compatible = "maxim,max1139";
79 reg = <0x35>;
80 #io-channel-cells = <1>;
81 };
82
83 ...
84
85 iio_hwmon {
86 compatible = "iio-hwmon";
87 io-channels = <&adc 0>, <&adc 1>, <&adc 2>,
88 <&adc 3>, <&adc 4>, <&adc 5>,
89 <&adc 6>, <&adc 7>, <&adc 8>,
90 <&adc 9>;
91 };
92
93 some_consumer {
94 compatible = "some-consumer";
95 io-channels = <&adc 10>, <&adc 11>;
96 io-channel-names = "adc1", "adc2";
97 };
diff --git a/Documentation/devicetree/bindings/input/cros-ec-keyb.txt b/Documentation/devicetree/bindings/input/cros-ec-keyb.txt
new file mode 100644
index 000000000000..0f6355ce39b5
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/cros-ec-keyb.txt
@@ -0,0 +1,72 @@
1ChromeOS EC Keyboard
2
3Google's ChromeOS EC Keyboard is a simple matrix keyboard implemented on
4a separate EC (Embedded Controller) device. It provides a message for reading
5key scans from the EC. These are then converted into keycodes for processing
6by the kernel.
7
8This binding is based on matrix-keymap.txt and extends/modifies it as follows:
9
10Required properties:
11- compatible: "google,cros-ec-keyb"
12
13Optional properties:
14- google,needs-ghost-filter: True to enable a ghost filter for the matrix
15keyboard. This is recommended if the EC does not have its own logic or
16hardware for this.
17
18
19Example:
20
21cros-ec-keyb {
22 compatible = "google,cros-ec-keyb";
23 keypad,num-rows = <8>;
24 keypad,num-columns = <13>;
25 google,needs-ghost-filter;
26 /*
27 * Keymap entries take the form of 0xRRCCKKKK where
28 * RR=Row CC=Column KKKK=Key Code
29 * The values below are for a US keyboard layout and
30 * are taken from the Linux driver. Note that the
31 * 102ND key is not used for US keyboards.
32 */
33 linux,keymap = <
34 /* CAPSLCK F1 B F10 */
35 0x0001003a 0x0002003b 0x00030030 0x00040044
36 /* N = R_ALT ESC */
37 0x00060031 0x0008000d 0x000a0064 0x01010001
38 /* F4 G F7 H */
39 0x0102003e 0x01030022 0x01040041 0x01060023
40 /* ' F9 BKSPACE L_CTRL */
41 0x01080028 0x01090043 0x010b000e 0x0200001d
42 /* TAB F3 T F6 */
43 0x0201000f 0x0202003d 0x02030014 0x02040040
44 /* ] Y 102ND [ */
45 0x0205001b 0x02060015 0x02070056 0x0208001a
46 /* F8 GRAVE F2 5 */
47 0x02090042 0x03010029 0x0302003c 0x03030006
48 /* F5 6 - \ */
49 0x0304003f 0x03060007 0x0308000c 0x030b002b
50 /* R_CTRL A D F */
51 0x04000061 0x0401001e 0x04020020 0x04030021
52 /* S K J ; */
53 0x0404001f 0x04050025 0x04060024 0x04080027
54 /* L ENTER Z C */
55 0x04090026 0x040b001c 0x0501002c 0x0502002e
56 /* V X , M */
57 0x0503002f 0x0504002d 0x05050033 0x05060032
58 /* L_SHIFT / . SPACE */
59 0x0507002a 0x05080035 0x05090034 0x050B0039
60 /* 1 3 4 2 */
61 0x06010002 0x06020004 0x06030005 0x06040003
62 /* 8 7 0 9 */
63 0x06050009 0x06060008 0x0608000b 0x0609000a
64 /* L_ALT DOWN RIGHT Q */
65 0x060a0038 0x060b006c 0x060c006a 0x07010010
66 /* E R W I */
67 0x07020012 0x07030013 0x07040011 0x07050017
68 /* U R_SHIFT P O */
69 0x07060016 0x07070036 0x07080019 0x07090018
70 /* UP LEFT */
71 0x070b0067 0x070c0069>;
72};
diff --git a/Documentation/devicetree/bindings/input/ps2keyb-mouse-apbps2.txt b/Documentation/devicetree/bindings/input/ps2keyb-mouse-apbps2.txt
new file mode 100644
index 000000000000..3029c5694cf6
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/ps2keyb-mouse-apbps2.txt
@@ -0,0 +1,16 @@
1Aeroflex Gaisler APBPS2 PS/2 Core, supporting Keyboard or Mouse.
2
3The APBPS2 PS/2 core is available in the GRLIB VHDL IP core library.
4
5Note: In the ordinary environment for the APBPS2 core, a LEON SPARC system,
6these properties are built from information in the AMBA plug&play and from
7bootloader settings.
8
9Required properties:
10
11- name : Should be "GAISLER_APBPS2" or "01_060"
12- reg : Address and length of the register set for the device
13- interrupts : Interrupt numbers for this device
14
15For further information look in the documentation for the GLIB IP core library:
16http://www.gaisler.com/products/grlib/grip.pdf
diff --git a/Documentation/devicetree/bindings/input/touchscreen/auo_pixcir_ts.txt b/Documentation/devicetree/bindings/input/touchscreen/auo_pixcir_ts.txt
new file mode 100644
index 000000000000..f40f21c642b9
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/touchscreen/auo_pixcir_ts.txt
@@ -0,0 +1,30 @@
1* AUO in-cell touchscreen controller using Pixcir sensors
2
3Required properties:
4- compatible: must be "auo,auo_pixcir_ts"
5- reg: I2C address of the chip
6- interrupts: interrupt to which the chip is connected
7- gpios: gpios the chip is connected to
8 first one is the interrupt gpio and second one the reset gpio
9- x-size: horizontal resolution of touchscreen
10- y-size: vertical resolution of touchscreen
11
12Example:
13
14 i2c@00000000 {
15 /* ... */
16
17 auo_pixcir_ts@5c {
18 compatible = "auo,auo_pixcir_ts";
19 reg = <0x5c>;
20 interrupts = <2 0>;
21
22 gpios = <&gpf 2 0 2>, /* INT */
23 <&gpf 5 1 0>; /* RST */
24
25 x-size = <800>;
26 y-size = <600>;
27 };
28
29 /* ... */
30 };
diff --git a/Documentation/devicetree/bindings/input/touchscreen/sitronix-st1232.txt b/Documentation/devicetree/bindings/input/touchscreen/sitronix-st1232.txt
new file mode 100644
index 000000000000..64ad48b824a2
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/touchscreen/sitronix-st1232.txt
@@ -0,0 +1,24 @@
1* Sitronix st1232 touchscreen controller
2
3Required properties:
4- compatible: must be "sitronix,st1232"
5- reg: I2C address of the chip
6- interrupts: interrupt to which the chip is connected
7
8Optional properties:
9- gpios: a phandle to the reset GPIO
10
11Example:
12
13 i2c@00000000 {
14 /* ... */
15
16 touchscreen@55 {
17 compatible = "sitronix,st1232";
18 reg = <0x55>;
19 interrupts = <2 0>;
20 gpios = <&gpio1 166 0>;
21 };
22
23 /* ... */
24 };
diff --git a/Documentation/devicetree/bindings/interrupt-controller/allwinner,sunxi-ic.txt b/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt
index 7f9fb85f5456..e7f4dc14eff2 100644
--- a/Documentation/devicetree/bindings/interrupt-controller/allwinner,sunxi-ic.txt
+++ b/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt
@@ -2,7 +2,7 @@ Allwinner Sunxi Interrupt Controller
2 2
3Required properties: 3Required properties:
4 4
5- compatible : should be "allwinner,sunxi-ic" 5- compatible : should be "allwinner,sun4i-ic"
6- reg : Specifies base physical address and size of the registers. 6- reg : Specifies base physical address and size of the registers.
7- interrupt-controller : Identifies the node as an interrupt controller 7- interrupt-controller : Identifies the node as an interrupt controller
8- #interrupt-cells : Specifies the number of cells needed to encode an 8- #interrupt-cells : Specifies the number of cells needed to encode an
@@ -97,7 +97,7 @@ The interrupt sources are as follows:
97Example: 97Example:
98 98
99intc: interrupt-controller { 99intc: interrupt-controller {
100 compatible = "allwinner,sunxi-ic"; 100 compatible = "allwinner,sun4i-ic";
101 reg = <0x01c20400 0x400>; 101 reg = <0x01c20400 0x400>;
102 interrupt-controller; 102 interrupt-controller;
103 #interrupt-cells = <2>; 103 #interrupt-cells = <2>;
diff --git a/Documentation/devicetree/bindings/interrupt-controller/samsung,s3c24xx-irq.txt b/Documentation/devicetree/bindings/interrupt-controller/samsung,s3c24xx-irq.txt
new file mode 100644
index 000000000000..c54c5a9a2a90
--- /dev/null
+++ b/Documentation/devicetree/bindings/interrupt-controller/samsung,s3c24xx-irq.txt
@@ -0,0 +1,53 @@
1Samsung S3C24XX Interrupt Controllers
2
3The S3C24XX SoCs contain a custom set of interrupt controllers providing a
4varying number of interrupt sources. The set consists of a main- and sub-
5controller and on newer SoCs even a second main controller.
6
7Required properties:
8- compatible: Compatible property value should be "samsung,s3c2410-irq"
9 for machines before s3c2416 and "samsung,s3c2416-irq" for s3c2416 and later.
10
11- reg: Physical base address of the controller and length of memory mapped
12 region.
13
14- interrupt-controller : Identifies the node as an interrupt controller
15
16- #interrupt-cells : Specifies the number of cells needed to encode an
17 interrupt source. The value shall be 4 and interrupt descriptor shall
18 have the following format:
19 <ctrl_num parent_irq ctrl_irq type>
20
21 ctrl_num contains the controller to use:
22 - 0 ... main controller
23 - 1 ... sub controller
24 - 2 ... second main controller on s3c2416 and s3c2450
25 parent_irq contains the parent bit in the main controller and will be
26 ignored in main controllers
27 ctrl_irq contains the interrupt bit of the controller
28 type contains the trigger type to use
29
30Example:
31
32 interrupt-controller@4a000000 {
33 compatible = "samsung,s3c2410-irq";
34 reg = <0x4a000000 0x100>;
35 interrupt-controller;
36 #interrupt-cells=<4>;
37 };
38
39 [...]
40
41 serial@50000000 {
42 compatible = "samsung,s3c2410-uart";
43 reg = <0x50000000 0x4000>;
44 interrupt-parent = <&subintc>;
45 interrupts = <1 28 0 4>, <1 28 1 4>;
46 };
47
48 rtc@57000000 {
49 compatible = "samsung,s3c2410-rtc";
50 reg = <0x57000000 0x100>;
51 interrupt-parent = <&intc>;
52 interrupts = <0 30 0 3>, <0 8 0 3>;
53 };
diff --git a/Documentation/devicetree/bindings/leds/tca6507.txt b/Documentation/devicetree/bindings/leds/tca6507.txt
index 2b6693b972fb..80ff3dfb1f32 100644
--- a/Documentation/devicetree/bindings/leds/tca6507.txt
+++ b/Documentation/devicetree/bindings/leds/tca6507.txt
@@ -1,4 +1,4 @@
1LEDs conected to tca6507 1LEDs connected to tca6507
2 2
3Required properties: 3Required properties:
4- compatible : should be : "ti,tca6507". 4- compatible : should be : "ti,tca6507".
diff --git a/Documentation/devicetree/bindings/marvell.txt b/Documentation/devicetree/bindings/marvell.txt
index f1533d91953a..f7a0da6b4022 100644
--- a/Documentation/devicetree/bindings/marvell.txt
+++ b/Documentation/devicetree/bindings/marvell.txt
@@ -115,6 +115,9 @@ prefixed with the string "marvell,", for Marvell Technology Group Ltd.
115 - compatible : "marvell,mv64360-eth-block" 115 - compatible : "marvell,mv64360-eth-block"
116 - reg : Offset and length of the register set for this block 116 - reg : Offset and length of the register set for this block
117 117
118 Optional properties:
119 - clocks : Phandle to the clock control device and gate bit
120
118 Example Discovery Ethernet block node: 121 Example Discovery Ethernet block node:
119 ethernet-block@2000 { 122 ethernet-block@2000 {
120 #address-cells = <1>; 123 #address-cells = <1>;
diff --git a/Documentation/devicetree/bindings/media/coda.txt b/Documentation/devicetree/bindings/media/coda.txt
new file mode 100644
index 000000000000..2865d04e4030
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/coda.txt
@@ -0,0 +1,30 @@
1Chips&Media Coda multi-standard codec IP
2========================================
3
4Coda codec IPs are present in i.MX SoCs in various versions,
5called VPU (Video Processing Unit).
6
7Required properties:
8- compatible : should be "fsl,<chip>-src" for i.MX SoCs:
9 (a) "fsl,imx27-vpu" for CodaDx6 present in i.MX27
10 (b) "fsl,imx53-vpu" for CODA7541 present in i.MX53
11 (c) "fsl,imx6q-vpu" for CODA960 present in i.MX6q
12- reg: should be register base and length as documented in the
13 SoC reference manual
14- interrupts : Should contain the VPU interrupt. For CODA960,
15 a second interrupt is needed for the MJPEG unit.
16- clocks : Should contain the ahb and per clocks, in the order
17 determined by the clock-names property.
18- clock-names : Should be "ahb", "per"
19- iram : phandle pointing to the SRAM device node
20
21Example:
22
23vpu: vpu@63ff4000 {
24 compatible = "fsl,imx53-vpu";
25 reg = <0x63ff4000 0x1000>;
26 interrupts = <9>;
27 clocks = <&clks 63>, <&clks 63>;
28 clock-names = "ahb", "per";
29 iram = <&ocram>;
30};
diff --git a/Documentation/devicetree/bindings/media/exynos-fimc-lite.txt b/Documentation/devicetree/bindings/media/exynos-fimc-lite.txt
new file mode 100644
index 000000000000..3f62adfb3e0b
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/exynos-fimc-lite.txt
@@ -0,0 +1,14 @@
1Exynos4x12/Exynos5 SoC series camera host interface (FIMC-LITE)
2
3Required properties:
4
5- compatible : should be "samsung,exynos4212-fimc" for Exynos4212 and
6 Exynos4412 SoCs;
7- reg : physical base address and size of the device memory mapped
8 registers;
9- interrupts : should contain FIMC-LITE interrupt;
10- clocks : FIMC LITE gate clock should be specified in this property.
11- clock-names : should contain "flite" entry.
12
13Each FIMC device should have an alias in the aliases node, in the form of
14fimc-lite<n>, where <n> is an integer specifying the IP block instance.
diff --git a/Documentation/devicetree/bindings/media/exynos4-fimc-is.txt b/Documentation/devicetree/bindings/media/exynos4-fimc-is.txt
new file mode 100644
index 000000000000..55c9ad6f9599
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/exynos4-fimc-is.txt
@@ -0,0 +1,49 @@
1Exynos4x12 SoC series Imaging Subsystem (FIMC-IS)
2
3The FIMC-IS is a subsystem for processing image signal from an image sensor.
4The Exynos4x12 SoC series FIMC-IS V1.5 comprises of a dedicated ARM Cortex-A5
5processor, ISP, DRC and FD IP blocks and peripheral devices such as UART, I2C
6and SPI bus controllers, PWM and ADC.
7
8fimc-is node
9------------
10
11Required properties:
12- compatible : should be "samsung,exynos4212-fimc-is" for Exynos4212 and
13 Exynos4412 SoCs;
14- reg : physical base address and length of the registers set;
15- interrupts : must contain two FIMC-IS interrupts, in order: ISP0, ISP1;
16- clocks : list of clock specifiers, corresponding to entries in
17 clock-names property;
18- clock-names : must contain "ppmuispx", "ppmuispx", "lite0", "lite1"
19 "mpll", "sysreg", "isp", "drc", "fd", "mcuisp", "uart",
20 "ispdiv0", "ispdiv1", "mcuispdiv0", "mcuispdiv1", "aclk200",
21 "div_aclk200", "aclk400mcuisp", "div_aclk400mcuisp" entries,
22 matching entries in the clocks property.
23pmu subnode
24-----------
25
26Required properties:
27 - reg : must contain PMU physical base address and size of the register set.
28
29The following are the FIMC-IS peripheral device nodes and can be specified
30either standalone or as the fimc-is node child nodes.
31
32i2c-isp (ISP I2C bus controller) nodes
33------------------------------------------
34
35Required properties:
36
37- compatible : should be "samsung,exynos4212-i2c-isp" for Exynos4212 and
38 Exynos4412 SoCs;
39- reg : physical base address and length of the registers set;
40- clocks : must contain gate clock specifier for this controller;
41- clock-names : must contain "i2c_isp" entry.
42
43For the above nodes it is required to specify a pinctrl state named "default",
44according to the pinctrl bindings defined in ../pinctrl/pinctrl-bindings.txt.
45
46Device tree nodes of the image sensors' controlled directly by the FIMC-IS
47firmware must be child nodes of their corresponding ISP I2C bus controller node.
48The data link of these image sensors must be specified using the common video
49interfaces bindings, defined in video-interfaces.txt.
diff --git a/Documentation/devicetree/bindings/media/s5p-mfc.txt b/Documentation/devicetree/bindings/media/s5p-mfc.txt
index 67ec3d4ccc7f..bf0182d8da25 100644
--- a/Documentation/devicetree/bindings/media/s5p-mfc.txt
+++ b/Documentation/devicetree/bindings/media/s5p-mfc.txt
@@ -21,3 +21,24 @@ Required properties:
21 21
22 - samsung,mfc-l : Base address of the second memory bank used by MFC 22 - samsung,mfc-l : Base address of the second memory bank used by MFC
23 for DMA contiguous memory allocation and its size. 23 for DMA contiguous memory allocation and its size.
24
25Optional properties:
26 - samsung,power-domain : power-domain property defined with a phandle
27 to respective power domain.
28
29Example:
30SoC specific DT entry:
31
32mfc: codec@13400000 {
33 compatible = "samsung,mfc-v5";
34 reg = <0x13400000 0x10000>;
35 interrupts = <0 94 0>;
36 samsung,power-domain = <&pd_mfc>;
37};
38
39Board specific DT entry:
40
41codec@13400000 {
42 samsung,mfc-r = <0x43000000 0x800000>;
43 samsung,mfc-l = <0x51000000 0x800000>;
44};
diff --git a/Documentation/devicetree/bindings/media/samsung-fimc.txt b/Documentation/devicetree/bindings/media/samsung-fimc.txt
new file mode 100644
index 000000000000..51c776b7f7a3
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/samsung-fimc.txt
@@ -0,0 +1,197 @@
1Samsung S5P/EXYNOS SoC Camera Subsystem (FIMC)
2----------------------------------------------
3
4The S5P/Exynos SoC Camera subsystem comprises of multiple sub-devices
5represented by separate device tree nodes. Currently this includes: FIMC (in
6the S5P SoCs series known as CAMIF), MIPI CSIS, FIMC-LITE and FIMC-IS (ISP).
7
8The sub-subdevices are defined as child nodes of the common 'camera' node which
9also includes common properties of the whole subsystem not really specific to
10any single sub-device, like common camera port pins or the CAMCLK clock outputs
11for external image sensors attached to an SoC.
12
13Common 'camera' node
14--------------------
15
16Required properties:
17
18- compatible : must be "samsung,fimc", "simple-bus"
19- clocks : list of clock specifiers, corresponding to entries in
20 the clock-names property;
21- clock-names : must contain "sclk_cam0", "sclk_cam1", "pxl_async0",
22 "pxl_async1" entries, matching entries in the clocks property.
23
24The pinctrl bindings defined in ../pinctrl/pinctrl-bindings.txt must be used
25to define a required pinctrl state named "default" and optional pinctrl states:
26"idle", "active-a", active-b". These optional states can be used to switch the
27camera port pinmux at runtime. The "idle" state should configure both the camera
28ports A and B into high impedance state, especially the CAMCLK clock output
29should be inactive. For the "active-a" state the camera port A must be activated
30and the port B deactivated and for the state "active-b" it should be the other
31way around.
32
33The 'camera' node must include at least one 'fimc' child node.
34
35'fimc' device nodes
36-------------------
37
38Required properties:
39
40- compatible: "samsung,s5pv210-fimc" for S5PV210, "samsung,exynos4210-fimc"
41 for Exynos4210 and "samsung,exynos4212-fimc" for Exynos4x12 SoCs;
42- reg: physical base address and length of the registers set for the device;
43- interrupts: should contain FIMC interrupt;
44- clocks: list of clock specifiers, must contain an entry for each required
45 entry in clock-names;
46- clock-names: must contain "fimc", "sclk_fimc" entries.
47- samsung,pix-limits: an array of maximum supported image sizes in pixels, for
48 details refer to Table 2-1 in the S5PV210 SoC User Manual; The meaning of
49 each cell is as follows:
50 0 - scaler input horizontal size,
51 1 - input horizontal size for the scaler bypassed,
52 2 - REAL_WIDTH without input rotation,
53 3 - REAL_HEIGHT with input rotation,
54- samsung,sysreg: a phandle to the SYSREG node.
55
56Each FIMC device should have an alias in the aliases node, in the form of
57fimc<n>, where <n> is an integer specifying the IP block instance.
58
59Optional properties:
60
61- clock-frequency: maximum FIMC local clock (LCLK) frequency;
62- samsung,min-pix-sizes: an array specyfing minimum image size in pixels at
63 the FIMC input and output DMA, in the first and second cell respectively.
64 Default value when this property is not present is <16 16>;
65- samsung,min-pix-alignment: minimum supported image height alignment (first
66 cell) and the horizontal image offset (second cell). The values are in pixels
67 and default to <2 1> when this property is not present;
68- samsung,mainscaler-ext: a boolean property indicating whether the FIMC IP
69 supports extended image size and has CIEXTEN register;
70- samsung,rotators: a bitmask specifying whether this IP has the input and
71 the output rotator. Bits 4 and 0 correspond to input and output rotator
72 respectively. If a rotator is present its corresponding bit should be set.
73 Default value when this property is not specified is 0x11.
74- samsung,cam-if: a bolean property indicating whether the IP block includes
75 the camera input interface.
76- samsung,isp-wb: this property must be present if the IP block has the ISP
77 writeback input.
78- samsung,lcd-wb: this property must be present if the IP block has the LCD
79 writeback input.
80
81
82'parallel-ports' node
83---------------------
84
85This node should contain child 'port' nodes specifying active parallel video
86input ports. It includes camera A and camera B inputs. 'reg' property in the
87port nodes specifies data input - 0, 1 indicates input A, B respectively.
88
89Optional properties
90
91- samsung,camclk-out : specifies clock output for remote sensor,
92 0 - CAM_A_CLKOUT, 1 - CAM_B_CLKOUT;
93
94Image sensor nodes
95------------------
96
97The sensor device nodes should be added to their control bus controller (e.g.
98I2C0) nodes and linked to a port node in the csis or the parallel-ports node,
99using the common video interfaces bindings, defined in video-interfaces.txt.
100The implementation of this bindings requires clock-frequency property to be
101present in the sensor device nodes.
102
103Example:
104
105 aliases {
106 fimc0 = &fimc_0;
107 };
108
109 /* Parallel bus IF sensor */
110 i2c_0: i2c@13860000 {
111 s5k6aa: sensor@3c {
112 compatible = "samsung,s5k6aafx";
113 reg = <0x3c>;
114 vddio-supply = <...>;
115
116 clock-frequency = <24000000>;
117 clocks = <...>;
118 clock-names = "mclk";
119
120 port {
121 s5k6aa_ep: endpoint {
122 remote-endpoint = <&fimc0_ep>;
123 bus-width = <8>;
124 hsync-active = <0>;
125 vsync-active = <1>;
126 pclk-sample = <1>;
127 };
128 };
129 };
130 };
131
132 /* MIPI CSI-2 bus IF sensor */
133 s5c73m3: sensor@0x1a {
134 compatible = "samsung,s5c73m3";
135 reg = <0x1a>;
136 vddio-supply = <...>;
137
138 clock-frequency = <24000000>;
139 clocks = <...>;
140 clock-names = "mclk";
141
142 port {
143 s5c73m3_1: endpoint {
144 data-lanes = <1 2 3 4>;
145 remote-endpoint = <&csis0_ep>;
146 };
147 };
148 };
149
150 camera {
151 compatible = "samsung,fimc", "simple-bus";
152 #address-cells = <1>;
153 #size-cells = <1>;
154 status = "okay";
155
156 pinctrl-names = "default";
157 pinctrl-0 = <&cam_port_a_clk_active>;
158
159 /* parallel camera ports */
160 parallel-ports {
161 /* camera A input */
162 port@0 {
163 reg = <0>;
164 fimc0_ep: endpoint {
165 remote-endpoint = <&s5k6aa_ep>;
166 bus-width = <8>;
167 hsync-active = <0>;
168 vsync-active = <1>;
169 pclk-sample = <1>;
170 };
171 };
172 };
173
174 fimc_0: fimc@11800000 {
175 compatible = "samsung,exynos4210-fimc";
176 reg = <0x11800000 0x1000>;
177 interrupts = <0 85 0>;
178 status = "okay";
179 };
180
181 csis_0: csis@11880000 {
182 compatible = "samsung,exynos4210-csis";
183 reg = <0x11880000 0x1000>;
184 interrupts = <0 78 0>;
185 /* camera C input */
186 port@3 {
187 reg = <3>;
188 csis0_ep: endpoint {
189 remote-endpoint = <&s5c73m3_ep>;
190 data-lanes = <1 2 3 4>;
191 samsung,csis-hs-settle = <12>;
192 };
193 };
194 };
195 };
196
197The MIPI-CSIS device binding is defined in samsung-mipi-csis.txt.
diff --git a/Documentation/devicetree/bindings/media/samsung-mipi-csis.txt b/Documentation/devicetree/bindings/media/samsung-mipi-csis.txt
new file mode 100644
index 000000000000..5f8e28e2484f
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/samsung-mipi-csis.txt
@@ -0,0 +1,81 @@
1Samsung S5P/EXYNOS SoC series MIPI CSI-2 receiver (MIPI CSIS)
2-------------------------------------------------------------
3
4Required properties:
5
6- compatible : "samsung,s5pv210-csis" for S5PV210 (S5PC110),
7 "samsung,exynos4210-csis" for Exynos4210 (S5PC210),
8 "samsung,exynos4212-csis" for Exynos4212/Exynos4412
9 SoC series;
10- reg : offset and length of the register set for the device;
11- interrupts : should contain MIPI CSIS interrupt; the format of the
12 interrupt specifier depends on the interrupt controller;
13- bus-width : maximum number of data lanes supported (SoC specific);
14- vddio-supply : MIPI CSIS I/O and PLL voltage supply (e.g. 1.8V);
15- vddcore-supply : MIPI CSIS Core voltage supply (e.g. 1.1V);
16- clocks : list of clock specifiers, corresponding to entries in
17 clock-names property;
18- clock-names : must contain "csis", "sclk_csis" entries, matching entries
19 in the clocks property.
20
21Optional properties:
22
23- clock-frequency : The IP's main (system bus) clock frequency in Hz, default
24 value when this property is not specified is 166 MHz;
25- samsung,csis-wclk : CSI-2 wrapper clock selection. If this property is present
26 external clock from CMU will be used, or the bus clock if
27 if it's not specified.
28
29The device node should contain one 'port' child node with one child 'endpoint'
30node, according to the bindings defined in Documentation/devicetree/bindings/
31media/video-interfaces.txt. The following are properties specific to those nodes.
32
33port node
34---------
35
36- reg : (required) must be 3 for camera C input (CSIS0) or 4 for
37 camera D input (CSIS1);
38
39endpoint node
40-------------
41
42- data-lanes : (required) an array specifying active physical MIPI-CSI2
43 data input lanes and their mapping to logical lanes; the
44 array's content is unused, only its length is meaningful;
45
46- samsung,csis-hs-settle : (optional) differential receiver (HS-RX) settle time;
47
48
49Example:
50
51 reg0: regulator@0 {
52 };
53
54 reg1: regulator@1 {
55 };
56
57/* SoC properties */
58
59 csis_0: csis@11880000 {
60 compatible = "samsung,exynos4210-csis";
61 reg = <0x11880000 0x1000>;
62 interrupts = <0 78 0>;
63 #address-cells = <1>;
64 #size-cells = <0>;
65 };
66
67/* Board properties */
68
69 csis_0: csis@11880000 {
70 clock-frequency = <166000000>;
71 vddio-supply = <&reg0>;
72 vddcore-supply = <&reg1>;
73 port {
74 reg = <3>; /* 3 - CSIS0, 4 - CSIS1 */
75 csis0_ep: endpoint {
76 remote-endpoint = <...>;
77 data-lanes = <1>, <2>;
78 samsung,csis-hs-settle = <12>;
79 };
80 };
81 };
diff --git a/Documentation/devicetree/bindings/media/video-interfaces.txt b/Documentation/devicetree/bindings/media/video-interfaces.txt
new file mode 100644
index 000000000000..e022d2dc4962
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/video-interfaces.txt
@@ -0,0 +1,228 @@
1Common bindings for video receiver and transmitter interfaces
2
3General concept
4---------------
5
6Video data pipelines usually consist of external devices, e.g. camera sensors,
7controlled over an I2C, SPI or UART bus, and SoC internal IP blocks, including
8video DMA engines and video data processors.
9
10SoC internal blocks are described by DT nodes, placed similarly to other SoC
11blocks. External devices are represented as child nodes of their respective
12bus controller nodes, e.g. I2C.
13
14Data interfaces on all video devices are described by their child 'port' nodes.
15Configuration of a port depends on other devices participating in the data
16transfer and is described by 'endpoint' subnodes.
17
18device {
19 ...
20 ports {
21 #address-cells = <1>;
22 #size-cells = <0>;
23
24 port@0 {
25 ...
26 endpoint@0 { ... };
27 endpoint@1 { ... };
28 };
29 port@1 { ... };
30 };
31};
32
33If a port can be configured to work with more than one remote device on the same
34bus, an 'endpoint' child node must be provided for each of them. If more than
35one port is present in a device node or there is more than one endpoint at a
36port, or port node needs to be associated with a selected hardware interface,
37a common scheme using '#address-cells', '#size-cells' and 'reg' properties is
38used.
39
40All 'port' nodes can be grouped under optional 'ports' node, which allows to
41specify #address-cells, #size-cells properties independently for the 'port'
42and 'endpoint' nodes and any child device nodes a device might have.
43
44Two 'endpoint' nodes are linked with each other through their 'remote-endpoint'
45phandles. An endpoint subnode of a device contains all properties needed for
46configuration of this device for data exchange with other device. In most
47cases properties at the peer 'endpoint' nodes will be identical, however they
48might need to be different when there is any signal modifications on the bus
49between two devices, e.g. there are logic signal inverters on the lines.
50
51It is allowed for multiple endpoints at a port to be active simultaneously,
52where supported by a device. For example, in case where a data interface of
53a device is partitioned into multiple data busses, e.g. 16-bit input port
54divided into two separate ITU-R BT.656 8-bit busses. In such case bus-width
55and data-shift properties can be used to assign physical data lines to each
56endpoint node (logical bus).
57
58
59Required properties
60-------------------
61
62If there is more than one 'port' or more than one 'endpoint' node or 'reg'
63property is present in port and/or endpoint nodes the following properties
64are required in a relevant parent node:
65
66 - #address-cells : number of cells required to define port/endpoint
67 identifier, should be 1.
68 - #size-cells : should be zero.
69
70Optional endpoint properties
71----------------------------
72
73- remote-endpoint: phandle to an 'endpoint' subnode of a remote device node.
74- slave-mode: a boolean property indicating that the link is run in slave mode.
75 The default when this property is not specified is master mode. In the slave
76 mode horizontal and vertical synchronization signals are provided to the
77 slave device (data source) by the master device (data sink). In the master
78 mode the data source device is also the source of the synchronization signals.
79- bus-width: number of data lines actively used, valid for the parallel busses.
80- data-shift: on the parallel data busses, if bus-width is used to specify the
81 number of data lines, data-shift can be used to specify which data lines are
82 used, e.g. "bus-width=<8>; data-shift=<2>;" means, that lines 9:2 are used.
83- hsync-active: active state of the HSYNC signal, 0/1 for LOW/HIGH respectively.
84- vsync-active: active state of the VSYNC signal, 0/1 for LOW/HIGH respectively.
85 Note, that if HSYNC and VSYNC polarities are not specified, embedded
86 synchronization may be required, where supported.
87- data-active: similar to HSYNC and VSYNC, specifies data line polarity.
88- field-even-active: field signal level during the even field data transmission.
89- pclk-sample: sample data on rising (1) or falling (0) edge of the pixel clock
90 signal.
91- data-lanes: an array of physical data lane indexes. Position of an entry
92 determines the logical lane number, while the value of an entry indicates
93 physical lane, e.g. for 2-lane MIPI CSI-2 bus we could have
94 "data-lanes = <1 2>;", assuming the clock lane is on hardware lane 0.
95 This property is valid for serial busses only (e.g. MIPI CSI-2).
96- clock-lanes: an array of physical clock lane indexes. Position of an entry
97 determines the logical lane number, while the value of an entry indicates
98 physical lane, e.g. for a MIPI CSI-2 bus we could have "clock-lanes = <0>;",
99 which places the clock lane on hardware lane 0. This property is valid for
100 serial busses only (e.g. MIPI CSI-2). Note that for the MIPI CSI-2 bus this
101 array contains only one entry.
102- clock-noncontinuous: a boolean property to allow MIPI CSI-2 non-continuous
103 clock mode.
104
105
106Example
107-------
108
109The example snippet below describes two data pipelines. ov772x and imx074 are
110camera sensors with a parallel and serial (MIPI CSI-2) video bus respectively.
111Both sensors are on the I2C control bus corresponding to the i2c0 controller
112node. ov772x sensor is linked directly to the ceu0 video host interface.
113imx074 is linked to ceu0 through the MIPI CSI-2 receiver (csi2). ceu0 has a
114(single) DMA engine writing captured data to memory. ceu0 node has a single
115'port' node which may indicate that at any time only one of the following data
116pipelines can be active: ov772x -> ceu0 or imx074 -> csi2 -> ceu0.
117
118 ceu0: ceu@0xfe910000 {
119 compatible = "renesas,sh-mobile-ceu";
120 reg = <0xfe910000 0xa0>;
121 interrupts = <0x880>;
122
123 mclk: master_clock {
124 compatible = "renesas,ceu-clock";
125 #clock-cells = <1>;
126 clock-frequency = <50000000>; /* Max clock frequency */
127 clock-output-names = "mclk";
128 };
129
130 port {
131 #address-cells = <1>;
132 #size-cells = <0>;
133
134 /* Parallel bus endpoint */
135 ceu0_1: endpoint@1 {
136 reg = <1>; /* Local endpoint # */
137 remote = <&ov772x_1_1>; /* Remote phandle */
138 bus-width = <8>; /* Used data lines */
139 data-shift = <2>; /* Lines 9:2 are used */
140
141 /* If hsync-active/vsync-active are missing,
142 embedded BT.656 sync is used */
143 hsync-active = <0>; /* Active low */
144 vsync-active = <0>; /* Active low */
145 data-active = <1>; /* Active high */
146 pclk-sample = <1>; /* Rising */
147 };
148
149 /* MIPI CSI-2 bus endpoint */
150 ceu0_0: endpoint@0 {
151 reg = <0>;
152 remote = <&csi2_2>;
153 };
154 };
155 };
156
157 i2c0: i2c@0xfff20000 {
158 ...
159 ov772x_1: camera@0x21 {
160 compatible = "omnivision,ov772x";
161 reg = <0x21>;
162 vddio-supply = <&regulator1>;
163 vddcore-supply = <&regulator2>;
164
165 clock-frequency = <20000000>;
166 clocks = <&mclk 0>;
167 clock-names = "xclk";
168
169 port {
170 /* With 1 endpoint per port no need for addresses. */
171 ov772x_1_1: endpoint {
172 bus-width = <8>;
173 remote-endpoint = <&ceu0_1>;
174 hsync-active = <1>;
175 vsync-active = <0>; /* Who came up with an
176 inverter here ?... */
177 data-active = <1>;
178 pclk-sample = <1>;
179 };
180 };
181 };
182
183 imx074: camera@0x1a {
184 compatible = "sony,imx074";
185 reg = <0x1a>;
186 vddio-supply = <&regulator1>;
187 vddcore-supply = <&regulator2>;
188
189 clock-frequency = <30000000>; /* Shared clock with ov772x_1 */
190 clocks = <&mclk 0>;
191 clock-names = "sysclk"; /* Assuming this is the
192 name in the datasheet */
193 port {
194 imx074_1: endpoint {
195 clock-lanes = <0>;
196 data-lanes = <1 2>;
197 remote-endpoint = <&csi2_1>;
198 };
199 };
200 };
201 };
202
203 csi2: csi2@0xffc90000 {
204 compatible = "renesas,sh-mobile-csi2";
205 reg = <0xffc90000 0x1000>;
206 interrupts = <0x17a0>;
207 #address-cells = <1>;
208 #size-cells = <0>;
209
210 port@1 {
211 compatible = "renesas,csi2c"; /* One of CSI2I and CSI2C. */
212 reg = <1>; /* CSI-2 PHY #1 of 2: PHY_S,
213 PHY_M has port address 0,
214 is unused. */
215 csi2_1: endpoint {
216 clock-lanes = <0>;
217 data-lanes = <2 1>;
218 remote-endpoint = <&imx074_1>;
219 };
220 };
221 port@2 {
222 reg = <2>; /* port 2: link to the CEU */
223
224 csi2_2: endpoint {
225 remote-endpoint = <&ceu0_0>;
226 };
227 };
228 };
diff --git a/Documentation/devicetree/bindings/metag/meta-intc.txt b/Documentation/devicetree/bindings/metag/meta-intc.txt
index 8c47dcbfabc6..80994adab392 100644
--- a/Documentation/devicetree/bindings/metag/meta-intc.txt
+++ b/Documentation/devicetree/bindings/metag/meta-intc.txt
@@ -12,7 +12,7 @@ Required properties:
12 handle 32 interrupt sources). 12 handle 32 interrupt sources).
13 13
14 - interrupt-controller: The presence of this property identifies the node 14 - interrupt-controller: The presence of this property identifies the node
15 as an interupt controller. No property value shall be defined. 15 as an interrupt controller. No property value shall be defined.
16 16
17 - #interrupt-cells: Specifies the number of cells needed to encode an 17 - #interrupt-cells: Specifies the number of cells needed to encode an
18 interrupt source. The type shall be a <u32> and the value shall be 2. 18 interrupt source. The type shall be a <u32> and the value shall be 2.
diff --git a/Documentation/devicetree/bindings/mfd/ab8500.txt b/Documentation/devicetree/bindings/mfd/ab8500.txt
index 13b707b7355c..c3a14e0ad0ad 100644
--- a/Documentation/devicetree/bindings/mfd/ab8500.txt
+++ b/Documentation/devicetree/bindings/mfd/ab8500.txt
@@ -13,9 +13,6 @@ Required parent device properties:
13 4 = active high level-sensitive 13 4 = active high level-sensitive
14 8 = active low level-sensitive 14 8 = active low level-sensitive
15 15
16Optional parent device properties:
17- reg : contains the PRCMU mailbox address for the AB8500 i2c port
18
19The AB8500 consists of a large and varied group of sub-devices: 16The AB8500 consists of a large and varied group of sub-devices:
20 17
21Device IRQ Names Supply Names Description 18Device IRQ Names Supply Names Description
@@ -86,9 +83,8 @@ Non-standard child device properties:
86 - stericsson,amic2-bias-vamic1 : Analoge Mic wishes to use a non-standard Vamic 83 - stericsson,amic2-bias-vamic1 : Analoge Mic wishes to use a non-standard Vamic
87 - stericsson,earpeice-cmv : Earpeice voltage (only: 950 | 1100 | 1270 | 1580) 84 - stericsson,earpeice-cmv : Earpeice voltage (only: 950 | 1100 | 1270 | 1580)
88 85
89ab8500@5 { 86ab8500 {
90 compatible = "stericsson,ab8500"; 87 compatible = "stericsson,ab8500";
91 reg = <5>; /* mailbox 5 is i2c */
92 interrupts = <0 40 0x4>; 88 interrupts = <0 40 0x4>;
93 interrupt-controller; 89 interrupt-controller;
94 #interrupt-cells = <2>; 90 #interrupt-cells = <2>;
diff --git a/Documentation/devicetree/bindings/mfd/as3711.txt b/Documentation/devicetree/bindings/mfd/as3711.txt
new file mode 100644
index 000000000000..d98cf18c721c
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/as3711.txt
@@ -0,0 +1,73 @@
1AS3711 is an I2C PMIC from Austria MicroSystems with multiple DCDC and LDO power
2supplies, a battery charger and an RTC. So far only bindings for the two stepup
3DCDC converters are defined. Other DCDC and LDO supplies are configured, using
4standard regulator properties, they must belong to a sub-node, called
5"regulators" and be called "sd1" to "sd4" and "ldo1" to "ldo8." Stepup converter
6configuration should be placed in a subnode, called "backlight."
7
8Compulsory properties:
9- compatible : must be "ams,as3711"
10- reg : specifies the I2C address
11
12To use the SU1 converter as a backlight source the following two properties must
13be provided:
14- su1-dev : framebuffer phandle
15- su1-max-uA : maximum current
16
17To use the SU2 converter as a backlight source the following two properties must
18be provided:
19- su2-dev : framebuffer phandle
20- su1-max-uA : maximum current
21
22Additionally one of these properties must be provided to select the type of
23feedback used:
24- su2-feedback-voltage : voltage feedback is used
25- su2-feedback-curr1 : CURR1 input used for current feedback
26- su2-feedback-curr2 : CURR2 input used for current feedback
27- su2-feedback-curr3 : CURR3 input used for current feedback
28- su2-feedback-curr-auto: automatic current feedback selection
29
30and one of these to select the over-voltage protection pin
31- su2-fbprot-lx-sd4 : LX_SD4 is used for over-voltage protection
32- su2-fbprot-gpio2 : GPIO2 is used for over-voltage protection
33- su2-fbprot-gpio3 : GPIO3 is used for over-voltage protection
34- su2-fbprot-gpio4 : GPIO4 is used for over-voltage protection
35
36If "su2-feedback-curr-auto" is selected, one or more of the following properties
37have to be specified:
38- su2-auto-curr1 : use CURR1 input for current feedback
39- su2-auto-curr2 : use CURR2 input for current feedback
40- su2-auto-curr3 : use CURR3 input for current feedback
41
42Example:
43
44as3711@40 {
45 compatible = "ams,as3711";
46 reg = <0x40>;
47
48 regulators {
49 sd4 {
50 regulator-name = "1.215V";
51 regulator-min-microvolt = <1215000>;
52 regulator-max-microvolt = <1235000>;
53 };
54 ldo2 {
55 regulator-name = "2.8V CPU";
56 regulator-min-microvolt = <2800000>;
57 regulator-max-microvolt = <2800000>;
58 regulator-always-on;
59 regulator-boot-on;
60 };
61 };
62
63 backlight {
64 compatible = "ams,as3711-bl";
65 su2-dev = <&lcdc>;
66 su2-max-uA = <36000>;
67 su2-feedback-curr-auto;
68 su2-fbprot-gpio4;
69 su2-auto-curr1;
70 su2-auto-curr2;
71 su2-auto-curr3;
72 };
73};
diff --git a/Documentation/devicetree/bindings/mfd/cros-ec.txt b/Documentation/devicetree/bindings/mfd/cros-ec.txt
new file mode 100644
index 000000000000..e0e59c58a1f9
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/cros-ec.txt
@@ -0,0 +1,56 @@
1ChromeOS Embedded Controller
2
3Google's ChromeOS EC is a Cortex-M device which talks to the AP and
4implements various function such as keyboard and battery charging.
5
6The EC can be connect through various means (I2C, SPI, LPC) and the
7compatible string used depends on the inteface. Each connection method has
8its own driver which connects to the top level interface-agnostic EC driver.
9Other Linux driver (such as cros-ec-keyb for the matrix keyboard) connect to
10the top-level driver.
11
12Required properties (I2C):
13- compatible: "google,cros-ec-i2c"
14- reg: I2C slave address
15
16Required properties (SPI):
17- compatible: "google,cros-ec-spi"
18- reg: SPI chip select
19
20Required properties (LPC):
21- compatible: "google,cros-ec-lpc"
22- reg: List of (IO address, size) pairs defining the interface uses
23
24
25Example for I2C:
26
27i2c@12CA0000 {
28 cros-ec@1e {
29 reg = <0x1e>;
30 compatible = "google,cros-ec-i2c";
31 interrupts = <14 0>;
32 interrupt-parent = <&wakeup_eint>;
33 wakeup-source;
34 };
35
36
37Example for SPI:
38
39spi@131b0000 {
40 ec@0 {
41 compatible = "google,cros-ec-spi";
42 reg = <0x0>;
43 interrupts = <14 0>;
44 interrupt-parent = <&wakeup_eint>;
45 wakeup-source;
46 spi-max-frequency = <5000000>;
47 controller-data {
48 cs-gpio = <&gpf0 3 4 3 0>;
49 samsung,spi-cs;
50 samsung,spi-feedback-delay = <2>;
51 };
52 };
53};
54
55
56Example for LPC is not supplied as it is not yet implemented.
diff --git a/Documentation/devicetree/bindings/mfd/mc13xxx.txt b/Documentation/devicetree/bindings/mfd/mc13xxx.txt
index baf07987ae68..abd9e3cb2db7 100644
--- a/Documentation/devicetree/bindings/mfd/mc13xxx.txt
+++ b/Documentation/devicetree/bindings/mfd/mc13xxx.txt
@@ -10,10 +10,40 @@ Optional properties:
10- fsl,mc13xxx-uses-touch : Indicate the touchscreen controller is being used 10- fsl,mc13xxx-uses-touch : Indicate the touchscreen controller is being used
11 11
12Sub-nodes: 12Sub-nodes:
13- regulators : Contain the regulator nodes. The MC13892 regulators are 13- regulators : Contain the regulator nodes. The regulators are bound using
14 bound using their names as listed below with their registers and bits 14 their names as listed below with their registers and bits for enabling.
15 for enabling.
16 15
16MC13783 regulators:
17 sw1a : regulator SW1A (register 24, bit 0)
18 sw1b : regulator SW1B (register 25, bit 0)
19 sw2a : regulator SW2A (register 26, bit 0)
20 sw2b : regulator SW2B (register 27, bit 0)
21 sw3 : regulator SW3 (register 29, bit 20)
22 vaudio : regulator VAUDIO (register 32, bit 0)
23 viohi : regulator VIOHI (register 32, bit 3)
24 violo : regulator VIOLO (register 32, bit 6)
25 vdig : regulator VDIG (register 32, bit 9)
26 vgen : regulator VGEN (register 32, bit 12)
27 vrfdig : regulator VRFDIG (register 32, bit 15)
28 vrfref : regulator VRFREF (register 32, bit 18)
29 vrfcp : regulator VRFCP (register 32, bit 21)
30 vsim : regulator VSIM (register 33, bit 0)
31 vesim : regulator VESIM (register 33, bit 3)
32 vcam : regulator VCAM (register 33, bit 6)
33 vrfbg : regulator VRFBG (register 33, bit 9)
34 vvib : regulator VVIB (register 33, bit 11)
35 vrf1 : regulator VRF1 (register 33, bit 12)
36 vrf2 : regulator VRF2 (register 33, bit 15)
37 vmmc1 : regulator VMMC1 (register 33, bit 18)
38 vmmc2 : regulator VMMC2 (register 33, bit 21)
39 gpo1 : regulator GPO1 (register 34, bit 6)
40 gpo2 : regulator GPO2 (register 34, bit 8)
41 gpo3 : regulator GPO3 (register 34, bit 10)
42 gpo4 : regulator GPO4 (register 34, bit 12)
43 pwgt1spi : regulator PWGT1SPI (register 34, bit 15)
44 pwgt2spi : regulator PWGT2SPI (register 34, bit 16)
45
46MC13892 regulators:
17 vcoincell : regulator VCOINCELL (register 13, bit 23) 47 vcoincell : regulator VCOINCELL (register 13, bit 23)
18 sw1 : regulator SW1 (register 24, bit 0) 48 sw1 : regulator SW1 (register 24, bit 0)
19 sw2 : regulator SW2 (register 25, bit 0) 49 sw2 : regulator SW2 (register 25, bit 0)
diff --git a/Documentation/devicetree/bindings/mfd/omap-usb-host.txt b/Documentation/devicetree/bindings/mfd/omap-usb-host.txt
new file mode 100644
index 000000000000..b381fa696bf9
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/omap-usb-host.txt
@@ -0,0 +1,80 @@
1OMAP HS USB Host
2
3Required properties:
4
5- compatible: should be "ti,usbhs-host"
6- reg: should contain one register range i.e. start and length
7- ti,hwmods: must contain "usb_host_hs"
8
9Optional properties:
10
11- num-ports: number of USB ports. Usually this is automatically detected
12 from the IP's revision register but can be overridden by specifying
13 this property. A maximum of 3 ports are supported at the moment.
14
15- portN-mode: String specifying the port mode for port N, where N can be
16 from 1 to 3. If the port mode is not specified, that port is treated
17 as unused. When specified, it must be one of the following.
18 "ehci-phy",
19 "ehci-tll",
20 "ehci-hsic",
21 "ohci-phy-6pin-datse0",
22 "ohci-phy-6pin-dpdm",
23 "ohci-phy-3pin-datse0",
24 "ohci-phy-4pin-dpdm",
25 "ohci-tll-6pin-datse0",
26 "ohci-tll-6pin-dpdm",
27 "ohci-tll-3pin-datse0",
28 "ohci-tll-4pin-dpdm",
29 "ohci-tll-2pin-datse0",
30 "ohci-tll-2pin-dpdm",
31
32- single-ulpi-bypass: Must be present if the controller contains a single
33 ULPI bypass control bit. e.g. OMAP3 silicon <= ES2.1
34
35Required properties if child node exists:
36
37- #address-cells: Must be 1
38- #size-cells: Must be 1
39- ranges: must be present
40
41Properties for children:
42
43The OMAP HS USB Host subsystem contains EHCI and OHCI controllers.
44See Documentation/devicetree/bindings/usb/omap-ehci.txt and
45omap3-ohci.txt
46
47Example for OMAP4:
48
49usbhshost: usbhshost@4a064000 {
50 compatible = "ti,usbhs-host";
51 reg = <0x4a064000 0x800>;
52 ti,hwmods = "usb_host_hs";
53 #address-cells = <1>;
54 #size-cells = <1>;
55 ranges;
56
57 usbhsohci: ohci@4a064800 {
58 compatible = "ti,ohci-omap3", "usb-ohci";
59 reg = <0x4a064800 0x400>;
60 interrupt-parent = <&gic>;
61 interrupts = <0 76 0x4>;
62 };
63
64 usbhsehci: ehci@4a064c00 {
65 compatible = "ti,ehci-omap", "usb-ehci";
66 reg = <0x4a064c00 0x400>;
67 interrupt-parent = <&gic>;
68 interrupts = <0 77 0x4>;
69 };
70};
71
72&usbhshost {
73 port1-mode = "ehci-phy";
74 port2-mode = "ehci-tll";
75 port3-mode = "ehci-phy";
76};
77
78&usbhsehci {
79 phys = <&hsusb1_phy 0 &hsusb3_phy>;
80};
diff --git a/Documentation/devicetree/bindings/mfd/omap-usb-tll.txt b/Documentation/devicetree/bindings/mfd/omap-usb-tll.txt
new file mode 100644
index 000000000000..62fe69724e3b
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/omap-usb-tll.txt
@@ -0,0 +1,17 @@
1OMAP HS USB Host TLL (Transceiver-Less Interface)
2
3Required properties:
4
5- compatible : should be "ti,usbhs-tll"
6- reg : should contain one register range i.e. start and length
7- interrupts : should contain the TLL module's interrupt
8- ti,hwmod : must contain "usb_tll_hs"
9
10Example:
11
12 usbhstll: usbhstll@4a062000 {
13 compatible = "ti,usbhs-tll";
14 reg = <0x4a062000 0x1000>;
15 interrupts = <78>;
16 ti,hwmods = "usb_tll_hs";
17 };
diff --git a/Documentation/devicetree/bindings/misc/smc.txt b/Documentation/devicetree/bindings/misc/smc.txt
new file mode 100644
index 000000000000..02b428136177
--- /dev/null
+++ b/Documentation/devicetree/bindings/misc/smc.txt
@@ -0,0 +1,14 @@
1Broadcom Secure Monitor Bounce buffer
2-----------------------------------------------------
3This binding defines the location of the bounce buffer
4used for non-secure to secure communications.
5
6Required properties:
7- compatible : "bcm,kona-smc"
8- reg : Location and size of bounce buffer
9
10Example:
11 smc@0x3404c000 {
12 compatible = "bcm,bcm11351-smc", "bcm,kona-smc";
13 reg = <0x3404c000 0x400>; //1 KiB in SRAM
14 };
diff --git a/Documentation/devicetree/bindings/misc/sram.txt b/Documentation/devicetree/bindings/misc/sram.txt
new file mode 100644
index 000000000000..4d0a00e453a8
--- /dev/null
+++ b/Documentation/devicetree/bindings/misc/sram.txt
@@ -0,0 +1,16 @@
1Generic on-chip SRAM
2
3Simple IO memory regions to be managed by the genalloc API.
4
5Required properties:
6
7- compatible : mmio-sram
8
9- reg : SRAM iomem address range
10
11Example:
12
13sram: sram@5c000000 {
14 compatible = "mmio-sram";
15 reg = <0x5c000000 0x40000>; /* 256 KiB SRAM at address 0x5c000000 */
16};
diff --git a/Documentation/devicetree/bindings/mmc/davinci_mmc.txt b/Documentation/devicetree/bindings/mmc/davinci_mmc.txt
new file mode 100644
index 000000000000..e5a0140b2381
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/davinci_mmc.txt
@@ -0,0 +1,33 @@
1* TI Highspeed MMC host controller for DaVinci
2
3The Highspeed MMC Host Controller on TI DaVinci family
4provides an interface for MMC, SD and SDIO types of memory cards.
5
6This file documents the properties used by the davinci_mmc driver.
7
8Required properties:
9- compatible:
10 Should be "ti,da830-mmc": for da830, da850, dm365
11 Should be "ti,dm355-mmc": for dm355, dm644x
12
13Optional properties:
14- bus-width: Number of data lines, can be <1>, <4>, or <8>, default <1>
15- max-frequency: Maximum operating clock frequency, default 25MHz.
16- dmas: List of DMA specifiers with the controller specific format
17 as described in the generic DMA client binding. A tx and rx
18 specifier is required.
19- dma-names: RX and TX DMA request names. These strings correspond
20 1:1 with the DMA specifiers listed in dmas.
21
22Example:
23mmc0: mmc@1c40000 {
24 compatible = "ti,da830-mmc",
25 reg = <0x40000 0x1000>;
26 interrupts = <16>;
27 status = "okay";
28 bus-width = <4>;
29 max-frequency = <50000000>;
30 dmas = <&edma 16
31 &edma 17>;
32 dma-names = "rx", "tx";
33};
diff --git a/Documentation/devicetree/bindings/mmc/fsl-imx-mmc.txt b/Documentation/devicetree/bindings/mmc/fsl-imx-mmc.txt
new file mode 100644
index 000000000000..db442355cd24
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/fsl-imx-mmc.txt
@@ -0,0 +1,24 @@
1* Freescale Secure Digital Host Controller for i.MX2/3 series
2
3This file documents differences to the properties defined in mmc.txt.
4
5Required properties:
6- compatible : Should be "fsl,<chip>-mmc", chip can be imx21 or imx31
7
8Optional properties:
9- dmas: One DMA phandle with arguments as defined by the devicetree bindings
10 of the used DMA controller.
11- dma-names: Has to be "rx-tx".
12
13Example:
14
15sdhci1: sdhci@10014000 {
16 compatible = "fsl,imx27-mmc", "fsl,imx21-mmc";
17 reg = <0x10014000 0x1000>;
18 interrupts = <11>;
19 dmas = <&dma 7>;
20 dma-names = "rx-tx";
21 bus-width = <4>;
22 cd-gpios = <&gpio3 29>;
23 status = "okay";
24};
diff --git a/Documentation/devicetree/bindings/mmc/mxs-mmc.txt b/Documentation/devicetree/bindings/mmc/mxs-mmc.txt
index 54949f6faede..515addc20070 100644
--- a/Documentation/devicetree/bindings/mmc/mxs-mmc.txt
+++ b/Documentation/devicetree/bindings/mmc/mxs-mmc.txt
@@ -9,15 +9,19 @@ and the properties used by the mxsmmc driver.
9Required properties: 9Required properties:
10- compatible: Should be "fsl,<chip>-mmc". The supported chips include 10- compatible: Should be "fsl,<chip>-mmc". The supported chips include
11 imx23 and imx28. 11 imx23 and imx28.
12- interrupts: Should contain ERROR and DMA interrupts 12- interrupts: Should contain ERROR interrupt number
13- fsl,ssp-dma-channel: APBH DMA channel for the SSP 13- dmas: DMA specifier, consisting of a phandle to DMA controller node
14 and SSP DMA channel ID.
15 Refer to dma.txt and fsl-mxs-dma.txt for details.
16- dma-names: Must be "rx-tx".
14 17
15Examples: 18Examples:
16 19
17ssp0: ssp@80010000 { 20ssp0: ssp@80010000 {
18 compatible = "fsl,imx28-mmc"; 21 compatible = "fsl,imx28-mmc";
19 reg = <0x80010000 2000>; 22 reg = <0x80010000 2000>;
20 interrupts = <96 82>; 23 interrupts = <96>;
21 fsl,ssp-dma-channel = <0>; 24 dmas = <&dma_apbh 0>;
25 dma-names = "rx-tx";
22 bus-width = <8>; 26 bus-width = <8>;
23}; 27};
diff --git a/Documentation/devicetree/bindings/mmc/samsung-sdhci.txt b/Documentation/devicetree/bindings/mmc/samsung-sdhci.txt
index 3b3a1ee055ff..328e990d2546 100644
--- a/Documentation/devicetree/bindings/mmc/samsung-sdhci.txt
+++ b/Documentation/devicetree/bindings/mmc/samsung-sdhci.txt
@@ -5,13 +5,6 @@ MMC, SD and eMMC storage mediums. This file documents differences between the
5core mmc properties described by mmc.txt and the properties used by the 5core mmc properties described by mmc.txt and the properties used by the
6Samsung implmentation of the SDHCI controller. 6Samsung implmentation of the SDHCI controller.
7 7
8Note: The mmc core bindings documentation states that if none of the core
9card-detect bindings are used, then the standard sdhci card detect mechanism
10is used. The Samsung's SDHCI controller bindings extends this as listed below.
11
12[A] The property "samsung,cd-pinmux-gpio" can be used as stated in the
13 "Optional Board Specific Properties" section below.
14
15Required SoC Specific Properties: 8Required SoC Specific Properties:
16- compatible: should be one of the following 9- compatible: should be one of the following
17 - "samsung,s3c6410-sdhci": For controllers compatible with s3c6410 sdhci 10 - "samsung,s3c6410-sdhci": For controllers compatible with s3c6410 sdhci
@@ -20,18 +13,8 @@ Required SoC Specific Properties:
20 controller. 13 controller.
21 14
22Required Board Specific Properties: 15Required Board Specific Properties:
23- Samsung GPIO variant (will be completely replaced by pinctrl): 16- pinctrl-0: Should specify pin control groups used for this controller.
24 - gpios: Should specify the gpios used for clock, command and data lines. The 17- pinctrl-names: Should contain only one value - "default".
25 gpio specifier format depends on the gpio controller.
26- Pinctrl variant (preferred if available):
27 - pinctrl-0: Should specify pin control groups used for this controller.
28 - pinctrl-names: Should contain only one value - "default".
29
30Optional Board Specific Properties:
31- samsung,cd-pinmux-gpio: Specifies the card detect line that is routed
32 through a pinmux to the card-detect pin of the card slot. This property
33 should be used only if none of the mmc core card-detect properties are
34 used. Only for Samsung GPIO variant.
35 18
36Example: 19Example:
37 sdhci@12530000 { 20 sdhci@12530000 {
@@ -39,19 +22,9 @@ Example:
39 reg = <0x12530000 0x100>; 22 reg = <0x12530000 0x100>;
40 interrupts = <0 75 0>; 23 interrupts = <0 75 0>;
41 bus-width = <4>; 24 bus-width = <4>;
42 cd-gpios = <&gpk2 2 2 3 3>; 25 cd-gpios = <&gpk2 2 0>;
43
44 /* Samsung GPIO variant */
45 gpios = <&gpk2 0 2 0 3>, /* clock line */
46 <&gpk2 1 2 0 3>, /* command line */
47 <&gpk2 3 2 3 3>, /* data line 0 */
48 <&gpk2 4 2 3 3>, /* data line 1 */
49 <&gpk2 5 2 3 3>, /* data line 2 */
50 <&gpk2 6 2 3 3>; /* data line 3 */
51
52 /* Pinctrl variant */
53 pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4>;
54 pinctrl-names = "default"; 26 pinctrl-names = "default";
27 pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4>;
55 }; 28 };
56 29
57 Note: This example shows both SoC specific and board specific properties 30 Note: This example shows both SoC specific and board specific properties
diff --git a/Documentation/devicetree/bindings/mmc/sdhci-sirf.txt b/Documentation/devicetree/bindings/mmc/sdhci-sirf.txt
new file mode 100644
index 000000000000..dd6ed464bcb8
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/sdhci-sirf.txt
@@ -0,0 +1,18 @@
1* SiRFprimII/marco/atlas6 SDHCI Controller
2
3This file documents differences between the core properties in mmc.txt
4and the properties used by the sdhci-sirf driver.
5
6Required properties:
7- compatible: sirf,prima2-sdhc
8
9Optional properties:
10- cd-gpios: card detect gpio, with zero flags.
11
12Example:
13
14 sd0: sdhci@56000000 {
15 compatible = "sirf,prima2-sdhc";
16 reg = <0xcd000000 0x100000>;
17 cd-gpios = <&gpio 6 0>;
18 };
diff --git a/Documentation/devicetree/bindings/mtd/gpmi-nand.txt b/Documentation/devicetree/bindings/mtd/gpmi-nand.txt
index 3fb3f9015365..551b2a179d01 100644
--- a/Documentation/devicetree/bindings/mtd/gpmi-nand.txt
+++ b/Documentation/devicetree/bindings/mtd/gpmi-nand.txt
@@ -7,10 +7,12 @@ Required properties:
7 - compatible : should be "fsl,<chip>-gpmi-nand" 7 - compatible : should be "fsl,<chip>-gpmi-nand"
8 - reg : should contain registers location and length for gpmi and bch. 8 - reg : should contain registers location and length for gpmi and bch.
9 - reg-names: Should contain the reg names "gpmi-nand" 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. 10 - interrupts : BCH interrupt number.
11 The second is the BCH interrupt number. 11 - interrupt-names : Should be "bch".
12 - interrupt-names : The interrupt names "gpmi-dma", "bch"; 12 - dmas: DMA specifier, consisting of a phandle to DMA controller node
13 - fsl,gpmi-dma-channel : Should contain the dma channel it uses. 13 and GPMI DMA channel ID.
14 Refer to dma.txt and fsl-mxs-dma.txt for details.
15 - dma-names: Must be "rx-tx".
14 16
15Optional properties: 17Optional properties:
16 - nand-on-flash-bbt: boolean to enable on flash bbt option if not 18 - nand-on-flash-bbt: boolean to enable on flash bbt option if not
@@ -27,9 +29,10 @@ gpmi-nand@8000c000 {
27 #size-cells = <1>; 29 #size-cells = <1>;
28 reg = <0x8000c000 2000>, <0x8000a000 2000>; 30 reg = <0x8000c000 2000>, <0x8000a000 2000>;
29 reg-names = "gpmi-nand", "bch"; 31 reg-names = "gpmi-nand", "bch";
30 interrupts = <88>, <41>; 32 interrupts = <41>;
31 interrupt-names = "gpmi-dma", "bch"; 33 interrupt-names = "bch";
32 fsl,gpmi-dma-channel = <4>; 34 dmas = <&dma_apbh 4>;
35 dma-names = "rx-tx";
33 36
34 partition@0 { 37 partition@0 {
35 ... 38 ...
diff --git a/Documentation/devicetree/bindings/net/can/atmel-can.txt b/Documentation/devicetree/bindings/net/can/atmel-can.txt
new file mode 100644
index 000000000000..72cf0c5daff4
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/can/atmel-can.txt
@@ -0,0 +1,14 @@
1* AT91 CAN *
2
3Required properties:
4 - compatible: Should be "atmel,at91sam9263-can" or "atmel,at91sam9x5-can"
5 - reg: Should contain CAN controller registers location and length
6 - interrupts: Should contain IRQ line for the CAN controller
7
8Example:
9
10 can0: can@f000c000 {
11 compatbile = "atmel,at91sam9x5-can";
12 reg = <0xf000c000 0x300>;
13 interrupts = <40 4 5>
14 };
diff --git a/Documentation/devicetree/bindings/net/cpsw.txt b/Documentation/devicetree/bindings/net/cpsw.txt
index ecfdf756d10f..4f2ca6b4a182 100644
--- a/Documentation/devicetree/bindings/net/cpsw.txt
+++ b/Documentation/devicetree/bindings/net/cpsw.txt
@@ -15,16 +15,22 @@ Required properties:
15- mac_control : Specifies Default MAC control register content 15- mac_control : Specifies Default MAC control register content
16 for the specific platform 16 for the specific platform
17- slaves : Specifies number for slaves 17- slaves : Specifies number for slaves
18- cpts_active_slave : Specifies the slave to use for time stamping 18- active_slave : Specifies the slave to use for time stamping,
19 ethtool and SIOCGMIIPHY
19- cpts_clock_mult : Numerator to convert input clock ticks into nanoseconds 20- cpts_clock_mult : Numerator to convert input clock ticks into nanoseconds
20- cpts_clock_shift : Denominator to convert input clock ticks into nanoseconds 21- cpts_clock_shift : Denominator to convert input clock ticks into nanoseconds
21- phy_id : Specifies slave phy id
22- mac-address : Specifies slave MAC address
23 22
24Optional properties: 23Optional properties:
25- ti,hwmods : Must be "cpgmac0" 24- ti,hwmods : Must be "cpgmac0"
26- no_bd_ram : Must be 0 or 1 25- no_bd_ram : Must be 0 or 1
27- dual_emac : Specifies Switch to act as Dual EMAC 26- dual_emac : Specifies Switch to act as Dual EMAC
27
28Slave Properties:
29Required properties:
30- phy_id : Specifies slave phy id
31- mac-address : Specifies slave MAC address
32
33Optional properties:
28- dual_emac_res_vlan : Specifies VID to be used to segregate the ports 34- dual_emac_res_vlan : Specifies VID to be used to segregate the ports
29 35
30Note: "ti,hwmods" field is used to fetch the base address and irq 36Note: "ti,hwmods" field is used to fetch the base address and irq
@@ -47,7 +53,7 @@ Examples:
47 rx_descs = <64>; 53 rx_descs = <64>;
48 mac_control = <0x20>; 54 mac_control = <0x20>;
49 slaves = <2>; 55 slaves = <2>;
50 cpts_active_slave = <0>; 56 active_slave = <0>;
51 cpts_clock_mult = <0x80000000>; 57 cpts_clock_mult = <0x80000000>;
52 cpts_clock_shift = <29>; 58 cpts_clock_shift = <29>;
53 cpsw_emac0: slave@0 { 59 cpsw_emac0: slave@0 {
@@ -73,7 +79,7 @@ Examples:
73 rx_descs = <64>; 79 rx_descs = <64>;
74 mac_control = <0x20>; 80 mac_control = <0x20>;
75 slaves = <2>; 81 slaves = <2>;
76 cpts_active_slave = <0>; 82 active_slave = <0>;
77 cpts_clock_mult = <0x80000000>; 83 cpts_clock_mult = <0x80000000>;
78 cpts_clock_shift = <29>; 84 cpts_clock_shift = <29>;
79 cpsw_emac0: slave@0 { 85 cpsw_emac0: slave@0 {
diff --git a/Documentation/devicetree/bindings/net/dsa/dsa.txt b/Documentation/devicetree/bindings/net/dsa/dsa.txt
new file mode 100644
index 000000000000..49f4f7ae3f51
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/dsa/dsa.txt
@@ -0,0 +1,91 @@
1Marvell Distributed Switch Architecture Device Tree Bindings
2------------------------------------------------------------
3
4Required properties:
5- compatible : Should be "marvell,dsa"
6- #address-cells : Must be 2, first cell is the address on the MDIO bus
7 and second cell is the address in the switch tree.
8 Second cell is used only when cascading/chaining.
9- #size-cells : Must be 0
10- dsa,ethernet : Should be a phandle to a valid Ethernet device node
11- dsa,mii-bus : Should be a phandle to a valid MDIO bus device node
12
13Optionnal properties:
14- interrupts : property with a value describing the switch
15 interrupt number (not supported by the driver)
16
17A DSA node can contain multiple switch chips which are therefore child nodes of
18the parent DSA node. The maximum number of allowed child nodes is 4
19(DSA_MAX_SWITCHES).
20Each of these switch child nodes should have the following required properties:
21
22- reg : Describes the switch address on the MII bus
23- #address-cells : Must be 1
24- #size-cells : Must be 0
25
26A switch may have multiple "port" children nodes
27
28Each port children node must have the following mandatory properties:
29- reg : Describes the port address in the switch
30- label : Describes the label associated with this port, special
31 labels are "cpu" to indicate a CPU port and "dsa" to
32 indicate an uplink/downlink port.
33
34Note that a port labelled "dsa" will imply checking for the uplink phandle
35described below.
36
37Optionnal property:
38- link : Should be a phandle to another switch's DSA port.
39 This property is only used when switches are being
40 chained/cascaded together.
41
42Example:
43
44 dsa@0 {
45 compatible = "marvell,dsa";
46 #address-cells = <2>;
47 #size-cells = <0>;
48
49 interrupts = <10>;
50 dsa,ethernet = <&ethernet0>;
51 dsa,mii-bus = <&mii_bus0>;
52
53 switch@0 {
54 #address-cells = <1>;
55 #size-cells = <0>;
56 reg = <16 0>; /* MDIO address 16, switch 0 in tree */
57
58 port@0 {
59 reg = <0>;
60 label = "lan1";
61 };
62
63 port@1 {
64 reg = <1>;
65 label = "lan2";
66 };
67
68 port@5 {
69 reg = <5>;
70 label = "cpu";
71 };
72
73 switch0uplink: port@6 {
74 reg = <6>;
75 label = "dsa";
76 link = <&switch1uplink>;
77 };
78 };
79
80 switch@1 {
81 #address-cells = <1>;
82 #size-cells = <0>;
83 reg = <17 1>; /* MDIO address 17, switch 1 in tree */
84
85 switch1uplink: port@0 {
86 reg = <0>;
87 label = "dsa";
88 link = <&switch0uplink>;
89 };
90 };
91 };
diff --git a/Documentation/devicetree/bindings/net/marvell-orion-mdio.txt b/Documentation/devicetree/bindings/net/marvell-orion-mdio.txt
index 34e7aafa321c..9417e54c26c0 100644
--- a/Documentation/devicetree/bindings/net/marvell-orion-mdio.txt
+++ b/Documentation/devicetree/bindings/net/marvell-orion-mdio.txt
@@ -9,6 +9,10 @@ Required properties:
9- compatible: "marvell,orion-mdio" 9- compatible: "marvell,orion-mdio"
10- reg: address and length of the SMI register 10- reg: address and length of the SMI register
11 11
12Optional properties:
13- interrupts: interrupt line number for the SMI error/done interrupt
14- clocks: Phandle to the clock control device and gate bit
15
12The child nodes of the MDIO driver are the individual PHY devices 16The child nodes of the MDIO driver are the individual PHY devices
13connected to this MDIO bus. They must have a "reg" property given the 17connected to this MDIO bus. They must have a "reg" property given the
14PHY address on the MDIO bus. 18PHY address on the MDIO bus.
diff --git a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt
index bc50899e0c81..648d60eb9fd8 100644
--- a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt
@@ -1,6 +1,6 @@
1* Atmel AT91 Pinmux Controller 1* Atmel AT91 Pinmux Controller
2 2
3The AT91 Pinmux Controler, enables the IC 3The AT91 Pinmux Controller, enables the IC
4to share one PAD to several functional blocks. The sharing is done by 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 5multiplexing the PAD input/output signals. For each PAD there are up to
68 muxing options (called periph modes). Since different modules require 68 muxing options (called periph modes). Since different modules require
diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,bcm2835-gpio.txt b/Documentation/devicetree/bindings/pinctrl/brcm,bcm2835-gpio.txt
index 8edc20e1b09e..2569866c692f 100644
--- a/Documentation/devicetree/bindings/pinctrl/brcm,bcm2835-gpio.txt
+++ b/Documentation/devicetree/bindings/pinctrl/brcm,bcm2835-gpio.txt
@@ -5,7 +5,7 @@ controller, and pinmux/control device.
5 5
6Required properties: 6Required properties:
7- compatible: "brcm,bcm2835-gpio" 7- compatible: "brcm,bcm2835-gpio"
8- reg: Should contain the physical address of the GPIO module's registes. 8- reg: Should contain the physical address of the GPIO module's registers.
9- gpio-controller: Marks the device node as a GPIO controller. 9- gpio-controller: Marks the device node as a GPIO controller.
10- #gpio-cells : Should be two. The first cell is the pin number and the 10- #gpio-cells : Should be two. The first cell is the pin number and the
11 second cell is used to specify optional parameters: 11 second cell is used to specify optional parameters:
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt
index ab19e6bc7d3b..bcfdab5d442e 100644
--- a/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt
@@ -24,9 +24,9 @@ Required properties for iomux controller:
24Required properties for pin configuration node: 24Required properties for pin configuration node:
25- fsl,pins: two integers array, represents a group of pins mux and config 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 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 27 pin working on a specific function, which consists of a tuple of
28 pull-up on this pin. Please refer to fsl,<soc>-pinctrl.txt for the valid 28 <mux_reg conf_reg input_reg mux_val input_val>. CONFIG is the pad setting
29 pins and functions of each SoC. 29 value like pull-up on this pin.
30 30
31Bits used for CONFIG: 31Bits used for CONFIG:
32NO_PAD_CTL(1 << 31): indicate this pin does not need config. 32NO_PAD_CTL(1 << 31): indicate this pin does not need config.
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx35-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx35-pinctrl.txt
index 1183f1a3be33..c083dfd25db9 100644
--- a/Documentation/devicetree/bindings/pinctrl/fsl,imx35-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx35-pinctrl.txt
@@ -29,956 +29,5 @@ PAD_CTL_DSE_MAX (2 << 1)
29PAD_CTL_SRE_FAST (1 << 0) 29PAD_CTL_SRE_FAST (1 << 0)
30PAD_CTL_SRE_SLOW (0 << 0) 30PAD_CTL_SRE_SLOW (0 << 0)
31 31
32See below for available PIN_FUNC_ID for imx35: 32Refer to imx35-pinfunc.h in device tree source folder for all available
330 MX35_PAD_CAPTURE__GPT_CAPIN1 33imx35 PIN_FUNC_ID.
341 MX35_PAD_CAPTURE__GPT_CMPOUT2
352 MX35_PAD_CAPTURE__CSPI2_SS1
363 MX35_PAD_CAPTURE__EPIT1_EPITO
374 MX35_PAD_CAPTURE__CCM_CLK32K
385 MX35_PAD_CAPTURE__GPIO1_4
396 MX35_PAD_COMPARE__GPT_CMPOUT1
407 MX35_PAD_COMPARE__GPT_CAPIN2
418 MX35_PAD_COMPARE__GPT_CMPOUT3
429 MX35_PAD_COMPARE__EPIT2_EPITO
4310 MX35_PAD_COMPARE__GPIO1_5
4411 MX35_PAD_COMPARE__SDMA_EXTDMA_2
4512 MX35_PAD_WDOG_RST__WDOG_WDOG_B
4613 MX35_PAD_WDOG_RST__IPU_FLASH_STROBE
4714 MX35_PAD_WDOG_RST__GPIO1_6
4815 MX35_PAD_GPIO1_0__GPIO1_0
4916 MX35_PAD_GPIO1_0__CCM_PMIC_RDY
5017 MX35_PAD_GPIO1_0__OWIRE_LINE
5118 MX35_PAD_GPIO1_0__SDMA_EXTDMA_0
5219 MX35_PAD_GPIO1_1__GPIO1_1
5320 MX35_PAD_GPIO1_1__PWM_PWMO
5421 MX35_PAD_GPIO1_1__CSPI1_SS2
5522 MX35_PAD_GPIO1_1__SCC_TAMPER_DETECT
5623 MX35_PAD_GPIO1_1__SDMA_EXTDMA_1
5724 MX35_PAD_GPIO2_0__GPIO2_0
5825 MX35_PAD_GPIO2_0__USB_TOP_USBOTG_CLK
5926 MX35_PAD_GPIO3_0__GPIO3_0
6027 MX35_PAD_GPIO3_0__USB_TOP_USBH2_CLK
6128 MX35_PAD_RESET_IN_B__CCM_RESET_IN_B
6229 MX35_PAD_POR_B__CCM_POR_B
6330 MX35_PAD_CLKO__CCM_CLKO
6431 MX35_PAD_CLKO__GPIO1_8
6532 MX35_PAD_BOOT_MODE0__CCM_BOOT_MODE_0
6633 MX35_PAD_BOOT_MODE1__CCM_BOOT_MODE_1
6734 MX35_PAD_CLK_MODE0__CCM_CLK_MODE_0
6835 MX35_PAD_CLK_MODE1__CCM_CLK_MODE_1
6936 MX35_PAD_POWER_FAIL__CCM_DSM_WAKEUP_INT_26
7037 MX35_PAD_VSTBY__CCM_VSTBY
7138 MX35_PAD_VSTBY__GPIO1_7
7239 MX35_PAD_A0__EMI_EIM_DA_L_0
7340 MX35_PAD_A1__EMI_EIM_DA_L_1
7441 MX35_PAD_A2__EMI_EIM_DA_L_2
7542 MX35_PAD_A3__EMI_EIM_DA_L_3
7643 MX35_PAD_A4__EMI_EIM_DA_L_4
7744 MX35_PAD_A5__EMI_EIM_DA_L_5
7845 MX35_PAD_A6__EMI_EIM_DA_L_6
7946 MX35_PAD_A7__EMI_EIM_DA_L_7
8047 MX35_PAD_A8__EMI_EIM_DA_H_8
8148 MX35_PAD_A9__EMI_EIM_DA_H_9
8249 MX35_PAD_A10__EMI_EIM_DA_H_10
8350 MX35_PAD_MA10__EMI_MA10
8451 MX35_PAD_A11__EMI_EIM_DA_H_11
8552 MX35_PAD_A12__EMI_EIM_DA_H_12
8653 MX35_PAD_A13__EMI_EIM_DA_H_13
8754 MX35_PAD_A14__EMI_EIM_DA_H2_14
8855 MX35_PAD_A15__EMI_EIM_DA_H2_15
8956 MX35_PAD_A16__EMI_EIM_A_16
9057 MX35_PAD_A17__EMI_EIM_A_17
9158 MX35_PAD_A18__EMI_EIM_A_18
9259 MX35_PAD_A19__EMI_EIM_A_19
9360 MX35_PAD_A20__EMI_EIM_A_20
9461 MX35_PAD_A21__EMI_EIM_A_21
9562 MX35_PAD_A22__EMI_EIM_A_22
9663 MX35_PAD_A23__EMI_EIM_A_23
9764 MX35_PAD_A24__EMI_EIM_A_24
9865 MX35_PAD_A25__EMI_EIM_A_25
9966 MX35_PAD_SDBA1__EMI_EIM_SDBA1
10067 MX35_PAD_SDBA0__EMI_EIM_SDBA0
10168 MX35_PAD_SD0__EMI_DRAM_D_0
10269 MX35_PAD_SD1__EMI_DRAM_D_1
10370 MX35_PAD_SD2__EMI_DRAM_D_2
10471 MX35_PAD_SD3__EMI_DRAM_D_3
10572 MX35_PAD_SD4__EMI_DRAM_D_4
10673 MX35_PAD_SD5__EMI_DRAM_D_5
10774 MX35_PAD_SD6__EMI_DRAM_D_6
10875 MX35_PAD_SD7__EMI_DRAM_D_7
10976 MX35_PAD_SD8__EMI_DRAM_D_8
11077 MX35_PAD_SD9__EMI_DRAM_D_9
11178 MX35_PAD_SD10__EMI_DRAM_D_10
11279 MX35_PAD_SD11__EMI_DRAM_D_11
11380 MX35_PAD_SD12__EMI_DRAM_D_12
11481 MX35_PAD_SD13__EMI_DRAM_D_13
11582 MX35_PAD_SD14__EMI_DRAM_D_14
11683 MX35_PAD_SD15__EMI_DRAM_D_15
11784 MX35_PAD_SD16__EMI_DRAM_D_16
11885 MX35_PAD_SD17__EMI_DRAM_D_17
11986 MX35_PAD_SD18__EMI_DRAM_D_18
12087 MX35_PAD_SD19__EMI_DRAM_D_19
12188 MX35_PAD_SD20__EMI_DRAM_D_20
12289 MX35_PAD_SD21__EMI_DRAM_D_21
12390 MX35_PAD_SD22__EMI_DRAM_D_22
12491 MX35_PAD_SD23__EMI_DRAM_D_23
12592 MX35_PAD_SD24__EMI_DRAM_D_24
12693 MX35_PAD_SD25__EMI_DRAM_D_25
12794 MX35_PAD_SD26__EMI_DRAM_D_26
12895 MX35_PAD_SD27__EMI_DRAM_D_27
12996 MX35_PAD_SD28__EMI_DRAM_D_28
13097 MX35_PAD_SD29__EMI_DRAM_D_29
13198 MX35_PAD_SD30__EMI_DRAM_D_30
13299 MX35_PAD_SD31__EMI_DRAM_D_31
133100 MX35_PAD_DQM0__EMI_DRAM_DQM_0
134101 MX35_PAD_DQM1__EMI_DRAM_DQM_1
135102 MX35_PAD_DQM2__EMI_DRAM_DQM_2
136103 MX35_PAD_DQM3__EMI_DRAM_DQM_3
137104 MX35_PAD_EB0__EMI_EIM_EB0_B
138105 MX35_PAD_EB1__EMI_EIM_EB1_B
139106 MX35_PAD_OE__EMI_EIM_OE
140107 MX35_PAD_CS0__EMI_EIM_CS0
141108 MX35_PAD_CS1__EMI_EIM_CS1
142109 MX35_PAD_CS1__EMI_NANDF_CE3
143110 MX35_PAD_CS2__EMI_EIM_CS2
144111 MX35_PAD_CS3__EMI_EIM_CS3
145112 MX35_PAD_CS4__EMI_EIM_CS4
146113 MX35_PAD_CS4__EMI_DTACK_B
147114 MX35_PAD_CS4__EMI_NANDF_CE1
148115 MX35_PAD_CS4__GPIO1_20
149116 MX35_PAD_CS5__EMI_EIM_CS5
150117 MX35_PAD_CS5__CSPI2_SS2
151118 MX35_PAD_CS5__CSPI1_SS2
152119 MX35_PAD_CS5__EMI_NANDF_CE2
153120 MX35_PAD_CS5__GPIO1_21
154121 MX35_PAD_NF_CE0__EMI_NANDF_CE0
155122 MX35_PAD_NF_CE0__GPIO1_22
156123 MX35_PAD_ECB__EMI_EIM_ECB
157124 MX35_PAD_LBA__EMI_EIM_LBA
158125 MX35_PAD_BCLK__EMI_EIM_BCLK
159126 MX35_PAD_RW__EMI_EIM_RW
160127 MX35_PAD_RAS__EMI_DRAM_RAS
161128 MX35_PAD_CAS__EMI_DRAM_CAS
162129 MX35_PAD_SDWE__EMI_DRAM_SDWE
163130 MX35_PAD_SDCKE0__EMI_DRAM_SDCKE_0
164131 MX35_PAD_SDCKE1__EMI_DRAM_SDCKE_1
165132 MX35_PAD_SDCLK__EMI_DRAM_SDCLK
166133 MX35_PAD_SDQS0__EMI_DRAM_SDQS_0
167134 MX35_PAD_SDQS1__EMI_DRAM_SDQS_1
168135 MX35_PAD_SDQS2__EMI_DRAM_SDQS_2
169136 MX35_PAD_SDQS3__EMI_DRAM_SDQS_3
170137 MX35_PAD_NFWE_B__EMI_NANDF_WE_B
171138 MX35_PAD_NFWE_B__USB_TOP_USBH2_DATA_3
172139 MX35_PAD_NFWE_B__IPU_DISPB_D0_VSYNC
173140 MX35_PAD_NFWE_B__GPIO2_18
174141 MX35_PAD_NFWE_B__ARM11P_TOP_TRACE_0
175142 MX35_PAD_NFRE_B__EMI_NANDF_RE_B
176143 MX35_PAD_NFRE_B__USB_TOP_USBH2_DIR
177144 MX35_PAD_NFRE_B__IPU_DISPB_BCLK
178145 MX35_PAD_NFRE_B__GPIO2_19
179146 MX35_PAD_NFRE_B__ARM11P_TOP_TRACE_1
180147 MX35_PAD_NFALE__EMI_NANDF_ALE
181148 MX35_PAD_NFALE__USB_TOP_USBH2_STP
182149 MX35_PAD_NFALE__IPU_DISPB_CS0
183150 MX35_PAD_NFALE__GPIO2_20
184151 MX35_PAD_NFALE__ARM11P_TOP_TRACE_2
185152 MX35_PAD_NFCLE__EMI_NANDF_CLE
186153 MX35_PAD_NFCLE__USB_TOP_USBH2_NXT
187154 MX35_PAD_NFCLE__IPU_DISPB_PAR_RS
188155 MX35_PAD_NFCLE__GPIO2_21
189156 MX35_PAD_NFCLE__ARM11P_TOP_TRACE_3
190157 MX35_PAD_NFWP_B__EMI_NANDF_WP_B
191158 MX35_PAD_NFWP_B__USB_TOP_USBH2_DATA_7
192159 MX35_PAD_NFWP_B__IPU_DISPB_WR
193160 MX35_PAD_NFWP_B__GPIO2_22
194161 MX35_PAD_NFWP_B__ARM11P_TOP_TRCTL
195162 MX35_PAD_NFRB__EMI_NANDF_RB
196163 MX35_PAD_NFRB__IPU_DISPB_RD
197164 MX35_PAD_NFRB__GPIO2_23
198165 MX35_PAD_NFRB__ARM11P_TOP_TRCLK
199166 MX35_PAD_D15__EMI_EIM_D_15
200167 MX35_PAD_D14__EMI_EIM_D_14
201168 MX35_PAD_D13__EMI_EIM_D_13
202169 MX35_PAD_D12__EMI_EIM_D_12
203170 MX35_PAD_D11__EMI_EIM_D_11
204171 MX35_PAD_D10__EMI_EIM_D_10
205172 MX35_PAD_D9__EMI_EIM_D_9
206173 MX35_PAD_D8__EMI_EIM_D_8
207174 MX35_PAD_D7__EMI_EIM_D_7
208175 MX35_PAD_D6__EMI_EIM_D_6
209176 MX35_PAD_D5__EMI_EIM_D_5
210177 MX35_PAD_D4__EMI_EIM_D_4
211178 MX35_PAD_D3__EMI_EIM_D_3
212179 MX35_PAD_D2__EMI_EIM_D_2
213180 MX35_PAD_D1__EMI_EIM_D_1
214181 MX35_PAD_D0__EMI_EIM_D_0
215182 MX35_PAD_CSI_D8__IPU_CSI_D_8
216183 MX35_PAD_CSI_D8__KPP_COL_0
217184 MX35_PAD_CSI_D8__GPIO1_20
218185 MX35_PAD_CSI_D8__ARM11P_TOP_EVNTBUS_13
219186 MX35_PAD_CSI_D9__IPU_CSI_D_9
220187 MX35_PAD_CSI_D9__KPP_COL_1
221188 MX35_PAD_CSI_D9__GPIO1_21
222189 MX35_PAD_CSI_D9__ARM11P_TOP_EVNTBUS_14
223190 MX35_PAD_CSI_D10__IPU_CSI_D_10
224191 MX35_PAD_CSI_D10__KPP_COL_2
225192 MX35_PAD_CSI_D10__GPIO1_22
226193 MX35_PAD_CSI_D10__ARM11P_TOP_EVNTBUS_15
227194 MX35_PAD_CSI_D11__IPU_CSI_D_11
228195 MX35_PAD_CSI_D11__KPP_COL_3
229196 MX35_PAD_CSI_D11__GPIO1_23
230197 MX35_PAD_CSI_D12__IPU_CSI_D_12
231198 MX35_PAD_CSI_D12__KPP_ROW_0
232199 MX35_PAD_CSI_D12__GPIO1_24
233200 MX35_PAD_CSI_D13__IPU_CSI_D_13
234201 MX35_PAD_CSI_D13__KPP_ROW_1
235202 MX35_PAD_CSI_D13__GPIO1_25
236203 MX35_PAD_CSI_D14__IPU_CSI_D_14
237204 MX35_PAD_CSI_D14__KPP_ROW_2
238205 MX35_PAD_CSI_D14__GPIO1_26
239206 MX35_PAD_CSI_D15__IPU_CSI_D_15
240207 MX35_PAD_CSI_D15__KPP_ROW_3
241208 MX35_PAD_CSI_D15__GPIO1_27
242209 MX35_PAD_CSI_MCLK__IPU_CSI_MCLK
243210 MX35_PAD_CSI_MCLK__GPIO1_28
244211 MX35_PAD_CSI_VSYNC__IPU_CSI_VSYNC
245212 MX35_PAD_CSI_VSYNC__GPIO1_29
246213 MX35_PAD_CSI_HSYNC__IPU_CSI_HSYNC
247214 MX35_PAD_CSI_HSYNC__GPIO1_30
248215 MX35_PAD_CSI_PIXCLK__IPU_CSI_PIXCLK
249216 MX35_PAD_CSI_PIXCLK__GPIO1_31
250217 MX35_PAD_I2C1_CLK__I2C1_SCL
251218 MX35_PAD_I2C1_CLK__GPIO2_24
252219 MX35_PAD_I2C1_CLK__CCM_USB_BYP_CLK
253220 MX35_PAD_I2C1_DAT__I2C1_SDA
254221 MX35_PAD_I2C1_DAT__GPIO2_25
255222 MX35_PAD_I2C2_CLK__I2C2_SCL
256223 MX35_PAD_I2C2_CLK__CAN1_TXCAN
257224 MX35_PAD_I2C2_CLK__USB_TOP_USBH2_PWR
258225 MX35_PAD_I2C2_CLK__GPIO2_26
259226 MX35_PAD_I2C2_CLK__SDMA_DEBUG_BUS_DEVICE_2
260227 MX35_PAD_I2C2_DAT__I2C2_SDA
261228 MX35_PAD_I2C2_DAT__CAN1_RXCAN
262229 MX35_PAD_I2C2_DAT__USB_TOP_USBH2_OC
263230 MX35_PAD_I2C2_DAT__GPIO2_27
264231 MX35_PAD_I2C2_DAT__SDMA_DEBUG_BUS_DEVICE_3
265232 MX35_PAD_STXD4__AUDMUX_AUD4_TXD
266233 MX35_PAD_STXD4__GPIO2_28
267234 MX35_PAD_STXD4__ARM11P_TOP_ARM_COREASID0
268235 MX35_PAD_SRXD4__AUDMUX_AUD4_RXD
269236 MX35_PAD_SRXD4__GPIO2_29
270237 MX35_PAD_SRXD4__ARM11P_TOP_ARM_COREASID1
271238 MX35_PAD_SCK4__AUDMUX_AUD4_TXC
272239 MX35_PAD_SCK4__GPIO2_30
273240 MX35_PAD_SCK4__ARM11P_TOP_ARM_COREASID2
274241 MX35_PAD_STXFS4__AUDMUX_AUD4_TXFS
275242 MX35_PAD_STXFS4__GPIO2_31
276243 MX35_PAD_STXFS4__ARM11P_TOP_ARM_COREASID3
277244 MX35_PAD_STXD5__AUDMUX_AUD5_TXD
278245 MX35_PAD_STXD5__SPDIF_SPDIF_OUT1
279246 MX35_PAD_STXD5__CSPI2_MOSI
280247 MX35_PAD_STXD5__GPIO1_0
281248 MX35_PAD_STXD5__ARM11P_TOP_ARM_COREASID4
282249 MX35_PAD_SRXD5__AUDMUX_AUD5_RXD
283250 MX35_PAD_SRXD5__SPDIF_SPDIF_IN1
284251 MX35_PAD_SRXD5__CSPI2_MISO
285252 MX35_PAD_SRXD5__GPIO1_1
286253 MX35_PAD_SRXD5__ARM11P_TOP_ARM_COREASID5
287254 MX35_PAD_SCK5__AUDMUX_AUD5_TXC
288255 MX35_PAD_SCK5__SPDIF_SPDIF_EXTCLK
289256 MX35_PAD_SCK5__CSPI2_SCLK
290257 MX35_PAD_SCK5__GPIO1_2
291258 MX35_PAD_SCK5__ARM11P_TOP_ARM_COREASID6
292259 MX35_PAD_STXFS5__AUDMUX_AUD5_TXFS
293260 MX35_PAD_STXFS5__CSPI2_RDY
294261 MX35_PAD_STXFS5__GPIO1_3
295262 MX35_PAD_STXFS5__ARM11P_TOP_ARM_COREASID7
296263 MX35_PAD_SCKR__ESAI_SCKR
297264 MX35_PAD_SCKR__GPIO1_4
298265 MX35_PAD_SCKR__ARM11P_TOP_EVNTBUS_10
299266 MX35_PAD_FSR__ESAI_FSR
300267 MX35_PAD_FSR__GPIO1_5
301268 MX35_PAD_FSR__ARM11P_TOP_EVNTBUS_11
302269 MX35_PAD_HCKR__ESAI_HCKR
303270 MX35_PAD_HCKR__AUDMUX_AUD5_RXFS
304271 MX35_PAD_HCKR__CSPI2_SS0
305272 MX35_PAD_HCKR__IPU_FLASH_STROBE
306273 MX35_PAD_HCKR__GPIO1_6
307274 MX35_PAD_HCKR__ARM11P_TOP_EVNTBUS_12
308275 MX35_PAD_SCKT__ESAI_SCKT
309276 MX35_PAD_SCKT__GPIO1_7
310277 MX35_PAD_SCKT__IPU_CSI_D_0
311278 MX35_PAD_SCKT__KPP_ROW_2
312279 MX35_PAD_FST__ESAI_FST
313280 MX35_PAD_FST__GPIO1_8
314281 MX35_PAD_FST__IPU_CSI_D_1
315282 MX35_PAD_FST__KPP_ROW_3
316283 MX35_PAD_HCKT__ESAI_HCKT
317284 MX35_PAD_HCKT__AUDMUX_AUD5_RXC
318285 MX35_PAD_HCKT__GPIO1_9
319286 MX35_PAD_HCKT__IPU_CSI_D_2
320287 MX35_PAD_HCKT__KPP_COL_3
321288 MX35_PAD_TX5_RX0__ESAI_TX5_RX0
322289 MX35_PAD_TX5_RX0__AUDMUX_AUD4_RXC
323290 MX35_PAD_TX5_RX0__CSPI2_SS2
324291 MX35_PAD_TX5_RX0__CAN2_TXCAN
325292 MX35_PAD_TX5_RX0__UART2_DTR
326293 MX35_PAD_TX5_RX0__GPIO1_10
327294 MX35_PAD_TX5_RX0__EMI_M3IF_CHOSEN_MASTER_0
328295 MX35_PAD_TX4_RX1__ESAI_TX4_RX1
329296 MX35_PAD_TX4_RX1__AUDMUX_AUD4_RXFS
330297 MX35_PAD_TX4_RX1__CSPI2_SS3
331298 MX35_PAD_TX4_RX1__CAN2_RXCAN
332299 MX35_PAD_TX4_RX1__UART2_DSR
333300 MX35_PAD_TX4_RX1__GPIO1_11
334301 MX35_PAD_TX4_RX1__IPU_CSI_D_3
335302 MX35_PAD_TX4_RX1__KPP_ROW_0
336303 MX35_PAD_TX3_RX2__ESAI_TX3_RX2
337304 MX35_PAD_TX3_RX2__I2C3_SCL
338305 MX35_PAD_TX3_RX2__EMI_NANDF_CE1
339306 MX35_PAD_TX3_RX2__GPIO1_12
340307 MX35_PAD_TX3_RX2__IPU_CSI_D_4
341308 MX35_PAD_TX3_RX2__KPP_ROW_1
342309 MX35_PAD_TX2_RX3__ESAI_TX2_RX3
343310 MX35_PAD_TX2_RX3__I2C3_SDA
344311 MX35_PAD_TX2_RX3__EMI_NANDF_CE2
345312 MX35_PAD_TX2_RX3__GPIO1_13
346313 MX35_PAD_TX2_RX3__IPU_CSI_D_5
347314 MX35_PAD_TX2_RX3__KPP_COL_0
348315 MX35_PAD_TX1__ESAI_TX1
349316 MX35_PAD_TX1__CCM_PMIC_RDY
350317 MX35_PAD_TX1__CSPI1_SS2
351318 MX35_PAD_TX1__EMI_NANDF_CE3
352319 MX35_PAD_TX1__UART2_RI
353320 MX35_PAD_TX1__GPIO1_14
354321 MX35_PAD_TX1__IPU_CSI_D_6
355322 MX35_PAD_TX1__KPP_COL_1
356323 MX35_PAD_TX0__ESAI_TX0
357324 MX35_PAD_TX0__SPDIF_SPDIF_EXTCLK
358325 MX35_PAD_TX0__CSPI1_SS3
359326 MX35_PAD_TX0__EMI_DTACK_B
360327 MX35_PAD_TX0__UART2_DCD
361328 MX35_PAD_TX0__GPIO1_15
362329 MX35_PAD_TX0__IPU_CSI_D_7
363330 MX35_PAD_TX0__KPP_COL_2
364331 MX35_PAD_CSPI1_MOSI__CSPI1_MOSI
365332 MX35_PAD_CSPI1_MOSI__GPIO1_16
366333 MX35_PAD_CSPI1_MOSI__ECT_CTI_TRIG_OUT1_2
367334 MX35_PAD_CSPI1_MISO__CSPI1_MISO
368335 MX35_PAD_CSPI1_MISO__GPIO1_17
369336 MX35_PAD_CSPI1_MISO__ECT_CTI_TRIG_OUT1_3
370337 MX35_PAD_CSPI1_SS0__CSPI1_SS0
371338 MX35_PAD_CSPI1_SS0__OWIRE_LINE
372339 MX35_PAD_CSPI1_SS0__CSPI2_SS3
373340 MX35_PAD_CSPI1_SS0__GPIO1_18
374341 MX35_PAD_CSPI1_SS0__ECT_CTI_TRIG_OUT1_4
375342 MX35_PAD_CSPI1_SS1__CSPI1_SS1
376343 MX35_PAD_CSPI1_SS1__PWM_PWMO
377344 MX35_PAD_CSPI1_SS1__CCM_CLK32K
378345 MX35_PAD_CSPI1_SS1__GPIO1_19
379346 MX35_PAD_CSPI1_SS1__IPU_DIAGB_29
380347 MX35_PAD_CSPI1_SS1__ECT_CTI_TRIG_OUT1_5
381348 MX35_PAD_CSPI1_SCLK__CSPI1_SCLK
382349 MX35_PAD_CSPI1_SCLK__GPIO3_4
383350 MX35_PAD_CSPI1_SCLK__IPU_DIAGB_30
384351 MX35_PAD_CSPI1_SCLK__EMI_M3IF_CHOSEN_MASTER_1
385352 MX35_PAD_CSPI1_SPI_RDY__CSPI1_RDY
386353 MX35_PAD_CSPI1_SPI_RDY__GPIO3_5
387354 MX35_PAD_CSPI1_SPI_RDY__IPU_DIAGB_31
388355 MX35_PAD_CSPI1_SPI_RDY__EMI_M3IF_CHOSEN_MASTER_2
389356 MX35_PAD_RXD1__UART1_RXD_MUX
390357 MX35_PAD_RXD1__CSPI2_MOSI
391358 MX35_PAD_RXD1__KPP_COL_4
392359 MX35_PAD_RXD1__GPIO3_6
393360 MX35_PAD_RXD1__ARM11P_TOP_EVNTBUS_16
394361 MX35_PAD_TXD1__UART1_TXD_MUX
395362 MX35_PAD_TXD1__CSPI2_MISO
396363 MX35_PAD_TXD1__KPP_COL_5
397364 MX35_PAD_TXD1__GPIO3_7
398365 MX35_PAD_TXD1__ARM11P_TOP_EVNTBUS_17
399366 MX35_PAD_RTS1__UART1_RTS
400367 MX35_PAD_RTS1__CSPI2_SCLK
401368 MX35_PAD_RTS1__I2C3_SCL
402369 MX35_PAD_RTS1__IPU_CSI_D_0
403370 MX35_PAD_RTS1__KPP_COL_6
404371 MX35_PAD_RTS1__GPIO3_8
405372 MX35_PAD_RTS1__EMI_NANDF_CE1
406373 MX35_PAD_RTS1__ARM11P_TOP_EVNTBUS_18
407374 MX35_PAD_CTS1__UART1_CTS
408375 MX35_PAD_CTS1__CSPI2_RDY
409376 MX35_PAD_CTS1__I2C3_SDA
410377 MX35_PAD_CTS1__IPU_CSI_D_1
411378 MX35_PAD_CTS1__KPP_COL_7
412379 MX35_PAD_CTS1__GPIO3_9
413380 MX35_PAD_CTS1__EMI_NANDF_CE2
414381 MX35_PAD_CTS1__ARM11P_TOP_EVNTBUS_19
415382 MX35_PAD_RXD2__UART2_RXD_MUX
416383 MX35_PAD_RXD2__KPP_ROW_4
417384 MX35_PAD_RXD2__GPIO3_10
418385 MX35_PAD_TXD2__UART2_TXD_MUX
419386 MX35_PAD_TXD2__SPDIF_SPDIF_EXTCLK
420387 MX35_PAD_TXD2__KPP_ROW_5
421388 MX35_PAD_TXD2__GPIO3_11
422389 MX35_PAD_RTS2__UART2_RTS
423390 MX35_PAD_RTS2__SPDIF_SPDIF_IN1
424391 MX35_PAD_RTS2__CAN2_RXCAN
425392 MX35_PAD_RTS2__IPU_CSI_D_2
426393 MX35_PAD_RTS2__KPP_ROW_6
427394 MX35_PAD_RTS2__GPIO3_12
428395 MX35_PAD_RTS2__AUDMUX_AUD5_RXC
429396 MX35_PAD_RTS2__UART3_RXD_MUX
430397 MX35_PAD_CTS2__UART2_CTS
431398 MX35_PAD_CTS2__SPDIF_SPDIF_OUT1
432399 MX35_PAD_CTS2__CAN2_TXCAN
433400 MX35_PAD_CTS2__IPU_CSI_D_3
434401 MX35_PAD_CTS2__KPP_ROW_7
435402 MX35_PAD_CTS2__GPIO3_13
436403 MX35_PAD_CTS2__AUDMUX_AUD5_RXFS
437404 MX35_PAD_CTS2__UART3_TXD_MUX
438405 MX35_PAD_RTCK__ARM11P_TOP_RTCK
439406 MX35_PAD_TCK__SJC_TCK
440407 MX35_PAD_TMS__SJC_TMS
441408 MX35_PAD_TDI__SJC_TDI
442409 MX35_PAD_TDO__SJC_TDO
443410 MX35_PAD_TRSTB__SJC_TRSTB
444411 MX35_PAD_DE_B__SJC_DE_B
445412 MX35_PAD_SJC_MOD__SJC_MOD
446413 MX35_PAD_USBOTG_PWR__USB_TOP_USBOTG_PWR
447414 MX35_PAD_USBOTG_PWR__USB_TOP_USBH2_PWR
448415 MX35_PAD_USBOTG_PWR__GPIO3_14
449416 MX35_PAD_USBOTG_OC__USB_TOP_USBOTG_OC
450417 MX35_PAD_USBOTG_OC__USB_TOP_USBH2_OC
451418 MX35_PAD_USBOTG_OC__GPIO3_15
452419 MX35_PAD_LD0__IPU_DISPB_DAT_0
453420 MX35_PAD_LD0__GPIO2_0
454421 MX35_PAD_LD0__SDMA_SDMA_DEBUG_PC_0
455422 MX35_PAD_LD1__IPU_DISPB_DAT_1
456423 MX35_PAD_LD1__GPIO2_1
457424 MX35_PAD_LD1__SDMA_SDMA_DEBUG_PC_1
458425 MX35_PAD_LD2__IPU_DISPB_DAT_2
459426 MX35_PAD_LD2__GPIO2_2
460427 MX35_PAD_LD2__SDMA_SDMA_DEBUG_PC_2
461428 MX35_PAD_LD3__IPU_DISPB_DAT_3
462429 MX35_PAD_LD3__GPIO2_3
463430 MX35_PAD_LD3__SDMA_SDMA_DEBUG_PC_3
464431 MX35_PAD_LD4__IPU_DISPB_DAT_4
465432 MX35_PAD_LD4__GPIO2_4
466433 MX35_PAD_LD4__SDMA_SDMA_DEBUG_PC_4
467434 MX35_PAD_LD5__IPU_DISPB_DAT_5
468435 MX35_PAD_LD5__GPIO2_5
469436 MX35_PAD_LD5__SDMA_SDMA_DEBUG_PC_5
470437 MX35_PAD_LD6__IPU_DISPB_DAT_6
471438 MX35_PAD_LD6__GPIO2_6
472439 MX35_PAD_LD6__SDMA_SDMA_DEBUG_PC_6
473440 MX35_PAD_LD7__IPU_DISPB_DAT_7
474441 MX35_PAD_LD7__GPIO2_7
475442 MX35_PAD_LD7__SDMA_SDMA_DEBUG_PC_7
476443 MX35_PAD_LD8__IPU_DISPB_DAT_8
477444 MX35_PAD_LD8__GPIO2_8
478445 MX35_PAD_LD8__SDMA_SDMA_DEBUG_PC_8
479446 MX35_PAD_LD9__IPU_DISPB_DAT_9
480447 MX35_PAD_LD9__GPIO2_9
481448 MX35_PAD_LD9__SDMA_SDMA_DEBUG_PC_9
482449 MX35_PAD_LD10__IPU_DISPB_DAT_10
483450 MX35_PAD_LD10__GPIO2_10
484451 MX35_PAD_LD10__SDMA_SDMA_DEBUG_PC_10
485452 MX35_PAD_LD11__IPU_DISPB_DAT_11
486453 MX35_PAD_LD11__GPIO2_11
487454 MX35_PAD_LD11__SDMA_SDMA_DEBUG_PC_11
488455 MX35_PAD_LD11__ARM11P_TOP_TRACE_4
489456 MX35_PAD_LD12__IPU_DISPB_DAT_12
490457 MX35_PAD_LD12__GPIO2_12
491458 MX35_PAD_LD12__SDMA_SDMA_DEBUG_PC_12
492459 MX35_PAD_LD12__ARM11P_TOP_TRACE_5
493460 MX35_PAD_LD13__IPU_DISPB_DAT_13
494461 MX35_PAD_LD13__GPIO2_13
495462 MX35_PAD_LD13__SDMA_SDMA_DEBUG_PC_13
496463 MX35_PAD_LD13__ARM11P_TOP_TRACE_6
497464 MX35_PAD_LD14__IPU_DISPB_DAT_14
498465 MX35_PAD_LD14__GPIO2_14
499466 MX35_PAD_LD14__SDMA_SDMA_DEBUG_EVENT_CHANNEL_0
500467 MX35_PAD_LD14__ARM11P_TOP_TRACE_7
501468 MX35_PAD_LD15__IPU_DISPB_DAT_15
502469 MX35_PAD_LD15__GPIO2_15
503470 MX35_PAD_LD15__SDMA_SDMA_DEBUG_EVENT_CHANNEL_1
504471 MX35_PAD_LD15__ARM11P_TOP_TRACE_8
505472 MX35_PAD_LD16__IPU_DISPB_DAT_16
506473 MX35_PAD_LD16__IPU_DISPB_D12_VSYNC
507474 MX35_PAD_LD16__GPIO2_16
508475 MX35_PAD_LD16__SDMA_SDMA_DEBUG_EVENT_CHANNEL_2
509476 MX35_PAD_LD16__ARM11P_TOP_TRACE_9
510477 MX35_PAD_LD17__IPU_DISPB_DAT_17
511478 MX35_PAD_LD17__IPU_DISPB_CS2
512479 MX35_PAD_LD17__GPIO2_17
513480 MX35_PAD_LD17__SDMA_SDMA_DEBUG_EVENT_CHANNEL_3
514481 MX35_PAD_LD17__ARM11P_TOP_TRACE_10
515482 MX35_PAD_LD18__IPU_DISPB_DAT_18
516483 MX35_PAD_LD18__IPU_DISPB_D0_VSYNC
517484 MX35_PAD_LD18__IPU_DISPB_D12_VSYNC
518485 MX35_PAD_LD18__ESDHC3_CMD
519486 MX35_PAD_LD18__USB_TOP_USBOTG_DATA_3
520487 MX35_PAD_LD18__GPIO3_24
521488 MX35_PAD_LD18__SDMA_SDMA_DEBUG_EVENT_CHANNEL_4
522489 MX35_PAD_LD18__ARM11P_TOP_TRACE_11
523490 MX35_PAD_LD19__IPU_DISPB_DAT_19
524491 MX35_PAD_LD19__IPU_DISPB_BCLK
525492 MX35_PAD_LD19__IPU_DISPB_CS1
526493 MX35_PAD_LD19__ESDHC3_CLK
527494 MX35_PAD_LD19__USB_TOP_USBOTG_DIR
528495 MX35_PAD_LD19__GPIO3_25
529496 MX35_PAD_LD19__SDMA_SDMA_DEBUG_EVENT_CHANNEL_5
530497 MX35_PAD_LD19__ARM11P_TOP_TRACE_12
531498 MX35_PAD_LD20__IPU_DISPB_DAT_20
532499 MX35_PAD_LD20__IPU_DISPB_CS0
533500 MX35_PAD_LD20__IPU_DISPB_SD_CLK
534501 MX35_PAD_LD20__ESDHC3_DAT0
535502 MX35_PAD_LD20__GPIO3_26
536503 MX35_PAD_LD20__SDMA_SDMA_DEBUG_CORE_STATUS_3
537504 MX35_PAD_LD20__ARM11P_TOP_TRACE_13
538505 MX35_PAD_LD21__IPU_DISPB_DAT_21
539506 MX35_PAD_LD21__IPU_DISPB_PAR_RS
540507 MX35_PAD_LD21__IPU_DISPB_SER_RS
541508 MX35_PAD_LD21__ESDHC3_DAT1
542509 MX35_PAD_LD21__USB_TOP_USBOTG_STP
543510 MX35_PAD_LD21__GPIO3_27
544511 MX35_PAD_LD21__SDMA_DEBUG_EVENT_CHANNEL_SEL
545512 MX35_PAD_LD21__ARM11P_TOP_TRACE_14
546513 MX35_PAD_LD22__IPU_DISPB_DAT_22
547514 MX35_PAD_LD22__IPU_DISPB_WR
548515 MX35_PAD_LD22__IPU_DISPB_SD_D_I
549516 MX35_PAD_LD22__ESDHC3_DAT2
550517 MX35_PAD_LD22__USB_TOP_USBOTG_NXT
551518 MX35_PAD_LD22__GPIO3_28
552519 MX35_PAD_LD22__SDMA_DEBUG_BUS_ERROR
553520 MX35_PAD_LD22__ARM11P_TOP_TRCTL
554521 MX35_PAD_LD23__IPU_DISPB_DAT_23
555522 MX35_PAD_LD23__IPU_DISPB_RD
556523 MX35_PAD_LD23__IPU_DISPB_SD_D_IO
557524 MX35_PAD_LD23__ESDHC3_DAT3
558525 MX35_PAD_LD23__USB_TOP_USBOTG_DATA_7
559526 MX35_PAD_LD23__GPIO3_29
560527 MX35_PAD_LD23__SDMA_DEBUG_MATCHED_DMBUS
561528 MX35_PAD_LD23__ARM11P_TOP_TRCLK
562529 MX35_PAD_D3_HSYNC__IPU_DISPB_D3_HSYNC
563530 MX35_PAD_D3_HSYNC__IPU_DISPB_SD_D_IO
564531 MX35_PAD_D3_HSYNC__GPIO3_30
565532 MX35_PAD_D3_HSYNC__SDMA_DEBUG_RTBUFFER_WRITE
566533 MX35_PAD_D3_HSYNC__ARM11P_TOP_TRACE_15
567534 MX35_PAD_D3_FPSHIFT__IPU_DISPB_D3_CLK
568535 MX35_PAD_D3_FPSHIFT__IPU_DISPB_SD_CLK
569536 MX35_PAD_D3_FPSHIFT__GPIO3_31
570537 MX35_PAD_D3_FPSHIFT__SDMA_SDMA_DEBUG_CORE_STATUS_0
571538 MX35_PAD_D3_FPSHIFT__ARM11P_TOP_TRACE_16
572539 MX35_PAD_D3_DRDY__IPU_DISPB_D3_DRDY
573540 MX35_PAD_D3_DRDY__IPU_DISPB_SD_D_O
574541 MX35_PAD_D3_DRDY__GPIO1_0
575542 MX35_PAD_D3_DRDY__SDMA_SDMA_DEBUG_CORE_STATUS_1
576543 MX35_PAD_D3_DRDY__ARM11P_TOP_TRACE_17
577544 MX35_PAD_CONTRAST__IPU_DISPB_CONTR
578545 MX35_PAD_CONTRAST__GPIO1_1
579546 MX35_PAD_CONTRAST__SDMA_SDMA_DEBUG_CORE_STATUS_2
580547 MX35_PAD_CONTRAST__ARM11P_TOP_TRACE_18
581548 MX35_PAD_D3_VSYNC__IPU_DISPB_D3_VSYNC
582549 MX35_PAD_D3_VSYNC__IPU_DISPB_CS1
583550 MX35_PAD_D3_VSYNC__GPIO1_2
584551 MX35_PAD_D3_VSYNC__SDMA_DEBUG_YIELD
585552 MX35_PAD_D3_VSYNC__ARM11P_TOP_TRACE_19
586553 MX35_PAD_D3_REV__IPU_DISPB_D3_REV
587554 MX35_PAD_D3_REV__IPU_DISPB_SER_RS
588555 MX35_PAD_D3_REV__GPIO1_3
589556 MX35_PAD_D3_REV__SDMA_DEBUG_BUS_RWB
590557 MX35_PAD_D3_REV__ARM11P_TOP_TRACE_20
591558 MX35_PAD_D3_CLS__IPU_DISPB_D3_CLS
592559 MX35_PAD_D3_CLS__IPU_DISPB_CS2
593560 MX35_PAD_D3_CLS__GPIO1_4
594561 MX35_PAD_D3_CLS__SDMA_DEBUG_BUS_DEVICE_0
595562 MX35_PAD_D3_CLS__ARM11P_TOP_TRACE_21
596563 MX35_PAD_D3_SPL__IPU_DISPB_D3_SPL
597564 MX35_PAD_D3_SPL__IPU_DISPB_D12_VSYNC
598565 MX35_PAD_D3_SPL__GPIO1_5
599566 MX35_PAD_D3_SPL__SDMA_DEBUG_BUS_DEVICE_1
600567 MX35_PAD_D3_SPL__ARM11P_TOP_TRACE_22
601568 MX35_PAD_SD1_CMD__ESDHC1_CMD
602569 MX35_PAD_SD1_CMD__MSHC_SCLK
603570 MX35_PAD_SD1_CMD__IPU_DISPB_D0_VSYNC
604571 MX35_PAD_SD1_CMD__USB_TOP_USBOTG_DATA_4
605572 MX35_PAD_SD1_CMD__GPIO1_6
606573 MX35_PAD_SD1_CMD__ARM11P_TOP_TRCTL
607574 MX35_PAD_SD1_CLK__ESDHC1_CLK
608575 MX35_PAD_SD1_CLK__MSHC_BS
609576 MX35_PAD_SD1_CLK__IPU_DISPB_BCLK
610577 MX35_PAD_SD1_CLK__USB_TOP_USBOTG_DATA_5
611578 MX35_PAD_SD1_CLK__GPIO1_7
612579 MX35_PAD_SD1_CLK__ARM11P_TOP_TRCLK
613580 MX35_PAD_SD1_DATA0__ESDHC1_DAT0
614581 MX35_PAD_SD1_DATA0__MSHC_DATA_0
615582 MX35_PAD_SD1_DATA0__IPU_DISPB_CS0
616583 MX35_PAD_SD1_DATA0__USB_TOP_USBOTG_DATA_6
617584 MX35_PAD_SD1_DATA0__GPIO1_8
618585 MX35_PAD_SD1_DATA0__ARM11P_TOP_TRACE_23
619586 MX35_PAD_SD1_DATA1__ESDHC1_DAT1
620587 MX35_PAD_SD1_DATA1__MSHC_DATA_1
621588 MX35_PAD_SD1_DATA1__IPU_DISPB_PAR_RS
622589 MX35_PAD_SD1_DATA1__USB_TOP_USBOTG_DATA_0
623590 MX35_PAD_SD1_DATA1__GPIO1_9
624591 MX35_PAD_SD1_DATA1__ARM11P_TOP_TRACE_24
625592 MX35_PAD_SD1_DATA2__ESDHC1_DAT2
626593 MX35_PAD_SD1_DATA2__MSHC_DATA_2
627594 MX35_PAD_SD1_DATA2__IPU_DISPB_WR
628595 MX35_PAD_SD1_DATA2__USB_TOP_USBOTG_DATA_1
629596 MX35_PAD_SD1_DATA2__GPIO1_10
630597 MX35_PAD_SD1_DATA2__ARM11P_TOP_TRACE_25
631598 MX35_PAD_SD1_DATA3__ESDHC1_DAT3
632599 MX35_PAD_SD1_DATA3__MSHC_DATA_3
633600 MX35_PAD_SD1_DATA3__IPU_DISPB_RD
634601 MX35_PAD_SD1_DATA3__USB_TOP_USBOTG_DATA_2
635602 MX35_PAD_SD1_DATA3__GPIO1_11
636603 MX35_PAD_SD1_DATA3__ARM11P_TOP_TRACE_26
637604 MX35_PAD_SD2_CMD__ESDHC2_CMD
638605 MX35_PAD_SD2_CMD__I2C3_SCL
639606 MX35_PAD_SD2_CMD__ESDHC1_DAT4
640607 MX35_PAD_SD2_CMD__IPU_CSI_D_2
641608 MX35_PAD_SD2_CMD__USB_TOP_USBH2_DATA_4
642609 MX35_PAD_SD2_CMD__GPIO2_0
643610 MX35_PAD_SD2_CMD__SPDIF_SPDIF_OUT1
644611 MX35_PAD_SD2_CMD__IPU_DISPB_D12_VSYNC
645612 MX35_PAD_SD2_CLK__ESDHC2_CLK
646613 MX35_PAD_SD2_CLK__I2C3_SDA
647614 MX35_PAD_SD2_CLK__ESDHC1_DAT5
648615 MX35_PAD_SD2_CLK__IPU_CSI_D_3
649616 MX35_PAD_SD2_CLK__USB_TOP_USBH2_DATA_5
650617 MX35_PAD_SD2_CLK__GPIO2_1
651618 MX35_PAD_SD2_CLK__SPDIF_SPDIF_IN1
652619 MX35_PAD_SD2_CLK__IPU_DISPB_CS2
653620 MX35_PAD_SD2_DATA0__ESDHC2_DAT0
654621 MX35_PAD_SD2_DATA0__UART3_RXD_MUX
655622 MX35_PAD_SD2_DATA0__ESDHC1_DAT6
656623 MX35_PAD_SD2_DATA0__IPU_CSI_D_4
657624 MX35_PAD_SD2_DATA0__USB_TOP_USBH2_DATA_6
658625 MX35_PAD_SD2_DATA0__GPIO2_2
659626 MX35_PAD_SD2_DATA0__SPDIF_SPDIF_EXTCLK
660627 MX35_PAD_SD2_DATA1__ESDHC2_DAT1
661628 MX35_PAD_SD2_DATA1__UART3_TXD_MUX
662629 MX35_PAD_SD2_DATA1__ESDHC1_DAT7
663630 MX35_PAD_SD2_DATA1__IPU_CSI_D_5
664631 MX35_PAD_SD2_DATA1__USB_TOP_USBH2_DATA_0
665632 MX35_PAD_SD2_DATA1__GPIO2_3
666633 MX35_PAD_SD2_DATA2__ESDHC2_DAT2
667634 MX35_PAD_SD2_DATA2__UART3_RTS
668635 MX35_PAD_SD2_DATA2__CAN1_RXCAN
669636 MX35_PAD_SD2_DATA2__IPU_CSI_D_6
670637 MX35_PAD_SD2_DATA2__USB_TOP_USBH2_DATA_1
671638 MX35_PAD_SD2_DATA2__GPIO2_4
672639 MX35_PAD_SD2_DATA3__ESDHC2_DAT3
673640 MX35_PAD_SD2_DATA3__UART3_CTS
674641 MX35_PAD_SD2_DATA3__CAN1_TXCAN
675642 MX35_PAD_SD2_DATA3__IPU_CSI_D_7
676643 MX35_PAD_SD2_DATA3__USB_TOP_USBH2_DATA_2
677644 MX35_PAD_SD2_DATA3__GPIO2_5
678645 MX35_PAD_ATA_CS0__ATA_CS0
679646 MX35_PAD_ATA_CS0__CSPI1_SS3
680647 MX35_PAD_ATA_CS0__IPU_DISPB_CS1
681648 MX35_PAD_ATA_CS0__GPIO2_6
682649 MX35_PAD_ATA_CS0__IPU_DIAGB_0
683650 MX35_PAD_ATA_CS0__ARM11P_TOP_MAX1_HMASTER_0
684651 MX35_PAD_ATA_CS1__ATA_CS1
685652 MX35_PAD_ATA_CS1__IPU_DISPB_CS2
686653 MX35_PAD_ATA_CS1__CSPI2_SS0
687654 MX35_PAD_ATA_CS1__GPIO2_7
688655 MX35_PAD_ATA_CS1__IPU_DIAGB_1
689656 MX35_PAD_ATA_CS1__ARM11P_TOP_MAX1_HMASTER_1
690657 MX35_PAD_ATA_DIOR__ATA_DIOR
691658 MX35_PAD_ATA_DIOR__ESDHC3_DAT0
692659 MX35_PAD_ATA_DIOR__USB_TOP_USBOTG_DIR
693660 MX35_PAD_ATA_DIOR__IPU_DISPB_BE0
694661 MX35_PAD_ATA_DIOR__CSPI2_SS1
695662 MX35_PAD_ATA_DIOR__GPIO2_8
696663 MX35_PAD_ATA_DIOR__IPU_DIAGB_2
697664 MX35_PAD_ATA_DIOR__ARM11P_TOP_MAX1_HMASTER_2
698665 MX35_PAD_ATA_DIOW__ATA_DIOW
699666 MX35_PAD_ATA_DIOW__ESDHC3_DAT1
700667 MX35_PAD_ATA_DIOW__USB_TOP_USBOTG_STP
701668 MX35_PAD_ATA_DIOW__IPU_DISPB_BE1
702669 MX35_PAD_ATA_DIOW__CSPI2_MOSI
703670 MX35_PAD_ATA_DIOW__GPIO2_9
704671 MX35_PAD_ATA_DIOW__IPU_DIAGB_3
705672 MX35_PAD_ATA_DIOW__ARM11P_TOP_MAX1_HMASTER_3
706673 MX35_PAD_ATA_DMACK__ATA_DMACK
707674 MX35_PAD_ATA_DMACK__ESDHC3_DAT2
708675 MX35_PAD_ATA_DMACK__USB_TOP_USBOTG_NXT
709676 MX35_PAD_ATA_DMACK__CSPI2_MISO
710677 MX35_PAD_ATA_DMACK__GPIO2_10
711678 MX35_PAD_ATA_DMACK__IPU_DIAGB_4
712679 MX35_PAD_ATA_DMACK__ARM11P_TOP_MAX0_HMASTER_0
713680 MX35_PAD_ATA_RESET_B__ATA_RESET_B
714681 MX35_PAD_ATA_RESET_B__ESDHC3_DAT3
715682 MX35_PAD_ATA_RESET_B__USB_TOP_USBOTG_DATA_0
716683 MX35_PAD_ATA_RESET_B__IPU_DISPB_SD_D_O
717684 MX35_PAD_ATA_RESET_B__CSPI2_RDY
718685 MX35_PAD_ATA_RESET_B__GPIO2_11
719686 MX35_PAD_ATA_RESET_B__IPU_DIAGB_5
720687 MX35_PAD_ATA_RESET_B__ARM11P_TOP_MAX0_HMASTER_1
721688 MX35_PAD_ATA_IORDY__ATA_IORDY
722689 MX35_PAD_ATA_IORDY__ESDHC3_DAT4
723690 MX35_PAD_ATA_IORDY__USB_TOP_USBOTG_DATA_1
724691 MX35_PAD_ATA_IORDY__IPU_DISPB_SD_D_IO
725692 MX35_PAD_ATA_IORDY__ESDHC2_DAT4
726693 MX35_PAD_ATA_IORDY__GPIO2_12
727694 MX35_PAD_ATA_IORDY__IPU_DIAGB_6
728695 MX35_PAD_ATA_IORDY__ARM11P_TOP_MAX0_HMASTER_2
729696 MX35_PAD_ATA_DATA0__ATA_DATA_0
730697 MX35_PAD_ATA_DATA0__ESDHC3_DAT5
731698 MX35_PAD_ATA_DATA0__USB_TOP_USBOTG_DATA_2
732699 MX35_PAD_ATA_DATA0__IPU_DISPB_D12_VSYNC
733700 MX35_PAD_ATA_DATA0__ESDHC2_DAT5
734701 MX35_PAD_ATA_DATA0__GPIO2_13
735702 MX35_PAD_ATA_DATA0__IPU_DIAGB_7
736703 MX35_PAD_ATA_DATA0__ARM11P_TOP_MAX0_HMASTER_3
737704 MX35_PAD_ATA_DATA1__ATA_DATA_1
738705 MX35_PAD_ATA_DATA1__ESDHC3_DAT6
739706 MX35_PAD_ATA_DATA1__USB_TOP_USBOTG_DATA_3
740707 MX35_PAD_ATA_DATA1__IPU_DISPB_SD_CLK
741708 MX35_PAD_ATA_DATA1__ESDHC2_DAT6
742709 MX35_PAD_ATA_DATA1__GPIO2_14
743710 MX35_PAD_ATA_DATA1__IPU_DIAGB_8
744711 MX35_PAD_ATA_DATA1__ARM11P_TOP_TRACE_27
745712 MX35_PAD_ATA_DATA2__ATA_DATA_2
746713 MX35_PAD_ATA_DATA2__ESDHC3_DAT7
747714 MX35_PAD_ATA_DATA2__USB_TOP_USBOTG_DATA_4
748715 MX35_PAD_ATA_DATA2__IPU_DISPB_SER_RS
749716 MX35_PAD_ATA_DATA2__ESDHC2_DAT7
750717 MX35_PAD_ATA_DATA2__GPIO2_15
751718 MX35_PAD_ATA_DATA2__IPU_DIAGB_9
752719 MX35_PAD_ATA_DATA2__ARM11P_TOP_TRACE_28
753720 MX35_PAD_ATA_DATA3__ATA_DATA_3
754721 MX35_PAD_ATA_DATA3__ESDHC3_CLK
755722 MX35_PAD_ATA_DATA3__USB_TOP_USBOTG_DATA_5
756723 MX35_PAD_ATA_DATA3__CSPI2_SCLK
757724 MX35_PAD_ATA_DATA3__GPIO2_16
758725 MX35_PAD_ATA_DATA3__IPU_DIAGB_10
759726 MX35_PAD_ATA_DATA3__ARM11P_TOP_TRACE_29
760727 MX35_PAD_ATA_DATA4__ATA_DATA_4
761728 MX35_PAD_ATA_DATA4__ESDHC3_CMD
762729 MX35_PAD_ATA_DATA4__USB_TOP_USBOTG_DATA_6
763730 MX35_PAD_ATA_DATA4__GPIO2_17
764731 MX35_PAD_ATA_DATA4__IPU_DIAGB_11
765732 MX35_PAD_ATA_DATA4__ARM11P_TOP_TRACE_30
766733 MX35_PAD_ATA_DATA5__ATA_DATA_5
767734 MX35_PAD_ATA_DATA5__USB_TOP_USBOTG_DATA_7
768735 MX35_PAD_ATA_DATA5__GPIO2_18
769736 MX35_PAD_ATA_DATA5__IPU_DIAGB_12
770737 MX35_PAD_ATA_DATA5__ARM11P_TOP_TRACE_31
771738 MX35_PAD_ATA_DATA6__ATA_DATA_6
772739 MX35_PAD_ATA_DATA6__CAN1_TXCAN
773740 MX35_PAD_ATA_DATA6__UART1_DTR
774741 MX35_PAD_ATA_DATA6__AUDMUX_AUD6_TXD
775742 MX35_PAD_ATA_DATA6__GPIO2_19
776743 MX35_PAD_ATA_DATA6__IPU_DIAGB_13
777744 MX35_PAD_ATA_DATA7__ATA_DATA_7
778745 MX35_PAD_ATA_DATA7__CAN1_RXCAN
779746 MX35_PAD_ATA_DATA7__UART1_DSR
780747 MX35_PAD_ATA_DATA7__AUDMUX_AUD6_RXD
781748 MX35_PAD_ATA_DATA7__GPIO2_20
782749 MX35_PAD_ATA_DATA7__IPU_DIAGB_14
783750 MX35_PAD_ATA_DATA8__ATA_DATA_8
784751 MX35_PAD_ATA_DATA8__UART3_RTS
785752 MX35_PAD_ATA_DATA8__UART1_RI
786753 MX35_PAD_ATA_DATA8__AUDMUX_AUD6_TXC
787754 MX35_PAD_ATA_DATA8__GPIO2_21
788755 MX35_PAD_ATA_DATA8__IPU_DIAGB_15
789756 MX35_PAD_ATA_DATA9__ATA_DATA_9
790757 MX35_PAD_ATA_DATA9__UART3_CTS
791758 MX35_PAD_ATA_DATA9__UART1_DCD
792759 MX35_PAD_ATA_DATA9__AUDMUX_AUD6_TXFS
793760 MX35_PAD_ATA_DATA9__GPIO2_22
794761 MX35_PAD_ATA_DATA9__IPU_DIAGB_16
795762 MX35_PAD_ATA_DATA10__ATA_DATA_10
796763 MX35_PAD_ATA_DATA10__UART3_RXD_MUX
797764 MX35_PAD_ATA_DATA10__AUDMUX_AUD6_RXC
798765 MX35_PAD_ATA_DATA10__GPIO2_23
799766 MX35_PAD_ATA_DATA10__IPU_DIAGB_17
800767 MX35_PAD_ATA_DATA11__ATA_DATA_11
801768 MX35_PAD_ATA_DATA11__UART3_TXD_MUX
802769 MX35_PAD_ATA_DATA11__AUDMUX_AUD6_RXFS
803770 MX35_PAD_ATA_DATA11__GPIO2_24
804771 MX35_PAD_ATA_DATA11__IPU_DIAGB_18
805772 MX35_PAD_ATA_DATA12__ATA_DATA_12
806773 MX35_PAD_ATA_DATA12__I2C3_SCL
807774 MX35_PAD_ATA_DATA12__GPIO2_25
808775 MX35_PAD_ATA_DATA12__IPU_DIAGB_19
809776 MX35_PAD_ATA_DATA13__ATA_DATA_13
810777 MX35_PAD_ATA_DATA13__I2C3_SDA
811778 MX35_PAD_ATA_DATA13__GPIO2_26
812779 MX35_PAD_ATA_DATA13__IPU_DIAGB_20
813780 MX35_PAD_ATA_DATA14__ATA_DATA_14
814781 MX35_PAD_ATA_DATA14__IPU_CSI_D_0
815782 MX35_PAD_ATA_DATA14__KPP_ROW_0
816783 MX35_PAD_ATA_DATA14__GPIO2_27
817784 MX35_PAD_ATA_DATA14__IPU_DIAGB_21
818785 MX35_PAD_ATA_DATA15__ATA_DATA_15
819786 MX35_PAD_ATA_DATA15__IPU_CSI_D_1
820787 MX35_PAD_ATA_DATA15__KPP_ROW_1
821788 MX35_PAD_ATA_DATA15__GPIO2_28
822789 MX35_PAD_ATA_DATA15__IPU_DIAGB_22
823790 MX35_PAD_ATA_INTRQ__ATA_INTRQ
824791 MX35_PAD_ATA_INTRQ__IPU_CSI_D_2
825792 MX35_PAD_ATA_INTRQ__KPP_ROW_2
826793 MX35_PAD_ATA_INTRQ__GPIO2_29
827794 MX35_PAD_ATA_INTRQ__IPU_DIAGB_23
828795 MX35_PAD_ATA_BUFF_EN__ATA_BUFFER_EN
829796 MX35_PAD_ATA_BUFF_EN__IPU_CSI_D_3
830797 MX35_PAD_ATA_BUFF_EN__KPP_ROW_3
831798 MX35_PAD_ATA_BUFF_EN__GPIO2_30
832799 MX35_PAD_ATA_BUFF_EN__IPU_DIAGB_24
833800 MX35_PAD_ATA_DMARQ__ATA_DMARQ
834801 MX35_PAD_ATA_DMARQ__IPU_CSI_D_4
835802 MX35_PAD_ATA_DMARQ__KPP_COL_0
836803 MX35_PAD_ATA_DMARQ__GPIO2_31
837804 MX35_PAD_ATA_DMARQ__IPU_DIAGB_25
838805 MX35_PAD_ATA_DMARQ__ECT_CTI_TRIG_IN1_4
839806 MX35_PAD_ATA_DA0__ATA_DA_0
840807 MX35_PAD_ATA_DA0__IPU_CSI_D_5
841808 MX35_PAD_ATA_DA0__KPP_COL_1
842809 MX35_PAD_ATA_DA0__GPIO3_0
843810 MX35_PAD_ATA_DA0__IPU_DIAGB_26
844811 MX35_PAD_ATA_DA0__ECT_CTI_TRIG_IN1_5
845812 MX35_PAD_ATA_DA1__ATA_DA_1
846813 MX35_PAD_ATA_DA1__IPU_CSI_D_6
847814 MX35_PAD_ATA_DA1__KPP_COL_2
848815 MX35_PAD_ATA_DA1__GPIO3_1
849816 MX35_PAD_ATA_DA1__IPU_DIAGB_27
850817 MX35_PAD_ATA_DA1__ECT_CTI_TRIG_IN1_6
851818 MX35_PAD_ATA_DA2__ATA_DA_2
852819 MX35_PAD_ATA_DA2__IPU_CSI_D_7
853820 MX35_PAD_ATA_DA2__KPP_COL_3
854821 MX35_PAD_ATA_DA2__GPIO3_2
855822 MX35_PAD_ATA_DA2__IPU_DIAGB_28
856823 MX35_PAD_ATA_DA2__ECT_CTI_TRIG_IN1_7
857824 MX35_PAD_MLB_CLK__MLB_MLBCLK
858825 MX35_PAD_MLB_CLK__GPIO3_3
859826 MX35_PAD_MLB_DAT__MLB_MLBDAT
860827 MX35_PAD_MLB_DAT__GPIO3_4
861828 MX35_PAD_MLB_SIG__MLB_MLBSIG
862829 MX35_PAD_MLB_SIG__GPIO3_5
863830 MX35_PAD_FEC_TX_CLK__FEC_TX_CLK
864831 MX35_PAD_FEC_TX_CLK__ESDHC1_DAT4
865832 MX35_PAD_FEC_TX_CLK__UART3_RXD_MUX
866833 MX35_PAD_FEC_TX_CLK__USB_TOP_USBH2_DIR
867834 MX35_PAD_FEC_TX_CLK__CSPI2_MOSI
868835 MX35_PAD_FEC_TX_CLK__GPIO3_6
869836 MX35_PAD_FEC_TX_CLK__IPU_DISPB_D12_VSYNC
870837 MX35_PAD_FEC_TX_CLK__ARM11P_TOP_EVNTBUS_0
871838 MX35_PAD_FEC_RX_CLK__FEC_RX_CLK
872839 MX35_PAD_FEC_RX_CLK__ESDHC1_DAT5
873840 MX35_PAD_FEC_RX_CLK__UART3_TXD_MUX
874841 MX35_PAD_FEC_RX_CLK__USB_TOP_USBH2_STP
875842 MX35_PAD_FEC_RX_CLK__CSPI2_MISO
876843 MX35_PAD_FEC_RX_CLK__GPIO3_7
877844 MX35_PAD_FEC_RX_CLK__IPU_DISPB_SD_D_I
878845 MX35_PAD_FEC_RX_CLK__ARM11P_TOP_EVNTBUS_1
879846 MX35_PAD_FEC_RX_DV__FEC_RX_DV
880847 MX35_PAD_FEC_RX_DV__ESDHC1_DAT6
881848 MX35_PAD_FEC_RX_DV__UART3_RTS
882849 MX35_PAD_FEC_RX_DV__USB_TOP_USBH2_NXT
883850 MX35_PAD_FEC_RX_DV__CSPI2_SCLK
884851 MX35_PAD_FEC_RX_DV__GPIO3_8
885852 MX35_PAD_FEC_RX_DV__IPU_DISPB_SD_CLK
886853 MX35_PAD_FEC_RX_DV__ARM11P_TOP_EVNTBUS_2
887854 MX35_PAD_FEC_COL__FEC_COL
888855 MX35_PAD_FEC_COL__ESDHC1_DAT7
889856 MX35_PAD_FEC_COL__UART3_CTS
890857 MX35_PAD_FEC_COL__USB_TOP_USBH2_DATA_0
891858 MX35_PAD_FEC_COL__CSPI2_RDY
892859 MX35_PAD_FEC_COL__GPIO3_9
893860 MX35_PAD_FEC_COL__IPU_DISPB_SER_RS
894861 MX35_PAD_FEC_COL__ARM11P_TOP_EVNTBUS_3
895862 MX35_PAD_FEC_RDATA0__FEC_RDATA_0
896863 MX35_PAD_FEC_RDATA0__PWM_PWMO
897864 MX35_PAD_FEC_RDATA0__UART3_DTR
898865 MX35_PAD_FEC_RDATA0__USB_TOP_USBH2_DATA_1
899866 MX35_PAD_FEC_RDATA0__CSPI2_SS0
900867 MX35_PAD_FEC_RDATA0__GPIO3_10
901868 MX35_PAD_FEC_RDATA0__IPU_DISPB_CS1
902869 MX35_PAD_FEC_RDATA0__ARM11P_TOP_EVNTBUS_4
903870 MX35_PAD_FEC_TDATA0__FEC_TDATA_0
904871 MX35_PAD_FEC_TDATA0__SPDIF_SPDIF_OUT1
905872 MX35_PAD_FEC_TDATA0__UART3_DSR
906873 MX35_PAD_FEC_TDATA0__USB_TOP_USBH2_DATA_2
907874 MX35_PAD_FEC_TDATA0__CSPI2_SS1
908875 MX35_PAD_FEC_TDATA0__GPIO3_11
909876 MX35_PAD_FEC_TDATA0__IPU_DISPB_CS0
910877 MX35_PAD_FEC_TDATA0__ARM11P_TOP_EVNTBUS_5
911878 MX35_PAD_FEC_TX_EN__FEC_TX_EN
912879 MX35_PAD_FEC_TX_EN__SPDIF_SPDIF_IN1
913880 MX35_PAD_FEC_TX_EN__UART3_RI
914881 MX35_PAD_FEC_TX_EN__USB_TOP_USBH2_DATA_3
915882 MX35_PAD_FEC_TX_EN__GPIO3_12
916883 MX35_PAD_FEC_TX_EN__IPU_DISPB_PAR_RS
917884 MX35_PAD_FEC_TX_EN__ARM11P_TOP_EVNTBUS_6
918885 MX35_PAD_FEC_MDC__FEC_MDC
919886 MX35_PAD_FEC_MDC__CAN2_TXCAN
920887 MX35_PAD_FEC_MDC__UART3_DCD
921888 MX35_PAD_FEC_MDC__USB_TOP_USBH2_DATA_4
922889 MX35_PAD_FEC_MDC__GPIO3_13
923890 MX35_PAD_FEC_MDC__IPU_DISPB_WR
924891 MX35_PAD_FEC_MDC__ARM11P_TOP_EVNTBUS_7
925892 MX35_PAD_FEC_MDIO__FEC_MDIO
926893 MX35_PAD_FEC_MDIO__CAN2_RXCAN
927894 MX35_PAD_FEC_MDIO__USB_TOP_USBH2_DATA_5
928895 MX35_PAD_FEC_MDIO__GPIO3_14
929896 MX35_PAD_FEC_MDIO__IPU_DISPB_RD
930897 MX35_PAD_FEC_MDIO__ARM11P_TOP_EVNTBUS_8
931898 MX35_PAD_FEC_TX_ERR__FEC_TX_ERR
932899 MX35_PAD_FEC_TX_ERR__OWIRE_LINE
933900 MX35_PAD_FEC_TX_ERR__SPDIF_SPDIF_EXTCLK
934901 MX35_PAD_FEC_TX_ERR__USB_TOP_USBH2_DATA_6
935902 MX35_PAD_FEC_TX_ERR__GPIO3_15
936903 MX35_PAD_FEC_TX_ERR__IPU_DISPB_D0_VSYNC
937904 MX35_PAD_FEC_TX_ERR__ARM11P_TOP_EVNTBUS_9
938905 MX35_PAD_FEC_RX_ERR__FEC_RX_ERR
939906 MX35_PAD_FEC_RX_ERR__IPU_CSI_D_0
940907 MX35_PAD_FEC_RX_ERR__USB_TOP_USBH2_DATA_7
941908 MX35_PAD_FEC_RX_ERR__KPP_COL_4
942909 MX35_PAD_FEC_RX_ERR__GPIO3_16
943910 MX35_PAD_FEC_RX_ERR__IPU_DISPB_SD_D_IO
944911 MX35_PAD_FEC_CRS__FEC_CRS
945912 MX35_PAD_FEC_CRS__IPU_CSI_D_1
946913 MX35_PAD_FEC_CRS__USB_TOP_USBH2_PWR
947914 MX35_PAD_FEC_CRS__KPP_COL_5
948915 MX35_PAD_FEC_CRS__GPIO3_17
949916 MX35_PAD_FEC_CRS__IPU_FLASH_STROBE
950917 MX35_PAD_FEC_RDATA1__FEC_RDATA_1
951918 MX35_PAD_FEC_RDATA1__IPU_CSI_D_2
952919 MX35_PAD_FEC_RDATA1__AUDMUX_AUD6_RXC
953920 MX35_PAD_FEC_RDATA1__USB_TOP_USBH2_OC
954921 MX35_PAD_FEC_RDATA1__KPP_COL_6
955922 MX35_PAD_FEC_RDATA1__GPIO3_18
956923 MX35_PAD_FEC_RDATA1__IPU_DISPB_BE0
957924 MX35_PAD_FEC_TDATA1__FEC_TDATA_1
958925 MX35_PAD_FEC_TDATA1__IPU_CSI_D_3
959926 MX35_PAD_FEC_TDATA1__AUDMUX_AUD6_RXFS
960927 MX35_PAD_FEC_TDATA1__KPP_COL_7
961928 MX35_PAD_FEC_TDATA1__GPIO3_19
962929 MX35_PAD_FEC_TDATA1__IPU_DISPB_BE1
963930 MX35_PAD_FEC_RDATA2__FEC_RDATA_2
964931 MX35_PAD_FEC_RDATA2__IPU_CSI_D_4
965932 MX35_PAD_FEC_RDATA2__AUDMUX_AUD6_TXD
966933 MX35_PAD_FEC_RDATA2__KPP_ROW_4
967934 MX35_PAD_FEC_RDATA2__GPIO3_20
968935 MX35_PAD_FEC_TDATA2__FEC_TDATA_2
969936 MX35_PAD_FEC_TDATA2__IPU_CSI_D_5
970937 MX35_PAD_FEC_TDATA2__AUDMUX_AUD6_RXD
971938 MX35_PAD_FEC_TDATA2__KPP_ROW_5
972939 MX35_PAD_FEC_TDATA2__GPIO3_21
973940 MX35_PAD_FEC_RDATA3__FEC_RDATA_3
974941 MX35_PAD_FEC_RDATA3__IPU_CSI_D_6
975942 MX35_PAD_FEC_RDATA3__AUDMUX_AUD6_TXC
976943 MX35_PAD_FEC_RDATA3__KPP_ROW_6
977944 MX35_PAD_FEC_RDATA3__GPIO3_22
978945 MX35_PAD_FEC_TDATA3__FEC_TDATA_3
979946 MX35_PAD_FEC_TDATA3__IPU_CSI_D_7
980947 MX35_PAD_FEC_TDATA3__AUDMUX_AUD6_TXFS
981948 MX35_PAD_FEC_TDATA3__KPP_ROW_7
982949 MX35_PAD_FEC_TDATA3__GPIO3_23
983950 MX35_PAD_EXT_ARMCLK__CCM_EXT_ARMCLK
984951 MX35_PAD_TEST_MODE__TCU_TEST_MODE
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx51-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx51-pinctrl.txt
index b96fa4c31745..4d1408fcc99c 100644
--- a/Documentation/devicetree/bindings/pinctrl/fsl,imx51-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx51-pinctrl.txt
@@ -28,760 +28,5 @@ PAD_CTL_DSE_MAX (3 << 1)
28PAD_CTL_SRE_FAST (1 << 0) 28PAD_CTL_SRE_FAST (1 << 0)
29PAD_CTL_SRE_SLOW (0 << 0) 29PAD_CTL_SRE_SLOW (0 << 0)
30 30
31See below for available PIN_FUNC_ID for imx51: 31Refer to imx51-pinfunc.h in device tree source folder for all available
32MX51_PAD_EIM_D16__AUD4_RXFS 0 32imx51 PIN_FUNC_ID.
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
index ca85ca432ef0..25dcb77cfaf7 100644
--- a/Documentation/devicetree/bindings/pinctrl/fsl,imx53-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx53-pinctrl.txt
@@ -28,1175 +28,5 @@ PAD_CTL_DSE_MAX (3 << 1)
28PAD_CTL_SRE_FAST (1 << 0) 28PAD_CTL_SRE_FAST (1 << 0)
29PAD_CTL_SRE_SLOW (0 << 0) 29PAD_CTL_SRE_SLOW (0 << 0)
30 30
31See below for available PIN_FUNC_ID for imx53: 31Refer to imx53-pinfunc.h in device tree source folder for all available
32MX53_PAD_GPIO_19__KPP_COL_5 0 32imx53 PIN_FUNC_ID.
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,imx6dl-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx6dl-pinctrl.txt
new file mode 100644
index 000000000000..0ac5bee87505
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx6dl-pinctrl.txt
@@ -0,0 +1,38 @@
1* Freescale IMX6 DualLite/Solo 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,imx6dl-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 imx6dl 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
37Refer to imx6dl-pinfunc.h in device tree source folder for all available
38imx6dl PIN_FUNC_ID.
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt
index a4119f6422d9..546610cf2ae7 100644
--- a/Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt
@@ -34,1597 +34,5 @@ PAD_CTL_DSE_34ohm (7 << 3)
34PAD_CTL_SRE_FAST (1 << 0) 34PAD_CTL_SRE_FAST (1 << 0)
35PAD_CTL_SRE_SLOW (0 << 0) 35PAD_CTL_SRE_SLOW (0 << 0)
36 36
37See below for available PIN_FUNC_ID for imx6q: 37Refer to imx6q-pinfunc.h in device tree source folder for all available
38MX6Q_PAD_SD2_DAT1__USDHC2_DAT1 0 38imx6q PIN_FUNC_ID.
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,imx6sl-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx6sl-pinctrl.txt
new file mode 100644
index 000000000000..e5f6d1f065a4
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx6sl-pinctrl.txt
@@ -0,0 +1,39 @@
1* Freescale IMX6 SoloLite 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,imx6sl-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 imx6sl datasheet for the valid pad
12 config settings.
13
14CONFIG bits definition:
15PAD_CTL_LVE (1 << 22)
16PAD_CTL_HYS (1 << 16)
17PAD_CTL_PUS_100K_DOWN (0 << 14)
18PAD_CTL_PUS_47K_UP (1 << 14)
19PAD_CTL_PUS_100K_UP (2 << 14)
20PAD_CTL_PUS_22K_UP (3 << 14)
21PAD_CTL_PUE (1 << 13)
22PAD_CTL_PKE (1 << 12)
23PAD_CTL_ODE (1 << 11)
24PAD_CTL_SPEED_LOW (1 << 6)
25PAD_CTL_SPEED_MED (2 << 6)
26PAD_CTL_SPEED_HIGH (3 << 6)
27PAD_CTL_DSE_DISABLE (0 << 3)
28PAD_CTL_DSE_240ohm (1 << 3)
29PAD_CTL_DSE_120ohm (2 << 3)
30PAD_CTL_DSE_80ohm (3 << 3)
31PAD_CTL_DSE_60ohm (4 << 3)
32PAD_CTL_DSE_48ohm (5 << 3)
33PAD_CTL_DSE_40ohm (6 << 3)
34PAD_CTL_DSE_34ohm (7 << 3)
35PAD_CTL_SRE_FAST (1 << 0)
36PAD_CTL_SRE_SLOW (0 << 0)
37
38Refer to imx6sl-pinfunc.h in device tree source folder for all available
39imx6sl PIN_FUNC_ID.
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt
index f7e8e8f4d9a3..3077370c89af 100644
--- a/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt
@@ -70,6 +70,10 @@ Optional subnode-properties:
70 0: Disable the internal pull-up 70 0: Disable the internal pull-up
71 1: Enable the internal pull-up 71 1: Enable the internal pull-up
72 72
73Note that when enabling the pull-up, the internal pad keeper gets disabled.
74Also, some pins doesn't have a pull up, in that case, setting the fsl,pull-up
75will only disable the internal pad keeper.
76
73Examples: 77Examples:
74 78
75pinctrl@80018000 { 79pinctrl@80018000 {
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt
index 2c81e45f1374..08f0c3d01575 100644
--- a/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt
+++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt
@@ -1,7 +1,9 @@
1One-register-per-pin type device tree based pinctrl driver 1One-register-per-pin type device tree based pinctrl driver
2 2
3Required properties: 3Required properties:
4- compatible : "pinctrl-single" 4- compatible : "pinctrl-single" or "pinconf-single".
5 "pinctrl-single" means that pinconf isn't supported.
6 "pinconf-single" means that generic pinconf is supported.
5 7
6- reg : offset and length of the register set for the mux registers 8- reg : offset and length of the register set for the mux registers
7 9
@@ -14,9 +16,61 @@ Optional properties:
14- pinctrl-single,function-off : function off mode for disabled state if 16- pinctrl-single,function-off : function off mode for disabled state if
15 available and same for all registers; if not specified, disabling of 17 available and same for all registers; if not specified, disabling of
16 pin functions is ignored 18 pin functions is ignored
19
17- pinctrl-single,bit-per-mux : boolean to indicate that one register controls 20- pinctrl-single,bit-per-mux : boolean to indicate that one register controls
18 more than one pin 21 more than one pin
19 22
23- pinctrl-single,drive-strength : array of value that are used to configure
24 drive strength in the pinmux register. They're value of drive strength
25 current and drive strength mask.
26
27 /* drive strength current, mask */
28 pinctrl-single,power-source = <0x30 0xf0>;
29
30- pinctrl-single,bias-pullup : array of value that are used to configure the
31 input bias pullup in the pinmux register.
32
33 /* input, enabled pullup bits, disabled pullup bits, mask */
34 pinctrl-single,bias-pullup = <0 1 0 1>;
35
36- pinctrl-single,bias-pulldown : array of value that are used to configure the
37 input bias pulldown in the pinmux register.
38
39 /* input, enabled pulldown bits, disabled pulldown bits, mask */
40 pinctrl-single,bias-pulldown = <2 2 0 2>;
41
42 * Two bits to control input bias pullup and pulldown: User should use
43 pinctrl-single,bias-pullup & pinctrl-single,bias-pulldown. One bit means
44 pullup, and the other one bit means pulldown.
45 * Three bits to control input bias enable, pullup and pulldown. User should
46 use pinctrl-single,bias-pullup & pinctrl-single,bias-pulldown. Input bias
47 enable bit should be included in pullup or pulldown bits.
48 * Although driver could set PIN_CONFIG_BIAS_DISABLE, there's no property as
49 pinctrl-single,bias-disable. Because pinctrl single driver could implement
50 it by calling pulldown, pullup disabled.
51
52- pinctrl-single,input-schmitt : array of value that are used to configure
53 input schmitt in the pinmux register. In some silicons, there're two input
54 schmitt value (rising-edge & falling-edge) in the pinmux register.
55
56 /* input schmitt value, mask */
57 pinctrl-single,input-schmitt = <0x30 0x70>;
58
59- pinctrl-single,input-schmitt-enable : array of value that are used to
60 configure input schmitt enable or disable in the pinmux register.
61
62 /* input, enable bits, disable bits, mask */
63 pinctrl-single,input-schmitt-enable = <0x30 0x40 0 0x70>;
64
65- pinctrl-single,gpio-range : list of value that are used to configure a GPIO
66 range. They're value of subnode phandle, pin base in pinctrl device, pin
67 number in this range, GPIO function value of this GPIO range.
68 The number of parameters is depend on #pinctrl-single,gpio-range-cells
69 property.
70
71 /* pin base, nr pins & gpio function */
72 pinctrl-single,gpio-range = <&range 0 3 0 &range 3 9 1>;
73
20This driver assumes that there is only one register for each pin (unless the 74This driver assumes that there is only one register for each pin (unless the
21pinctrl-single,bit-per-mux is set), and uses the common pinctrl bindings as 75pinctrl-single,bit-per-mux is set), and uses the common pinctrl bindings as
22specified in the pinctrl-bindings.txt document in this directory. 76specified in the pinctrl-bindings.txt document in this directory.
@@ -42,6 +96,20 @@ Where 0xdc is the offset from the pinctrl register base address for the
42device pinctrl register, 0x18 is the desired value, and 0xff is the sub mask to 96device pinctrl register, 0x18 is the desired value, and 0xff is the sub mask to
43be used when applying this change to the register. 97be used when applying this change to the register.
44 98
99
100Optional sub-node: In case some pins could be configured as GPIO in the pinmux
101register, those pins could be defined as a GPIO range. This sub-node is required
102by pinctrl-single,gpio-range property.
103
104Required properties in sub-node:
105- #pinctrl-single,gpio-range-cells : the number of parameters after phandle in
106 pinctrl-single,gpio-range property.
107
108 range: gpio-range {
109 #pinctrl-single,gpio-range-cells = <3>;
110 };
111
112
45Example: 113Example:
46 114
47/* SoC common file */ 115/* SoC common file */
@@ -58,7 +126,7 @@ pmx_core: pinmux@4a100040 {
58 126
59/* second controller instance for pins in wkup domain */ 127/* second controller instance for pins in wkup domain */
60pmx_wkup: pinmux@4a31e040 { 128pmx_wkup: pinmux@4a31e040 {
61 compatible = "pinctrl-single; 129 compatible = "pinctrl-single";
62 reg = <0x4a31e040 0x0038>; 130 reg = <0x4a31e040 0x0038>;
63 #address-cells = <1>; 131 #address-cells = <1>;
64 #size-cells = <0>; 132 #size-cells = <0>;
@@ -76,6 +144,29 @@ control_devconf0: pinmux@48002274 {
76 pinctrl-single,function-mask = <0x5F>; 144 pinctrl-single,function-mask = <0x5F>;
77}; 145};
78 146
147/* third controller instance for pins in gpio domain */
148pmx_gpio: pinmux@d401e000 {
149 compatible = "pinconf-single";
150 reg = <0xd401e000 0x0330>;
151 #address-cells = <1>;
152 #size-cells = <1>;
153 ranges;
154
155 pinctrl-single,register-width = <32>;
156 pinctrl-single,function-mask = <7>;
157
158 /* sparse GPIO range could be supported */
159 pinctrl-single,gpio-range = <&range 0 3 0 &range 3 9 1
160 &range 12 1 0 &range 13 29 1
161 &range 43 1 0 &range 44 49 1
162 &range 94 1 1 &range 96 2 1>;
163
164 range: gpio-range {
165 #pinctrl-single,gpio-range-cells = <3>;
166 };
167};
168
169
79/* board specific .dts file */ 170/* board specific .dts file */
80 171
81&pmx_core { 172&pmx_core {
@@ -96,6 +187,15 @@ control_devconf0: pinmux@48002274 {
96 >; 187 >;
97 }; 188 };
98 189
190 uart0_pins: pinmux_uart0_pins {
191 pinctrl-single,pins = <
192 0x208 0 /* UART0_RXD (IOCFG138) */
193 0x20c 0 /* UART0_TXD (IOCFG139) */
194 >;
195 pinctrl-single,bias-pulldown = <0 2 2>;
196 pinctrl-single,bias-pullup = <0 1 1>;
197 };
198
99 /* map uart2 pins */ 199 /* map uart2 pins */
100 uart2_pins: pinmux_uart2_pins { 200 uart2_pins: pinmux_uart2_pins {
101 pinctrl-single,pins = < 201 pinctrl-single,pins = <
@@ -122,6 +222,11 @@ control_devconf0: pinmux@48002274 {
122 222
123}; 223};
124 224
225&uart1 {
226 pinctrl-names = "default";
227 pinctrl-0 = <&uart0_pins>;
228};
229
125&uart2 { 230&uart2 {
126 pinctrl-names = "default"; 231 pinctrl-names = "default";
127 pinctrl-0 = <&uart2_pins>; 232 pinctrl-0 = <&uart2_pins>;
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-vt8500.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-vt8500.txt
new file mode 100644
index 000000000000..b3aa90f0ce44
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-vt8500.txt
@@ -0,0 +1,57 @@
1VIA VT8500 and Wondermedia WM8xxx-series pinmux/gpio controller
2
3These SoCs contain a combined Pinmux/GPIO module. Each pin may operate as
4either a GPIO in, GPIO out or as an alternate function (I2C, SPI etc).
5
6Required properties:
7- compatible: "via,vt8500-pinctrl", "wm,wm8505-pinctrl", "wm,wm8650-pinctrl",
8 "wm8750-pinctrl" or "wm,wm8850-pinctrl"
9- reg: Should contain the physical address of the module's registers.
10- interrupt-controller: Marks the device node as an interrupt controller.
11- #interrupt-cells: Should be two.
12- gpio-controller: Marks the device node as a GPIO controller.
13- #gpio-cells : Should be two. The first cell is the pin number and the
14 second cell is used to specify optional parameters.
15 bit 0 - active low
16
17Please refer to ../gpio/gpio.txt for a general description of GPIO bindings.
18
19Please refer to pinctrl-bindings.txt in this directory for details of the
20common pinctrl bindings used by client devices, including the meaning of the
21phrase "pin configuration node".
22
23Each pin configuration node lists the pin(s) to which it applies, and one or
24more of the mux functions to select on those pin(s), and pull-up/down
25configuration. Each subnode only affects those parameters that are explicitly
26listed. In other words, a subnode that lists only a mux function implies no
27information about any pull configuration. Similarly, a subnode that lists only
28a pull parameter implies no information about the mux function.
29
30Required subnode-properties:
31- wm,pins: An array of cells. Each cell contains the ID of a pin.
32
33Optional subnode-properties:
34- wm,function: Integer, containing the function to mux to the pin(s):
35 0: GPIO in
36 1: GPIO out
37 2: alternate
38
39- wm,pull: Integer, representing the pull-down/up to apply to the pin(s):
40 0: none
41 1: down
42 2: up
43
44Each of wm,function and wm,pull may contain either a single value which
45will be applied to all pins in wm,pins, or one value for each entry in
46wm,pins.
47
48Example:
49
50 pinctrl: pinctrl {
51 compatible = "wm,wm8505-pinctrl";
52 reg = <0xD8110000 0x10000>;
53 interrupt-controller;
54 #interrupt-cells = <2>;
55 gpio-controller;
56 #gpio-cells = <2>;
57 };
diff --git a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
index 4598a47aa0cd..c70fca146e91 100644
--- a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
@@ -7,6 +7,7 @@ on-chip controllers onto these pads.
7 7
8Required Properties: 8Required Properties:
9- compatible: should be one of the following. 9- compatible: should be one of the following.
10 - "samsung,s3c64xx-pinctrl": for S3C64xx-compatible pin-controller,
10 - "samsung,exynos4210-pinctrl": for Exynos4210 compatible pin-controller. 11 - "samsung,exynos4210-pinctrl": for Exynos4210 compatible pin-controller.
11 - "samsung,exynos4x12-pinctrl": for Exynos4x12 compatible pin-controller. 12 - "samsung,exynos4x12-pinctrl": for Exynos4x12 compatible pin-controller.
12 - "samsung,exynos5250-pinctrl": for Exynos5250 compatible pin-controller. 13 - "samsung,exynos5250-pinctrl": for Exynos5250 compatible pin-controller.
@@ -105,6 +106,8 @@ B. External Wakeup Interrupts: For supporting external wakeup interrupts, a
105 106
106 - compatible: identifies the type of the external wakeup interrupt controller 107 - compatible: identifies the type of the external wakeup interrupt controller
107 The possible values are: 108 The possible values are:
109 - samsung,s3c64xx-wakeup-eint: represents wakeup interrupt controller
110 found on Samsung S3C64xx SoCs,
108 - samsung,exynos4210-wakeup-eint: represents wakeup interrupt controller 111 - samsung,exynos4210-wakeup-eint: represents wakeup interrupt controller
109 found on Samsung Exynos4210 SoC. 112 found on Samsung Exynos4210 SoC.
110 - interrupt-parent: phandle of the interrupt parent to which the external 113 - interrupt-parent: phandle of the interrupt parent to which the external
diff --git a/Documentation/devicetree/bindings/power_supply/power_supply.txt b/Documentation/devicetree/bindings/power_supply/power_supply.txt
new file mode 100644
index 000000000000..8391bfa0edac
--- /dev/null
+++ b/Documentation/devicetree/bindings/power_supply/power_supply.txt
@@ -0,0 +1,23 @@
1Power Supply Core Support
2
3Optional Properties:
4 - power-supplies : This property is added to a supply in order to list the
5 devices which supply it power, referenced by their phandles.
6
7Example:
8
9 usb-charger: power@e {
10 compatible = "some,usb-charger";
11 ...
12 };
13
14 ac-charger: power@c {
15 compatible = "some,ac-charger";
16 ...
17 };
18
19 battery@b {
20 compatible = "some,battery";
21 ...
22 power-supplies = <&usb-charger>, <&ac-charger>;
23 };
diff --git a/Documentation/devicetree/bindings/power_supply/qnap-poweroff.txt b/Documentation/devicetree/bindings/power_supply/qnap-poweroff.txt
index 9a599d27bd75..0347d8350d94 100644
--- a/Documentation/devicetree/bindings/power_supply/qnap-poweroff.txt
+++ b/Documentation/devicetree/bindings/power_supply/qnap-poweroff.txt
@@ -2,7 +2,7 @@
2 2
3QNAP NAS devices have a microcontroller controlling the main power 3QNAP NAS devices have a microcontroller controlling the main power
4supply. This microcontroller is connected to UART1 of the Kirkwood and 4supply. This microcontroller is connected to UART1 of the Kirkwood and
5Orion5x SoCs. Sending the charactor 'A', at 19200 baud, tells the 5Orion5x SoCs. Sending the character 'A', at 19200 baud, tells the
6microcontroller to turn the power off. This driver adds a handler to 6microcontroller to turn the power off. This driver adds a handler to
7pm_power_off which is called to turn the power off. 7pm_power_off which is called to turn the power off.
8 8
diff --git a/Documentation/devicetree/bindings/power_supply/tps65090.txt b/Documentation/devicetree/bindings/power_supply/tps65090.txt
new file mode 100644
index 000000000000..8e5e0d3910df
--- /dev/null
+++ b/Documentation/devicetree/bindings/power_supply/tps65090.txt
@@ -0,0 +1,17 @@
1TPS65090 Frontend PMU with Switchmode Charger
2
3Required Properties:
4-compatible: "ti,tps65090-charger"
5
6Optional Properties:
7-ti,enable-low-current-chrg: Enables charging when a low current is detected
8 while the default logic is to stop charging.
9
10This node is a subnode of the tps65090 PMIC.
11
12Example:
13
14 tps65090-charger {
15 compatible = "ti,tps65090-charger";
16 ti,enable-low-current-chrg;
17 };
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/cpus.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpus.txt
new file mode 100644
index 000000000000..922c30ad90d1
--- /dev/null
+++ b/Documentation/devicetree/bindings/powerpc/fsl/cpus.txt
@@ -0,0 +1,22 @@
1===================================================================
2Power Architecture CPU Binding
3Copyright 2013 Freescale Semiconductor Inc.
4
5Power Architecture CPUs in Freescale SOCs are represented in device trees as
6per the definition in ePAPR.
7
8In addition to the ePAPR definitions, the properties defined below may be
9present on CPU nodes.
10
11PROPERTIES
12
13 - fsl,eref-*
14 Usage: optional
15 Value type: <empty>
16 Definition: The EREF (EREF: A Programmer.s Reference Manual for
17 Freescale Power Architecture) defines the architecture for Freescale
18 Power CPUs. The EREF defines some architecture categories not defined
19 by the Power ISA. For these EREF-specific categories, the existence of
20 a property named fsl,eref-[CAT], where [CAT] is the abbreviated category
21 name with all uppercase letters converted to lowercase, indicates that
22 the category is supported by the implementation.
diff --git a/Documentation/devicetree/bindings/pwm/pwm-samsung.txt b/Documentation/devicetree/bindings/pwm/pwm-samsung.txt
new file mode 100644
index 000000000000..ac67c687a327
--- /dev/null
+++ b/Documentation/devicetree/bindings/pwm/pwm-samsung.txt
@@ -0,0 +1,43 @@
1* Samsung PWM timers
2
3Samsung SoCs contain PWM timer blocks which can be used for system clock source
4and clock event timers, as well as to drive SoC outputs with PWM signal. Each
5PWM timer block provides 5 PWM channels (not all of them can drive physical
6outputs - see SoC and board manual).
7
8Be aware that the clocksource driver supports only uniprocessor systems.
9
10Required properties:
11- compatible : should be one of following:
12 samsung,s3c2410-pwm - for 16-bit timers present on S3C24xx SoCs
13 samsung,s3c6400-pwm - for 32-bit timers present on S3C64xx SoCs
14 samsung,s5p6440-pwm - for 32-bit timers present on S5P64x0 SoCs
15 samsung,s5pc100-pwm - for 32-bit timers present on S5PC100, S5PV210,
16 Exynos4210 rev0 SoCs
17 samsung,exynos4210-pwm - for 32-bit timers present on Exynos4210,
18 Exynos4x12 and Exynos5250 SoCs
19- reg: base address and size of register area
20- interrupts: list of timer interrupts (one interrupt per timer, starting at
21 timer 0)
22- #pwm-cells: number of cells used for PWM specifier - must be 3
23 the specifier format is as follows:
24 - phandle to PWM controller node
25 - index of PWM channel (from 0 to 4)
26 - PWM signal period in nanoseconds
27 - bitmask of optional PWM flags:
28 0x1 - invert PWM signal
29
30Optional properties:
31- samsung,pwm-outputs: list of PWM channels used as PWM outputs on particular
32 platform - an array of up to 5 elements being indices of PWM channels
33 (from 0 to 4), the order does not matter.
34
35Example:
36 pwm@7f006000 {
37 compatible = "samsung,s3c6400-pwm";
38 reg = <0x7f006000 0x1000>;
39 interrupt-parent = <&vic0>;
40 interrupts = <23>, <24>, <25>, <27>, <28>;
41 samsung,pwm-outputs = <0>, <1>;
42 #pwm-cells = <3>;
43 }
diff --git a/Documentation/devicetree/bindings/pwm/pwm-tiecap.txt b/Documentation/devicetree/bindings/pwm/pwm-tiecap.txt
index 131e8c11d26f..681afad73778 100644
--- a/Documentation/devicetree/bindings/pwm/pwm-tiecap.txt
+++ b/Documentation/devicetree/bindings/pwm/pwm-tiecap.txt
@@ -1,7 +1,9 @@
1TI SOC ECAP based APWM controller 1TI SOC ECAP based APWM controller
2 2
3Required properties: 3Required properties:
4- compatible: Must be "ti,am33xx-ecap" 4- compatible: Must be "ti,<soc>-ecap".
5 for am33xx - compatible = "ti,am33xx-ecap";
6 for da850 - compatible = "ti,da850-ecap", "ti,am33xx-ecap";
5- #pwm-cells: Should be 3. Number of cells being used to specify PWM property. 7- #pwm-cells: Should be 3. Number of cells being used to specify PWM property.
6 First cell specifies the per-chip index of the PWM to use, the second 8 First cell specifies the per-chip index of the PWM to use, the second
7 cell is the period in nanoseconds and bit 0 in the third cell is used to 9 cell is the period in nanoseconds and bit 0 in the third cell is used to
@@ -15,9 +17,15 @@ Optional properties:
15 17
16Example: 18Example:
17 19
18ecap0: ecap@0 { 20ecap0: ecap@0 { /* ECAP on am33xx */
19 compatible = "ti,am33xx-ecap"; 21 compatible = "ti,am33xx-ecap";
20 #pwm-cells = <3>; 22 #pwm-cells = <3>;
21 reg = <0x48300100 0x80>; 23 reg = <0x48300100 0x80>;
22 ti,hwmods = "ecap0"; 24 ti,hwmods = "ecap0";
23}; 25};
26
27ecap0: ecap@0 { /* ECAP on da850 */
28 compatible = "ti,da850-ecap", "ti,am33xx-ecap";
29 #pwm-cells = <3>;
30 reg = <0x306000 0x80>;
31};
diff --git a/Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt b/Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt
index 4fc7079d822e..337c6fc65d3f 100644
--- a/Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt
+++ b/Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt
@@ -1,7 +1,9 @@
1TI SOC EHRPWM based PWM controller 1TI SOC EHRPWM based PWM controller
2 2
3Required properties: 3Required properties:
4- compatible : Must be "ti,am33xx-ehrpwm" 4- compatible: Must be "ti,<soc>-ehrpwm".
5 for am33xx - compatible = "ti,am33xx-ehrpwm";
6 for da850 - compatible = "ti,da850-ehrpwm", "ti,am33xx-ehrpwm";
5- #pwm-cells: Should be 3. Number of cells being used to specify PWM property. 7- #pwm-cells: Should be 3. Number of cells being used to specify PWM property.
6 First cell specifies the per-chip index of the PWM to use, the second 8 First cell specifies the per-chip index of the PWM to use, the second
7 cell is the period in nanoseconds and bit 0 in the third cell is used to 9 cell is the period in nanoseconds and bit 0 in the third cell is used to
@@ -15,9 +17,15 @@ Optional properties:
15 17
16Example: 18Example:
17 19
18ehrpwm0: ehrpwm@0 { 20ehrpwm0: ehrpwm@0 { /* EHRPWM on am33xx */
19 compatible = "ti,am33xx-ehrpwm"; 21 compatible = "ti,am33xx-ehrpwm";
20 #pwm-cells = <3>; 22 #pwm-cells = <3>;
21 reg = <0x48300200 0x100>; 23 reg = <0x48300200 0x100>;
22 ti,hwmods = "ehrpwm0"; 24 ti,hwmods = "ehrpwm0";
23}; 25};
26
27ehrpwm0: ehrpwm@0 { /* EHRPWM on da850 */
28 compatible = "ti,da850-ehrpwm", "ti,am33xx-ehrpwm";
29 #pwm-cells = <3>;
30 reg = <0x300000 0x2000>;
31};
diff --git a/Documentation/devicetree/bindings/regulator/max8952.txt b/Documentation/devicetree/bindings/regulator/max8952.txt
new file mode 100644
index 000000000000..866fcdd0f4eb
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/max8952.txt
@@ -0,0 +1,52 @@
1Maxim MAX8952 voltage regulator
2
3Required properties:
4- compatible: must be equal to "maxim,max8952"
5- reg: I2C slave address, usually 0x60
6- max8952,dvs-mode-microvolt: array of 4 integer values defining DVS voltages
7 in microvolts. All values must be from range <770000, 1400000>
8- any required generic properties defined in regulator.txt
9
10Optional properties:
11- max8952,vid-gpios: array of two GPIO pins used for DVS voltage selection
12- max8952,en-gpio: GPIO used to control enable status of regulator
13- max8952,default-mode: index of default DVS voltage, from <0, 3> range
14- max8952,sync-freq: sync frequency, must be one of following values:
15 - 0: 26 MHz
16 - 1: 13 MHz
17 - 2: 19.2 MHz
18 Defaults to 26 MHz if not specified.
19- max8952,ramp-speed: voltage ramp speed, must be one of following values:
20 - 0: 32mV/us
21 - 1: 16mV/us
22 - 2: 8mV/us
23 - 3: 4mV/us
24 - 4: 2mV/us
25 - 5: 1mV/us
26 - 6: 0.5mV/us
27 - 7: 0.25mV/us
28 Defaults to 32mV/us if not specified.
29- any available generic properties defined in regulator.txt
30
31Example:
32
33 vdd_arm_reg: pmic@60 {
34 compatible = "maxim,max8952";
35 reg = <0x60>;
36
37 /* max8952-specific properties */
38 max8952,vid-gpios = <&gpx0 3 0>, <&gpx0 4 0>;
39 max8952,en-gpio = <&gpx0 1 0>;
40 max8952,default-mode = <0>;
41 max8952,dvs-mode-microvolt = <1250000>, <1200000>,
42 <1050000>, <950000>;
43 max8952,sync-freq = <0>;
44 max8952,ramp-speed = <0>;
45
46 /* generic regulator properties */
47 regulator-name = "vdd_arm";
48 regulator-min-microvolt = <770000>;
49 regulator-max-microvolt = <1400000>;
50 regulator-always-on;
51 regulator-boot-on;
52 };
diff --git a/Documentation/devicetree/bindings/regulator/max8997-regulator.txt b/Documentation/devicetree/bindings/regulator/max8997-regulator.txt
index 9fd69a18b0ba..9e5e51d78868 100644
--- a/Documentation/devicetree/bindings/regulator/max8997-regulator.txt
+++ b/Documentation/devicetree/bindings/regulator/max8997-regulator.txt
@@ -28,7 +28,7 @@ Required properties:
28 safe operating voltage). 28 safe operating voltage).
29 29
30 If either of the 'max8997,pmic-buck[1/2/5]-uses-gpio-dvs' optional 30 If either of the 'max8997,pmic-buck[1/2/5]-uses-gpio-dvs' optional
31 property is specified, then all the eigth voltage values for the 31 property is specified, then all the eight voltage values for the
32 'max8997,pmic-buck[1/2/5]-dvs-voltage' should be specified. 32 'max8997,pmic-buck[1/2/5]-dvs-voltage' should be specified.
33 33
34Optional properties: 34Optional properties:
diff --git a/Documentation/devicetree/bindings/reset/fsl,imx-src.txt b/Documentation/devicetree/bindings/reset/fsl,imx-src.txt
new file mode 100644
index 000000000000..13301777e11c
--- /dev/null
+++ b/Documentation/devicetree/bindings/reset/fsl,imx-src.txt
@@ -0,0 +1,49 @@
1Freescale i.MX System Reset Controller
2======================================
3
4Please also refer to reset.txt in this directory for common reset
5controller binding usage.
6
7Required properties:
8- compatible: Should be "fsl,<chip>-src"
9- reg: should be register base and length as documented in the
10 datasheet
11- interrupts: Should contain SRC interrupt and CPU WDOG interrupt,
12 in this order.
13- #reset-cells: 1, see below
14
15example:
16
17src: src@020d8000 {
18 compatible = "fsl,imx6q-src";
19 reg = <0x020d8000 0x4000>;
20 interrupts = <0 91 0x04 0 96 0x04>;
21 #reset-cells = <1>;
22};
23
24Specifying reset lines connected to IP modules
25==============================================
26
27The system reset controller can be used to reset the GPU, VPU,
28IPU, and OpenVG IP modules on i.MX5 and i.MX6 ICs. Those device
29nodes should specify the reset line on the SRC in their resets
30property, containing a phandle to the SRC device node and a
31RESET_INDEX specifying which module to reset, as described in
32reset.txt
33
34example:
35
36 ipu1: ipu@02400000 {
37 resets = <&src 2>;
38 };
39 ipu2: ipu@02800000 {
40 resets = <&src 4>;
41 };
42
43The following RESET_INDEX values are valid for i.MX5:
44GPU_RESET 0
45VPU_RESET 1
46IPU1_RESET 2
47OPEN_VG_RESET 3
48The following additional RESET_INDEX value is valid for i.MX6:
49IPU2_RESET 4
diff --git a/Documentation/devicetree/bindings/reset/reset.txt b/Documentation/devicetree/bindings/reset/reset.txt
new file mode 100644
index 000000000000..31db6ff84908
--- /dev/null
+++ b/Documentation/devicetree/bindings/reset/reset.txt
@@ -0,0 +1,75 @@
1= Reset Signal Device Tree Bindings =
2
3This binding is intended to represent the hardware reset signals present
4internally in most IC (SoC, FPGA, ...) designs. Reset signals for whole
5standalone chips are most likely better represented as GPIOs, although there
6are likely to be exceptions to this rule.
7
8Hardware blocks typically receive a reset signal. This signal is generated by
9a reset provider (e.g. power management or clock module) and received by a
10reset consumer (the module being reset, or a module managing when a sub-
11ordinate module is reset). This binding exists to represent the provider and
12consumer, and provide a way to couple the two together.
13
14A reset signal is represented by the phandle of the provider, plus a reset
15specifier - a list of DT cells that represents the reset signal within the
16provider. The length (number of cells) and semantics of the reset specifier
17are dictated by the binding of the reset provider, although common schemes
18are described below.
19
20A word on where to place reset signal consumers in device tree: It is possible
21in hardware for a reset signal to affect multiple logically separate HW blocks
22at once. In this case, it would be unwise to represent this reset signal in
23the DT node of each affected HW block, since if activated, an unrelated block
24may be reset. Instead, reset signals should be represented in the DT node
25where it makes most sense to control it; this may be a bus node if all
26children of the bus are affected by the reset signal, or an individual HW
27block node for dedicated reset signals. The intent of this binding is to give
28appropriate software access to the reset signals in order to manage the HW,
29rather than to slavishly enumerate the reset signal that affects each HW
30block.
31
32= Reset providers =
33
34Required properties:
35#reset-cells: Number of cells in a reset specifier; Typically 0 for nodes
36 with a single reset output and 1 for nodes with multiple
37 reset outputs.
38
39For example:
40
41 rst: reset-controller {
42 #reset-cells = <1>;
43 };
44
45= Reset consumers =
46
47Required properties:
48resets: List of phandle and reset specifier pairs, one pair
49 for each reset signal that affects the device, or that the
50 device manages. Note: if the reset provider specifies '0' for
51 #reset-cells, then only the phandle portion of the pair will
52 appear.
53
54Optional properties:
55reset-names: List of reset signal name strings sorted in the same order as
56 the resets property. Consumers drivers will use reset-names to
57 match reset signal names with reset specifiers.
58
59For example:
60
61 device {
62 resets = <&rst 20>;
63 reset-names = "reset";
64 };
65
66This represents a device with a single reset signal named "reset".
67
68 bus {
69 resets = <&rst 10> <&rst 11> <&rst 12> <&rst 11>;
70 reset-names = "i2s1", "i2s2", "dma", "mixer";
71 };
72
73This represents a bus that controls the reset signal of each of four sub-
74ordinate devices. Consider for example a bus that fails to operate unless no
75child device has reset asserted.
diff --git a/Documentation/devicetree/bindings/rng/brcm,bcm2835.txt b/Documentation/devicetree/bindings/rng/brcm,bcm2835.txt
new file mode 100644
index 000000000000..07ccdaa68324
--- /dev/null
+++ b/Documentation/devicetree/bindings/rng/brcm,bcm2835.txt
@@ -0,0 +1,13 @@
1BCM2835 Random number generator
2
3Required properties:
4
5- compatible : should be "brcm,bcm2835-rng"
6- reg : Specifies base physical address and size of the registers.
7
8Example:
9
10rng {
11 compatible = "brcm,bcm2835-rng";
12 reg = <0x7e104000 0x10>;
13};
diff --git a/Documentation/devicetree/bindings/rtc/atmel,at91rm9200-rtc.txt b/Documentation/devicetree/bindings/rtc/atmel,at91rm9200-rtc.txt
new file mode 100644
index 000000000000..2a3feabd3b22
--- /dev/null
+++ b/Documentation/devicetree/bindings/rtc/atmel,at91rm9200-rtc.txt
@@ -0,0 +1,15 @@
1Atmel AT91RM9200 Real Time Clock
2
3Required properties:
4- compatible: should be: "atmel,at91rm9200-rtc"
5- reg: physical base address of the controller and length of memory mapped
6 region.
7- interrupts: rtc alarm/event interrupt
8
9Example:
10
11rtc@fffffe00 {
12 compatible = "atmel,at91rm9200-rtc";
13 reg = <0xfffffe00 0x100>;
14 interrupts = <1 4 7>;
15};
diff --git a/Documentation/devicetree/bindings/serial/pl011.txt b/Documentation/devicetree/bindings/serial/pl011.txt
new file mode 100644
index 000000000000..5d2e840ae65c
--- /dev/null
+++ b/Documentation/devicetree/bindings/serial/pl011.txt
@@ -0,0 +1,17 @@
1* ARM AMBA Primecell PL011 serial UART
2
3Required properties:
4- compatible: must be "arm,primecell", "arm,pl011"
5- reg: exactly one register range with length 0x1000
6- interrupts: exactly one interrupt specifier
7
8Optional properties:
9- pinctrl: When present, must have one state named "sleep"
10 and one state named "default"
11- clocks: When present, must refer to exactly one clock named
12 "apb_pclk"
13- dmas: When present, may have one or two dma channels.
14 The first one must be named "rx", the second one
15 must be named "tx".
16
17See also bindings/arm/primecell.txt
diff --git a/Documentation/devicetree/bindings/serio/snps-arc_ps2.txt b/Documentation/devicetree/bindings/serio/snps-arc_ps2.txt
new file mode 100644
index 000000000000..38c2f21e8044
--- /dev/null
+++ b/Documentation/devicetree/bindings/serio/snps-arc_ps2.txt
@@ -0,0 +1,16 @@
1* ARC PS/2 driver: PS/2 block used in some ARC FPGA's & nSIM OSCI model
2
3Required properties:
4- compatible : "snps,arc_ps2"
5- reg : offset and length (always 0x14) of registers
6- interrupts : interrupt
7- interrupt-names : name of interrupt, must be "arc_ps2_irq"
8
9Example:
10
11serio@c9000400 {
12 compatible = "snps,arc_ps2";
13 reg = <0xc9000400 0x14>;
14 interrupts = <13>;
15 interrupt-names = "arc_ps2_irq";
16}
diff --git a/Documentation/devicetree/bindings/sound/ak5386.txt b/Documentation/devicetree/bindings/sound/ak5386.txt
new file mode 100644
index 000000000000..dc3914fe6ce8
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/ak5386.txt
@@ -0,0 +1,19 @@
1AK5386 Single-ended 24-Bit 192kHz delta-sigma ADC
2
3This device has no control interface.
4
5Required properties:
6
7 - compatible : "asahi-kasei,ak5386"
8
9Optional properties:
10
11 - reset-gpio : a GPIO spec for the reset/power down pin.
12 If specified, it will be deasserted at probe time.
13
14Example:
15
16spdif: ak5386@0 {
17 compatible = "asahi-kasei,ak5386";
18 reset-gpio = <&gpio0 23>;
19};
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt
index b77a97c9101e..05ffecb57103 100644
--- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt
@@ -2,6 +2,11 @@ NVIDIA Tegra audio complex
2 2
3Required properties: 3Required properties:
4- compatible : "nvidia,tegra-audio-alc5632" 4- compatible : "nvidia,tegra-audio-alc5632"
5- clocks : Must contain an entry for each entry in clock-names.
6- clock-names : Must include the following entries:
7 "pll_a" (The Tegra clock of that name),
8 "pll_a_out0" (The Tegra clock of that name),
9 "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk)
5- nvidia,model : The user-visible name of this sound complex. 10- nvidia,model : The user-visible name of this sound complex.
6- nvidia,audio-routing : A list of the connections between audio components. 11- 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, 12 Each entry is a pair of strings, the first being the connection's sink,
@@ -56,4 +61,7 @@ sound {
56 61
57 nvidia,i2s-controller = <&tegra_i2s1>; 62 nvidia,i2s-controller = <&tegra_i2s1>;
58 nvidia,audio-codec = <&alc5632>; 63 nvidia,audio-codec = <&alc5632>;
64
65 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>;
66 clock-names = "pll_a", "pll_a_out0", "mclk";
59}; 67};
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt
index 04b14cfb1f16..ef1fe7358279 100644
--- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt
@@ -2,6 +2,11 @@ NVIDIA Tegra audio complex for TrimSlice
2 2
3Required properties: 3Required properties:
4- compatible : "nvidia,tegra-audio-trimslice" 4- compatible : "nvidia,tegra-audio-trimslice"
5- clocks : Must contain an entry for each entry in clock-names.
6- clock-names : Must include the following entries:
7 "pll_a" (The Tegra clock of that name),
8 "pll_a_out0" (The Tegra clock of that name),
9 "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk)
5- nvidia,i2s-controller : The phandle of the Tegra I2S1 controller 10- nvidia,i2s-controller : The phandle of the Tegra I2S1 controller
6- nvidia,audio-codec : The phandle of the WM8903 audio codec 11- nvidia,audio-codec : The phandle of the WM8903 audio codec
7 12
@@ -11,4 +16,6 @@ sound {
11 compatible = "nvidia,tegra-audio-trimslice"; 16 compatible = "nvidia,tegra-audio-trimslice";
12 nvidia,i2s-controller = <&tegra_i2s1>; 17 nvidia,i2s-controller = <&tegra_i2s1>;
13 nvidia,audio-codec = <&codec>; 18 nvidia,audio-codec = <&codec>;
19 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>;
20 clock-names = "pll_a", "pll_a_out0", "mclk";
14}; 21};
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt
index c4dd39ce6165..d14510613a7f 100644
--- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt
@@ -2,6 +2,11 @@ NVIDIA Tegra audio complex
2 2
3Required properties: 3Required properties:
4- compatible : "nvidia,tegra-audio-wm8753" 4- compatible : "nvidia,tegra-audio-wm8753"
5- clocks : Must contain an entry for each entry in clock-names.
6- clock-names : Must include the following entries:
7 "pll_a" (The Tegra clock of that name),
8 "pll_a_out0" (The Tegra clock of that name),
9 "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk)
5- nvidia,model : The user-visible name of this sound complex. 10- nvidia,model : The user-visible name of this sound complex.
6- nvidia,audio-routing : A list of the connections between audio components. 11- 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, 12 Each entry is a pair of strings, the first being the connection's sink,
@@ -50,5 +55,8 @@ sound {
50 55
51 nvidia,i2s-controller = <&i2s1>; 56 nvidia,i2s-controller = <&i2s1>;
52 nvidia,audio-codec = <&wm8753>; 57 nvidia,audio-codec = <&wm8753>;
58
59 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>;
60 clock-names = "pll_a", "pll_a_out0", "mclk";
53}; 61};
54 62
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt
index d5b0da8bf1d8..3bf722deb722 100644
--- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt
@@ -2,6 +2,11 @@ NVIDIA Tegra audio complex
2 2
3Required properties: 3Required properties:
4- compatible : "nvidia,tegra-audio-wm8903" 4- compatible : "nvidia,tegra-audio-wm8903"
5- clocks : Must contain an entry for each entry in clock-names.
6- clock-names : Must include the following entries:
7 "pll_a" (The Tegra clock of that name),
8 "pll_a_out0" (The Tegra clock of that name),
9 "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk)
5- nvidia,model : The user-visible name of this sound complex. 10- nvidia,model : The user-visible name of this sound complex.
6- nvidia,audio-routing : A list of the connections between audio components. 11- 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, 12 Each entry is a pair of strings, the first being the connection's sink,
@@ -67,5 +72,8 @@ sound {
67 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */ 72 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */
68 nvidia,int-mic-en-gpios = <&gpio 184 0>; /*gpio PX0 */ 73 nvidia,int-mic-en-gpios = <&gpio 184 0>; /*gpio PX0 */
69 nvidia,ext-mic-en-gpios = <&gpio 185 0>; /* gpio PX1 */ 74 nvidia,ext-mic-en-gpios = <&gpio 185 0>; /* gpio PX1 */
75
76 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>;
77 clock-names = "pll_a", "pll_a_out0", "mclk";
70}; 78};
71 79
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt
index be35d34e8b26..ad589b163639 100644
--- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt
@@ -2,6 +2,11 @@ NVIDIA Tegra audio complex
2 2
3Required properties: 3Required properties:
4- compatible : "nvidia,tegra-audio-wm9712" 4- compatible : "nvidia,tegra-audio-wm9712"
5- clocks : Must contain an entry for each entry in clock-names.
6- clock-names : Must include the following entries:
7 "pll_a" (The Tegra clock of that name),
8 "pll_a_out0" (The Tegra clock of that name),
9 "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk)
5- nvidia,model : The user-visible name of this sound complex. 10- nvidia,model : The user-visible name of this sound complex.
6- nvidia,audio-routing : A list of the connections between audio components. 11- 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, 12 Each entry is a pair of strings, the first being the connection's sink,
@@ -48,4 +53,7 @@ sound {
48 "Mic", "MIC1"; 53 "Mic", "MIC1";
49 54
50 nvidia,ac97-controller = <&ac97>; 55 nvidia,ac97-controller = <&ac97>;
56
57 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>;
58 clock-names = "pll_a", "pll_a_out0", "mclk";
51}; 59};
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt
index 1ac7b1642186..0e5c12c66523 100644
--- a/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt
@@ -1,12 +1,22 @@
1NVIDIA Tegra30 AHUB (Audio Hub) 1NVIDIA Tegra30 AHUB (Audio Hub)
2 2
3Required properties: 3Required properties:
4- compatible : "nvidia,tegra30-ahub" 4- compatible : "nvidia,tegra30-ahub", "nvidia,tegra114-ahub", etc.
5- reg : Should contain the register physical address and length for each of 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. 6 the AHUB's register blocks.
7 - Tegra30 requires 2 entries, for the APBIF and AHUB/AUDIO register blocks.
8 - Tegra114 requires an additional entry, for the APBIF2 register block.
7- interrupts : Should contain AHUB interrupt 9- interrupts : Should contain AHUB interrupt
8- nvidia,dma-request-selector : The Tegra DMA controller's phandle and 10- nvidia,dma-request-selector : A list of the DMA channel specifiers. Each
9 request selector for the first APBIF channel. 11 entry contains the Tegra DMA controller's phandle and request selector.
12 If a single entry is present, the request selectors for the channels are
13 assumed to be contiguous, and increment from this value.
14 If multiple values are given, one value must be given per channel.
15- clocks : Must contain an entry for each required entry in clock-names.
16- clock-names : Must include the following entries:
17 - Tegra30: Requires d_audio, apbif, i2s0, i2s1, i2s2, i2s3, i2s4, dam0,
18 dam1, dam2, spdif_in.
19 - Tegra114: Additionally requires amx, adx.
10- ranges : The bus address mapping for the configlink register bus. 20- ranges : The bus address mapping for the configlink register bus.
11 Can be empty since the mapping is 1:1. 21 Can be empty since the mapping is 1:1.
12- #address-cells : For the configlink bus. Should be <1>; 22- #address-cells : For the configlink bus. Should be <1>;
@@ -25,7 +35,13 @@ ahub@70080000 {
25 reg = <0x70080000 0x200 0x70080200 0x100>; 35 reg = <0x70080000 0x200 0x70080200 0x100>;
26 interrupts = < 0 103 0x04 >; 36 interrupts = < 0 103 0x04 >;
27 nvidia,dma-request-selector = <&apbdma 1>; 37 nvidia,dma-request-selector = <&apbdma 1>;
28 38 clocks = <&tegra_car 106>, <&tegra_car 107>, <&tegra_car 30>,
39 <&tegra_car 11>, <&tegra_car 18>, <&tegra_car 101>,
40 <&tegra_car 102>, <&tegra_car 108>, <&tegra_car 109>,
41 <&tegra_car 110>, <&tegra_car 162>;
42 clock-names = "d_audio", "apbif", "i2s0", "i2s1", "i2s2",
43 "i2s3", "i2s4", "dam0", "dam1", "dam2",
44 "spdif_in";
29 ranges; 45 ranges;
30 #address-cells = <1>; 46 #address-cells = <1>;
31 #size-cells = <1>; 47 #size-cells = <1>;
diff --git a/Documentation/devicetree/bindings/sound/ti,tas5086.txt b/Documentation/devicetree/bindings/sound/ti,tas5086.txt
new file mode 100644
index 000000000000..8ea4f5b4818d
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/ti,tas5086.txt
@@ -0,0 +1,32 @@
1Texas Instruments TAS5086 6-channel PWM Processor
2
3Required properties:
4
5 - compatible: Should contain "ti,tas5086".
6 - reg: The i2c address. Should contain <0x1b>.
7
8Optional properties:
9
10 - reset-gpio: A GPIO spec to define which pin is connected to the
11 chip's !RESET pin. If specified, the driver will
12 assert a hardware reset at probe time.
13
14 - ti,charge-period: This property should contain the time in microseconds
15 that closely matches the external single-ended
16 split-capacitor charge period. The hardware chip
17 waits for this period of time before starting the
18 PWM signals. This helps reduce pops and clicks.
19
20 When not specified, the hardware default of 1300ms
21 is retained.
22
23Examples:
24
25 i2c_bus {
26 tas5086@1b {
27 compatible = "ti,tas5086";
28 reg = <0x1b>;
29 reset-gpio = <&gpio 23 0>;
30 ti,charge-period = <156000>;
31 };
32 };
diff --git a/Documentation/devicetree/bindings/sound/wm8994.txt b/Documentation/devicetree/bindings/sound/wm8994.txt
index 7a7eb1e7bda6..f2f3e80934d2 100644
--- a/Documentation/devicetree/bindings/sound/wm8994.txt
+++ b/Documentation/devicetree/bindings/sound/wm8994.txt
@@ -5,14 +5,70 @@ on the board).
5 5
6Required properties: 6Required properties:
7 7
8 - compatible : "wlf,wm1811", "wlf,wm8994", "wlf,wm8958" 8 - compatible : One of "wlf,wm1811", "wlf,wm8994" or "wlf,wm8958".
9 9
10 - reg : the I2C address of the device for I2C, the chip select 10 - reg : the I2C address of the device for I2C, the chip select
11 number for SPI. 11 number for SPI.
12 12
13 - gpio-controller : Indicates this device is a GPIO controller.
14 - #gpio-cells : Must be 2. The first cell is the pin number and the
15 second cell is used to specify optional parameters (currently unused).
16
17 - AVDD2-supply, DBVDD1-supply, DBVDD2-supply, DBVDD3-supply, CPVDD-supply,
18 SPKVDD1-supply, SPKVDD2-supply : power supplies for the device, as covered
19 in Documentation/devicetree/bindings/regulator/regulator.txt
20
21Optional properties:
22
23 - interrupts : The interrupt line the IRQ signal for the device is
24 connected to. This is optional, if it is not connected then none
25 of the interrupt related properties should be specified.
26 - interrupt-controller : These devices contain interrupt controllers
27 and may provide interrupt services to other devices if they have an
28 interrupt line connected.
29 - interrupt-parent : The parent interrupt controller.
30 - #interrupt-cells: the number of cells to describe an IRQ, this should be 2.
31 The first cell is the IRQ number.
32 The second cell is the flags, encoded as the trigger masks from
33 Documentation/devicetree/bindings/interrupts.txt
34
35 - wlf,gpio-cfg : A list of GPIO configuration register values. If absent,
36 no configuration of these registers is performed. If any value is
37 over 0xffff then the register will be left as default. If present 11
38 values must be supplied.
39
40 - wlf,micbias-cfg : Two MICBIAS register values for WM1811 or
41 WM8958. If absent the register defaults will be used.
42
43 - wlf,ldo1ena : GPIO specifier for control of LDO1ENA input to device.
44 - wlf,ldo2ena : GPIO specifier for control of LDO2ENA input to device.
45
46 - wlf,lineout1-se : If present LINEOUT1 is in single ended mode.
47 - wlf,lineout2-se : If present LINEOUT2 is in single ended mode.
48
49 - wlf,lineout1-feedback : If present LINEOUT1 has common mode feedback
50 connected.
51 - wlf,lineout2-feedback : If present LINEOUT2 has common mode feedback
52 connected.
53
54 - wlf,ldoena-always-driven : If present LDOENA is always driven.
55
13Example: 56Example:
14 57
15codec: wm8994@1a { 58codec: wm8994@1a {
16 compatible = "wlf,wm8994"; 59 compatible = "wlf,wm8994";
17 reg = <0x1a>; 60 reg = <0x1a>;
61
62 gpio-controller;
63 #gpio-cells = <2>;
64
65 lineout1-se;
66
67 AVDD2-supply = <&regulator>;
68 CPVDD-supply = <&regulator>;
69 DBVDD1-supply = <&regulator>;
70 DBVDD2-supply = <&regulator>;
71 DBVDD3-supply = <&regulator>;
72 SPKVDD1-supply = <&regulator>;
73 SPKVDD2-supply = <&regulator>;
18}; 74};
diff --git a/Documentation/devicetree/bindings/spi/brcm,bcm2835-spi.txt b/Documentation/devicetree/bindings/spi/brcm,bcm2835-spi.txt
new file mode 100644
index 000000000000..8bf89c643640
--- /dev/null
+++ b/Documentation/devicetree/bindings/spi/brcm,bcm2835-spi.txt
@@ -0,0 +1,22 @@
1Broadcom BCM2835 SPI0 controller
2
3The BCM2835 contains two forms of SPI master controller, one known simply as
4SPI0, and the other known as the "Universal SPI Master"; part of the
5auxilliary block. This binding applies to the SPI0 controller.
6
7Required properties:
8- compatible: Should be "brcm,bcm2835-spi".
9- reg: Should contain register location and length.
10- interrupts: Should contain interrupt.
11- clocks: The clock feeding the SPI controller.
12
13Example:
14
15spi@20204000 {
16 compatible = "brcm,bcm2835-spi";
17 reg = <0x7e204000 0x1000>;
18 interrupts = <2 22>;
19 clocks = <&clk_spi>;
20 #address-cells = <1>;
21 #size-cells = <0>;
22};
diff --git a/Documentation/devicetree/bindings/spi/fsl-spi.txt b/Documentation/devicetree/bindings/spi/fsl-spi.txt
index 777abd7399d5..b032dd76e9d2 100644
--- a/Documentation/devicetree/bindings/spi/fsl-spi.txt
+++ b/Documentation/devicetree/bindings/spi/fsl-spi.txt
@@ -4,7 +4,7 @@ Required properties:
4- cell-index : QE SPI subblock index. 4- cell-index : QE SPI subblock index.
5 0: QE subblock SPI1 5 0: QE subblock SPI1
6 1: QE subblock SPI2 6 1: QE subblock SPI2
7- compatible : should be "fsl,spi". 7- compatible : should be "fsl,spi" or "aeroflexgaisler,spictrl".
8- mode : the SPI operation mode, it can be "cpu" or "cpu-qe". 8- mode : the SPI operation mode, it can be "cpu" or "cpu-qe".
9- reg : Offset and length of the register set for the device 9- reg : Offset and length of the register set for the device
10- interrupts : <a b> where a is the interrupt number and b is a 10- interrupts : <a b> where a is the interrupt number and b is a
@@ -14,6 +14,7 @@ Required properties:
14 controller you have. 14 controller you have.
15- interrupt-parent : the phandle for the interrupt controller that 15- interrupt-parent : the phandle for the interrupt controller that
16 services interrupts for this device. 16 services interrupts for this device.
17- clock-frequency : input clock frequency to non FSL_SOC cores
17 18
18Optional properties: 19Optional properties:
19- gpios : specifies the gpio pins to be used for chipselects. 20- gpios : specifies the gpio pins to be used for chipselects.
diff --git a/Documentation/devicetree/bindings/spi/mxs-spi.txt b/Documentation/devicetree/bindings/spi/mxs-spi.txt
index e2e13957c2a4..3499b73293c2 100644
--- a/Documentation/devicetree/bindings/spi/mxs-spi.txt
+++ b/Documentation/devicetree/bindings/spi/mxs-spi.txt
@@ -3,8 +3,11 @@
3Required properties: 3Required properties:
4- compatible: Should be "fsl,<soc>-spi", where soc is "imx23" or "imx28" 4- compatible: Should be "fsl,<soc>-spi", where soc is "imx23" or "imx28"
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- interrupts: Should contain SSP interrupts (error irq first, dma irq second) 6- interrupts: Should contain SSP ERROR interrupt
7- fsl,ssp-dma-channel: APBX DMA channel for the SSP 7- dmas: DMA specifier, consisting of a phandle to DMA controller node
8 and SSP DMA channel ID.
9 Refer to dma.txt and fsl-mxs-dma.txt for details.
10- dma-names: Must be "rx-tx".
8 11
9Optional properties: 12Optional properties:
10- clock-frequency : Input clock frequency to the SPI block in Hz. 13- clock-frequency : Input clock frequency to the SPI block in Hz.
@@ -17,6 +20,7 @@ ssp0: ssp@80010000 {
17 #size-cells = <0>; 20 #size-cells = <0>;
18 compatible = "fsl,imx28-spi"; 21 compatible = "fsl,imx28-spi";
19 reg = <0x80010000 0x2000>; 22 reg = <0x80010000 0x2000>;
20 interrupts = <96 82>; 23 interrupts = <96>;
21 fsl,ssp-dma-channel = <0>; 24 dmas = <&dma_apbh 0>;
25 dma-names = "rx-tx";
22}; 26};
diff --git a/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt b/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt
new file mode 100644
index 000000000000..91ff771c7e77
--- /dev/null
+++ b/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt
@@ -0,0 +1,26 @@
1NVIDIA Tegra114 SPI controller.
2
3Required properties:
4- compatible : should be "nvidia,tegra114-spi".
5- reg: Should contain SPI registers location and length.
6- interrupts: Should contain SPI interrupts.
7- nvidia,dma-request-selector : The Tegra DMA controller's phandle and
8 request selector for this SPI controller.
9- This is also require clock named "spi" as per binding document
10 Documentation/devicetree/bindings/clock/clock-bindings.txt
11
12Recommended properties:
13- spi-max-frequency: Definition as per
14 Documentation/devicetree/bindings/spi/spi-bus.txt
15Example:
16
17spi@7000d600 {
18 compatible = "nvidia,tegra114-spi";
19 reg = <0x7000d600 0x200>;
20 interrupts = <0 82 0x04>;
21 nvidia,dma-request-selector = <&apbdma 16>;
22 spi-max-frequency = <25000000>;
23 #address-cells = <1>;
24 #size-cells = <0>;
25 status = "disabled";
26};
diff --git a/Documentation/devicetree/bindings/spi/spi-davinci.txt b/Documentation/devicetree/bindings/spi/spi-davinci.txt
new file mode 100644
index 000000000000..6d0ac8d0ad9b
--- /dev/null
+++ b/Documentation/devicetree/bindings/spi/spi-davinci.txt
@@ -0,0 +1,51 @@
1Davinci SPI controller device bindings
2
3Required properties:
4- #address-cells: number of cells required to define a chip select
5 address on the SPI bus. Should be set to 1.
6- #size-cells: should be zero.
7- compatible:
8 - "ti,dm6441-spi" for SPI used similar to that on DM644x SoC family
9 - "ti,da830-spi" for SPI used similar to that on DA8xx SoC family
10- reg: Offset and length of SPI controller register space
11- num-cs: Number of chip selects
12- ti,davinci-spi-intr-line: interrupt line used to connect the SPI
13 IP to the interrupt controller within the SoC. Possible values
14 are 0 and 1. Manual says one of the two possible interrupt
15 lines can be tied to the interrupt controller. Set this
16 based on a specifc SoC configuration.
17- interrupts: interrupt number mapped to CPU.
18- clocks: spi clk phandle
19
20Example of a NOR flash slave device (n25q032) connected to DaVinci
21SPI controller device over the SPI bus.
22
23spi0:spi@20BF0000 {
24 #address-cells = <1>;
25 #size-cells = <0>;
26 compatible = "ti,dm6446-spi";
27 reg = <0x20BF0000 0x1000>;
28 num-cs = <4>;
29 ti,davinci-spi-intr-line = <0>;
30 interrupts = <338>;
31 clocks = <&clkspi>;
32
33 flash: n25q032@0 {
34 #address-cells = <1>;
35 #size-cells = <1>;
36 compatible = "st,m25p32";
37 spi-max-frequency = <25000000>;
38 reg = <0>;
39
40 partition@0 {
41 label = "u-boot-spl";
42 reg = <0x0 0x80000>;
43 read-only;
44 };
45
46 partition@1 {
47 label = "test";
48 reg = <0x80000 0x380000>;
49 };
50 };
51};
diff --git a/Documentation/devicetree/bindings/spi/spi-samsung.txt b/Documentation/devicetree/bindings/spi/spi-samsung.txt
index a15ffeddfba4..86aa061f069f 100644
--- a/Documentation/devicetree/bindings/spi/spi-samsung.txt
+++ b/Documentation/devicetree/bindings/spi/spi-samsung.txt
@@ -31,9 +31,6 @@ Required Board Specific Properties:
31 31
32- #address-cells: should be 1. 32- #address-cells: should be 1.
33- #size-cells: should be 0. 33- #size-cells: should be 0.
34- gpios: The gpio specifier for clock, mosi and miso interface lines (in the
35 order specified). The format of the gpio specifier depends on the gpio
36 controller.
37 34
38Optional Board Specific Properties: 35Optional Board Specific Properties:
39 36
@@ -86,9 +83,8 @@ Example:
86 spi_0: spi@12d20000 { 83 spi_0: spi@12d20000 {
87 #address-cells = <1>; 84 #address-cells = <1>;
88 #size-cells = <0>; 85 #size-cells = <0>;
89 gpios = <&gpa2 4 2 3 0>, 86 pinctrl-names = "default";
90 <&gpa2 6 2 3 0>, 87 pinctrl-0 = <&spi0_bus>;
91 <&gpa2 7 2 3 0>;
92 88
93 w25q80bw@0 { 89 w25q80bw@0 {
94 #address-cells = <1>; 90 #address-cells = <1>;
diff --git a/Documentation/devicetree/bindings/spi/spi_pl022.txt b/Documentation/devicetree/bindings/spi/spi_pl022.txt
index f158fd31cfda..22ed6797216d 100644
--- a/Documentation/devicetree/bindings/spi/spi_pl022.txt
+++ b/Documentation/devicetree/bindings/spi/spi_pl022.txt
@@ -16,6 +16,11 @@ Optional properties:
16 device will be suspended immediately 16 device will be suspended immediately
17- pl022,rt : indicates the controller should run the message pump with realtime 17- pl022,rt : indicates the controller should run the message pump with realtime
18 priority to minimise the transfer latency on the bus (boolean) 18 priority to minimise the transfer latency on the bus (boolean)
19- dmas : Two or more DMA channel specifiers following the convention outlined
20 in bindings/dma/dma.txt
21- dma-names: Names for the dma channels, if present. There must be at
22 least one channel named "tx" for transmit and named "rx" for
23 receive.
19 24
20 25
21SPI slave nodes must be children of the SPI master node and can 26SPI slave nodes must be children of the SPI master node and can
@@ -32,3 +37,34 @@ contain the following properties.
32- pl022,wait-state : Microwire interface: Wait state 37- pl022,wait-state : Microwire interface: Wait state
33- pl022,duplex : Microwire interface: Full/Half duplex 38- pl022,duplex : Microwire interface: Full/Half duplex
34 39
40
41Example:
42
43 spi@e0100000 {
44 compatible = "arm,pl022", "arm,primecell";
45 reg = <0xe0100000 0x1000>;
46 #address-cells = <1>;
47 #size-cells = <0>;
48 interrupts = <0 31 0x4>;
49 dmas = <&dma-controller 23 1>,
50 <&dma-controller 24 0>;
51 dma-names = "rx", "tx";
52
53 m25p80@1 {
54 compatible = "st,m25p80";
55 reg = <1>;
56 spi-max-frequency = <12000000>;
57 spi-cpol;
58 spi-cpha;
59 pl022,hierarchy = <0>;
60 pl022,interface = <0>;
61 pl022,slave-tx-disable;
62 pl022,com-mode = <0x2>;
63 pl022,rx-level-trig = <0>;
64 pl022,tx-level-trig = <0>;
65 pl022,ctrl-len = <0x11>;
66 pl022,wait-state = <0>;
67 pl022,duplex = <0>;
68 };
69 };
70
diff --git a/Documentation/devicetree/bindings/staging/dwc2.txt b/Documentation/devicetree/bindings/staging/dwc2.txt
new file mode 100644
index 000000000000..1a1b7cfa4845
--- /dev/null
+++ b/Documentation/devicetree/bindings/staging/dwc2.txt
@@ -0,0 +1,15 @@
1Platform DesignWare HS OTG USB 2.0 controller
2-----------------------------------------------------
3
4Required properties:
5- compatible : "snps,dwc2"
6- reg : Should contain 1 register range (address and length)
7- interrupts : Should contain 1 interrupt
8
9Example:
10
11 usb@101c0000 {
12 compatible = "ralink,rt3050-usb, snps,dwc2";
13 reg = <0x101c0000 40000>;
14 interrupts = <18>;
15 };
diff --git a/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt b/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt
index 07654f0338b6..b876d4925a57 100644
--- a/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt
+++ b/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt
@@ -8,6 +8,8 @@ Required properties:
8- interrupts: Should contain sync interrupt and error interrupt, 8- interrupts: Should contain sync interrupt and error interrupt,
9 in this order. 9 in this order.
10- #crtc-cells: 1, See below 10- #crtc-cells: 1, See below
11- resets: phandle pointing to the system reset controller and
12 reset line index, see reset/fsl,imx-src.txt for details
11 13
12example: 14example:
13 15
@@ -16,6 +18,7 @@ ipu: ipu@18000000 {
16 compatible = "fsl,imx53-ipu"; 18 compatible = "fsl,imx53-ipu";
17 reg = <0x18000000 0x080000000>; 19 reg = <0x18000000 0x080000000>;
18 interrupts = <11 10>; 20 interrupts = <11 10>;
21 resets = <&src 2>;
19}; 22};
20 23
21Parallel display support 24Parallel display support
@@ -26,7 +29,7 @@ Required properties:
26- crtc: the crtc this display is connected to, see below 29- crtc: the crtc this display is connected to, see below
27Optional properties: 30Optional properties:
28- interface_pix_fmt: How this display is connected to the 31- interface_pix_fmt: How this display is connected to the
29 crtc. Currently supported types: "rgb24", "rgb565" 32 crtc. Currently supported types: "rgb24", "rgb565", "bgr666"
30- edid: verbatim EDID data block describing attached display. 33- edid: verbatim EDID data block describing attached display.
31- ddc: phandle describing the i2c bus handling the display data 34- ddc: phandle describing the i2c bus handling the display data
32 channel 35 channel
diff --git a/Documentation/devicetree/bindings/timer/allwinner,sunxi-timer.txt b/Documentation/devicetree/bindings/timer/allwinner,sun4i-timer.txt
index 0c7b64e95a61..48aeb7884ed3 100644
--- a/Documentation/devicetree/bindings/timer/allwinner,sunxi-timer.txt
+++ b/Documentation/devicetree/bindings/timer/allwinner,sun4i-timer.txt
@@ -2,7 +2,7 @@ Allwinner A1X SoCs Timer Controller
2 2
3Required properties: 3Required properties:
4 4
5- compatible : should be "allwinner,sunxi-timer" 5- compatible : should be "allwinner,sun4i-timer"
6- reg : Specifies base physical address and size of the registers. 6- reg : Specifies base physical address and size of the registers.
7- interrupts : The interrupt of the first timer 7- interrupts : The interrupt of the first timer
8- clocks: phandle to the source clock (usually a 24 MHz fixed clock) 8- clocks: phandle to the source clock (usually a 24 MHz fixed clock)
@@ -10,7 +10,7 @@ Required properties:
10Example: 10Example:
11 11
12timer { 12timer {
13 compatible = "allwinner,sunxi-timer"; 13 compatible = "allwinner,sun4i-timer";
14 reg = <0x01c20c00 0x400>; 14 reg = <0x01c20c00 0x400>;
15 interrupts = <22>; 15 interrupts = <22>;
16 clocks = <&osc>; 16 clocks = <&osc>;
diff --git a/Documentation/devicetree/bindings/timer/arm,sp804.txt b/Documentation/devicetree/bindings/timer/arm,sp804.txt
new file mode 100644
index 000000000000..5cd8eee74af1
--- /dev/null
+++ b/Documentation/devicetree/bindings/timer/arm,sp804.txt
@@ -0,0 +1,29 @@
1ARM sp804 Dual Timers
2---------------------------------------
3
4Required properties:
5- compatible: Should be "arm,sp804" & "arm,primecell"
6- interrupts: Should contain the list of Dual Timer interrupts. This is the
7 interrupt for timer 1 and timer 2. In the case of a single entry, it is
8 the combined interrupt or if "arm,sp804-has-irq" is present that
9 specifies which timer interrupt is connected.
10- reg: Should contain location and length for dual timer register.
11- clocks: clocks driving the dual timer hardware. This list should be 1 or 3
12 clocks. With 3 clocks, the order is timer0 clock, timer1 clock,
13 apb_pclk. A single clock can also be specified if the same clock is
14 used for all clock inputs.
15
16Optional properties:
17- arm,sp804-has-irq = <#>: In the case of only 1 timer irq line connected, this
18 specifies if the irq connection is for timer 1 or timer 2. A value of 1
19 or 2 should be used.
20
21Example:
22
23 timer0: timer@fc800000 {
24 compatible = "arm,sp804", "arm,primecell";
25 reg = <0xfc800000 0x1000>;
26 interrupts = <0 0 4>, <0 1 4>;
27 clocks = <&timclk1 &timclk2 &pclk>;
28 clock-names = "timer1", "timer2", "apb_pclk";
29 };
diff --git a/Documentation/devicetree/bindings/timer/cadence,ttc-timer.txt b/Documentation/devicetree/bindings/timer/cadence,ttc-timer.txt
new file mode 100644
index 000000000000..993695c659e1
--- /dev/null
+++ b/Documentation/devicetree/bindings/timer/cadence,ttc-timer.txt
@@ -0,0 +1,17 @@
1Cadence TTC - Triple Timer Counter
2
3Required properties:
4- compatible : Should be "cdns,ttc".
5- reg : Specifies base physical address and size of the registers.
6- interrupts : A list of 3 interrupts; one per timer channel.
7- clocks: phandle to the source clock
8
9Example:
10
11ttc0: ttc0@f8001000 {
12 interrupt-parent = <&intc>;
13 interrupts = < 0 10 4 0 11 4 0 12 4 >;
14 compatible = "cdns,ttc";
15 reg = <0xF8001000 0x1000>;
16 clocks = <&cpu_clk 3>;
17};
diff --git a/Documentation/devicetree/bindings/timer/fsl,imxgpt.txt b/Documentation/devicetree/bindings/timer/fsl,imxgpt.txt
new file mode 100644
index 000000000000..9809b11f7180
--- /dev/null
+++ b/Documentation/devicetree/bindings/timer/fsl,imxgpt.txt
@@ -0,0 +1,18 @@
1Freescale i.MX General Purpose Timer (GPT)
2
3Required properties:
4
5- compatible : should be "fsl,<soc>-gpt"
6- reg : Specifies base physical address and size of the registers.
7- interrupts : A list of 4 interrupts; one per timer channel.
8- clocks : The clocks provided by the SoC to drive the timer.
9
10Example:
11
12gpt1: timer@10003000 {
13 compatible = "fsl,imx27-gpt", "fsl,imx1-gpt";
14 reg = <0x10003000 0x1000>;
15 interrupts = <26>;
16 clocks = <&clks 46>, <&clks 61>;
17 clock-names = "ipg", "per";
18};
diff --git a/Documentation/devicetree/bindings/timer/samsung,exynos4210-mct.txt b/Documentation/devicetree/bindings/timer/samsung,exynos4210-mct.txt
new file mode 100644
index 000000000000..cb47bfbcaeea
--- /dev/null
+++ b/Documentation/devicetree/bindings/timer/samsung,exynos4210-mct.txt
@@ -0,0 +1,68 @@
1Samsung's Multi Core Timer (MCT)
2
3The Samsung's Multi Core Timer (MCT) module includes two main blocks, the
4global timer and CPU local timers. The global timer is a 64-bit free running
5up-counter and can generate 4 interrupts when the counter reaches one of the
6four preset counter values. The CPU local timers are 32-bit free running
7down-counters and generate an interrupt when the counter expires. There is
8one CPU local timer instantiated in MCT for every CPU in the system.
9
10Required properties:
11
12- compatible: should be "samsung,exynos4210-mct".
13 (a) "samsung,exynos4210-mct", for mct compatible with Exynos4210 mct.
14 (b) "samsung,exynos4412-mct", for mct compatible with Exynos4412 mct.
15
16- reg: base address of the mct controller and length of the address space
17 it occupies.
18
19- interrupts: the list of interrupts generated by the controller. The following
20 should be the order of the interrupts specified. The local timer interrupts
21 should be specified after the four global timer interrupts have been
22 specified.
23
24 0: Global Timer Interrupt 0
25 1: Global Timer Interrupt 1
26 2: Global Timer Interrupt 2
27 3: Global Timer Interrupt 3
28 4: Local Timer Interrupt 0
29 5: Local Timer Interrupt 1
30 6: ..
31 7: ..
32 i: Local Timer Interrupt n
33
34Example 1: In this example, the system uses only the first global timer
35 interrupt generated by MCT and the remaining three global timer
36 interrupts are unused. Two local timer interrupts have been
37 specified.
38
39 mct@10050000 {
40 compatible = "samsung,exynos4210-mct";
41 reg = <0x10050000 0x800>;
42 interrupts = <0 57 0>, <0 0 0>, <0 0 0>, <0 0 0>,
43 <0 42 0>, <0 48 0>;
44 };
45
46Example 2: In this example, the MCT global and local timer interrupts are
47 connected to two seperate interrupt controllers. Hence, an
48 interrupt-map is created to map the interrupts to the respective
49 interrupt controllers.
50
51 mct@101C0000 {
52 compatible = "samsung,exynos4210-mct";
53 reg = <0x101C0000 0x800>;
54 interrupt-controller;
55 #interrups-cells = <2>;
56 interrupt-parent = <&mct_map>;
57 interrupts = <0 0>, <1 0>, <2 0>, <3 0>,
58 <4 0>, <5 0>;
59
60 mct_map: mct-map {
61 #interrupt-cells = <2>;
62 #address-cells = <0>;
63 #size-cells = <0>;
64 interrupt-map = <0x0 0 &combiner 23 3>,
65 <0x4 0 &gic 0 120 0>,
66 <0x5 0 &gic 0 121 0>;
67 };
68 };
diff --git a/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt b/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt
index 273a8d5b3300..2c00ec64628e 100644
--- a/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt
+++ b/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt
@@ -5,20 +5,18 @@ Required properties:
5 imx23 and imx28. 5 imx23 and imx28.
6- reg : Address and length of the register set for the device 6- reg : Address and length of the register set for the device
7- interrupts : Should contain the auart interrupt numbers 7- interrupts : Should contain the auart interrupt numbers
8 8- dmas: DMA specifier, consisting of a phandle to DMA controller node
9Optional properties: 9 and AUART DMA channel ID.
10- fsl,auart-dma-channel : The DMA channels, the first is for RX, the other 10 Refer to dma.txt and fsl-mxs-dma.txt for details.
11 is for TX. If you add this property, it also means that you 11- dma-names: "rx" for RX channel, "tx" for TX channel.
12 will enable the DMA support for the auart.
13 Note: due to the hardware bug in imx23(see errata : 2836),
14 only the imx28 can enable the DMA support for the auart.
15 12
16Example: 13Example:
17auart0: serial@8006a000 { 14auart0: serial@8006a000 {
18 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 15 compatible = "fsl,imx28-auart", "fsl,imx23-auart";
19 reg = <0x8006a000 0x2000>; 16 reg = <0x8006a000 0x2000>;
20 interrupts = <112 70 71>; 17 interrupts = <112>;
21 fsl,auart-dma-channel = <8 9>; 18 dmas = <&dma_apbx 8>, <&dma_apbx 9>;
19 dma-names = "rx", "tx";
22}; 20};
23 21
24Note: Each auart port should have an alias correctly numbered in "aliases" 22Note: Each auart port should have an alias correctly numbered in "aliases"
diff --git a/Documentation/devicetree/bindings/tty/serial/of-serial.txt b/Documentation/devicetree/bindings/tty/serial/of-serial.txt
index 1e1145ca4f3c..1928a3e83cd0 100644
--- a/Documentation/devicetree/bindings/tty/serial/of-serial.txt
+++ b/Documentation/devicetree/bindings/tty/serial/of-serial.txt
@@ -11,6 +11,9 @@ Required properties:
11 - "nvidia,tegra20-uart" 11 - "nvidia,tegra20-uart"
12 - "nxp,lpc3220-uart" 12 - "nxp,lpc3220-uart"
13 - "ibm,qpace-nwp-serial" 13 - "ibm,qpace-nwp-serial"
14 - "altr,16550-FIFO32"
15 - "altr,16550-FIFO64"
16 - "altr,16550-FIFO128"
14 - "serial" if the port type is unknown. 17 - "serial" if the port type is unknown.
15- reg : offset and length of the register set for the device. 18- reg : offset and length of the register set for the device.
16- interrupts : should contain uart interrupt. 19- interrupts : should contain uart interrupt.
@@ -30,6 +33,10 @@ Optional properties:
30 RTAS and should not be registered. 33 RTAS and should not be registered.
31- no-loopback-test: set to indicate that the port does not implements loopback 34- no-loopback-test: set to indicate that the port does not implements loopback
32 test mode 35 test mode
36- fifo-size: the fifo size of the UART.
37- auto-flow-control: one way to enable automatic flow control support. The
38 driver is allowed to detect support for the capability even without this
39 property.
33 40
34Example: 41Example:
35 42
diff --git a/Documentation/devicetree/bindings/usb/ci13xxx-imx.txt b/Documentation/devicetree/bindings/usb/ci13xxx-imx.txt
index 5778b9c83bd8..1c04a4c9515f 100644
--- a/Documentation/devicetree/bindings/usb/ci13xxx-imx.txt
+++ b/Documentation/devicetree/bindings/usb/ci13xxx-imx.txt
@@ -11,6 +11,7 @@ Optional properties:
11 that indicate usb controller index 11 that indicate usb controller index
12- vbus-supply: regulator for vbus 12- vbus-supply: regulator for vbus
13- disable-over-current: disable over current detect 13- disable-over-current: disable over current detect
14- external-vbus-divider: enables off-chip resistor divider for Vbus
14 15
15Examples: 16Examples:
16usb@02184000 { /* USB OTG */ 17usb@02184000 { /* USB OTG */
@@ -20,4 +21,5 @@ usb@02184000 { /* USB OTG */
20 fsl,usbphy = <&usbphy1>; 21 fsl,usbphy = <&usbphy1>;
21 fsl,usbmisc = <&usbmisc 0>; 22 fsl,usbmisc = <&usbmisc 0>;
22 disable-over-current; 23 disable-over-current;
24 external-vbus-divider;
23}; 25};
diff --git a/Documentation/devicetree/bindings/usb/ehci-omap.txt b/Documentation/devicetree/bindings/usb/ehci-omap.txt
new file mode 100644
index 000000000000..485a9a1efa7a
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/ehci-omap.txt
@@ -0,0 +1,32 @@
1OMAP HS USB EHCI controller
2
3This device is usually the child of the omap-usb-host
4Documentation/devicetree/bindings/mfd/omap-usb-host.txt
5
6Required properties:
7
8- compatible: should be "ti,ehci-omap"
9- reg: should contain one register range i.e. start and length
10- interrupts: description of the interrupt line
11
12Optional properties:
13
14- phys: list of phandles to PHY nodes.
15 This property is required if at least one of the ports are in
16 PHY mode i.e. OMAP_EHCI_PORT_MODE_PHY
17
18To specify the port mode, see
19Documentation/devicetree/bindings/mfd/omap-usb-host.txt
20
21Example for OMAP4:
22
23usbhsehci: ehci@4a064c00 {
24 compatible = "ti,ehci-omap", "usb-ehci";
25 reg = <0x4a064c00 0x400>;
26 interrupts = <0 77 0x4>;
27};
28
29&usbhsehci {
30 phys = <&hsusb1_phy 0 &hsusb3_phy>;
31};
32
diff --git a/Documentation/devicetree/bindings/usb/exynos-usb.txt b/Documentation/devicetree/bindings/usb/exynos-usb.txt
new file mode 100644
index 000000000000..b3abde736017
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/exynos-usb.txt
@@ -0,0 +1,50 @@
1Samsung Exynos SoC USB controller
2
3The USB devices interface with USB controllers on Exynos SOCs.
4The device node has following properties.
5
6EHCI
7Required properties:
8 - compatible: should be "samsung,exynos4210-ehci" for USB 2.0
9 EHCI controller in host mode.
10 - reg: physical base address of the controller and length of memory mapped
11 region.
12 - interrupts: interrupt number to the cpu.
13 - clocks: from common clock binding: handle to usb clock.
14 - clock-names: from common clock binding: Shall be "usbhost".
15
16Optional properties:
17 - samsung,vbus-gpio: if present, specifies the GPIO that
18 needs to be pulled up for the bus to be powered.
19
20Example:
21
22 usb@12110000 {
23 compatible = "samsung,exynos4210-ehci";
24 reg = <0x12110000 0x100>;
25 interrupts = <0 71 0>;
26 samsung,vbus-gpio = <&gpx2 6 1 3 3>;
27
28 clocks = <&clock 285>;
29 clock-names = "usbhost";
30 };
31
32OHCI
33Required properties:
34 - compatible: should be "samsung,exynos4210-ohci" for USB 2.0
35 OHCI companion controller in host mode.
36 - reg: physical base address of the controller and length of memory mapped
37 region.
38 - interrupts: interrupt number to the cpu.
39 - clocks: from common clock binding: handle to usb clock.
40 - clock-names: from common clock binding: Shall be "usbhost".
41
42Example:
43 usb@12120000 {
44 compatible = "samsung,exynos4210-ohci";
45 reg = <0x12120000 0x100>;
46 interrupts = <0 71 0>;
47
48 clocks = <&clock 285>;
49 clock-names = "usbhost";
50 };
diff --git a/Documentation/devicetree/bindings/usb/ohci-omap3.txt b/Documentation/devicetree/bindings/usb/ohci-omap3.txt
new file mode 100644
index 000000000000..14ab42812a8e
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/ohci-omap3.txt
@@ -0,0 +1,15 @@
1OMAP HS USB OHCI controller (OMAP3 and later)
2
3Required properties:
4
5- compatible: should be "ti,ohci-omap3"
6- reg: should contain one register range i.e. start and length
7- interrupts: description of the interrupt line
8
9Example for OMAP4:
10
11usbhsohci: ohci@4a064800 {
12 compatible = "ti,ohci-omap3", "usb-ohci";
13 reg = <0x4a064800 0x400>;
14 interrupts = <0 76 0x4>;
15};
diff --git a/Documentation/devicetree/bindings/usb/omap-usb.txt b/Documentation/devicetree/bindings/usb/omap-usb.txt
index 1ef0ce71f8fa..d4769f343d6c 100644
--- a/Documentation/devicetree/bindings/usb/omap-usb.txt
+++ b/Documentation/devicetree/bindings/usb/omap-usb.txt
@@ -8,16 +8,17 @@ OMAP MUSB GLUE
8 and disconnect. 8 and disconnect.
9 - multipoint : Should be "1" indicating the musb controller supports 9 - multipoint : Should be "1" indicating the musb controller supports
10 multipoint. This is a MUSB configuration-specific setting. 10 multipoint. This is a MUSB configuration-specific setting.
11 - num_eps : Specifies the number of endpoints. This is also a 11 - num-eps : Specifies the number of endpoints. This is also a
12 MUSB configuration-specific setting. Should be set to "16" 12 MUSB configuration-specific setting. Should be set to "16"
13 - ram_bits : Specifies the ram address size. Should be set to "12" 13 - ram-bits : Specifies the ram address size. Should be set to "12"
14 - interface_type : This is a board specific setting to describe the type of 14 - interface-type : This is a board specific setting to describe the type of
15 interface between the controller and the phy. It should be "0" or "1" 15 interface between the controller and the phy. It should be "0" or "1"
16 specifying ULPI and UTMI respectively. 16 specifying ULPI and UTMI respectively.
17 - mode : Should be "3" to represent OTG. "1" signifies HOST and "2" 17 - mode : Should be "3" to represent OTG. "1" signifies HOST and "2"
18 represents PERIPHERAL. 18 represents PERIPHERAL.
19 - power : Should be "50". This signifies the controller can supply upto 19 - power : Should be "50". This signifies the controller can supply upto
20 100mA when operating in host mode. 20 100mA when operating in host mode.
21 - usb-phy : the phandle for the PHY device
21 22
22Optional properties: 23Optional properties:
23 - ctrl-module : phandle of the control module this glue uses to write to 24 - ctrl-module : phandle of the control module this glue uses to write to
@@ -29,18 +30,46 @@ usb_otg_hs: usb_otg_hs@4a0ab000 {
29 ti,hwmods = "usb_otg_hs"; 30 ti,hwmods = "usb_otg_hs";
30 ti,has-mailbox; 31 ti,has-mailbox;
31 multipoint = <1>; 32 multipoint = <1>;
32 num_eps = <16>; 33 num-eps = <16>;
33 ram_bits = <12>; 34 ram-bits = <12>;
34 ctrl-module = <&omap_control_usb>; 35 ctrl-module = <&omap_control_usb>;
35}; 36};
36 37
37Board specific device node entry 38Board specific device node entry
38&usb_otg_hs { 39&usb_otg_hs {
39 interface_type = <1>; 40 interface-type = <1>;
40 mode = <3>; 41 mode = <3>;
41 power = <50>; 42 power = <50>;
42}; 43};
43 44
45OMAP DWC3 GLUE
46 - compatible : Should be "ti,dwc3"
47 - ti,hwmods : Should be "usb_otg_ss"
48 - reg : Address and length of the register set for the device.
49 - interrupts : The irq number of this device that is used to interrupt the
50 MPU
51 - #address-cells, #size-cells : Must be present if the device has sub-nodes
52 - utmi-mode : controls the source of UTMI/PIPE status for VBUS and OTG ID.
53 It should be set to "1" for HW mode and "2" for SW mode.
54 - ranges: the child address space are mapped 1:1 onto the parent address space
55
56Sub-nodes:
57The dwc3 core should be added as subnode to omap dwc3 glue.
58- dwc3 :
59 The binding details of dwc3 can be found in:
60 Documentation/devicetree/bindings/usb/dwc3.txt
61
62omap_dwc3 {
63 compatible = "ti,dwc3";
64 ti,hwmods = "usb_otg_ss";
65 reg = <0x4a020000 0x1ff>;
66 interrupts = <0 93 4>;
67 #address-cells = <1>;
68 #size-cells = <1>;
69 utmi-mode = <2>;
70 ranges;
71};
72
44OMAP CONTROL USB 73OMAP CONTROL USB
45 74
46Required properties: 75Required properties:
diff --git a/Documentation/devicetree/bindings/usb/samsung-usbphy.txt b/Documentation/devicetree/bindings/usb/samsung-usbphy.txt
index 033194934f64..33fd3543f3f8 100644
--- a/Documentation/devicetree/bindings/usb/samsung-usbphy.txt
+++ b/Documentation/devicetree/bindings/usb/samsung-usbphy.txt
@@ -1,20 +1,25 @@
1* Samsung's usb phy transceiver 1SAMSUNG USB-PHY controllers
2 2
3The Samsung's phy transceiver is used for controlling usb phy for 3** Samsung's usb 2.0 phy transceiver
4s3c-hsotg as well as ehci-s5p and ohci-exynos usb controllers 4
5across Samsung SOCs. 5The Samsung's usb 2.0 phy transceiver is used for controlling
6usb 2.0 phy for s3c-hsotg as well as ehci-s5p and ohci-exynos
7usb controllers across Samsung SOCs.
6TODO: Adding the PHY binding with controller(s) according to the under 8TODO: Adding the PHY binding with controller(s) according to the under
7developement generic PHY driver. 9development generic PHY driver.
8 10
9Required properties: 11Required properties:
10 12
11Exynos4210: 13Exynos4210:
12- compatible : should be "samsung,exynos4210-usbphy" 14- compatible : should be "samsung,exynos4210-usb2phy"
13- reg : base physical address of the phy registers and length of memory mapped 15- reg : base physical address of the phy registers and length of memory mapped
14 region. 16 region.
17- clocks: Clock IDs array as required by the controller.
18- clock-names: names of clock correseponding IDs clock property as requested
19 by the controller driver.
15 20
16Exynos5250: 21Exynos5250:
17- compatible : should be "samsung,exynos5250-usbphy" 22- compatible : should be "samsung,exynos5250-usb2phy"
18- reg : base physical address of the phy registers and length of memory mapped 23- reg : base physical address of the phy registers and length of memory mapped
19 region. 24 region.
20 25
@@ -44,12 +49,69 @@ Example:
44 usbphy@125B0000 { 49 usbphy@125B0000 {
45 #address-cells = <1>; 50 #address-cells = <1>;
46 #size-cells = <1>; 51 #size-cells = <1>;
47 compatible = "samsung,exynos4210-usbphy"; 52 compatible = "samsung,exynos4210-usb2phy";
48 reg = <0x125B0000 0x100>; 53 reg = <0x125B0000 0x100>;
49 ranges; 54 ranges;
50 55
56 clocks = <&clock 2>, <&clock 305>;
57 clock-names = "xusbxti", "otg";
58
51 usbphy-sys { 59 usbphy-sys {
52 /* USB device and host PHY_CONTROL registers */ 60 /* USB device and host PHY_CONTROL registers */
53 reg = <0x10020704 0x8>; 61 reg = <0x10020704 0x8>;
54 }; 62 };
55 }; 63 };
64
65
66** Samsung's usb 3.0 phy transceiver
67
68Starting exynso5250, Samsung's SoC have usb 3.0 phy transceiver
69which is used for controlling usb 3.0 phy for dwc3-exynos usb 3.0
70controllers across Samsung SOCs.
71
72Required properties:
73
74Exynos5250:
75- compatible : should be "samsung,exynos5250-usb3phy"
76- reg : base physical address of the phy registers and length of memory mapped
77 region.
78- clocks: Clock IDs array as required by the controller.
79- clock-names: names of clocks correseponding to IDs in the clock property
80 as requested by the controller driver.
81
82Optional properties:
83- #address-cells: should be '1' when usbphy node has a child node with 'reg'
84 property.
85- #size-cells: should be '1' when usbphy node has a child node with 'reg'
86 property.
87- ranges: allows valid translation between child's address space and parent's
88 address space.
89
90- The child node 'usbphy-sys' to the node 'usbphy' is for the system controller
91 interface for usb-phy. It should provide the following information required by
92 usb-phy controller to control phy.
93 - reg : base physical address of PHY_CONTROL registers.
94 The size of this register is the total sum of size of all PHY_CONTROL
95 registers that the SoC has. For example, the size will be
96 '0x4' in case we have only one PHY_CONTROL register (e.g.
97 OTHERS register in S3C64XX or USB_PHY_CONTROL register in S5PV210)
98 and, '0x8' in case we have two PHY_CONTROL registers (e.g.
99 USBDEVICE_PHY_CONTROL and USBHOST_PHY_CONTROL registers in exynos4x).
100 and so on.
101
102Example:
103 usbphy@12100000 {
104 compatible = "samsung,exynos5250-usb3phy";
105 reg = <0x12100000 0x100>;
106 #address-cells = <1>;
107 #size-cells = <1>;
108 ranges;
109
110 clocks = <&clock 1>, <&clock 286>;
111 clock-names = "ext_xtal", "usbdrd30";
112
113 usbphy-sys {
114 /* USB device and host PHY_CONTROL registers */
115 reg = <0x10040704 0x8>;
116 };
117 };
diff --git a/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt b/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt
new file mode 100644
index 000000000000..d7e272671c7e
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt
@@ -0,0 +1,34 @@
1USB NOP PHY
2
3Required properties:
4- compatible: should be usb-nop-xceiv
5
6Optional properties:
7- clocks: phandle to the PHY clock. Use as per Documentation/devicetree
8 /bindings/clock/clock-bindings.txt
9 This property is required if clock-frequency is specified.
10
11- clock-names: Should be "main_clk"
12
13- clock-frequency: the clock frequency (in Hz) that the PHY clock must
14 be configured to.
15
16- vcc-supply: phandle to the regulator that provides RESET to the PHY.
17
18- reset-supply: phandle to the regulator that provides power to the PHY.
19
20Example:
21
22 hsusb1_phy {
23 compatible = "usb-nop-xceiv";
24 clock-frequency = <19200000>;
25 clocks = <&osc 0>;
26 clock-names = "main_clk";
27 vcc-supply = <&hsusb1_vcc_regulator>;
28 reset-supply = <&hsusb1_reset_regulator>;
29 };
30
31hsusb1_phy is a NOP USB PHY device that gets its clock from an oscillator
32and expects that clock to be configured to 19.2MHz by the NOP PHY driver.
33hsusb1_vcc_regulator provides power to the PHY and hsusb1_reset_regulator
34controls RESET.
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
index 19e1ef73ab0d..4d1919bf2332 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -5,6 +5,7 @@ using them to avoid name-space collisions.
5 5
6ad Avionic Design GmbH 6ad Avionic Design GmbH
7adi Analog Devices, Inc. 7adi Analog Devices, Inc.
8aeroflexgaisler Aeroflex Gaisler AB
8ak Asahi Kasei Corp. 9ak Asahi Kasei Corp.
9amcc Applied Micro Circuits Corporation (APM, formally AMCC) 10amcc Applied Micro Circuits Corporation (APM, formally AMCC)
10apm Applied Micro Circuits Corporation (APM) 11apm Applied Micro Circuits Corporation (APM)
@@ -48,6 +49,7 @@ samsung Samsung Semiconductor
48sbs Smart Battery System 49sbs Smart Battery System
49schindler Schindler 50schindler Schindler
50sil Silicon Image 51sil Silicon Image
52silabs Silicon Laboratories
51simtek 53simtek
52sirf SiRF Technology, Inc. 54sirf SiRF Technology, Inc.
53snps Synopsys, Inc. 55snps Synopsys, Inc.
diff --git a/Documentation/devicetree/bindings/video/backlight/lp855x.txt b/Documentation/devicetree/bindings/video/backlight/lp855x.txt
new file mode 100644
index 000000000000..1482103d288f
--- /dev/null
+++ b/Documentation/devicetree/bindings/video/backlight/lp855x.txt
@@ -0,0 +1,41 @@
1lp855x bindings
2
3Required properties:
4 - compatible: "ti,lp8550", "ti,lp8551", "ti,lp8552", "ti,lp8553",
5 "ti,lp8556", "ti,lp8557"
6 - reg: I2C slave address (u8)
7 - dev-ctrl: Value of DEVICE CONTROL register (u8). It depends on the device.
8
9Optional properties:
10 - bl-name: Backlight device name (string)
11 - init-brt: Initial value of backlight brightness (u8)
12 - pwm-period: PWM period value. Set only PWM input mode used (u32)
13 - rom-addr: Register address of ROM area to be updated (u8)
14 - rom-val: Register value to be updated (u8)
15
16Example:
17
18 /* LP8556 */
19 backlight@2c {
20 compatible = "ti,lp8556";
21 reg = <0x2c>;
22
23 bl-name = "lcd-bl";
24 dev-ctrl = /bits/ 8 <0x85>;
25 init-brt = /bits/ 8 <0x10>;
26 };
27
28 /* LP8557 */
29 backlight@2c {
30 compatible = "ti,lp8557";
31 reg = <0x2c>;
32
33 dev-ctrl = /bits/ 8 <0x41>;
34 init-brt = /bits/ 8 <0x0a>;
35
36 /* 4V OV, 4 output LED string enabled */
37 rom_14h {
38 rom-addr = /bits/ 8 <0x14>;
39 rom-val = /bits/ 8 <0xcf>;
40 };
41 };
diff --git a/Documentation/devicetree/bindings/video/backlight/tps65217-backlight.txt b/Documentation/devicetree/bindings/video/backlight/tps65217-backlight.txt
new file mode 100644
index 000000000000..5fb9279ac287
--- /dev/null
+++ b/Documentation/devicetree/bindings/video/backlight/tps65217-backlight.txt
@@ -0,0 +1,27 @@
1TPS65217 family of regulators
2
3The TPS65217 chip contains a boost converter and current sinks which can be
4used to drive LEDs for use as backlights.
5
6Required properties:
7- compatible: "ti,tps65217"
8- reg: I2C slave address
9- backlight: node for specifying WLED1 and WLED2 lines in TPS65217
10- isel: selection bit, valid values: 1 for ISEL1 (low-level) and 2 for ISEL2 (high-level)
11- fdim: PWM dimming frequency, valid values: 100, 200, 500, 1000
12- default-brightness: valid values: 0-100
13
14Each regulator is defined using the standard binding for regulators.
15
16Example:
17
18 tps: tps@24 {
19 reg = <0x24>;
20 compatible = "ti,tps65217";
21 backlight {
22 isel = <1>; /* 1 - ISET1, 2 ISET2 */
23 fdim = <100>; /* TPS65217_BL_FDIM_100HZ */
24 default-brightness = <50>;
25 };
26 };
27
diff --git a/Documentation/devicetree/bindings/video/samsung-fimd.txt b/Documentation/devicetree/bindings/video/samsung-fimd.txt
new file mode 100644
index 000000000000..778838a0336a
--- /dev/null
+++ b/Documentation/devicetree/bindings/video/samsung-fimd.txt
@@ -0,0 +1,65 @@
1Device-Tree bindings for Samsung SoC display controller (FIMD)
2
3FIMD (Fully Interactive Mobile Display) is the Display Controller for the
4Samsung series of SoCs which transfers the image data from a video memory
5buffer to an external LCD interface.
6
7Required properties:
8- compatible: value should be one of the following
9 "samsung,s3c2443-fimd"; /* for S3C24XX SoCs */
10 "samsung,s3c6400-fimd"; /* for S3C64XX SoCs */
11 "samsung,s5p6440-fimd"; /* for S5P64X0 SoCs */
12 "samsung,s5pc100-fimd"; /* for S5PC100 SoC */
13 "samsung,s5pv210-fimd"; /* for S5PV210 SoC */
14 "samsung,exynos4210-fimd"; /* for Exynos4 SoCs */
15 "samsung,exynos5250-fimd"; /* for Exynos5 SoCs */
16
17- reg: physical base address and length of the FIMD registers set.
18
19- interrupt-parent: should be the phandle of the fimd controller's
20 parent interrupt controller.
21
22- interrupts: should contain a list of all FIMD IP block interrupts in the
23 order: FIFO Level, VSYNC, LCD_SYSTEM. The interrupt specifier
24 format depends on the interrupt controller used.
25
26- interrupt-names: should contain the interrupt names: "fifo", "vsync",
27 "lcd_sys", in the same order as they were listed in the interrupts
28 property.
29
30- pinctrl-0: pin control group to be used for this controller.
31
32- pinctrl-names: must contain a "default" entry.
33
34- clocks: must include clock specifiers corresponding to entries in the
35 clock-names property.
36
37- clock-names: list of clock names sorted in the same order as the clocks
38 property. Must contain "sclk_fimd" and "fimd".
39
40Optional Properties:
41- samsung,power-domain: a phandle to FIMD power domain node.
42
43Example:
44
45SoC specific DT entry:
46
47 fimd@11c00000 {
48 compatible = "samsung,exynos4210-fimd";
49 interrupt-parent = <&combiner>;
50 reg = <0x11c00000 0x20000>;
51 interrupt-names = "fifo", "vsync", "lcd_sys";
52 interrupts = <11 0>, <11 1>, <11 2>;
53 clocks = <&clock 140>, <&clock 283>;
54 clock-names = "sclk_fimd", "fimd";
55 samsung,power-domain = <&pd_lcd0>;
56 status = "disabled";
57 };
58
59Board specific DT entry:
60
61 fimd@11c00000 {
62 pinctrl-0 = <&lcd_clk &lcd_data24 &pwm1_out>;
63 pinctrl-names = "default";
64 status = "okay";
65 };
diff --git a/Documentation/devicetree/bindings/video/via,vt8500-fb.txt b/Documentation/devicetree/bindings/video/via,vt8500-fb.txt
index c870b6478ec8..2871e218a0fb 100644
--- a/Documentation/devicetree/bindings/video/via,vt8500-fb.txt
+++ b/Documentation/devicetree/bindings/video/via,vt8500-fb.txt
@@ -5,58 +5,32 @@ Required properties:
5- compatible : "via,vt8500-fb" 5- compatible : "via,vt8500-fb"
6- reg : Should contain 1 register ranges(address and length) 6- reg : Should contain 1 register ranges(address and length)
7- interrupts : framebuffer controller interrupt 7- interrupts : framebuffer controller interrupt
8- display: a phandle pointing to the display node 8- bits-per-pixel : bit depth of framebuffer (16 or 32)
9 9
10Required nodes: 10Required subnodes:
11- display: a display node is required to initialize the lcd panel 11- display-timings: see display-timing.txt for information
12 This should be in the board dts.
13- default-mode: a videomode within the display with timing parameters
14 as specified below.
15 12
16Example: 13Example:
17 14
18 fb@d800e400 { 15 fb@d8050800 {
19 compatible = "via,vt8500-fb"; 16 compatible = "via,vt8500-fb";
20 reg = <0xd800e400 0x400>; 17 reg = <0xd800e400 0x400>;
21 interrupts = <12>; 18 interrupts = <12>;
22 display = <&display>; 19 bits-per-pixel = <16>;
23 default-mode = <&mode0>;
24 };
25
26VIA VT8500 Display
27-----------------------------------------------------
28Required properties (as per of_videomode_helper):
29
30 - hactive, vactive: Display resolution
31 - hfront-porch, hback-porch, hsync-len: Horizontal Display timing parameters
32 in pixels
33 vfront-porch, vback-porch, vsync-len: Vertical display timing parameters in
34 lines
35 - clock: displayclock in Hz
36 - bpp: lcd panel bit-depth.
37 <16> for RGB565, <32> for RGB888
38
39Optional properties (as per of_videomode_helper):
40 - width-mm, height-mm: Display dimensions in mm
41 - hsync-active-high (bool): Hsync pulse is active high
42 - vsync-active-high (bool): Vsync pulse is active high
43 - interlaced (bool): This is an interlaced mode
44 - doublescan (bool): This is a doublescan mode
45 20
46Example: 21 display-timings {
47 display: display@0 { 22 native-mode = <&timing0>;
48 modes { 23 timing0: 800x480 {
49 mode0: mode@0 { 24 clock-frequency = <0>; /* unused but required */
50 hactive = <800>; 25 hactive = <800>;
51 vactive = <480>; 26 vactive = <480>;
52 hback-porch = <88>;
53 hfront-porch = <40>; 27 hfront-porch = <40>;
28 hback-porch = <88>;
54 hsync-len = <0>; 29 hsync-len = <0>;
55 vback-porch = <32>; 30 vback-porch = <32>;
56 vfront-porch = <11>; 31 vfront-porch = <11>;
57 vsync-len = <1>; 32 vsync-len = <1>;
58 clock = <0>; /* unused but required */
59 bpp = <16>; /* non-standard but required */
60 }; 33 };
61 }; 34 };
62 }; 35 };
36
diff --git a/Documentation/devicetree/bindings/video/wm,wm8505-fb.txt b/Documentation/devicetree/bindings/video/wm,wm8505-fb.txt
index 3d325e1d11ee..0bcadb2840a5 100644
--- a/Documentation/devicetree/bindings/video/wm,wm8505-fb.txt
+++ b/Documentation/devicetree/bindings/video/wm,wm8505-fb.txt
@@ -4,20 +4,30 @@ Wondermedia WM8505 Framebuffer
4Required properties: 4Required properties:
5- compatible : "wm,wm8505-fb" 5- compatible : "wm,wm8505-fb"
6- reg : Should contain 1 register ranges(address and length) 6- reg : Should contain 1 register ranges(address and length)
7- via,display: a phandle pointing to the display node 7- bits-per-pixel : bit depth of framebuffer (16 or 32)
8 8
9Required nodes: 9Required subnodes:
10- display: a display node is required to initialize the lcd panel 10- display-timings: see display-timing.txt for information
11 This should be in the board dts. See definition in
12 Documentation/devicetree/bindings/video/via,vt8500-fb.txt
13- default-mode: a videomode node as specified in
14 Documentation/devicetree/bindings/video/via,vt8500-fb.txt
15 11
16Example: 12Example:
17 13
18 fb@d8050800 { 14 fb@d8051700 {
19 compatible = "wm,wm8505-fb"; 15 compatible = "wm,wm8505-fb";
20 reg = <0xd8050800 0x200>; 16 reg = <0xd8051700 0x200>;
21 display = <&display>; 17 bits-per-pixel = <16>;
22 default-mode = <&mode0>; 18
19 display-timings {
20 native-mode = <&timing0>;
21 timing0: 800x480 {
22 clock-frequency = <0>; /* unused but required */
23 hactive = <800>;
24 vactive = <480>;
25 hfront-porch = <40>;
26 hback-porch = <88>;
27 hsync-len = <0>;
28 vback-porch = <32>;
29 vfront-porch = <11>;
30 vsync-len = <1>;
31 };
32 };
23 }; 33 };
diff --git a/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt b/Documentation/devicetree/bindings/watchdog/sun4i-wdt.txt
index 0b2717775600..ecd650adff31 100644
--- a/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt
+++ b/Documentation/devicetree/bindings/watchdog/sun4i-wdt.txt
@@ -1,13 +1,13 @@
1Allwinner sunXi Watchdog timer 1Allwinner sun4i Watchdog timer
2 2
3Required properties: 3Required properties:
4 4
5- compatible : should be "allwinner,sunxi-wdt" 5- compatible : should be "allwinner,sun4i-wdt"
6- reg : Specifies base physical address and size of the registers. 6- reg : Specifies base physical address and size of the registers.
7 7
8Example: 8Example:
9 9
10wdt: watchdog@01c20c90 { 10wdt: watchdog@01c20c90 {
11 compatible = "allwinner,sunxi-wdt"; 11 compatible = "allwinner,sun4i-wdt";
12 reg = <0x01c20c90 0x10>; 12 reg = <0x01c20c90 0x10>;
13}; 13};
diff --git a/Documentation/dma-buf-sharing.txt b/Documentation/dma-buf-sharing.txt
index 4966b1be42ac..0b23261561d2 100644
--- a/Documentation/dma-buf-sharing.txt
+++ b/Documentation/dma-buf-sharing.txt
@@ -52,14 +52,23 @@ The dma_buf buffer sharing API usage contains the following steps:
52 associated with this buffer. 52 associated with this buffer.
53 53
54 Interface: 54 Interface:
55 struct dma_buf *dma_buf_export(void *priv, struct dma_buf_ops *ops, 55 struct dma_buf *dma_buf_export_named(void *priv, struct dma_buf_ops *ops,
56 size_t size, int flags) 56 size_t size, int flags,
57 const char *exp_name)
57 58
58 If this succeeds, dma_buf_export allocates a dma_buf structure, and returns a 59 If this succeeds, dma_buf_export allocates a dma_buf structure, and returns a
59 pointer to the same. It also associates an anonymous file with this buffer, 60 pointer to the same. It also associates an anonymous file with this buffer,
60 so it can be exported. On failure to allocate the dma_buf object, it returns 61 so it can be exported. On failure to allocate the dma_buf object, it returns
61 NULL. 62 NULL.
62 63
64 'exp_name' is the name of exporter - to facilitate information while
65 debugging.
66
67 Exporting modules which do not wish to provide any specific name may use the
68 helper define 'dma_buf_export()', with the same arguments as above, but
69 without the last argument; a __FILE__ pre-processor directive will be
70 inserted in place of 'exp_name' instead.
71
632. Userspace gets a handle to pass around to potential buffer-users 722. Userspace gets a handle to pass around to potential buffer-users
64 73
65 Userspace entity requests for a file-descriptor (fd) which is a handle to the 74 Userspace entity requests for a file-descriptor (fd) which is a handle to the
diff --git a/Documentation/filesystems/ext4.txt b/Documentation/filesystems/ext4.txt
index 34ea4f1fa6ea..f7cbf574a875 100644
--- a/Documentation/filesystems/ext4.txt
+++ b/Documentation/filesystems/ext4.txt
@@ -494,6 +494,17 @@ Files in /sys/fs/ext4/<devname>
494 session_write_kbytes This file is read-only and shows the number of 494 session_write_kbytes This file is read-only and shows the number of
495 kilobytes of data that have been written to this 495 kilobytes of data that have been written to this
496 filesystem since it was mounted. 496 filesystem since it was mounted.
497
498 reserved_clusters This is RW file and contains number of reserved
499 clusters in the file system which will be used
500 in the specific situations to avoid costly
501 zeroout, unexpected ENOSPC, or possible data
502 loss. The default is 2% or 4096 clusters,
503 whichever is smaller and this can be changed
504 however it can never exceed number of clusters
505 in the file system. If there is not enough space
506 for the reserved space when mounting the file
507 mount will _not_ fail.
497.............................................................................. 508..............................................................................
498 509
499Ioctls 510Ioctls
@@ -587,6 +598,16 @@ Table of Ext4 specific ioctls
587 bitmaps and inode table, the userspace tool thus 598 bitmaps and inode table, the userspace tool thus
588 just passes the new number of blocks. 599 just passes the new number of blocks.
589 600
601EXT4_IOC_SWAP_BOOT Swap i_blocks and associated attributes
602 (like i_blocks, i_size, i_flags, ...) from
603 the specified inode with inode
604 EXT4_BOOT_LOADER_INO (#5). This is typically
605 used to store a boot loader in a secure part of
606 the filesystem, where it can't be changed by a
607 normal user by accident.
608 The data blocks of the previous boot loader
609 will be associated with the given inode.
610
590.............................................................................. 611..............................................................................
591 612
592References 613References
diff --git a/Documentation/filesystems/nfs/00-INDEX b/Documentation/filesystems/nfs/00-INDEX
index 1716874a651e..66eb6c8c5334 100644
--- a/Documentation/filesystems/nfs/00-INDEX
+++ b/Documentation/filesystems/nfs/00-INDEX
@@ -20,3 +20,5 @@ rpc-cache.txt
20 - introduction to the caching mechanisms in the sunrpc layer. 20 - introduction to the caching mechanisms in the sunrpc layer.
21idmapper.txt 21idmapper.txt
22 - information for configuring request-keys to be used by idmapper 22 - information for configuring request-keys to be used by idmapper
23knfsd-rpcgss.txt
24 - Information on GSS authentication support in the NFS Server
diff --git a/Documentation/filesystems/nfs/rpc-server-gss.txt b/Documentation/filesystems/nfs/rpc-server-gss.txt
new file mode 100644
index 000000000000..716f4be8e8b3
--- /dev/null
+++ b/Documentation/filesystems/nfs/rpc-server-gss.txt
@@ -0,0 +1,91 @@
1
2rpcsec_gss support for kernel RPC servers
3=========================================
4
5This document gives references to the standards and protocols used to
6implement RPCGSS authentication in kernel RPC servers such as the NFS
7server and the NFS client's NFSv4.0 callback server. (But note that
8NFSv4.1 and higher don't require the client to act as a server for the
9purposes of authentication.)
10
11RPCGSS is specified in a few IETF documents:
12 - RFC2203 v1: http://tools.ietf.org/rfc/rfc2203.txt
13 - RFC5403 v2: http://tools.ietf.org/rfc/rfc5403.txt
14and there is a 3rd version being proposed:
15 - http://tools.ietf.org/id/draft-williams-rpcsecgssv3.txt
16 (At draft n. 02 at the time of writing)
17
18Background
19----------
20
21The RPCGSS Authentication method describes a way to perform GSSAPI
22Authentication for NFS. Although GSSAPI is itself completely mechanism
23agnostic, in many cases only the KRB5 mechanism is supported by NFS
24implementations.
25
26The Linux kernel, at the moment, supports only the KRB5 mechanism, and
27depends on GSSAPI extensions that are KRB5 specific.
28
29GSSAPI is a complex library, and implementing it completely in kernel is
30unwarranted. However GSSAPI operations are fundementally separable in 2
31parts:
32- initial context establishment
33- integrity/privacy protection (signing and encrypting of individual
34 packets)
35
36The former is more complex and policy-independent, but less
37performance-sensitive. The latter is simpler and needs to be very fast.
38
39Therefore, we perform per-packet integrity and privacy protection in the
40kernel, but leave the initial context establishment to userspace. We
41need upcalls to request userspace to perform context establishment.
42
43NFS Server Legacy Upcall Mechanism
44----------------------------------
45
46The classic upcall mechanism uses a custom text based upcall mechanism
47to talk to a custom daemon called rpc.svcgssd that is provide by the
48nfs-utils package.
49
50This upcall mechanism has 2 limitations:
51
52A) It can handle tokens that are no bigger than 2KiB
53
54In some Kerberos deployment GSSAPI tokens can be quite big, up and
55beyond 64KiB in size due to various authorization extensions attacked to
56the Kerberos tickets, that needs to be sent through the GSS layer in
57order to perform context establishment.
58
59B) It does not properly handle creds where the user is member of more
60than a few housand groups (the current hard limit in the kernel is 65K
61groups) due to limitation on the size of the buffer that can be send
62back to the kernel (4KiB).
63
64NFS Server New RPC Upcall Mechanism
65-----------------------------------
66
67The newer upcall mechanism uses RPC over a unix socket to a daemon
68called gss-proxy, implemented by a userspace program called Gssproxy.
69
70The gss_proxy RPC protocol is currently documented here:
71
72 https://fedorahosted.org/gss-proxy/wiki/ProtocolDocumentation
73
74This upcall mechanism uses the kernel rpc client and connects to the gssproxy
75userspace program over a regular unix socket. The gssproxy protocol does not
76suffer from the size limitations of the legacy protocol.
77
78Negotiating Upcall Mechanisms
79-----------------------------
80
81To provide backward compatibility, the kernel defaults to using the
82legacy mechanism. To switch to the new mechanism, gss-proxy must bind
83to /var/run/gssproxy.sock and then write "1" to
84/proc/net/rpc/use-gss-proxy. If gss-proxy dies, it must repeat both
85steps.
86
87Once the upcall mechanism is chosen, it cannot be changed. To prevent
88locking into the legacy mechanisms, the above steps must be performed
89before starting nfsd. Whoever starts nfsd can guarantee this by reading
90from /proc/net/rpc/use-gss-proxy and checking that it contains a
91"1"--the read will block until gss-proxy has done its write to the file.
diff --git a/Documentation/filesystems/vfat.txt b/Documentation/filesystems/vfat.txt
index d230dd9c99b0..4a93e98b290a 100644
--- a/Documentation/filesystems/vfat.txt
+++ b/Documentation/filesystems/vfat.txt
@@ -150,12 +150,28 @@ discard -- If set, issues discard/TRIM commands to the block
150 device when blocks are freed. This is useful for SSD devices 150 device when blocks are freed. This is useful for SSD devices
151 and sparse/thinly-provisoned LUNs. 151 and sparse/thinly-provisoned LUNs.
152 152
153nfs -- This option maintains an index (cache) of directory 153nfs=stale_rw|nostale_ro
154 inodes by i_logstart which is used by the nfs-related code to 154 Enable this only if you want to export the FAT filesystem
155 improve look-ups. 155 over NFS.
156
157 stale_rw: This option maintains an index (cache) of directory
158 inodes by i_logstart which is used by the nfs-related code to
159 improve look-ups. Full file operations (read/write) over NFS is
160 supported but with cache eviction at NFS server, this could
161 result in ESTALE issues.
162
163 nostale_ro: This option bases the inode number and filehandle
164 on the on-disk location of a file in the MS-DOS directory entry.
165 This ensures that ESTALE will not be returned after a file is
166 evicted from the inode cache. However, it means that operations
167 such as rename, create and unlink could cause filehandles that
168 previously pointed at one file to point at a different file,
169 potentially causing data corruption. For this reason, this
170 option also mounts the filesystem readonly.
171
172 To maintain backward compatibility, '-o nfs' is also accepted,
173 defaulting to stale_rw
156 174
157 Enable this only if you want to export the FAT filesystem
158 over NFS
159 175
160<bool>: 0,1,yes,no,true,false 176<bool>: 0,1,yes,no,true,false
161 177
diff --git a/Documentation/filesystems/xfs-self-describing-metadata.txt b/Documentation/filesystems/xfs-self-describing-metadata.txt
new file mode 100644
index 000000000000..05aa455163e3
--- /dev/null
+++ b/Documentation/filesystems/xfs-self-describing-metadata.txt
@@ -0,0 +1,350 @@
1XFS Self Describing Metadata
2----------------------------
3
4Introduction
5------------
6
7The largest scalability problem facing XFS is not one of algorithmic
8scalability, but of verification of the filesystem structure. Scalabilty of the
9structures and indexes on disk and the algorithms for iterating them are
10adequate for supporting PB scale filesystems with billions of inodes, however it
11is this very scalability that causes the verification problem.
12
13Almost all metadata on XFS is dynamically allocated. The only fixed location
14metadata is the allocation group headers (SB, AGF, AGFL and AGI), while all
15other metadata structures need to be discovered by walking the filesystem
16structure in different ways. While this is already done by userspace tools for
17validating and repairing the structure, there are limits to what they can
18verify, and this in turn limits the supportable size of an XFS filesystem.
19
20For example, it is entirely possible to manually use xfs_db and a bit of
21scripting to analyse the structure of a 100TB filesystem when trying to
22determine the root cause of a corruption problem, but it is still mainly a
23manual task of verifying that things like single bit errors or misplaced writes
24weren't the ultimate cause of a corruption event. It may take a few hours to a
25few days to perform such forensic analysis, so for at this scale root cause
26analysis is entirely possible.
27
28However, if we scale the filesystem up to 1PB, we now have 10x as much metadata
29to analyse and so that analysis blows out towards weeks/months of forensic work.
30Most of the analysis work is slow and tedious, so as the amount of analysis goes
31up, the more likely that the cause will be lost in the noise. Hence the primary
32concern for supporting PB scale filesystems is minimising the time and effort
33required for basic forensic analysis of the filesystem structure.
34
35
36Self Describing Metadata
37------------------------
38
39One of the problems with the current metadata format is that apart from the
40magic number in the metadata block, we have no other way of identifying what it
41is supposed to be. We can't even identify if it is the right place. Put simply,
42you can't look at a single metadata block in isolation and say "yes, it is
43supposed to be there and the contents are valid".
44
45Hence most of the time spent on forensic analysis is spent doing basic
46verification of metadata values, looking for values that are in range (and hence
47not detected by automated verification checks) but are not correct. Finding and
48understanding how things like cross linked block lists (e.g. sibling
49pointers in a btree end up with loops in them) are the key to understanding what
50went wrong, but it is impossible to tell what order the blocks were linked into
51each other or written to disk after the fact.
52
53Hence we need to record more information into the metadata to allow us to
54quickly determine if the metadata is intact and can be ignored for the purpose
55of analysis. We can't protect against every possible type of error, but we can
56ensure that common types of errors are easily detectable. Hence the concept of
57self describing metadata.
58
59The first, fundamental requirement of self describing metadata is that the
60metadata object contains some form of unique identifier in a well known
61location. This allows us to identify the expected contents of the block and
62hence parse and verify the metadata object. IF we can't independently identify
63the type of metadata in the object, then the metadata doesn't describe itself
64very well at all!
65
66Luckily, almost all XFS metadata has magic numbers embedded already - only the
67AGFL, remote symlinks and remote attribute blocks do not contain identifying
68magic numbers. Hence we can change the on-disk format of all these objects to
69add more identifying information and detect this simply by changing the magic
70numbers in the metadata objects. That is, if it has the current magic number,
71the metadata isn't self identifying. If it contains a new magic number, it is
72self identifying and we can do much more expansive automated verification of the
73metadata object at runtime, during forensic analysis or repair.
74
75As a primary concern, self describing metadata needs some form of overall
76integrity checking. We cannot trust the metadata if we cannot verify that it has
77not been changed as a result of external influences. Hence we need some form of
78integrity check, and this is done by adding CRC32c validation to the metadata
79block. If we can verify the block contains the metadata it was intended to
80contain, a large amount of the manual verification work can be skipped.
81
82CRC32c was selected as metadata cannot be more than 64k in length in XFS and
83hence a 32 bit CRC is more than sufficient to detect multi-bit errors in
84metadata blocks. CRC32c is also now hardware accelerated on common CPUs so it is
85fast. So while CRC32c is not the strongest of possible integrity checks that
86could be used, it is more than sufficient for our needs and has relatively
87little overhead. Adding support for larger integrity fields and/or algorithms
88does really provide any extra value over CRC32c, but it does add a lot of
89complexity and so there is no provision for changing the integrity checking
90mechanism.
91
92Self describing metadata needs to contain enough information so that the
93metadata block can be verified as being in the correct place without needing to
94look at any other metadata. This means it needs to contain location information.
95Just adding a block number to the metadata is not sufficient to protect against
96mis-directed writes - a write might be misdirected to the wrong LUN and so be
97written to the "correct block" of the wrong filesystem. Hence location
98information must contain a filesystem identifier as well as a block number.
99
100Another key information point in forensic analysis is knowing who the metadata
101block belongs to. We already know the type, the location, that it is valid
102and/or corrupted, and how long ago that it was last modified. Knowing the owner
103of the block is important as it allows us to find other related metadata to
104determine the scope of the corruption. For example, if we have a extent btree
105object, we don't know what inode it belongs to and hence have to walk the entire
106filesystem to find the owner of the block. Worse, the corruption could mean that
107no owner can be found (i.e. it's an orphan block), and so without an owner field
108in the metadata we have no idea of the scope of the corruption. If we have an
109owner field in the metadata object, we can immediately do top down validation to
110determine the scope of the problem.
111
112Different types of metadata have different owner identifiers. For example,
113directory, attribute and extent tree blocks are all owned by an inode, whilst
114freespace btree blocks are owned by an allocation group. Hence the size and
115contents of the owner field are determined by the type of metadata object we are
116looking at. The owner information can also identify misplaced writes (e.g.
117freespace btree block written to the wrong AG).
118
119Self describing metadata also needs to contain some indication of when it was
120written to the filesystem. One of the key information points when doing forensic
121analysis is how recently the block was modified. Correlation of set of corrupted
122metadata blocks based on modification times is important as it can indicate
123whether the corruptions are related, whether there's been multiple corruption
124events that lead to the eventual failure, and even whether there are corruptions
125present that the run-time verification is not detecting.
126
127For example, we can determine whether a metadata object is supposed to be free
128space or still allocated if it is still referenced by its owner by looking at
129when the free space btree block that contains the block was last written
130compared to when the metadata object itself was last written. If the free space
131block is more recent than the object and the object's owner, then there is a
132very good chance that the block should have been removed from the owner.
133
134To provide this "written timestamp", each metadata block gets the Log Sequence
135Number (LSN) of the most recent transaction it was modified on written into it.
136This number will always increase over the life of the filesystem, and the only
137thing that resets it is running xfs_repair on the filesystem. Further, by use of
138the LSN we can tell if the corrupted metadata all belonged to the same log
139checkpoint and hence have some idea of how much modification occurred between
140the first and last instance of corrupt metadata on disk and, further, how much
141modification occurred between the corruption being written and when it was
142detected.
143
144Runtime Validation
145------------------
146
147Validation of self-describing metadata takes place at runtime in two places:
148
149 - immediately after a successful read from disk
150 - immediately prior to write IO submission
151
152The verification is completely stateless - it is done independently of the
153modification process, and seeks only to check that the metadata is what it says
154it is and that the metadata fields are within bounds and internally consistent.
155As such, we cannot catch all types of corruption that can occur within a block
156as there may be certain limitations that operational state enforces of the
157metadata, or there may be corruption of interblock relationships (e.g. corrupted
158sibling pointer lists). Hence we still need stateful checking in the main code
159body, but in general most of the per-field validation is handled by the
160verifiers.
161
162For read verification, the caller needs to specify the expected type of metadata
163that it should see, and the IO completion process verifies that the metadata
164object matches what was expected. If the verification process fails, then it
165marks the object being read as EFSCORRUPTED. The caller needs to catch this
166error (same as for IO errors), and if it needs to take special action due to a
167verification error it can do so by catching the EFSCORRUPTED error value. If we
168need more discrimination of error type at higher levels, we can define new
169error numbers for different errors as necessary.
170
171The first step in read verification is checking the magic number and determining
172whether CRC validating is necessary. If it is, the CRC32c is calculated and
173compared against the value stored in the object itself. Once this is validated,
174further checks are made against the location information, followed by extensive
175object specific metadata validation. If any of these checks fail, then the
176buffer is considered corrupt and the EFSCORRUPTED error is set appropriately.
177
178Write verification is the opposite of the read verification - first the object
179is extensively verified and if it is OK we then update the LSN from the last
180modification made to the object, After this, we calculate the CRC and insert it
181into the object. Once this is done the write IO is allowed to continue. If any
182error occurs during this process, the buffer is again marked with a EFSCORRUPTED
183error for the higher layers to catch.
184
185Structures
186----------
187
188A typical on-disk structure needs to contain the following information:
189
190struct xfs_ondisk_hdr {
191 __be32 magic; /* magic number */
192 __be32 crc; /* CRC, not logged */
193 uuid_t uuid; /* filesystem identifier */
194 __be64 owner; /* parent object */
195 __be64 blkno; /* location on disk */
196 __be64 lsn; /* last modification in log, not logged */
197};
198
199Depending on the metadata, this information may be part of a header structure
200separate to the metadata contents, or may be distributed through an existing
201structure. The latter occurs with metadata that already contains some of this
202information, such as the superblock and AG headers.
203
204Other metadata may have different formats for the information, but the same
205level of information is generally provided. For example:
206
207 - short btree blocks have a 32 bit owner (ag number) and a 32 bit block
208 number for location. The two of these combined provide the same
209 information as @owner and @blkno in eh above structure, but using 8
210 bytes less space on disk.
211
212 - directory/attribute node blocks have a 16 bit magic number, and the
213 header that contains the magic number has other information in it as
214 well. hence the additional metadata headers change the overall format
215 of the metadata.
216
217A typical buffer read verifier is structured as follows:
218
219#define XFS_FOO_CRC_OFF offsetof(struct xfs_ondisk_hdr, crc)
220
221static void
222xfs_foo_read_verify(
223 struct xfs_buf *bp)
224{
225 struct xfs_mount *mp = bp->b_target->bt_mount;
226
227 if ((xfs_sb_version_hascrc(&mp->m_sb) &&
228 !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length),
229 XFS_FOO_CRC_OFF)) ||
230 !xfs_foo_verify(bp)) {
231 XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr);
232 xfs_buf_ioerror(bp, EFSCORRUPTED);
233 }
234}
235
236The code ensures that the CRC is only checked if the filesystem has CRCs enabled
237by checking the superblock of the feature bit, and then if the CRC verifies OK
238(or is not needed) it verifies the actual contents of the block.
239
240The verifier function will take a couple of different forms, depending on
241whether the magic number can be used to determine the format of the block. In
242the case it can't, the code is structured as follows:
243
244static bool
245xfs_foo_verify(
246 struct xfs_buf *bp)
247{
248 struct xfs_mount *mp = bp->b_target->bt_mount;
249 struct xfs_ondisk_hdr *hdr = bp->b_addr;
250
251 if (hdr->magic != cpu_to_be32(XFS_FOO_MAGIC))
252 return false;
253
254 if (!xfs_sb_version_hascrc(&mp->m_sb)) {
255 if (!uuid_equal(&hdr->uuid, &mp->m_sb.sb_uuid))
256 return false;
257 if (bp->b_bn != be64_to_cpu(hdr->blkno))
258 return false;
259 if (hdr->owner == 0)
260 return false;
261 }
262
263 /* object specific verification checks here */
264
265 return true;
266}
267
268If there are different magic numbers for the different formats, the verifier
269will look like:
270
271static bool
272xfs_foo_verify(
273 struct xfs_buf *bp)
274{
275 struct xfs_mount *mp = bp->b_target->bt_mount;
276 struct xfs_ondisk_hdr *hdr = bp->b_addr;
277
278 if (hdr->magic == cpu_to_be32(XFS_FOO_CRC_MAGIC)) {
279 if (!uuid_equal(&hdr->uuid, &mp->m_sb.sb_uuid))
280 return false;
281 if (bp->b_bn != be64_to_cpu(hdr->blkno))
282 return false;
283 if (hdr->owner == 0)
284 return false;
285 } else if (hdr->magic != cpu_to_be32(XFS_FOO_MAGIC))
286 return false;
287
288 /* object specific verification checks here */
289
290 return true;
291}
292
293Write verifiers are very similar to the read verifiers, they just do things in
294the opposite order to the read verifiers. A typical write verifier:
295
296static void
297xfs_foo_write_verify(
298 struct xfs_buf *bp)
299{
300 struct xfs_mount *mp = bp->b_target->bt_mount;
301 struct xfs_buf_log_item *bip = bp->b_fspriv;
302
303 if (!xfs_foo_verify(bp)) {
304 XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr);
305 xfs_buf_ioerror(bp, EFSCORRUPTED);
306 return;
307 }
308
309 if (!xfs_sb_version_hascrc(&mp->m_sb))
310 return;
311
312
313 if (bip) {
314 struct xfs_ondisk_hdr *hdr = bp->b_addr;
315 hdr->lsn = cpu_to_be64(bip->bli_item.li_lsn);
316 }
317 xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_FOO_CRC_OFF);
318}
319
320This will verify the internal structure of the metadata before we go any
321further, detecting corruptions that have occurred as the metadata has been
322modified in memory. If the metadata verifies OK, and CRCs are enabled, we then
323update the LSN field (when it was last modified) and calculate the CRC on the
324metadata. Once this is done, we can issue the IO.
325
326Inodes and Dquots
327-----------------
328
329Inodes and dquots are special snowflakes. They have per-object CRC and
330self-identifiers, but they are packed so that there are multiple objects per
331buffer. Hence we do not use per-buffer verifiers to do the work of per-object
332verification and CRC calculations. The per-buffer verifiers simply perform basic
333identification of the buffer - that they contain inodes or dquots, and that
334there are magic numbers in all the expected spots. All further CRC and
335verification checks are done when each inode is read from or written back to the
336buffer.
337
338The structure of the verifiers and the identifiers checks is very similar to the
339buffer code described above. The only difference is where they are called. For
340example, inode read verification is done in xfs_iread() when the inode is first
341read out of the buffer and the struct xfs_inode is instantiated. The inode is
342already extensively verified during writeback in xfs_iflush_int, so the only
343addition here is to add the LSN and CRC to the inode as it is copied back into
344the buffer.
345
346XXX: inode unlinked list modification doesn't recalculate the inode CRC! None of
347the unlinked list modifications check or update CRCs, neither during unlink nor
348log recovery. So, it's gone unnoticed until now. This won't matter immediately -
349repair will probably complain about it - but it needs to be fixed.
350
diff --git a/Documentation/hw_random.txt b/Documentation/hw_random.txt
index 690f52550c80..026e237bbc87 100644
--- a/Documentation/hw_random.txt
+++ b/Documentation/hw_random.txt
@@ -63,7 +63,7 @@ Intel RNG Driver notes:
63 63
64 * FIXME: support poll(2) 64 * FIXME: support poll(2)
65 65
66 NOTE: request_mem_region was removed, for two reasons: 66 NOTE: request_mem_region was removed, for three reasons:
67 1) Only one RNG is supported by this driver, 2) The location 67 1) Only one RNG is supported by this driver, 2) The location
68 used by the RNG is a fixed location in MMIO-addressable memory, 68 used by the RNG is a fixed location in MMIO-addressable memory,
69 3) users with properly working BIOS e820 handling will always 69 3) users with properly working BIOS e820 handling will always
diff --git a/Documentation/hwmon/ab8500 b/Documentation/hwmon/ab8500
new file mode 100644
index 000000000000..cf169c8ef4e3
--- /dev/null
+++ b/Documentation/hwmon/ab8500
@@ -0,0 +1,22 @@
1Kernel driver ab8500
2====================
3
4Supported chips:
5 * ST-Ericsson AB8500
6 Prefix: 'ab8500'
7 Addresses scanned: -
8 Datasheet: http://www.stericsson.com/developers/documentation.jsp
9
10Authors:
11 Martin Persson <martin.persson@stericsson.com>
12 Hongbo Zhang <hongbo.zhang@linaro.org>
13
14Description
15-----------
16
17See also Documentation/hwmon/abx500. This is the ST-Ericsson AB8500 specific
18driver.
19
20Currently only the AB8500 internal sensor and one external sensor for battery
21temperature are monitored. Other GPADC channels can also be monitored if needed
22in future.
diff --git a/Documentation/hwmon/abx500 b/Documentation/hwmon/abx500
new file mode 100644
index 000000000000..319a058cec7c
--- /dev/null
+++ b/Documentation/hwmon/abx500
@@ -0,0 +1,28 @@
1Kernel driver abx500
2====================
3
4Supported chips:
5 * ST-Ericsson ABx500 series
6 Prefix: 'abx500'
7 Addresses scanned: -
8 Datasheet: http://www.stericsson.com/developers/documentation.jsp
9
10Authors:
11 Martin Persson <martin.persson@stericsson.com>
12 Hongbo Zhang <hongbo.zhang@linaro.org>
13
14Description
15-----------
16
17Every ST-Ericsson Ux500 SOC consists of both ABx500 and DBx500 physically,
18this is kernel hwmon driver for ABx500.
19
20There are some GPADCs inside ABx500 which are designed for connecting to
21thermal sensors, and there is also a thermal sensor inside ABx500 too, which
22raises interrupt when critical temperature reached.
23
24This abx500 is a common layer which can monitor all of the sensors, every
25specific abx500 chip has its special configurations in its own file, e.g. some
26sensors can be configured invisible if they are not available on that chip, and
27the corresponding gpadc_addr should be set to 0, thus this sensor won't be
28polled.
diff --git a/Documentation/hwmon/adm1275 b/Documentation/hwmon/adm1275
index 2cfa25667123..15b4a20d5062 100644
--- a/Documentation/hwmon/adm1275
+++ b/Documentation/hwmon/adm1275
@@ -15,7 +15,7 @@ Supported chips:
15 Addresses scanned: - 15 Addresses scanned: -
16 Datasheet: www.analog.com/static/imported-files/data_sheets/ADM1276.pdf 16 Datasheet: www.analog.com/static/imported-files/data_sheets/ADM1276.pdf
17 17
18Author: Guenter Roeck <guenter.roeck@ericsson.com> 18Author: Guenter Roeck <linux@roeck-us.net>
19 19
20 20
21Description 21Description
diff --git a/Documentation/hwmon/adt7410 b/Documentation/hwmon/adt7410
index 96004000dc2a..9817941e5f19 100644
--- a/Documentation/hwmon/adt7410
+++ b/Documentation/hwmon/adt7410
@@ -4,28 +4,50 @@ Kernel driver adt7410
4Supported chips: 4Supported chips:
5 * Analog Devices ADT7410 5 * Analog Devices ADT7410
6 Prefix: 'adt7410' 6 Prefix: 'adt7410'
7 Addresses scanned: I2C 0x48 - 0x4B 7 Addresses scanned: None
8 Datasheet: Publicly available at the Analog Devices website 8 Datasheet: Publicly available at the Analog Devices website
9 http://www.analog.com/static/imported-files/data_sheets/ADT7410.pdf 9 http://www.analog.com/static/imported-files/data_sheets/ADT7410.pdf
10 * Analog Devices ADT7420
11 Prefix: 'adt7420'
12 Addresses scanned: None
13 Datasheet: Publicly available at the Analog Devices website
14 http://www.analog.com/static/imported-files/data_sheets/ADT7420.pdf
15 * Analog Devices ADT7310
16 Prefix: 'adt7310'
17 Addresses scanned: None
18 Datasheet: Publicly available at the Analog Devices website
19 http://www.analog.com/static/imported-files/data_sheets/ADT7310.pdf
20 * Analog Devices ADT7320
21 Prefix: 'adt7320'
22 Addresses scanned: None
23 Datasheet: Publicly available at the Analog Devices website
24 http://www.analog.com/static/imported-files/data_sheets/ADT7320.pdf
10 25
11Author: Hartmut Knaack <knaack.h@gmx.de> 26Author: Hartmut Knaack <knaack.h@gmx.de>
12 27
13Description 28Description
14----------- 29-----------
15 30
16The ADT7410 is a temperature sensor with rated temperature range of -55°C to 31The ADT7310/ADT7410 is a temperature sensor with rated temperature range of
17+150°C. It has a high accuracy of +/-0.5°C and can be operated at a resolution 32-55°C to +150°C. It has a high accuracy of +/-0.5°C and can be operated at a
18of 13 bits (0.0625°C) or 16 bits (0.0078°C). The sensor provides an INT pin to 33resolution of 13 bits (0.0625°C) or 16 bits (0.0078°C). The sensor provides an
19indicate that a minimum or maximum temperature set point has been exceeded, as 34INT pin to indicate that a minimum or maximum temperature set point has been
20well as a critical temperature (CT) pin to indicate that the critical 35exceeded, as well as a critical temperature (CT) pin to indicate that the
21temperature set point has been exceeded. Both pins can be set up with a common 36critical temperature set point has been exceeded. Both pins can be set up with a
22hysteresis of 0°C - 15°C and a fault queue, ranging from 1 to 4 events. Both 37common hysteresis of 0°C - 15°C and a fault queue, ranging from 1 to 4 events.
23pins can individually set to be active-low or active-high, while the whole 38Both pins can individually set to be active-low or active-high, while the whole
24device can either run in comparator mode or interrupt mode. The ADT7410 39device can either run in comparator mode or interrupt mode. The ADT7410 supports
25supports continous temperature sampling, as well as sampling one temperature 40continuous temperature sampling, as well as sampling one temperature value per
26value per second or even justget one sample on demand for power saving. 41second or even just get one sample on demand for power saving. Besides, it can
27Besides, it can completely power down its ADC, if power management is 42completely power down its ADC, if power management is required.
28required. 43
44The ADT7320/ADT7420 is register compatible, the only differences being the
45package, a slightly narrower operating temperature range (-40°C to +150°C), and
46a better accuracy (0.25°C instead of 0.50°C.)
47
48The difference between the ADT7310/ADT7320 and ADT7410/ADT7420 is the control
49interface, the ADT7310 and ADT7320 use SPI while the ADT7410 and ADT7420 use
50I2C.
29 51
30Configuration Notes 52Configuration Notes
31------------------- 53-------------------
diff --git a/Documentation/hwmon/jc42 b/Documentation/hwmon/jc42
index 165077121238..868d74d6b773 100644
--- a/Documentation/hwmon/jc42
+++ b/Documentation/hwmon/jc42
@@ -49,7 +49,7 @@ Supported chips:
49 Addresses scanned: I2C 0x18 - 0x1f 49 Addresses scanned: I2C 0x18 - 0x1f
50 50
51Author: 51Author:
52 Guenter Roeck <guenter.roeck@ericsson.com> 52 Guenter Roeck <linux@roeck-us.net>
53 53
54 54
55Description 55Description
diff --git a/Documentation/hwmon/lineage-pem b/Documentation/hwmon/lineage-pem
index 2ba5ed126858..83b2ddc160c8 100644
--- a/Documentation/hwmon/lineage-pem
+++ b/Documentation/hwmon/lineage-pem
@@ -8,7 +8,7 @@ Supported devices:
8 Documentation: 8 Documentation:
9 http://www.lineagepower.com/oem/pdf/CPLI2C.pdf 9 http://www.lineagepower.com/oem/pdf/CPLI2C.pdf
10 10
11Author: Guenter Roeck <guenter.roeck@ericsson.com> 11Author: Guenter Roeck <linux@roeck-us.net>
12 12
13 13
14Description 14Description
diff --git a/Documentation/hwmon/lm25066 b/Documentation/hwmon/lm25066
index a21db81c4591..c1b57d72efc3 100644
--- a/Documentation/hwmon/lm25066
+++ b/Documentation/hwmon/lm25066
@@ -1,7 +1,13 @@
1Kernel driver max8688 1Kernel driver lm25066
2===================== 2=====================
3 3
4Supported chips: 4Supported chips:
5 * TI LM25056
6 Prefix: 'lm25056'
7 Addresses scanned: -
8 Datasheets:
9 http://www.ti.com/lit/gpn/lm25056
10 http://www.ti.com/lit/gpn/lm25056a
5 * National Semiconductor LM25066 11 * National Semiconductor LM25066
6 Prefix: 'lm25066' 12 Prefix: 'lm25066'
7 Addresses scanned: - 13 Addresses scanned: -
@@ -19,14 +25,15 @@ Supported chips:
19 Datasheet: 25 Datasheet:
20 http://www.national.com/pf/LM/LM5066.html 26 http://www.national.com/pf/LM/LM5066.html
21 27
22Author: Guenter Roeck <guenter.roeck@ericsson.com> 28Author: Guenter Roeck <linux@roeck-us.net>
23 29
24 30
25Description 31Description
26----------- 32-----------
27 33
28This driver supports hardware montoring for National Semiconductor LM25066, 34This driver supports hardware montoring for National Semiconductor / TI LM25056,
29LM5064, and LM5064 Power Management, Monitoring, Control, and Protection ICs. 35LM25066, LM5064, and LM5064 Power Management, Monitoring, Control, and
36Protection ICs.
30 37
31The driver is a client driver to the core PMBus driver. Please see 38The driver is a client driver to the core PMBus driver. Please see
32Documentation/hwmon/pmbus for details on PMBus client drivers. 39Documentation/hwmon/pmbus for details on PMBus client drivers.
@@ -60,14 +67,19 @@ in1_max Maximum input voltage.
60in1_min_alarm Input voltage low alarm. 67in1_min_alarm Input voltage low alarm.
61in1_max_alarm Input voltage high alarm. 68in1_max_alarm Input voltage high alarm.
62 69
63in2_label "vout1" 70in2_label "vmon"
64in2_input Measured output voltage. 71in2_input Measured voltage on VAUX pin
65in2_average Average measured output voltage. 72in2_min Minimum VAUX voltage (LM25056 only).
66in2_min Minimum output voltage. 73in2_max Maximum VAUX voltage (LM25056 only).
67in2_min_alarm Output voltage low alarm. 74in2_min_alarm VAUX voltage low alarm (LM25056 only).
68 75in2_max_alarm VAUX voltage high alarm (LM25056 only).
69in3_label "vout2" 76
70in3_input Measured voltage on vaux pin 77in3_label "vout1"
78 Not supported on LM25056.
79in3_input Measured output voltage.
80in3_average Average measured output voltage.
81in3_min Minimum output voltage.
82in3_min_alarm Output voltage low alarm.
71 83
72curr1_label "iin" 84curr1_label "iin"
73curr1_input Measured input current. 85curr1_input Measured input current.
diff --git a/Documentation/hwmon/lm75 b/Documentation/hwmon/lm75
index c91a1d15fa28..2560a9c6d445 100644
--- a/Documentation/hwmon/lm75
+++ b/Documentation/hwmon/lm75
@@ -12,18 +12,18 @@ Supported chips:
12 Addresses scanned: I2C 0x48 - 0x4f 12 Addresses scanned: I2C 0x48 - 0x4f
13 Datasheet: Publicly available at the National Semiconductor website 13 Datasheet: Publicly available at the National Semiconductor website
14 http://www.national.com/ 14 http://www.national.com/
15 * Dallas Semiconductor DS75, DS1775 15 * Dallas Semiconductor (now Maxim) DS75, DS1775, DS7505
16 Prefixes: 'ds75', 'ds1775' 16 Prefixes: 'ds75', 'ds1775', 'ds7505'
17 Addresses scanned: none 17 Addresses scanned: none
18 Datasheet: Publicly available at the Dallas Semiconductor website 18 Datasheet: Publicly available at the Maxim website
19 http://www.maxim-ic.com/ 19 http://www.maximintegrated.com/
20 * Maxim MAX6625, MAX6626 20 * Maxim MAX6625, MAX6626
21 Prefixes: 'max6625', 'max6626' 21 Prefixes: 'max6625', 'max6626'
22 Addresses scanned: none 22 Addresses scanned: none
23 Datasheet: Publicly available at the Maxim website 23 Datasheet: Publicly available at the Maxim website
24 http://www.maxim-ic.com/ 24 http://www.maxim-ic.com/
25 * Microchip (TelCom) TCN75 25 * Microchip (TelCom) TCN75
26 Prefix: 'lm75' 26 Prefix: 'tcn75'
27 Addresses scanned: none 27 Addresses scanned: none
28 Datasheet: Publicly available at the Microchip website 28 Datasheet: Publicly available at the Microchip website
29 http://www.microchip.com/ 29 http://www.microchip.com/
@@ -67,7 +67,8 @@ the temperature falls below the Hysteresis value.
67All temperatures are in degrees Celsius, and are guaranteed within a 67All temperatures are in degrees Celsius, and are guaranteed within a
68range of -55 to +125 degrees. 68range of -55 to +125 degrees.
69 69
70The LM75 only updates its values each 1.5 seconds; reading it more often 70The driver caches the values for a period varying between 1 second for the
71slowest chips and 125 ms for the fastest chips; reading it more often
71will do no harm, but will return 'old' values. 72will do no harm, but will return 'old' values.
72 73
73The original LM75 was typically used in combination with LM78-like chips 74The original LM75 was typically used in combination with LM78-like chips
@@ -78,8 +79,8 @@ The LM75 is essentially an industry standard; there may be other
78LM75 clones not listed here, with or without various enhancements, 79LM75 clones not listed here, with or without various enhancements,
79that are supported. The clones are not detected by the driver, unless 80that are supported. The clones are not detected by the driver, unless
80they reproduce the exact register tricks of the original LM75, and must 81they reproduce the exact register tricks of the original LM75, and must
81therefore be instantiated explicitly. The specific enhancements (such as 82therefore be instantiated explicitly. Higher resolution up to 12-bit
82higher resolution) are not currently supported by the driver. 83is supported by this driver, other specific enhancements are not.
83 84
84The LM77 is not supported, contrary to what we pretended for a long time. 85The LM77 is not supported, contrary to what we pretended for a long time.
85Both chips are simply not compatible, value encoding differs. 86Both chips are simply not compatible, value encoding differs.
diff --git a/Documentation/hwmon/lm95234 b/Documentation/hwmon/lm95234
new file mode 100644
index 000000000000..a0e95ddfd372
--- /dev/null
+++ b/Documentation/hwmon/lm95234
@@ -0,0 +1,36 @@
1Kernel driver lm95234
2=====================
3
4Supported chips:
5 * National Semiconductor / Texas Instruments LM95234
6 Addresses scanned: I2C 0x18, 0x4d, 0x4e
7 Datasheet: Publicly available at the Texas Instruments website
8 http://www.ti.com/product/lm95234
9
10
11Author: Guenter Roeck <linux@roeck-us.net>
12
13Description
14-----------
15
16LM95234 is an 11-bit digital temperature sensor with a 2-wire System Management
17Bus (SMBus) interface and TrueTherm technology that can very accurately monitor
18the temperature of four remote diodes as well as its own temperature.
19The four remote diodes can be external devices such as microprocessors,
20graphics processors or diode-connected 2N3904s. The LM95234's TruTherm
21beta compensation technology allows sensing of 90 nm or 65 nm process
22thermal diodes accurately.
23
24All temperature values are given in millidegrees Celsius. Temperature
25is provided within a range of -127 to +255 degrees (+127.875 degrees for
26the internal sensor). Resolution depends on temperature input and range.
27
28Each sensor has its own maximum limit, but the hysteresis is common to all
29channels. The hysteresis is configurable with the tem1_max_hyst attribute and
30affects the hysteresis on all channels. The first two external sensors also
31have a critical limit.
32
33The lm95234 driver can change its update interval to a fixed set of values.
34It will round up to the next selectable interval. See the datasheet for exact
35values. Reading sensor values more often will do no harm, but will return
36'old' values.
diff --git a/Documentation/hwmon/ltc2978 b/Documentation/hwmon/ltc2978
index c365f9beb5dd..dc0d08c61305 100644
--- a/Documentation/hwmon/ltc2978
+++ b/Documentation/hwmon/ltc2978
@@ -2,24 +2,32 @@ Kernel driver ltc2978
2===================== 2=====================
3 3
4Supported chips: 4Supported chips:
5 * Linear Technology LTC2974
6 Prefix: 'ltc2974'
7 Addresses scanned: -
8 Datasheet: http://www.linear.com/product/ltc2974
5 * Linear Technology LTC2978 9 * Linear Technology LTC2978
6 Prefix: 'ltc2978' 10 Prefix: 'ltc2978'
7 Addresses scanned: - 11 Addresses scanned: -
8 Datasheet: http://cds.linear.com/docs/Datasheet/2978fa.pdf 12 Datasheet: http://www.linear.com/product/ltc2978
9 * Linear Technology LTC3880 13 * Linear Technology LTC3880
10 Prefix: 'ltc3880' 14 Prefix: 'ltc3880'
11 Addresses scanned: - 15 Addresses scanned: -
12 Datasheet: http://cds.linear.com/docs/Datasheet/3880f.pdf 16 Datasheet: http://www.linear.com/product/ltc3880
17 * Linear Technology LTC3883
18 Prefix: 'ltc3883'
19 Addresses scanned: -
20 Datasheet: http://www.linear.com/product/ltc3883
13 21
14Author: Guenter Roeck <guenter.roeck@ericsson.com> 22Author: Guenter Roeck <linux@roeck-us.net>
15 23
16 24
17Description 25Description
18----------- 26-----------
19 27
20The LTC2978 is an octal power supply monitor, supervisor, sequencer and 28LTC2974 is a quad digital power supply manager. LTC2978 is an octal power supply
21margin controller. The LTC3880 is a dual, PolyPhase DC/DC synchronous 29monitor. LTC3880 is a dual output poly-phase step-down DC/DC controller. LTC3883
22step-down switching regulator controller. 30is a single phase step-down DC/DC controller.
23 31
24 32
25Usage Notes 33Usage Notes
@@ -41,63 +49,90 @@ Sysfs attributes
41in1_label "vin" 49in1_label "vin"
42in1_input Measured input voltage. 50in1_input Measured input voltage.
43in1_min Minimum input voltage. 51in1_min Minimum input voltage.
44in1_max Maximum input voltage. 52in1_max Maximum input voltage. LTC2974 and LTC2978 only.
45in1_lcrit Critical minimum input voltage. 53in1_lcrit Critical minimum input voltage. LTC2974 and LTC2978
54 only.
46in1_crit Critical maximum input voltage. 55in1_crit Critical maximum input voltage.
47in1_min_alarm Input voltage low alarm. 56in1_min_alarm Input voltage low alarm.
48in1_max_alarm Input voltage high alarm. 57in1_max_alarm Input voltage high alarm. LTC2974 and LTC2978 only.
49in1_lcrit_alarm Input voltage critical low alarm. 58in1_lcrit_alarm Input voltage critical low alarm. LTC2974 and LTC2978
59 only.
50in1_crit_alarm Input voltage critical high alarm. 60in1_crit_alarm Input voltage critical high alarm.
51in1_lowest Lowest input voltage. LTC2978 only. 61in1_lowest Lowest input voltage. LTC2974 and LTC2978 only.
52in1_highest Highest input voltage. 62in1_highest Highest input voltage.
53in1_reset_history Reset history. Writing into this attribute will reset 63in1_reset_history Reset input voltage history.
54 history for all attributes. 64
55 65in[N]_label "vout[1-8]".
56in[2-9]_label "vout[1-8]". Channels 3 to 9 on LTC2978 only. 66 LTC2974: N=2-5
57in[2-9]_input Measured output voltage. 67 LTC2978: N=2-9
58in[2-9]_min Minimum output voltage. 68 LTC3880: N=2-3
59in[2-9]_max Maximum output voltage. 69 LTC3883: N=2
60in[2-9]_lcrit Critical minimum output voltage. 70in[N]_input Measured output voltage.
61in[2-9]_crit Critical maximum output voltage. 71in[N]_min Minimum output voltage.
62in[2-9]_min_alarm Output voltage low alarm. 72in[N]_max Maximum output voltage.
63in[2-9]_max_alarm Output voltage high alarm. 73in[N]_lcrit Critical minimum output voltage.
64in[2-9]_lcrit_alarm Output voltage critical low alarm. 74in[N]_crit Critical maximum output voltage.
65in[2-9]_crit_alarm Output voltage critical high alarm. 75in[N]_min_alarm Output voltage low alarm.
66in[2-9]_lowest Lowest output voltage. LTC2978 only. 76in[N]_max_alarm Output voltage high alarm.
67in[2-9]_highest Lowest output voltage. 77in[N]_lcrit_alarm Output voltage critical low alarm.
68in[2-9]_reset_history Reset history. Writing into this attribute will reset 78in[N]_crit_alarm Output voltage critical high alarm.
69 history for all attributes. 79in[N]_lowest Lowest output voltage. LTC2974 and LTC2978 only.
70 80in[N]_highest Highest output voltage.
71temp[1-3]_input Measured temperature. 81in[N]_reset_history Reset output voltage history.
82
83temp[N]_input Measured temperature.
84 On LTC2974, temp[1-4] report external temperatures,
85 and temp5 reports the chip temperature.
72 On LTC2978, only one temperature measurement is 86 On LTC2978, only one temperature measurement is
73 supported and reflects the internal temperature. 87 supported and reports the chip temperature.
74 On LTC3880, temp1 and temp2 report external 88 On LTC3880, temp1 and temp2 report external
75 temperatures, and temp3 reports the internal 89 temperatures, and temp3 reports the chip temperature.
76 temperature. 90 On LTC3883, temp1 reports an external temperature,
77temp[1-3]_min Mimimum temperature. 91 and temp2 reports the chip temperature.
78temp[1-3]_max Maximum temperature. 92temp[N]_min Mimimum temperature. LTC2974 and LTC2978 only.
79temp[1-3]_lcrit Critical low temperature. 93temp[N]_max Maximum temperature.
80temp[1-3]_crit Critical high temperature. 94temp[N]_lcrit Critical low temperature.
81temp[1-3]_min_alarm Chip temperature low alarm. 95temp[N]_crit Critical high temperature.
82temp[1-3]_max_alarm Chip temperature high alarm. 96temp[N]_min_alarm Temperature low alarm. LTC2974 and LTC2978 only.
83temp[1-3]_lcrit_alarm Chip temperature critical low alarm. 97temp[N]_max_alarm Temperature high alarm.
84temp[1-3]_crit_alarm Chip temperature critical high alarm. 98temp[N]_lcrit_alarm Temperature critical low alarm.
85temp[1-3]_lowest Lowest measured temperature. LTC2978 only. 99temp[N]_crit_alarm Temperature critical high alarm.
86temp[1-3]_highest Highest measured temperature. 100temp[N]_lowest Lowest measured temperature. LTC2974 and LTC2978 only.
87temp[1-3]_reset_history Reset history. Writing into this attribute will reset 101 Not supported for chip temperature sensor on LTC2974.
88 history for all attributes. 102temp[N]_highest Highest measured temperature. Not supported for chip
89 103 temperature sensor on LTC2974.
90power[1-2]_label "pout[1-2]". LTC3880 only. 104temp[N]_reset_history Reset temperature history. Not supported for chip
91power[1-2]_input Measured power. 105 temperature sensor on LTC2974.
92 106
93curr1_label "iin". LTC3880 only. 107power1_label "pin". LTC3883 only.
108power1_input Measured input power.
109
110power[N]_label "pout[1-4]".
111 LTC2974: N=1-4
112 LTC2978: Not supported
113 LTC3880: N=1-2
114 LTC3883: N=2
115power[N]_input Measured output power.
116
117curr1_label "iin". LTC3880 and LTC3883 only.
94curr1_input Measured input current. 118curr1_input Measured input current.
95curr1_max Maximum input current. 119curr1_max Maximum input current.
96curr1_max_alarm Input current high alarm. 120curr1_max_alarm Input current high alarm.
97 121curr1_highest Highest input current. LTC3883 only.
98curr[2-3]_label "iout[1-2]". LTC3880 only. 122curr1_reset_history Reset input current history. LTC3883 only.
99curr[2-3]_input Measured input current. 123
100curr[2-3]_max Maximum input current. 124curr[N]_label "iout[1-4]".
101curr[2-3]_crit Critical input current. 125 LTC2974: N=1-4
102curr[2-3]_max_alarm Input current high alarm. 126 LTC2978: not supported
103curr[2-3]_crit_alarm Input current critical high alarm. 127 LTC3880: N=2-3
128 LTC3883: N=2
129curr[N]_input Measured output current.
130curr[N]_max Maximum output current.
131curr[N]_crit Critical high output current.
132curr[N]_lcrit Critical low output current. LTC2974 only.
133curr[N]_max_alarm Output current high alarm.
134curr[N]_crit_alarm Output current critical high alarm.
135curr[N]_lcrit_alarm Output current critical low alarm. LTC2974 only.
136curr[N]_lowest Lowest output current. LTC2974 only.
137curr[N]_highest Highest output current.
138curr[N]_reset_history Reset output current history.
diff --git a/Documentation/hwmon/ltc4261 b/Documentation/hwmon/ltc4261
index eba2e2c4b94d..9378a75c6134 100644
--- a/Documentation/hwmon/ltc4261
+++ b/Documentation/hwmon/ltc4261
@@ -8,7 +8,7 @@ Supported chips:
8 Datasheet: 8 Datasheet:
9 http://cds.linear.com/docs/Datasheet/42612fb.pdf 9 http://cds.linear.com/docs/Datasheet/42612fb.pdf
10 10
11Author: Guenter Roeck <guenter.roeck@ericsson.com> 11Author: Guenter Roeck <linux@roeck-us.net>
12 12
13 13
14Description 14Description
diff --git a/Documentation/hwmon/max16064 b/Documentation/hwmon/max16064
index f8b478076f6d..d59cc7829bec 100644
--- a/Documentation/hwmon/max16064
+++ b/Documentation/hwmon/max16064
@@ -7,7 +7,7 @@ Supported chips:
7 Addresses scanned: - 7 Addresses scanned: -
8 Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX16064.pdf 8 Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX16064.pdf
9 9
10Author: Guenter Roeck <guenter.roeck@ericsson.com> 10Author: Guenter Roeck <linux@roeck-us.net>
11 11
12 12
13Description 13Description
diff --git a/Documentation/hwmon/max16065 b/Documentation/hwmon/max16065
index c11f64a1f2ad..208a29e43010 100644
--- a/Documentation/hwmon/max16065
+++ b/Documentation/hwmon/max16065
@@ -24,7 +24,7 @@ Supported chips:
24 http://datasheets.maxim-ic.com/en/ds/MAX16070-MAX16071.pdf 24 http://datasheets.maxim-ic.com/en/ds/MAX16070-MAX16071.pdf
25 25
26 26
27Author: Guenter Roeck <guenter.roeck@ericsson.com> 27Author: Guenter Roeck <linux@roeck-us.net>
28 28
29 29
30Description 30Description
diff --git a/Documentation/hwmon/max34440 b/Documentation/hwmon/max34440
index 47651ff341ae..37cbf472a19d 100644
--- a/Documentation/hwmon/max34440
+++ b/Documentation/hwmon/max34440
@@ -27,7 +27,7 @@ Supported chips:
27 Addresses scanned: - 27 Addresses scanned: -
28 Datasheet: http://datasheets.maximintegrated.com/en/ds/MAX34461.pdf 28 Datasheet: http://datasheets.maximintegrated.com/en/ds/MAX34461.pdf
29 29
30Author: Guenter Roeck <guenter.roeck@ericsson.com> 30Author: Guenter Roeck <linux@roeck-us.net>
31 31
32 32
33Description 33Description
diff --git a/Documentation/hwmon/max8688 b/Documentation/hwmon/max8688
index fe849871df32..e78078638b91 100644
--- a/Documentation/hwmon/max8688
+++ b/Documentation/hwmon/max8688
@@ -7,7 +7,7 @@ Supported chips:
7 Addresses scanned: - 7 Addresses scanned: -
8 Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX8688.pdf 8 Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX8688.pdf
9 9
10Author: Guenter Roeck <guenter.roeck@ericsson.com> 10Author: Guenter Roeck <linux@roeck-us.net>
11 11
12 12
13Description 13Description
diff --git a/Documentation/hwmon/nct6775 b/Documentation/hwmon/nct6775
new file mode 100644
index 000000000000..4e9ef60e8c6c
--- /dev/null
+++ b/Documentation/hwmon/nct6775
@@ -0,0 +1,188 @@
1Note
2====
3
4This driver supersedes the NCT6775F and NCT6776F support in the W83627EHF
5driver.
6
7Kernel driver NCT6775
8=====================
9
10Supported chips:
11 * Nuvoton NCT5572D/NCT6771F/NCT6772F/NCT6775F/W83677HG-I
12 Prefix: 'nct6775'
13 Addresses scanned: ISA address retrieved from Super I/O registers
14 Datasheet: Available from Nuvoton upon request
15 * Nuvoton NCT5577D/NCT6776D/NCT6776F
16 Prefix: 'nct6776'
17 Addresses scanned: ISA address retrieved from Super I/O registers
18 Datasheet: Available from Nuvoton upon request
19 * Nuvoton NCT5532D/NCT6779D
20 Prefix: 'nct6779'
21 Addresses scanned: ISA address retrieved from Super I/O registers
22 Datasheet: Available from Nuvoton upon request
23
24Authors:
25 Guenter Roeck <linux@roeck-us.net>
26
27Description
28-----------
29
30This driver implements support for the Nuvoton NCT6775F, NCT6776F, and NCT6779D
31and compatible super I/O chips.
32
33The chips support up to 25 temperature monitoring sources. Up to 6 of those are
34direct temperature sensor inputs, the others are special sources such as PECI,
35PCH, and SMBUS. Depending on the chip type, 2 to 6 of the temperature sources
36can be monitored and compared against minimum, maximum, and critical
37temperatures. The driver reports up to 10 of the temperatures to the user.
38There are 4 to 5 fan rotation speed sensors, 8 to 15 analog voltage sensors,
39one VID, alarms with beep warnings (control unimplemented), and some automatic
40fan regulation strategies (plus manual fan control mode).
41
42The temperature sensor sources on all chips are configurable. The configured
43source for each of the temperature sensors is provided in tempX_label.
44
45Temperatures are measured in degrees Celsius and measurement resolution is
46either 1 degC or 0.5 degC, depending on the temperature source and
47configuration. An alarm is triggered when the temperature gets higher than
48the high limit; it stays on until the temperature falls below the hysteresis
49value. Alarms are only supported for temp1 to temp6, depending on the chip type.
50
51Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
52triggered if the rotation speed has dropped below a programmable limit. On
53NCT6775F, fan readings can be divided by a programmable divider (1, 2, 4, 8,
5416, 32, 64 or 128) to give the readings more range or accuracy; the other chips
55do not have a fan speed divider. The driver sets the most suitable fan divisor
56itself; specifically, it increases the divider value each time a fan speed
57reading returns an invalid value, and it reduces it if the fan speed reading
58is lower than optimal. Some fans might not be present because they share pins
59with other functions.
60
61Voltage sensors (also known as IN sensors) report their values in millivolts.
62An alarm is triggered if the voltage has crossed a programmable minimum
63or maximum limit.
64
65The driver supports automatic fan control mode known as Thermal Cruise.
66In this mode, the chip attempts to keep the measured temperature in a
67predefined temperature range. If the temperature goes out of range, fan
68is driven slower/faster to reach the predefined range again.
69
70The mode works for fan1-fan5.
71
72sysfs attributes
73----------------
74
75pwm[1-5] - this file stores PWM duty cycle or DC value (fan speed) in range:
76 0 (lowest speed) to 255 (full)
77
78pwm[1-5]_enable - this file controls mode of fan/temperature control:
79 * 0 Fan control disabled (fans set to maximum speed)
80 * 1 Manual mode, write to pwm[0-5] any value 0-255
81 * 2 "Thermal Cruise" mode
82 * 3 "Fan Speed Cruise" mode
83 * 4 "Smart Fan III" mode (NCT6775F only)
84 * 5 "Smart Fan IV" mode
85
86pwm[1-5]_mode - controls if output is PWM or DC level
87 * 0 DC output
88 * 1 PWM output
89
90Common fan control attributes
91-----------------------------
92
93pwm[1-5]_temp_sel Temperature source. Value is temperature sensor index.
94 For example, select '1' for temp1_input.
95pwm[1-5]_weight_temp_sel
96 Secondary temperature source. Value is temperature
97 sensor index. For example, select '1' for temp1_input.
98 Set to 0 to disable secondary temperature control.
99
100If secondary temperature functionality is enabled, it is controlled with the
101following attributes.
102
103pwm[1-5]_weight_duty_step
104 Duty step size.
105pwm[1-5]_weight_temp_step
106 Temperature step size. With each step over
107 temp_step_base, the value of weight_duty_step is added
108 to the current pwm value.
109pwm[1-5]_weight_temp_step_base
110 Temperature at which secondary temperature control kicks
111 in.
112pwm[1-5]_weight_temp_step_tol
113 Temperature step tolerance.
114
115Thermal Cruise mode (2)
116-----------------------
117
118If the temperature is in the range defined by:
119
120pwm[1-5]_target_temp Target temperature, unit millidegree Celsius
121 (range 0 - 127000)
122pwm[1-5]_temp_tolerance
123 Target temperature tolerance, unit millidegree Celsius
124
125there are no changes to fan speed. Once the temperature leaves the interval, fan
126speed increases (if temperature is higher that desired) or decreases (if
127temperature is lower than desired), using the following limits and time
128intervals.
129
130pwm[1-5]_start fan pwm start value (range 1 - 255), to start fan
131 when the temperature is above defined range.
132pwm[1-5]_floor lowest fan pwm (range 0 - 255) if temperature is below
133 the defined range. If set to 0, the fan is expected to
134 stop if the temperature is below the defined range.
135pwm[1-5]_step_up_time milliseconds before fan speed is increased
136pwm[1-5]_step_down_time milliseconds before fan speed is decreased
137pwm[1-5]_stop_time how many milliseconds must elapse to switch
138 corresponding fan off (when the temperature was below
139 defined range).
140
141Speed Cruise mode (3)
142---------------------
143
144This modes tries to keep the fan speed constant.
145
146fan[1-5]_target Target fan speed
147fan[1-5]_tolerance
148 Target speed tolerance
149
150
151Untested; use at your own risk.
152
153Smart Fan IV mode (5)
154---------------------
155
156This mode offers multiple slopes to control the fan speed. The slopes can be
157controlled by setting the pwm and temperature attributes. When the temperature
158rises, the chip will calculate the DC/PWM output based on the current slope.
159There are up to seven data points depending on the chip type. Subsequent data
160points should be set to higher temperatures and higher pwm values to achieve
161higher fan speeds with increasing temperature. The last data point reflects
162critical temperature mode, in which the fans should run at full speed.
163
164pwm[1-5]_auto_point[1-7]_pwm
165 pwm value to be set if temperature reaches matching
166 temperature range.
167pwm[1-5]_auto_point[1-7]_temp
168 Temperature over which the matching pwm is enabled.
169pwm[1-5]_temp_tolerance
170 Temperature tolerance, unit millidegree Celsius
171pwm[1-5]_crit_temp_tolerance
172 Temperature tolerance for critical temperature,
173 unit millidegree Celsius
174
175pwm[1-5]_step_up_time milliseconds before fan speed is increased
176pwm[1-5]_step_down_time milliseconds before fan speed is decreased
177
178Usage Notes
179-----------
180
181On various ASUS boards with NCT6776F, it appears that CPUTIN is not really
182connected to anything and floats, or that it is connected to some non-standard
183temperature measurement device. As a result, the temperature reported on CPUTIN
184will not reflect a usable value. It often reports unreasonably high
185temperatures, and in some cases the reported temperature declines if the actual
186temperature increases (similar to the raw PECI temperature value - see PECI
187specification for details). CPUTIN should therefore be be ignored on ASUS
188boards. The CPU temperature on ASUS boards is reported from PECI 0.
diff --git a/Documentation/hwmon/pmbus b/Documentation/hwmon/pmbus
index 3d3a0f97f966..cf756ed48ff9 100644
--- a/Documentation/hwmon/pmbus
+++ b/Documentation/hwmon/pmbus
@@ -34,7 +34,7 @@ Supported chips:
34 Addresses scanned: - 34 Addresses scanned: -
35 Datasheet: n.a. 35 Datasheet: n.a.
36 36
37Author: Guenter Roeck <guenter.roeck@ericsson.com> 37Author: Guenter Roeck <linux@roeck-us.net>
38 38
39 39
40Description 40Description
diff --git a/Documentation/hwmon/sht15 b/Documentation/hwmon/sht15
index 02850bdfac18..778987d1856f 100644
--- a/Documentation/hwmon/sht15
+++ b/Documentation/hwmon/sht15
@@ -40,7 +40,7 @@ bits for humidity, or 12 bits for temperature and 8 bits for humidity.
40The humidity calibration coefficients are programmed into an OTP memory on the 40The humidity calibration coefficients are programmed into an OTP memory on the
41chip. These coefficients are used to internally calibrate the signals from the 41chip. These coefficients are used to internally calibrate the signals from the
42sensors. Disabling the reload of those coefficients allows saving 10ms for each 42sensors. Disabling the reload of those coefficients allows saving 10ms for each
43measurement and decrease power consumption, while loosing on precision. 43measurement and decrease power consumption, while losing on precision.
44 44
45Some options may be set directly in the sht15_platform_data structure 45Some options may be set directly in the sht15_platform_data structure
46or via sysfs attributes. 46or via sysfs attributes.
diff --git a/Documentation/hwmon/smm665 b/Documentation/hwmon/smm665
index 59e316140542..a341eeedab75 100644
--- a/Documentation/hwmon/smm665
+++ b/Documentation/hwmon/smm665
@@ -29,7 +29,7 @@ Supported chips:
29 http://www.summitmicro.com/prod_select/summary/SMM766/SMM766_2086.pdf 29 http://www.summitmicro.com/prod_select/summary/SMM766/SMM766_2086.pdf
30 http://www.summitmicro.com/prod_select/summary/SMM766B/SMM766B_2122.pdf 30 http://www.summitmicro.com/prod_select/summary/SMM766B/SMM766B_2122.pdf
31 31
32Author: Guenter Roeck <guenter.roeck@ericsson.com> 32Author: Guenter Roeck <linux@roeck-us.net>
33 33
34 34
35Module Parameters 35Module Parameters
diff --git a/Documentation/hwmon/tmp401 b/Documentation/hwmon/tmp401
index 9fc447249212..f91e3fa7e5ec 100644
--- a/Documentation/hwmon/tmp401
+++ b/Documentation/hwmon/tmp401
@@ -8,8 +8,16 @@ Supported chips:
8 Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp401.html 8 Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp401.html
9 * Texas Instruments TMP411 9 * Texas Instruments TMP411
10 Prefix: 'tmp411' 10 Prefix: 'tmp411'
11 Addresses scanned: I2C 0x4c 11 Addresses scanned: I2C 0x4c, 0x4d, 0x4e
12 Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp411.html 12 Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp411.html
13 * Texas Instruments TMP431
14 Prefix: 'tmp431'
15 Addresses scanned: I2C 0x4c, 0x4d
16 Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp431.html
17 * Texas Instruments TMP432
18 Prefix: 'tmp432'
19 Addresses scanned: I2C 0x4c, 0x4d
20 Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp432.html
13 21
14Authors: 22Authors:
15 Hans de Goede <hdegoede@redhat.com> 23 Hans de Goede <hdegoede@redhat.com>
@@ -18,19 +26,19 @@ Authors:
18Description 26Description
19----------- 27-----------
20 28
21This driver implements support for Texas Instruments TMP401 and 29This driver implements support for Texas Instruments TMP401, TMP411,
22TMP411 chips. These chips implements one remote and one local 30TMP431, and TMP432 chips. These chips implement one or two remote and
23temperature sensor. Temperature is measured in degrees 31one local temperature sensors. Temperature is measured in degrees
24Celsius. Resolution of the remote sensor is 0.0625 degree. Local 32Celsius. Resolution of the remote sensor is 0.0625 degree. Local
25sensor resolution can be set to 0.5, 0.25, 0.125 or 0.0625 degree (not 33sensor resolution can be set to 0.5, 0.25, 0.125 or 0.0625 degree (not
26supported by the driver so far, so using the default resolution of 0.5 34supported by the driver so far, so using the default resolution of 0.5
27degree). 35degree).
28 36
29The driver provides the common sysfs-interface for temperatures (see 37The driver provides the common sysfs-interface for temperatures (see
30/Documentation/hwmon/sysfs-interface under Temperatures). 38Documentation/hwmon/sysfs-interface under Temperatures).
31 39
32The TMP411 chip is compatible with TMP401. It provides some additional 40The TMP411 and TMP431 chips are compatible with TMP401. TMP411 provides
33features. 41some additional features.
34 42
35* Minimum and Maximum temperature measured since power-on, chip-reset 43* Minimum and Maximum temperature measured since power-on, chip-reset
36 44
@@ -40,3 +48,6 @@ features.
40 48
41 Exported via sysfs attribute temp_reset_history. Writing 1 to this 49 Exported via sysfs attribute temp_reset_history. Writing 1 to this
42 file triggers a reset. 50 file triggers a reset.
51
52TMP432 is compatible with TMP401 and TMP431. It supports two external
53temperature sensors.
diff --git a/Documentation/hwmon/ucd9000 b/Documentation/hwmon/ucd9000
index 0df5f276505b..805e33edb978 100644
--- a/Documentation/hwmon/ucd9000
+++ b/Documentation/hwmon/ucd9000
@@ -11,7 +11,7 @@ Supported chips:
11 http://focus.ti.com/lit/ds/symlink/ucd9090.pdf 11 http://focus.ti.com/lit/ds/symlink/ucd9090.pdf
12 http://focus.ti.com/lit/ds/symlink/ucd90910.pdf 12 http://focus.ti.com/lit/ds/symlink/ucd90910.pdf
13 13
14Author: Guenter Roeck <guenter.roeck@ericsson.com> 14Author: Guenter Roeck <linux@roeck-us.net>
15 15
16 16
17Description 17Description
diff --git a/Documentation/hwmon/ucd9200 b/Documentation/hwmon/ucd9200
index fd7d07b1908a..1e8060e631bd 100644
--- a/Documentation/hwmon/ucd9200
+++ b/Documentation/hwmon/ucd9200
@@ -15,7 +15,7 @@ Supported chips:
15 http://focus.ti.com/lit/ds/symlink/ucd9246.pdf 15 http://focus.ti.com/lit/ds/symlink/ucd9246.pdf
16 http://focus.ti.com/lit/ds/symlink/ucd9248.pdf 16 http://focus.ti.com/lit/ds/symlink/ucd9248.pdf
17 17
18Author: Guenter Roeck <guenter.roeck@ericsson.com> 18Author: Guenter Roeck <linux@roeck-us.net>
19 19
20 20
21Description 21Description
diff --git a/Documentation/hwmon/zl6100 b/Documentation/hwmon/zl6100
index 3d924b6b59e9..33908a4d68ff 100644
--- a/Documentation/hwmon/zl6100
+++ b/Documentation/hwmon/zl6100
@@ -54,7 +54,7 @@ http://archive.ericsson.net/service/internet/picov/get?DocNo=28701-EN/LZT146401
54http://archive.ericsson.net/service/internet/picov/get?DocNo=28701-EN/LZT146256 54http://archive.ericsson.net/service/internet/picov/get?DocNo=28701-EN/LZT146256
55 55
56 56
57Author: Guenter Roeck <guenter.roeck@ericsson.com> 57Author: Guenter Roeck <linux@roeck-us.net>
58 58
59 59
60Description 60Description
@@ -125,7 +125,7 @@ in2_label "vmon"
125in2_input Measured voltage on VMON (ZL2004) or VDRV (ZL9101M, 125in2_input Measured voltage on VMON (ZL2004) or VDRV (ZL9101M,
126 ZL9117M) pin. Reported voltage is 16x the voltage on the 126 ZL9117M) pin. Reported voltage is 16x the voltage on the
127 pin (adjusted internally by the chip). 127 pin (adjusted internally by the chip).
128in2_lcrit Critical minumum VMON/VDRV Voltage. 128in2_lcrit Critical minimum VMON/VDRV Voltage.
129in2_crit Critical maximum VMON/VDRV voltage. 129in2_crit Critical maximum VMON/VDRV voltage.
130in2_lcrit_alarm VMON/VDRV voltage critical low alarm. 130in2_lcrit_alarm VMON/VDRV voltage critical low alarm.
131in2_crit_alarm VMON/VDRV voltage critical high alarm. 131in2_crit_alarm VMON/VDRV voltage critical high alarm.
diff --git a/Documentation/i2c/busses/i2c-diolan-u2c b/Documentation/i2c/busses/i2c-diolan-u2c
index 30fe4bb9a069..0d6018c316c7 100644
--- a/Documentation/i2c/busses/i2c-diolan-u2c
+++ b/Documentation/i2c/busses/i2c-diolan-u2c
@@ -5,7 +5,7 @@ Supported adapters:
5 Documentation: 5 Documentation:
6 http://www.diolan.com/i2c/u2c12.html 6 http://www.diolan.com/i2c/u2c12.html
7 7
8Author: Guenter Roeck <guenter.roeck@ericsson.com> 8Author: Guenter Roeck <linux@roeck-us.net>
9 9
10Description 10Description
11----------- 11-----------
diff --git a/Documentation/ia64/err_inject.txt b/Documentation/ia64/err_inject.txt
index 223e4f0582d0..9f651c181429 100644
--- a/Documentation/ia64/err_inject.txt
+++ b/Documentation/ia64/err_inject.txt
@@ -882,7 +882,7 @@ int err_inj()
882 cpu=parameters[i].cpu; 882 cpu=parameters[i].cpu;
883 k = cpu%64; 883 k = cpu%64;
884 j = cpu/64; 884 j = cpu/64;
885 mask[j]=1<<k; 885 mask[j] = 1UL << k;
886 886
887 if (sched_setaffinity(0, MASK_SIZE*8, mask)==-1) { 887 if (sched_setaffinity(0, MASK_SIZE*8, mask)==-1) {
888 perror("Error sched_setaffinity:"); 888 perror("Error sched_setaffinity:");
diff --git a/Documentation/input/alps.txt b/Documentation/input/alps.txt
index 3262b6e4d686..e544c7ff8cfa 100644
--- a/Documentation/input/alps.txt
+++ b/Documentation/input/alps.txt
@@ -3,10 +3,26 @@ ALPS Touchpad Protocol
3 3
4Introduction 4Introduction
5------------ 5------------
6 6Currently the ALPS touchpad driver supports five protocol versions in use by
7Currently the ALPS touchpad driver supports four protocol versions in use by 7ALPS touchpads, called versions 1, 2, 3, 4 and 5.
8ALPS touchpads, called versions 1, 2, 3, and 4. Information about the various 8
9protocol versions is contained in the following sections. 9Since roughly mid-2010 several new ALPS touchpads have been released and
10integrated into a variety of laptops and netbooks. These new touchpads
11have enough behavior differences that the alps_model_data definition
12table, describing the properties of the different versions, is no longer
13adequate. The design choices were to re-define the alps_model_data
14table, with the risk of regression testing existing devices, or isolate
15the new devices outside of the alps_model_data table. The latter design
16choice was made. The new touchpad signatures are named: "Rushmore",
17"Pinnacle", and "Dolphin", which you will see in the alps.c code.
18For the purposes of this document, this group of ALPS touchpads will
19generically be called "new ALPS touchpads".
20
21We experimented with probing the ACPI interface _HID (Hardware ID)/_CID
22(Compatibility ID) definition as a way to uniquely identify the
23different ALPS variants but there did not appear to be a 1:1 mapping.
24In fact, it appeared to be an m:n mapping between the _HID and actual
25hardware type.
10 26
11Detection 27Detection
12--------- 28---------
@@ -20,9 +36,13 @@ If the E6 report is successful, the touchpad model is identified using the "E7
20report" sequence: E8-E7-E7-E7-E9. The response is the model signature and is 36report" sequence: E8-E7-E7-E7-E9. The response is the model signature and is
21matched against known models in the alps_model_data_array. 37matched against known models in the alps_model_data_array.
22 38
23With protocol versions 3 and 4, the E7 report model signature is always 39For older touchpads supporting protocol versions 3 and 4, the E7 report
2473-02-64. To differentiate between these versions, the response from the 40model signature is always 73-02-64. To differentiate between these
25"Enter Command Mode" sequence must be inspected as described below. 41versions, the response from the "Enter Command Mode" sequence must be
42inspected as described below.
43
44The new ALPS touchpads have an E7 signature of 73-03-50 or 73-03-0A but
45seem to be better differentiated by the EC Command Mode response.
26 46
27Command Mode 47Command Mode
28------------ 48------------
@@ -47,6 +67,14 @@ address of the register being read, and the third contains the value of the
47register. Registers are written by writing the value one nibble at a time 67register. Registers are written by writing the value one nibble at a time
48using the same encoding used for addresses. 68using the same encoding used for addresses.
49 69
70For the new ALPS touchpads, the EC command is used to enter command
71mode. The response in the new ALPS touchpads is significantly different,
72and more important in determining the behavior. This code has been
73separated from the original alps_model_data table and put in the
74alps_identify function. For example, there seem to be two hardware init
75sequences for the "Dolphin" touchpads as determined by the second byte
76of the EC response.
77
50Packet Format 78Packet Format
51------------- 79-------------
52 80
@@ -187,3 +215,28 @@ There are several things worth noting here.
187 well. 215 well.
188 216
189So far no v4 devices with tracksticks have been encountered. 217So far no v4 devices with tracksticks have been encountered.
218
219ALPS Absolute Mode - Protocol Version 5
220---------------------------------------
221This is basically Protocol Version 3 but with different logic for packet
222decode. It uses the same alps_process_touchpad_packet_v3 call with a
223specialized decode_fields function pointer to correctly interpret the
224packets. This appears to only be used by the Dolphin devices.
225
226For single-touch, the 6-byte packet format is:
227
228 byte 0: 1 1 0 0 1 0 0 0
229 byte 1: 0 x6 x5 x4 x3 x2 x1 x0
230 byte 2: 0 y6 y5 y4 y3 y2 y1 y0
231 byte 3: 0 M R L 1 m r l
232 byte 4: y10 y9 y8 y7 x10 x9 x8 x7
233 byte 5: 0 z6 z5 z4 z3 z2 z1 z0
234
235For mt, the format is:
236
237 byte 0: 1 1 1 n3 1 n2 n1 x24
238 byte 1: 1 y7 y6 y5 y4 y3 y2 y1
239 byte 2: ? x2 x1 y12 y11 y10 y9 y8
240 byte 3: 0 x23 x22 x21 x20 x19 x18 x17
241 byte 4: 0 x9 x8 x7 x6 x5 x4 x3
242 byte 5: 0 x16 x15 x14 x13 x12 x11 x10
diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt
index 3210540f8bd3..237acab169dd 100644
--- a/Documentation/ioctl/ioctl-number.txt
+++ b/Documentation/ioctl/ioctl-number.txt
@@ -131,6 +131,7 @@ Code Seq#(hex) Include File Comments
131'H' 40-4F sound/hdspm.h conflict! 131'H' 40-4F sound/hdspm.h conflict!
132'H' 40-4F sound/hdsp.h conflict! 132'H' 40-4F sound/hdsp.h conflict!
133'H' 90 sound/usb/usx2y/usb_stream.h 133'H' 90 sound/usb/usx2y/usb_stream.h
134'H' A0 uapi/linux/usb/cdc-wdm.h
134'H' C0-F0 net/bluetooth/hci.h conflict! 135'H' C0-F0 net/bluetooth/hci.h conflict!
135'H' C0-DF net/bluetooth/hidp/hidp.h conflict! 136'H' C0-DF net/bluetooth/hidp/hidp.h conflict!
136'H' C0-DF net/bluetooth/cmtp/cmtp.h conflict! 137'H' C0-DF net/bluetooth/cmtp/cmtp.h conflict!
diff --git a/Documentation/iostats.txt b/Documentation/iostats.txt
index c76c21d87e85..65f694f2d1c9 100644
--- a/Documentation/iostats.txt
+++ b/Documentation/iostats.txt
@@ -71,6 +71,8 @@ Field 4 -- # of milliseconds spent reading
71 measured from __make_request() to end_that_request_last()). 71 measured from __make_request() to end_that_request_last()).
72Field 5 -- # of writes completed 72Field 5 -- # of writes completed
73 This is the total number of writes completed successfully. 73 This is the total number of writes completed successfully.
74Field 6 -- # of writes merged
75 See the description of field 2.
74Field 7 -- # of sectors written 76Field 7 -- # of sectors written
75 This is the total number of sectors written successfully. 77 This is the total number of sectors written successfully.
76Field 8 -- # of milliseconds spent writing 78Field 8 -- # of milliseconds spent writing
diff --git a/Documentation/kbuild/kconfig.txt b/Documentation/kbuild/kconfig.txt
index b8b77bbc784f..3f429ed8b3b8 100644
--- a/Documentation/kbuild/kconfig.txt
+++ b/Documentation/kbuild/kconfig.txt
@@ -90,6 +90,42 @@ disable the options that are explicitly listed in the specified
90mini-config files. 90mini-config files.
91 91
92______________________________________________________________________ 92______________________________________________________________________
93Environment variables for 'randconfig'
94
95KCONFIG_SEED
96--------------------------------------------------
97You can set this to the integer value used to seed the RNG, if you want
98to somehow debug the behaviour of the kconfig parser/frontends.
99If not set, the current time will be used.
100
101KCONFIG_PROBABILITY
102--------------------------------------------------
103This variable can be used to skew the probabilities. This variable can
104be unset or empty, or set to three different formats:
105 KCONFIG_PROBABILITY y:n split y:m:n split
106 -----------------------------------------------------------------
107 unset or empty 50 : 50 33 : 33 : 34
108 N N : 100-N N/2 : N/2 : 100-N
109 [1] N:M N+M : 100-(N+M) N : M : 100-(N+M)
110 [2] N:M:L N : 100-N M : L : 100-(M+L)
111
112where N, M and L are integers (in base 10) in the range [0,100], and so
113that:
114 [1] N+M is in the range [0,100]
115 [2] M+L is in the range [0,100]
116
117Examples:
118 KCONFIG_PROBABILITY=10
119 10% of booleans will be set to 'y', 90% to 'n'
120 5% of tristates will be set to 'y', 5% to 'm', 90% to 'n'
121 KCONFIG_PROBABILITY=15:25
122 40% of booleans will be set to 'y', 60% to 'n'
123 15% of tristates will be set to 'y', 25% to 'm', 60% to 'n'
124 KCONFIG_PROBABILITY=10:15:15
125 10% of booleans will be set to 'y', 90% to 'n'
126 15% of tristates will be set to 'y', 15% to 'm', 70% to 'n'
127
128______________________________________________________________________
93Environment variables for 'silentoldconfig' 129Environment variables for 'silentoldconfig'
94 130
95KCONFIG_NOSILENTUPDATE 131KCONFIG_NOSILENTUPDATE
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt
index 5198b742fde1..d567a7cc552b 100644
--- a/Documentation/kbuild/makefiles.txt
+++ b/Documentation/kbuild/makefiles.txt
@@ -593,7 +593,7 @@ more details, with real examples.
593 593
594 Example: 594 Example:
595 #Makefile 595 #Makefile
596 LDFLAGS_vmlinux += $(call really-ld-option, -X) 596 LDFLAGS_vmlinux += $(call ld-option, -X)
597 597
598 598
599=== 4 Host Program support 599=== 4 Host Program support
@@ -921,8 +921,9 @@ When kbuild executes, the following steps are followed (roughly):
921 Often, the KBUILD_CFLAGS variable depends on the configuration. 921 Often, the KBUILD_CFLAGS variable depends on the configuration.
922 922
923 Example: 923 Example:
924 #arch/x86/Makefile 924 #arch/x86/boot/compressed/Makefile
925 cflags-$(CONFIG_M386) += -march=i386 925 cflags-$(CONFIG_X86_32) := -march=i386
926 cflags-$(CONFIG_X86_64) := -mcmodel=small
926 KBUILD_CFLAGS += $(cflags-y) 927 KBUILD_CFLAGS += $(cflags-y)
927 928
928 Many arch Makefiles dynamically run the target C compiler to 929 Many arch Makefiles dynamically run the target C compiler to
diff --git a/Documentation/kdump/kdump.txt b/Documentation/kdump/kdump.txt
index 13f1aa09b938..9c7fd988e299 100644
--- a/Documentation/kdump/kdump.txt
+++ b/Documentation/kdump/kdump.txt
@@ -297,6 +297,7 @@ Boot into System Kernel
297 On ia64, 256M@256M is a generous value that typically works. 297 On ia64, 256M@256M is a generous value that typically works.
298 The region may be automatically placed on ia64, see the 298 The region may be automatically placed on ia64, see the
299 dump-capture kernel config option notes above. 299 dump-capture kernel config option notes above.
300 If use sparse memory, the size should be rounded to GRANULE boundaries.
300 301
301 On s390x, typically use "crashkernel=xxM". The value of xx is dependent 302 On s390x, typically use "crashkernel=xxM". The value of xx is dependent
302 on the memory consumption of the kdump system. In general this is not 303 on the memory consumption of the kdump system. In general this is not
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 4609e81dbc37..c3bfacb92910 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -44,6 +44,8 @@ parameter is applicable:
44 AVR32 AVR32 architecture is enabled. 44 AVR32 AVR32 architecture is enabled.
45 AX25 Appropriate AX.25 support is enabled. 45 AX25 Appropriate AX.25 support is enabled.
46 BLACKFIN Blackfin architecture is enabled. 46 BLACKFIN Blackfin architecture is enabled.
47 CLK Common clock infrastructure is enabled.
48 CMA Contiguous Memory Area support is enabled.
47 DRM Direct Rendering Management support is enabled. 49 DRM Direct Rendering Management support is enabled.
48 DYNAMIC_DEBUG Build in debug messages and enable them at runtime 50 DYNAMIC_DEBUG Build in debug messages and enable them at runtime
49 EDD BIOS Enhanced Disk Drive Services (EDD) is enabled 51 EDD BIOS Enhanced Disk Drive Services (EDD) is enabled
@@ -320,6 +322,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
320 on: enable for both 32- and 64-bit processes 322 on: enable for both 32- and 64-bit processes
321 off: disable for both 32- and 64-bit processes 323 off: disable for both 32- and 64-bit processes
322 324
325 alloc_snapshot [FTRACE]
326 Allocate the ftrace snapshot buffer on boot up when the
327 main buffer is allocated. This is handy if debugging
328 and you need to use tracing_snapshot() on boot up, and
329 do not want to use tracing_snapshot_alloc() as it needs
330 to be done where GFP_KERNEL allocations are allowed.
331
323 amd_iommu= [HW,X86-64] 332 amd_iommu= [HW,X86-64]
324 Pass parameters to the AMD IOMMU driver in the system. 333 Pass parameters to the AMD IOMMU driver in the system.
325 Possible values are: 334 Possible values are:
@@ -465,6 +474,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
465 474
466 cio_ignore= [S390] 475 cio_ignore= [S390]
467 See Documentation/s390/CommonIO for details. 476 See Documentation/s390/CommonIO for details.
477 clk_ignore_unused
478 [CLK]
479 Keep all clocks already enabled by bootloader on,
480 even if no driver has claimed them. This is useful
481 for debug and development, but should not be
482 needed on a platform with proper driver support.
483 For more information, see Documentation/clk.txt.
468 484
469 clock= [BUGS=X86-32, HW] gettimeofday clocksource override. 485 clock= [BUGS=X86-32, HW] gettimeofday clocksource override.
470 [Deprecated] 486 [Deprecated]
@@ -596,9 +612,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
596 is selected automatically. Check 612 is selected automatically. Check
597 Documentation/kdump/kdump.txt for further details. 613 Documentation/kdump/kdump.txt for further details.
598 614
599 crashkernel_low=size[KMG]
600 [KNL, x86] parts under 4G.
601
602 crashkernel=range1:size1[,range2:size2,...][@offset] 615 crashkernel=range1:size1[,range2:size2,...][@offset]
603 [KNL] Same as above, but depends on the memory 616 [KNL] Same as above, but depends on the memory
604 in the running system. The syntax of range is 617 in the running system. The syntax of range is
@@ -606,6 +619,26 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
606 a memory unit (amount[KMG]). See also 619 a memory unit (amount[KMG]). See also
607 Documentation/kdump/kdump.txt for an example. 620 Documentation/kdump/kdump.txt for an example.
608 621
622 crashkernel=size[KMG],high
623 [KNL, x86_64] range could be above 4G. Allow kernel
624 to allocate physical memory region from top, so could
625 be above 4G if system have more than 4G ram installed.
626 Otherwise memory region will be allocated below 4G, if
627 available.
628 It will be ignored if crashkernel=X is specified.
629 crashkernel=size[KMG],low
630 [KNL, x86_64] range under 4G. When crashkernel=X,high
631 is passed, kernel could allocate physical memory region
632 above 4G, that cause second kernel crash on system
633 that require some amount of low memory, e.g. swiotlb
634 requires at least 64M+32K low memory. Kernel would
635 try to allocate 72M below 4G automatically.
636 This one let user to specify own low range under 4G
637 for second kernel instead.
638 0: to disable low allocation.
639 It will be ignored when crashkernel=X,high is not used
640 or memory reserved is below 4G.
641
609 cs89x0_dma= [HW,NET] 642 cs89x0_dma= [HW,NET]
610 Format: <dma> 643 Format: <dma>
611 644
@@ -757,19 +790,31 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
757 (mmio) or 32-bit (mmio32). 790 (mmio) or 32-bit (mmio32).
758 The options are the same as for ttyS, above. 791 The options are the same as for ttyS, above.
759 792
760 earlyprintk= [X86,SH,BLACKFIN] 793 earlyprintk= [X86,SH,BLACKFIN,ARM]
761 earlyprintk=vga 794 earlyprintk=vga
762 earlyprintk=xen 795 earlyprintk=xen
763 earlyprintk=serial[,ttySn[,baudrate]] 796 earlyprintk=serial[,ttySn[,baudrate]]
797 earlyprintk=serial[,0x...[,baudrate]]
764 earlyprintk=ttySn[,baudrate] 798 earlyprintk=ttySn[,baudrate]
765 earlyprintk=dbgp[debugController#] 799 earlyprintk=dbgp[debugController#]
766 800
801 earlyprintk is useful when the kernel crashes before
802 the normal console is initialized. It is not enabled by
803 default because it has some cosmetic problems.
804
767 Append ",keep" to not disable it when the real console 805 Append ",keep" to not disable it when the real console
768 takes over. 806 takes over.
769 807
770 Only vga or serial or usb debug port at a time. 808 Only vga or serial or usb debug port at a time.
771 809
772 Currently only ttyS0 and ttyS1 are supported. 810 Currently only ttyS0 and ttyS1 may be specified by
811 name. Other I/O ports may be explicitly specified
812 on some architectures (x86 and arm at least) by
813 replacing ttySn with an I/O port address, like this:
814 earlyprintk=serial,0x1008,115200
815 You can find the port for a given device in
816 /proc/tty/driver/serial:
817 2: uart:ST16650V2 port:00001008 irq:18 ...
773 818
774 Interaction with the standard serial driver is not 819 Interaction with the standard serial driver is not
775 very good. 820 very good.
@@ -788,6 +833,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
788 edd= [EDD] 833 edd= [EDD]
789 Format: {"off" | "on" | "skip[mbr]"} 834 Format: {"off" | "on" | "skip[mbr]"}
790 835
836 efi_no_storage_paranoia [EFI; X86]
837 Using this parameter you can use more than 50% of
838 your efi variable storage. Use this parameter only if
839 you are really sure that your UEFI does sane gc and
840 fulfills the spec otherwise your board may brick.
841
791 eisa_irq_edge= [PARISC,HW] 842 eisa_irq_edge= [PARISC,HW]
792 See header of drivers/parisc/eisa.c. 843 See header of drivers/parisc/eisa.c.
793 844
@@ -1226,6 +1277,20 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
1226 1277
1227 iucv= [HW,NET] 1278 iucv= [HW,NET]
1228 1279
1280 ivrs_ioapic [HW,X86_64]
1281 Provide an override to the IOAPIC-ID<->DEVICE-ID
1282 mapping provided in the IVRS ACPI table. For
1283 example, to map IOAPIC-ID decimal 10 to
1284 PCI device 00:14.0 write the parameter as:
1285 ivrs_ioapic[10]=00:14.0
1286
1287 ivrs_hpet [HW,X86_64]
1288 Provide an override to the HPET-ID<->DEVICE-ID
1289 mapping provided in the IVRS ACPI table. For
1290 example, to map HPET-ID decimal 0 to
1291 PCI device 00:14.0 write the parameter as:
1292 ivrs_hpet[0]=00:14.0
1293
1229 js= [HW,JOY] Analog joystick 1294 js= [HW,JOY] Analog joystick
1230 See Documentation/input/joystick.txt. 1295 See Documentation/input/joystick.txt.
1231 1296
@@ -1625,7 +1690,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
1625 module.sig_enforce 1690 module.sig_enforce
1626 [KNL] When CONFIG_MODULE_SIG is set, this means that 1691 [KNL] When CONFIG_MODULE_SIG is set, this means that
1627 modules without (valid) signatures will fail to load. 1692 modules without (valid) signatures will fail to load.
1628 Note that if CONFIG_MODULE_SIG_ENFORCE is set, that 1693 Note that if CONFIG_MODULE_SIG_FORCE is set, that
1629 is always true, so this option does nothing. 1694 is always true, so this option does nothing.
1630 1695
1631 mousedev.tap_time= 1696 mousedev.tap_time=
@@ -1913,6 +1978,14 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
1913 Valid arguments: on, off 1978 Valid arguments: on, off
1914 Default: on 1979 Default: on
1915 1980
1981 nohz_full= [KNL,BOOT]
1982 In kernels built with CONFIG_NO_HZ_FULL=y, set
1983 the specified list of CPUs whose tick will be stopped
1984 whenever possible. The boot CPU will be forced outside
1985 the range to maintain the timekeeping.
1986 The CPUs in this range must also be included in the
1987 rcu_nocbs= set.
1988
1916 noiotrap [SH] Disables trapped I/O port accesses. 1989 noiotrap [SH] Disables trapped I/O port accesses.
1917 1990
1918 noirqdebug [X86-32] Disables the code which attempts to detect and 1991 noirqdebug [X86-32] Disables the code which attempts to detect and
@@ -1974,8 +2047,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
1974 noreplace-smp [X86-32,SMP] Don't replace SMP instructions 2047 noreplace-smp [X86-32,SMP] Don't replace SMP instructions
1975 with UP alternatives 2048 with UP alternatives
1976 2049
1977 noresidual [PPC] Don't use residual data on PReP machines.
1978
1979 nordrand [X86] Disable the direct use of the RDRAND 2050 nordrand [X86] Disable the direct use of the RDRAND
1980 instruction even if it is supported by the 2051 instruction even if it is supported by the
1981 processor. RDRAND is still available to user 2052 processor. RDRAND is still available to user
@@ -2461,9 +2532,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2461 In kernels built with CONFIG_RCU_NOCB_CPU=y, set 2532 In kernels built with CONFIG_RCU_NOCB_CPU=y, set
2462 the specified list of CPUs to be no-callback CPUs. 2533 the specified list of CPUs to be no-callback CPUs.
2463 Invocation of these CPUs' RCU callbacks will 2534 Invocation of these CPUs' RCU callbacks will
2464 be offloaded to "rcuoN" kthreads created for 2535 be offloaded to "rcuox/N" kthreads created for
2465 that purpose. This reduces OS jitter on the 2536 that purpose, where "x" is "b" for RCU-bh, "p"
2537 for RCU-preempt, and "s" for RCU-sched, and "N"
2538 is the CPU number. This reduces OS jitter on the
2466 offloaded CPUs, which can be useful for HPC and 2539 offloaded CPUs, which can be useful for HPC and
2540
2467 real-time workloads. It can also improve energy 2541 real-time workloads. It can also improve energy
2468 efficiency for asymmetric multiprocessors. 2542 efficiency for asymmetric multiprocessors.
2469 2543
@@ -2487,6 +2561,17 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2487 leaf rcu_node structure. Useful for very large 2561 leaf rcu_node structure. Useful for very large
2488 systems. 2562 systems.
2489 2563
2564 rcutree.jiffies_till_first_fqs= [KNL,BOOT]
2565 Set delay from grace-period initialization to
2566 first attempt to force quiescent states.
2567 Units are jiffies, minimum value is zero,
2568 and maximum value is HZ.
2569
2570 rcutree.jiffies_till_next_fqs= [KNL,BOOT]
2571 Set delay between subsequent attempts to force
2572 quiescent states. Units are jiffies, minimum
2573 value is one, and maximum value is HZ.
2574
2490 rcutree.qhimark= [KNL,BOOT] 2575 rcutree.qhimark= [KNL,BOOT]
2491 Set threshold of queued 2576 Set threshold of queued
2492 RCU callbacks over which batch limiting is disabled. 2577 RCU callbacks over which batch limiting is disabled.
@@ -2501,16 +2586,15 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2501 rcutree.rcu_cpu_stall_timeout= [KNL,BOOT] 2586 rcutree.rcu_cpu_stall_timeout= [KNL,BOOT]
2502 Set timeout for RCU CPU stall warning messages. 2587 Set timeout for RCU CPU stall warning messages.
2503 2588
2504 rcutree.jiffies_till_first_fqs= [KNL,BOOT] 2589 rcutree.rcu_idle_gp_delay= [KNL,BOOT]
2505 Set delay from grace-period initialization to 2590 Set wakeup interval for idle CPUs that have
2506 first attempt to force quiescent states. 2591 RCU callbacks (RCU_FAST_NO_HZ=y).
2507 Units are jiffies, minimum value is zero,
2508 and maximum value is HZ.
2509 2592
2510 rcutree.jiffies_till_next_fqs= [KNL,BOOT] 2593 rcutree.rcu_idle_lazy_gp_delay= [KNL,BOOT]
2511 Set delay between subsequent attempts to force 2594 Set wakeup interval for idle CPUs that have
2512 quiescent states. Units are jiffies, minimum 2595 only "lazy" RCU callbacks (RCU_FAST_NO_HZ=y).
2513 value is one, and maximum value is HZ. 2596 Lazy RCU callbacks are those which RCU can
2597 prove do nothing more than free memory.
2514 2598
2515 rcutorture.fqs_duration= [KNL,BOOT] 2599 rcutorture.fqs_duration= [KNL,BOOT]
2516 Set duration of force_quiescent_state bursts. 2600 Set duration of force_quiescent_state bursts.
@@ -2663,6 +2747,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2663 Useful for devices that are detected asynchronously 2747 Useful for devices that are detected asynchronously
2664 (e.g. USB and MMC devices). 2748 (e.g. USB and MMC devices).
2665 2749
2750 rproc_mem=nn[KMG][@address]
2751 [KNL,ARM,CMA] Remoteproc physical memory block.
2752 Memory area to be used by remote processor image,
2753 managed by CMA.
2754
2666 rw [KNL] Mount root device read-write on boot 2755 rw [KNL] Mount root device read-write on boot
2667 2756
2668 S [KNL] Run init in single mode 2757 S [KNL] Run init in single mode
@@ -3222,6 +3311,15 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
3222 or other driver-specific files in the 3311 or other driver-specific files in the
3223 Documentation/watchdog/ directory. 3312 Documentation/watchdog/ directory.
3224 3313
3314 workqueue.disable_numa
3315 By default, all work items queued to unbound
3316 workqueues are affine to the NUMA nodes they're
3317 issued on, which results in better behavior in
3318 general. If NUMA affinity needs to be disabled for
3319 whatever reason, this option can be used. Note
3320 that this also can be controlled per-workqueue for
3321 workqueues visible under /sys/bus/workqueue/.
3322
3225 x2apic_phys [X86-64,APIC] Use x2apic physical mode instead of 3323 x2apic_phys [X86-64,APIC] Use x2apic physical mode instead of
3226 default x2apic cluster mode on platforms 3324 default x2apic cluster mode on platforms
3227 supporting x2apic. 3325 supporting x2apic.
diff --git a/Documentation/leds/00-INDEX b/Documentation/leds/00-INDEX
index 5246090ef15c..1ecd1596633e 100644
--- a/Documentation/leds/00-INDEX
+++ b/Documentation/leds/00-INDEX
@@ -6,6 +6,8 @@ leds-lp5521.txt
6 - notes on how to use the leds-lp5521 driver. 6 - notes on how to use the leds-lp5521 driver.
7leds-lp5523.txt 7leds-lp5523.txt
8 - notes on how to use the leds-lp5523 driver. 8 - notes on how to use the leds-lp5523 driver.
9leds-lp5562.txt
10 - notes on how to use the leds-lp5562 driver.
9leds-lp55xx.txt 11leds-lp55xx.txt
10 - description about lp55xx common driver. 12 - description about lp55xx common driver.
11leds-lm3556.txt 13leds-lm3556.txt
diff --git a/Documentation/leds/leds-lp5521.txt b/Documentation/leds/leds-lp5521.txt
index 270f57196339..79e4c2e6e5e8 100644
--- a/Documentation/leds/leds-lp5521.txt
+++ b/Documentation/leds/leds-lp5521.txt
@@ -81,22 +81,3 @@ static struct lp55xx_platform_data lp5521_platform_data = {
81 81
82If the current is set to 0 in the platform data, that channel is 82If the current is set to 0 in the platform data, that channel is
83disabled and it is not visible in the sysfs. 83disabled and it is not visible in the sysfs.
84
85The 'update_config' : CONFIG register (ADDR 08h)
86This value is platform-specific data.
87If update_config is not defined, the CONFIG register is set with
88'LP5521_PWRSAVE_EN | LP5521_CP_MODE_AUTO | LP5521_R_TO_BATT'.
89(Enable auto-powersave, set charge pump to auto, red to battery)
90
91example of update_config :
92
93#define LP5521_CONFIGS (LP5521_PWM_HF | LP5521_PWRSAVE_EN | \
94 LP5521_CP_MODE_AUTO | LP5521_R_TO_BATT | \
95 LP5521_CLK_INT)
96
97static struct lp55xx_platform_data lp5521_pdata = {
98 .led_config = lp5521_led_config,
99 .num_channels = ARRAY_SIZE(lp5521_led_config),
100 .clock_mode = LP55XX_CLOCK_INT,
101 .update_config = LP5521_CONFIGS,
102};
diff --git a/Documentation/leds/leds-lp5562.txt b/Documentation/leds/leds-lp5562.txt
new file mode 100644
index 000000000000..5a823ff6b393
--- /dev/null
+++ b/Documentation/leds/leds-lp5562.txt
@@ -0,0 +1,120 @@
1Kernel driver for LP5562
2========================
3
4* TI LP5562 LED Driver
5
6Author: Milo(Woogyom) Kim <milo.kim@ti.com>
7
8Description
9
10 LP5562 can drive up to 4 channels. R/G/B and White.
11 LEDs can be controlled directly via the led class control interface.
12
13 All four channels can be also controlled using the engine micro programs.
14 LP5562 has the internal program memory for running various LED patterns.
15 For the details, please refer to 'firmware' section in leds-lp55xx.txt
16
17Device attribute: engine_mux
18
19 3 Engines are allocated in LP5562, but the number of channel is 4.
20 Therefore each channel should be mapped to the engine number.
21 Value : RGB or W
22
23 This attribute is used for programming LED data with the firmware interface.
24 Unlike the LP5521/LP5523/55231, LP5562 has unique feature for the engine mux,
25 so additional sysfs is required.
26
27 LED Map
28 Red ... Engine 1 (fixed)
29 Green ... Engine 2 (fixed)
30 Blue ... Engine 3 (fixed)
31 White ... Engine 1 or 2 or 3 (selective)
32
33How to load the program data using engine_mux
34
35 Before loading the LP5562 program data, engine_mux should be written between
36 the engine selection and loading the firmware.
37 Engine mux has two different mode, RGB and W.
38 RGB is used for loading RGB program data, W is used for W program data.
39
40 For example, run blinking green channel pattern,
41 echo 2 > /sys/bus/i2c/devices/xxxx/select_engine # 2 is for green channel
42 echo "RGB" > /sys/bus/i2c/devices/xxxx/engine_mux # engine mux for RGB
43 echo 1 > /sys/class/firmware/lp5562/loading
44 echo "4000600040FF6000" > /sys/class/firmware/lp5562/data
45 echo 0 > /sys/class/firmware/lp5562/loading
46 echo 1 > /sys/bus/i2c/devices/xxxx/run_engine
47
48 To run a blinking white pattern,
49 echo 1 or 2 or 3 > /sys/bus/i2c/devices/xxxx/select_engine
50 echo "W" > /sys/bus/i2c/devices/xxxx/engine_mux
51 echo 1 > /sys/class/firmware/lp5562/loading
52 echo "4000600040FF6000" > /sys/class/firmware/lp5562/data
53 echo 0 > /sys/class/firmware/lp5562/loading
54 echo 1 > /sys/bus/i2c/devices/xxxx/run_engine
55
56How to load the predefined patterns
57
58 Please refer to 'leds-lp55xx.txt"
59
60Setting Current of Each Channel
61
62 Like LP5521 and LP5523/55231, LP5562 provides LED current settings.
63 The 'led_current' and 'max_current' are used.
64
65(Example of Platform data)
66
67To configure the platform specific data, lp55xx_platform_data structure is used.
68
69static struct lp55xx_led_config lp5562_led_config[] = {
70 {
71 .name = "R",
72 .chan_nr = 0,
73 .led_current = 20,
74 .max_current = 40,
75 },
76 {
77 .name = "G",
78 .chan_nr = 1,
79 .led_current = 20,
80 .max_current = 40,
81 },
82 {
83 .name = "B",
84 .chan_nr = 2,
85 .led_current = 20,
86 .max_current = 40,
87 },
88 {
89 .name = "W",
90 .chan_nr = 3,
91 .led_current = 20,
92 .max_current = 40,
93 },
94};
95
96static int lp5562_setup(void)
97{
98 /* setup HW resources */
99}
100
101static void lp5562_release(void)
102{
103 /* Release HW resources */
104}
105
106static void lp5562_enable(bool state)
107{
108 /* Control of chip enable signal */
109}
110
111static struct lp55xx_platform_data lp5562_platform_data = {
112 .led_config = lp5562_led_config,
113 .num_channels = ARRAY_SIZE(lp5562_led_config),
114 .setup_resources = lp5562_setup,
115 .release_resources = lp5562_release,
116 .enable = lp5562_enable,
117};
118
119If the current is set to 0 in the platform data, that channel is
120disabled and it is not visible in the sysfs.
diff --git a/Documentation/leds/leds-lp55xx.txt b/Documentation/leds/leds-lp55xx.txt
index ced41868d2d1..eec8fa2ffe4e 100644
--- a/Documentation/leds/leds-lp55xx.txt
+++ b/Documentation/leds/leds-lp55xx.txt
@@ -5,7 +5,7 @@ Authors: Milo(Woogyom) Kim <milo.kim@ti.com>
5 5
6Description 6Description
7----------- 7-----------
8LP5521, LP5523/55231 have common features as below. 8LP5521, LP5523/55231 and LP5562 have common features as below.
9 9
10 Register access via the I2C 10 Register access via the I2C
11 Device initialization/deinitialization 11 Device initialization/deinitialization
@@ -116,3 +116,47 @@ To support this, 'run_engine' and 'firmware_cb' are configurable in each driver.
116run_engine : Control the selected engine 116run_engine : Control the selected engine
117firmware_cb : The callback function after loading the firmware is done. 117firmware_cb : The callback function after loading the firmware is done.
118 Chip specific commands for loading and updating program memory. 118 Chip specific commands for loading and updating program memory.
119
120( Predefined pattern data )
121
122Without the firmware interface, LP55xx driver provides another method for
123loading a LED pattern. That is 'predefined' pattern.
124A predefined pattern is defined in the platform data and load it(or them)
125via the sysfs if needed.
126To use the predefined pattern concept, 'patterns' and 'num_patterns' should be
127configured.
128
129 Example of predefined pattern data:
130
131 /* mode_1: blinking data */
132 static const u8 mode_1[] = {
133 0x40, 0x00, 0x60, 0x00, 0x40, 0xFF, 0x60, 0x00,
134 };
135
136 /* mode_2: always on */
137 static const u8 mode_2[] = { 0x40, 0xFF, };
138
139 struct lp55xx_predef_pattern board_led_patterns[] = {
140 {
141 .r = mode_1,
142 .size_r = ARRAY_SIZE(mode_1),
143 },
144 {
145 .b = mode_2,
146 .size_b = ARRAY_SIZE(mode_2),
147 },
148 }
149
150 struct lp55xx_platform_data lp5562_pdata = {
151 ...
152 .patterns = board_led_patterns,
153 .num_patterns = ARRAY_SIZE(board_led_patterns),
154 };
155
156Then, mode_1 and mode_2 can be run via through the sysfs.
157
158 echo 1 > /sys/bus/i2c/devices/xxxx/led_pattern # red blinking LED pattern
159 echo 2 > /sys/bus/i2c/devices/xxxx/led_pattern # blue LED always on
160
161To stop running pattern,
162 echo 0 > /sys/bus/i2c/devices/xxxx/led_pattern
diff --git a/Documentation/md.txt b/Documentation/md.txt
index 993fba37b7d1..e0ddd327632d 100644
--- a/Documentation/md.txt
+++ b/Documentation/md.txt
@@ -119,7 +119,7 @@ device to add.
119The array is started with the RUN_ARRAY ioctl. 119The array is started with the RUN_ARRAY ioctl.
120 120
121Once started, new devices can be added. They should have an 121Once started, new devices can be added. They should have an
122appropriate superblock written to them, and then passed be in with 122appropriate superblock written to them, and then be passed in with
123ADD_NEW_DISK. 123ADD_NEW_DISK.
124 124
125Devices that have failed or are not yet active can be detached from an 125Devices that have failed or are not yet active can be detached from an
@@ -131,7 +131,7 @@ Specific Rules that apply to format-0 super block arrays, and
131------------------------------------------------------------- 131-------------------------------------------------------------
132 132
133An array can be 'created' by describing the array (level, chunksize 133An array can be 'created' by describing the array (level, chunksize
134etc) in a SET_ARRAY_INFO ioctl. This must has major_version==0 and 134etc) in a SET_ARRAY_INFO ioctl. This must have major_version==0 and
135raid_disks != 0. 135raid_disks != 0.
136 136
137Then uninitialized devices can be added with ADD_NEW_DISK. The 137Then uninitialized devices can be added with ADD_NEW_DISK. The
@@ -426,7 +426,7 @@ Each directory contains:
426 offset 426 offset
427 This gives the location in the device (in sectors from the 427 This gives the location in the device (in sectors from the
428 start) where data from the array will be stored. Any part of 428 start) where data from the array will be stored. Any part of
429 the device before this offset us not touched, unless it is 429 the device before this offset is not touched, unless it is
430 used for storing metadata (Formats 1.1 and 1.2). 430 used for storing metadata (Formats 1.1 and 1.2).
431 431
432 size 432 size
@@ -440,7 +440,7 @@ Each directory contains:
440 When the device is not 'in_sync', this records the number of 440 When the device is not 'in_sync', this records the number of
441 sectors from the start of the device which are known to be 441 sectors from the start of the device which are known to be
442 correct. This is normally zero, but during a recovery 442 correct. This is normally zero, but during a recovery
443 operation is will steadily increase, and if the recovery is 443 operation it will steadily increase, and if the recovery is
444 interrupted, restoring this value can cause recovery to 444 interrupted, restoring this value can cause recovery to
445 avoid repeating the earlier blocks. With v1.x metadata, this 445 avoid repeating the earlier blocks. With v1.x metadata, this
446 value is saved and restored automatically. 446 value is saved and restored automatically.
@@ -468,7 +468,7 @@ Each directory contains:
468 468
469 469
470 470
471An active md device will also contain and entry for each active device 471An active md device will also contain an entry for each active device
472in the array. These are named 472in the array. These are named
473 473
474 rdNN 474 rdNN
@@ -482,7 +482,7 @@ will show 'in_sync' on every line.
482 482
483 483
484 484
485Active md devices for levels that support data redundancy (1,4,5,6) 485Active md devices for levels that support data redundancy (1,4,5,6,10)
486also have 486also have
487 487
488 sync_action 488 sync_action
@@ -494,7 +494,7 @@ also have
494 failed/missing device 494 failed/missing device
495 idle - nothing is happening 495 idle - nothing is happening
496 check - A full check of redundancy was requested and is 496 check - A full check of redundancy was requested and is
497 happening. This reads all block and checks 497 happening. This reads all blocks and checks
498 them. A repair may also happen for some raid 498 them. A repair may also happen for some raid
499 levels. 499 levels.
500 repair - A full check and repair is happening. This is 500 repair - A full check and repair is happening. This is
@@ -522,7 +522,7 @@ also have
522 522
523 degraded 523 degraded
524 This contains a count of the number of devices by which the 524 This contains a count of the number of devices by which the
525 arrays is degraded. So an optimal array with show '0'. A 525 arrays is degraded. So an optimal array will show '0'. A
526 single failed/missing drive will show '1', etc. 526 single failed/missing drive will show '1', etc.
527 This file responds to select/poll, any increase or decrease 527 This file responds to select/poll, any increase or decrease
528 in the count of missing devices will trigger an event. 528 in the count of missing devices will trigger an event.
diff --git a/Documentation/misc-devices/mei/mei-client-bus.txt b/Documentation/misc-devices/mei/mei-client-bus.txt
new file mode 100644
index 000000000000..f83910a8ce76
--- /dev/null
+++ b/Documentation/misc-devices/mei/mei-client-bus.txt
@@ -0,0 +1,138 @@
1Intel(R) Management Engine (ME) Client bus API
2===============================================
3
4
5Rationale
6=========
7MEI misc character device is useful for dedicated applications to send and receive
8data to the many FW appliance found in Intel's ME from the user space.
9However for some of the ME functionalities it make sense to leverage existing software
10stack and expose them through existing kernel subsystems.
11
12In order to plug seamlessly into the kernel device driver model we add kernel virtual
13bus abstraction on top of the MEI driver. This allows implementing linux kernel drivers
14for the various MEI features as a stand alone entities found in their respective subsystem.
15Existing device drivers can even potentially be re-used by adding an MEI CL bus layer to
16the existing code.
17
18
19MEI CL bus API
20===========
21A driver implementation for an MEI Client is very similar to existing bus
22based device drivers. The driver registers itself as an MEI CL bus driver through
23the mei_cl_driver structure:
24
25struct mei_cl_driver {
26 struct device_driver driver;
27 const char *name;
28
29 const struct mei_cl_device_id *id_table;
30
31 int (*probe)(struct mei_cl_device *dev, const struct mei_cl_id *id);
32 int (*remove)(struct mei_cl_device *dev);
33};
34
35struct mei_cl_id {
36 char name[MEI_NAME_SIZE];
37 kernel_ulong_t driver_info;
38};
39
40The mei_cl_id structure allows the driver to bind itself against a device name.
41
42To actually register a driver on the ME Client bus one must call the mei_cl_add_driver()
43API. This is typically called at module init time.
44
45Once registered on the ME Client bus, a driver will typically try to do some I/O on
46this bus and this should be done through the mei_cl_send() and mei_cl_recv()
47routines. The latter is synchronous (blocks and sleeps until data shows up).
48In order for drivers to be notified of pending events waiting for them (e.g.
49an Rx event) they can register an event handler through the
50mei_cl_register_event_cb() routine. Currently only the MEI_EVENT_RX event
51will trigger an event handler call and the driver implementation is supposed
52to call mei_recv() from the event handler in order to fetch the pending
53received buffers.
54
55
56Example
57=======
58As a theoretical example let's pretend the ME comes with a "contact" NFC IP.
59The driver init and exit routines for this device would look like:
60
61#define CONTACT_DRIVER_NAME "contact"
62
63static struct mei_cl_device_id contact_mei_cl_tbl[] = {
64 { CONTACT_DRIVER_NAME, },
65
66 /* required last entry */
67 { }
68};
69MODULE_DEVICE_TABLE(mei_cl, contact_mei_cl_tbl);
70
71static struct mei_cl_driver contact_driver = {
72 .id_table = contact_mei_tbl,
73 .name = CONTACT_DRIVER_NAME,
74
75 .probe = contact_probe,
76 .remove = contact_remove,
77};
78
79static int contact_init(void)
80{
81 int r;
82
83 r = mei_cl_driver_register(&contact_driver);
84 if (r) {
85 pr_err(CONTACT_DRIVER_NAME ": driver registration failed\n");
86 return r;
87 }
88
89 return 0;
90}
91
92static void __exit contact_exit(void)
93{
94 mei_cl_driver_unregister(&contact_driver);
95}
96
97module_init(contact_init);
98module_exit(contact_exit);
99
100And the driver's simplified probe routine would look like that:
101
102int contact_probe(struct mei_cl_device *dev, struct mei_cl_device_id *id)
103{
104 struct contact_driver *contact;
105
106 [...]
107 mei_cl_enable_device(dev);
108
109 mei_cl_register_event_cb(dev, contact_event_cb, contact);
110
111 return 0;
112 }
113
114In the probe routine the driver first enable the MEI device and then registers
115an ME bus event handler which is as close as it can get to registering a
116threaded IRQ handler.
117The handler implementation will typically call some I/O routine depending on
118the pending events:
119
120#define MAX_NFC_PAYLOAD 128
121
122static void contact_event_cb(struct mei_cl_device *dev, u32 events,
123 void *context)
124{
125 struct contact_driver *contact = context;
126
127 if (events & BIT(MEI_EVENT_RX)) {
128 u8 payload[MAX_NFC_PAYLOAD];
129 int payload_size;
130
131 payload_size = mei_recv(dev, payload, MAX_NFC_PAYLOAD);
132 if (payload_size <= 0)
133 return;
134
135 /* Hook to the NFC subsystem */
136 nfc_hci_recv_frame(contact->hdev, payload, payload_size);
137 }
138}
diff --git a/Documentation/mmc/mmc-dev-attrs.txt b/Documentation/mmc/mmc-dev-attrs.txt
index 0d98fac8893b..189bab09255a 100644
--- a/Documentation/mmc/mmc-dev-attrs.txt
+++ b/Documentation/mmc/mmc-dev-attrs.txt
@@ -22,6 +22,7 @@ All attributes are read-only.
22 manfid Manufacturer ID (from CID Register) 22 manfid Manufacturer ID (from CID Register)
23 name Product Name (from CID Register) 23 name Product Name (from CID Register)
24 oemid OEM/Application ID (from CID Register) 24 oemid OEM/Application ID (from CID Register)
25 prv Product Revision (from CID Register) (SD and MMCv4 only)
25 serial Product Serial Number (from CID Register) 26 serial Product Serial Number (from CID Register)
26 erase_size Erase group size 27 erase_size Erase group size
27 preferred_erase_size Preferred erase size 28 preferred_erase_size Preferred erase size
diff --git a/Documentation/networking/ieee802154.txt b/Documentation/networking/ieee802154.txt
index 703cf4370c79..67a9cb259d40 100644
--- a/Documentation/networking/ieee802154.txt
+++ b/Documentation/networking/ieee802154.txt
@@ -71,8 +71,9 @@ submits skb to qdisc), so if you need something from that cb later, you should
71store info in the skb->data on your own. 71store info in the skb->data on your own.
72 72
73To hook the MLME interface you have to populate the ml_priv field of your 73To hook the MLME interface you have to populate the ml_priv field of your
74net_device with a pointer to struct ieee802154_mlme_ops instance. All fields are 74net_device with a pointer to struct ieee802154_mlme_ops instance. The fields
75required. 75assoc_req, assoc_resp, disassoc_req, start_req, and scan_req are optional.
76All other fields are required.
76 77
77We provide an example of simple HardMAC driver at drivers/ieee802154/fakehard.c 78We provide an example of simple HardMAC driver at drivers/ieee802154/fakehard.c
78 79
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
index dc2dc87d2557..f98ca633b528 100644
--- a/Documentation/networking/ip-sysctl.txt
+++ b/Documentation/networking/ip-sysctl.txt
@@ -29,7 +29,7 @@ route/max_size - INTEGER
29neigh/default/gc_thresh1 - INTEGER 29neigh/default/gc_thresh1 - INTEGER
30 Minimum number of entries to keep. Garbage collector will not 30 Minimum number of entries to keep. Garbage collector will not
31 purge entries if there are fewer than this number. 31 purge entries if there are fewer than this number.
32 Default: 256 32 Default: 128
33 33
34neigh/default/gc_thresh3 - INTEGER 34neigh/default/gc_thresh3 - INTEGER
35 Maximum number of neighbor entries allowed. Increase this 35 Maximum number of neighbor entries allowed. Increase this
@@ -175,14 +175,6 @@ tcp_congestion_control - STRING
175 is inherited. 175 is inherited.
176 [see setsockopt(listenfd, SOL_TCP, TCP_CONGESTION, "name" ...) ] 176 [see setsockopt(listenfd, SOL_TCP, TCP_CONGESTION, "name" ...) ]
177 177
178tcp_cookie_size - INTEGER
179 Default size of TCP Cookie Transactions (TCPCT) option, that may be
180 overridden on a per socket basis by the TCPCT socket option.
181 Values greater than the maximum (16) are interpreted as the maximum.
182 Values greater than zero and less than the minimum (8) are interpreted
183 as the minimum. Odd values are interpreted as the next even value.
184 Default: 0 (off).
185
186tcp_dsack - BOOLEAN 178tcp_dsack - BOOLEAN
187 Allows TCP to send "duplicate" SACKs. 179 Allows TCP to send "duplicate" SACKs.
188 180
@@ -190,7 +182,9 @@ tcp_early_retrans - INTEGER
190 Enable Early Retransmit (ER), per RFC 5827. ER lowers the threshold 182 Enable Early Retransmit (ER), per RFC 5827. ER lowers the threshold
191 for triggering fast retransmit when the amount of outstanding data is 183 for triggering fast retransmit when the amount of outstanding data is
192 small and when no previously unsent data can be transmitted (such 184 small and when no previously unsent data can be transmitted (such
193 that limited transmit could be used). 185 that limited transmit could be used). Also controls the use of
186 Tail loss probe (TLP) that converts RTOs occuring due to tail
187 losses into fast recovery (draft-dukkipati-tcpm-tcp-loss-probe-01).
194 Possible values: 188 Possible values:
195 0 disables ER 189 0 disables ER
196 1 enables ER 190 1 enables ER
@@ -198,7 +192,9 @@ tcp_early_retrans - INTEGER
198 by a fourth of RTT. This mitigates connection falsely 192 by a fourth of RTT. This mitigates connection falsely
199 recovers when network has a small degree of reordering 193 recovers when network has a small degree of reordering
200 (less than 3 packets). 194 (less than 3 packets).
201 Default: 2 195 3 enables delayed ER and TLP.
196 4 enables TLP only.
197 Default: 3
202 198
203tcp_ecn - INTEGER 199tcp_ecn - INTEGER
204 Control use of Explicit Congestion Notification (ECN) by TCP. 200 Control use of Explicit Congestion Notification (ECN) by TCP.
@@ -229,36 +225,13 @@ tcp_fin_timeout - INTEGER
229 Default: 60 seconds 225 Default: 60 seconds
230 226
231tcp_frto - INTEGER 227tcp_frto - INTEGER
232 Enables Forward RTO-Recovery (F-RTO) defined in RFC4138. 228 Enables Forward RTO-Recovery (F-RTO) defined in RFC5682.
233 F-RTO is an enhanced recovery algorithm for TCP retransmission 229 F-RTO is an enhanced recovery algorithm for TCP retransmission
234 timeouts. It is particularly beneficial in wireless environments 230 timeouts. It is particularly beneficial in networks where the
235 where packet loss is typically due to random radio interference 231 RTT fluctuates (e.g., wireless). F-RTO is sender-side only
236 rather than intermediate router congestion. F-RTO is sender-side 232 modification. It does not require any support from the peer.
237 only modification. Therefore it does not require any support from 233
238 the peer. 234 By default it's enabled with a non-zero value. 0 disables F-RTO.
239
240 If set to 1, basic version is enabled. 2 enables SACK enhanced
241 F-RTO if flow uses SACK. The basic version can be used also when
242 SACK is in use though scenario(s) with it exists where F-RTO
243 interacts badly with the packet counting of the SACK enabled TCP
244 flow.
245
246tcp_frto_response - INTEGER
247 When F-RTO has detected that a TCP retransmission timeout was
248 spurious (i.e, the timeout would have been avoided had TCP set a
249 longer retransmission timeout), TCP has several options what to do
250 next. Possible values are:
251 0 Rate halving based; a smooth and conservative response,
252 results in halved cwnd and ssthresh after one RTT
253 1 Very conservative response; not recommended because even
254 though being valid, it interacts poorly with the rest of
255 Linux TCP, halves cwnd and ssthresh immediately
256 2 Aggressive response; undoes congestion control measures
257 that are now known to be unnecessary (ignoring the
258 possibility of a lost retransmission that would require
259 TCP to be more cautious), cwnd and ssthresh are restored
260 to the values prior timeout
261 Default: 0 (rate halving based)
262 235
263tcp_keepalive_time - INTEGER 236tcp_keepalive_time - INTEGER
264 How often TCP sends out keepalive messages when keepalive is enabled. 237 How often TCP sends out keepalive messages when keepalive is enabled.
diff --git a/Documentation/networking/ipvs-sysctl.txt b/Documentation/networking/ipvs-sysctl.txt
index f2a2488f1bf3..9573d0c48c6e 100644
--- a/Documentation/networking/ipvs-sysctl.txt
+++ b/Documentation/networking/ipvs-sysctl.txt
@@ -15,6 +15,13 @@ amemthresh - INTEGER
15 enabled and the variable is automatically set to 2, otherwise 15 enabled and the variable is automatically set to 2, otherwise
16 the strategy is disabled and the variable is set to 1. 16 the strategy is disabled and the variable is set to 1.
17 17
18backup_only - BOOLEAN
19 0 - disabled (default)
20 not 0 - enabled
21
22 If set, disable the director function while the server is
23 in backup mode to avoid packet loops for DR/TUN methods.
24
18conntrack - BOOLEAN 25conntrack - BOOLEAN
19 0 - disabled (default) 26 0 - disabled (default)
20 not 0 - enabled 27 not 0 - enabled
diff --git a/Documentation/networking/netlink_mmap.txt b/Documentation/networking/netlink_mmap.txt
new file mode 100644
index 000000000000..1c2dab409625
--- /dev/null
+++ b/Documentation/networking/netlink_mmap.txt
@@ -0,0 +1,339 @@
1This file documents how to use memory mapped I/O with netlink.
2
3Author: Patrick McHardy <kaber@trash.net>
4
5Overview
6--------
7
8Memory mapped netlink I/O can be used to increase throughput and decrease
9overhead of unicast receive and transmit operations. Some netlink subsystems
10require high throughput, these are mainly the netfilter subsystems
11nfnetlink_queue and nfnetlink_log, but it can also help speed up large
12dump operations of f.i. the routing database.
13
14Memory mapped netlink I/O used two circular ring buffers for RX and TX which
15are mapped into the processes address space.
16
17The RX ring is used by the kernel to directly construct netlink messages into
18user-space memory without copying them as done with regular socket I/O,
19additionally as long as the ring contains messages no recvmsg() or poll()
20syscalls have to be issued by user-space to get more message.
21
22The TX ring is used to process messages directly from user-space memory, the
23kernel processes all messages contained in the ring using a single sendmsg()
24call.
25
26Usage overview
27--------------
28
29In order to use memory mapped netlink I/O, user-space needs three main changes:
30
31- ring setup
32- conversion of the RX path to get messages from the ring instead of recvmsg()
33- conversion of the TX path to construct messages into the ring
34
35Ring setup is done using setsockopt() to provide the ring parameters to the
36kernel, then a call to mmap() to map the ring into the processes address space:
37
38- setsockopt(fd, SOL_NETLINK, NETLINK_RX_RING, &params, sizeof(params));
39- setsockopt(fd, SOL_NETLINK, NETLINK_TX_RING, &params, sizeof(params));
40- ring = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0)
41
42Usage of either ring is optional, but even if only the RX ring is used the
43mapping still needs to be writable in order to update the frame status after
44processing.
45
46Conversion of the reception path involves calling poll() on the file
47descriptor, once the socket is readable the frames from the ring are
48processsed in order until no more messages are available, as indicated by
49a status word in the frame header.
50
51On kernel side, in order to make use of memory mapped I/O on receive, the
52originating netlink subsystem needs to support memory mapped I/O, otherwise
53it will use an allocated socket buffer as usual and the contents will be
54 copied to the ring on transmission, nullifying most of the performance gains.
55Dumps of kernel databases automatically support memory mapped I/O.
56
57Conversion of the transmit path involves changing message contruction to
58use memory from the TX ring instead of (usually) a buffer declared on the
59stack and setting up the frame header approriately. Optionally poll() can
60be used to wait for free frames in the TX ring.
61
62Structured and definitions for using memory mapped I/O are contained in
63<linux/netlink.h>.
64
65RX and TX rings
66----------------
67
68Each ring contains a number of continous memory blocks, containing frames of
69fixed size dependant on the parameters used for ring setup.
70
71Ring: [ block 0 ]
72 [ frame 0 ]
73 [ frame 1 ]
74 [ block 1 ]
75 [ frame 2 ]
76 [ frame 3 ]
77 ...
78 [ block n ]
79 [ frame 2 * n ]
80 [ frame 2 * n + 1 ]
81
82The blocks are only visible to the kernel, from the point of view of user-space
83the ring just contains the frames in a continous memory zone.
84
85The ring parameters used for setting up the ring are defined as follows:
86
87struct nl_mmap_req {
88 unsigned int nm_block_size;
89 unsigned int nm_block_nr;
90 unsigned int nm_frame_size;
91 unsigned int nm_frame_nr;
92};
93
94Frames are grouped into blocks, where each block is a continous region of memory
95and holds nm_block_size / nm_frame_size frames. The total number of frames in
96the ring is nm_frame_nr. The following invariants hold:
97
98- frames_per_block = nm_block_size / nm_frame_size
99
100- nm_frame_nr = frames_per_block * nm_block_nr
101
102Some parameters are constrained, specifically:
103
104- nm_block_size must be a multiple of the architectures memory page size.
105 The getpagesize() function can be used to get the page size.
106
107- nm_frame_size must be equal or larger to NL_MMAP_HDRLEN, IOW a frame must be
108 able to hold at least the frame header
109
110- nm_frame_size must be smaller or equal to nm_block_size
111
112- nm_frame_size must be a multiple of NL_MMAP_MSG_ALIGNMENT
113
114- nm_frame_nr must equal the actual number of frames as specified above.
115
116When the kernel can't allocate phsyically continous memory for a ring block,
117it will fall back to use physically discontinous memory. This might affect
118performance negatively, in order to avoid this the nm_frame_size parameter
119should be chosen to be as small as possible for the required frame size and
120the number of blocks should be increased instead.
121
122Ring frames
123------------
124
125Each frames contain a frame header, consisting of a synchronization word and some
126meta-data, and the message itself.
127
128Frame: [ header message ]
129
130The frame header is defined as follows:
131
132struct nl_mmap_hdr {
133 unsigned int nm_status;
134 unsigned int nm_len;
135 __u32 nm_group;
136 /* credentials */
137 __u32 nm_pid;
138 __u32 nm_uid;
139 __u32 nm_gid;
140};
141
142- nm_status is used for synchronizing processing between the kernel and user-
143 space and specifies ownership of the frame as well as the operation to perform
144
145- nm_len contains the length of the message contained in the data area
146
147- nm_group specified the destination multicast group of message
148
149- nm_pid, nm_uid and nm_gid contain the netlink pid, UID and GID of the sending
150 process. These values correspond to the data available using SOCK_PASSCRED in
151 the SCM_CREDENTIALS cmsg.
152
153The possible values in the status word are:
154
155- NL_MMAP_STATUS_UNUSED:
156 RX ring: frame belongs to the kernel and contains no message
157 for user-space. Approriate action is to invoke poll()
158 to wait for new messages.
159
160 TX ring: frame belongs to user-space and can be used for
161 message construction.
162
163- NL_MMAP_STATUS_RESERVED:
164 RX ring only: frame is currently used by the kernel for message
165 construction and contains no valid message yet.
166 Appropriate action is to invoke poll() to wait for
167 new messages.
168
169- NL_MMAP_STATUS_VALID:
170 RX ring: frame contains a valid message. Approriate action is
171 to process the message and release the frame back to
172 the kernel by setting the status to
173 NL_MMAP_STATUS_UNUSED or queue the frame by setting the
174 status to NL_MMAP_STATUS_SKIP.
175
176 TX ring: the frame contains a valid message from user-space to
177 be processed by the kernel. After completing processing
178 the kernel will release the frame back to user-space by
179 setting the status to NL_MMAP_STATUS_UNUSED.
180
181- NL_MMAP_STATUS_COPY:
182 RX ring only: a message is ready to be processed but could not be
183 stored in the ring, either because it exceeded the
184 frame size or because the originating subsystem does
185 not support memory mapped I/O. Appropriate action is
186 to invoke recvmsg() to receive the message and release
187 the frame back to the kernel by setting the status to
188 NL_MMAP_STATUS_UNUSED.
189
190- NL_MMAP_STATUS_SKIP:
191 RX ring only: user-space queued the message for later processing, but
192 processed some messages following it in the ring. The
193 kernel should skip this frame when looking for unused
194 frames.
195
196The data area of a frame begins at a offset of NL_MMAP_HDRLEN relative to the
197frame header.
198
199TX limitations
200--------------
201
202Kernel processing usually involves validation of the message received by
203user-space, then processing its contents. The kernel must assure that
204userspace is not able to modify the message contents after they have been
205validated. In order to do so, the message is copied from the ring frame
206to an allocated buffer if either of these conditions is false:
207
208- only a single mapping of the ring exists
209- the file descriptor is not shared between processes
210
211This means that for threaded programs, the kernel will fall back to copying.
212
213Example
214-------
215
216Ring setup:
217
218 unsigned int block_size = 16 * getpagesize();
219 struct nl_mmap_req req = {
220 .nm_block_size = block_size,
221 .nm_block_nr = 64,
222 .nm_frame_size = 16384,
223 .nm_frame_nr = 64 * block_size / 16384,
224 };
225 unsigned int ring_size;
226 void *rx_ring, *tx_ring;
227
228 /* Configure ring parameters */
229 if (setsockopt(fd, NETLINK_RX_RING, &req, sizeof(req)) < 0)
230 exit(1);
231 if (setsockopt(fd, NETLINK_TX_RING, &req, sizeof(req)) < 0)
232 exit(1)
233
234 /* Calculate size of each invididual ring */
235 ring_size = req.nm_block_nr * req.nm_block_size;
236
237 /* Map RX/TX rings. The TX ring is located after the RX ring */
238 rx_ring = mmap(NULL, 2 * ring_size, PROT_READ | PROT_WRITE,
239 MAP_SHARED, fd, 0);
240 if ((long)rx_ring == -1L)
241 exit(1);
242 tx_ring = rx_ring + ring_size:
243
244Message reception:
245
246This example assumes some ring parameters of the ring setup are available.
247
248 unsigned int frame_offset = 0;
249 struct nl_mmap_hdr *hdr;
250 struct nlmsghdr *nlh;
251 unsigned char buf[16384];
252 ssize_t len;
253
254 while (1) {
255 struct pollfd pfds[1];
256
257 pfds[0].fd = fd;
258 pfds[0].events = POLLIN | POLLERR;
259 pfds[0].revents = 0;
260
261 if (poll(pfds, 1, -1) < 0 && errno != -EINTR)
262 exit(1);
263
264 /* Check for errors. Error handling omitted */
265 if (pfds[0].revents & POLLERR)
266 <handle error>
267
268 /* If no new messages, poll again */
269 if (!(pfds[0].revents & POLLIN))
270 continue;
271
272 /* Process all frames */
273 while (1) {
274 /* Get next frame header */
275 hdr = rx_ring + frame_offset;
276
277 if (hdr->nm_status == NL_MMAP_STATUS_VALID)
278 /* Regular memory mapped frame */
279 nlh = (void *hdr) + NL_MMAP_HDRLEN;
280 len = hdr->nm_len;
281
282 /* Release empty message immediately. May happen
283 * on error during message construction.
284 */
285 if (len == 0)
286 goto release;
287 } else if (hdr->nm_status == NL_MMAP_STATUS_COPY) {
288 /* Frame queued to socket receive queue */
289 len = recv(fd, buf, sizeof(buf), MSG_DONTWAIT);
290 if (len <= 0)
291 break;
292 nlh = buf;
293 } else
294 /* No more messages to process, continue polling */
295 break;
296
297 process_msg(nlh);
298release:
299 /* Release frame back to the kernel */
300 hdr->nm_status = NL_MMAP_STATUS_UNUSED;
301
302 /* Advance frame offset to next frame */
303 frame_offset = (frame_offset + frame_size) % ring_size;
304 }
305 }
306
307Message transmission:
308
309This example assumes some ring parameters of the ring setup are available.
310A single message is constructed and transmitted, to send multiple messages
311at once they would be constructed in consecutive frames before a final call
312to sendto().
313
314 unsigned int frame_offset = 0;
315 struct nl_mmap_hdr *hdr;
316 struct nlmsghdr *nlh;
317 struct sockaddr_nl addr = {
318 .nl_family = AF_NETLINK,
319 };
320
321 hdr = tx_ring + frame_offset;
322 if (hdr->nm_status != NL_MMAP_STATUS_UNUSED)
323 /* No frame available. Use poll() to avoid. */
324 exit(1);
325
326 nlh = (void *)hdr + NL_MMAP_HDRLEN;
327
328 /* Build message */
329 build_message(nlh);
330
331 /* Fill frame header: length and status need to be set */
332 hdr->nm_len = nlh->nlmsg_len;
333 hdr->nm_status = NL_MMAP_STATUS_VALID;
334
335 if (sendto(fd, NULL, 0, 0, &addr, sizeof(addr)) < 0)
336 exit(1);
337
338 /* Advance frame offset to next frame */
339 frame_offset = (frame_offset + frame_size) % ring_size;
diff --git a/Documentation/networking/packet_mmap.txt b/Documentation/networking/packet_mmap.txt
index 94444b152fbc..23dd80e82b8e 100644
--- a/Documentation/networking/packet_mmap.txt
+++ b/Documentation/networking/packet_mmap.txt
@@ -685,14 +685,342 @@ int main(int argc, char **argp)
685} 685}
686 686
687------------------------------------------------------------------------------- 687-------------------------------------------------------------------------------
688+ AF_PACKET TPACKET_V3 example
689-------------------------------------------------------------------------------
690
691AF_PACKET's TPACKET_V3 ring buffer can be configured to use non-static frame
692sizes by doing it's own memory management. It is based on blocks where polling
693works on a per block basis instead of per ring as in TPACKET_V2 and predecessor.
694
695It is said that TPACKET_V3 brings the following benefits:
696 *) ~15 - 20% reduction in CPU-usage
697 *) ~20% increase in packet capture rate
698 *) ~2x increase in packet density
699 *) Port aggregation analysis
700 *) Non static frame size to capture entire packet payload
701
702So it seems to be a good candidate to be used with packet fanout.
703
704Minimal example code by Daniel Borkmann based on Chetan Loke's lolpcap (compile
705it with gcc -Wall -O2 blob.c, and try things like "./a.out eth0", etc.):
706
707#include <stdio.h>
708#include <stdlib.h>
709#include <stdint.h>
710#include <string.h>
711#include <assert.h>
712#include <net/if.h>
713#include <arpa/inet.h>
714#include <netdb.h>
715#include <poll.h>
716#include <unistd.h>
717#include <signal.h>
718#include <inttypes.h>
719#include <sys/socket.h>
720#include <sys/mman.h>
721#include <linux/if_packet.h>
722#include <linux/if_ether.h>
723#include <linux/ip.h>
724
725#define BLOCK_SIZE (1 << 22)
726#define FRAME_SIZE 2048
727
728#define NUM_BLOCKS 64
729#define NUM_FRAMES ((BLOCK_SIZE * NUM_BLOCKS) / FRAME_SIZE)
730
731#define BLOCK_RETIRE_TOV_IN_MS 64
732#define BLOCK_PRIV_AREA_SZ 13
733
734#define ALIGN_8(x) (((x) + 8 - 1) & ~(8 - 1))
735
736#define BLOCK_STATUS(x) ((x)->h1.block_status)
737#define BLOCK_NUM_PKTS(x) ((x)->h1.num_pkts)
738#define BLOCK_O2FP(x) ((x)->h1.offset_to_first_pkt)
739#define BLOCK_LEN(x) ((x)->h1.blk_len)
740#define BLOCK_SNUM(x) ((x)->h1.seq_num)
741#define BLOCK_O2PRIV(x) ((x)->offset_to_priv)
742#define BLOCK_PRIV(x) ((void *) ((uint8_t *) (x) + BLOCK_O2PRIV(x)))
743#define BLOCK_HDR_LEN (ALIGN_8(sizeof(struct block_desc)))
744#define BLOCK_PLUS_PRIV(sz_pri) (BLOCK_HDR_LEN + ALIGN_8((sz_pri)))
745
746#ifndef likely
747# define likely(x) __builtin_expect(!!(x), 1)
748#endif
749#ifndef unlikely
750# define unlikely(x) __builtin_expect(!!(x), 0)
751#endif
752
753struct block_desc {
754 uint32_t version;
755 uint32_t offset_to_priv;
756 struct tpacket_hdr_v1 h1;
757};
758
759struct ring {
760 struct iovec *rd;
761 uint8_t *map;
762 struct tpacket_req3 req;
763};
764
765static unsigned long packets_total = 0, bytes_total = 0;
766static sig_atomic_t sigint = 0;
767
768void sighandler(int num)
769{
770 sigint = 1;
771}
772
773static int setup_socket(struct ring *ring, char *netdev)
774{
775 int err, i, fd, v = TPACKET_V3;
776 struct sockaddr_ll ll;
777
778 fd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
779 if (fd < 0) {
780 perror("socket");
781 exit(1);
782 }
783
784 err = setsockopt(fd, SOL_PACKET, PACKET_VERSION, &v, sizeof(v));
785 if (err < 0) {
786 perror("setsockopt");
787 exit(1);
788 }
789
790 memset(&ring->req, 0, sizeof(ring->req));
791 ring->req.tp_block_size = BLOCK_SIZE;
792 ring->req.tp_frame_size = FRAME_SIZE;
793 ring->req.tp_block_nr = NUM_BLOCKS;
794 ring->req.tp_frame_nr = NUM_FRAMES;
795 ring->req.tp_retire_blk_tov = BLOCK_RETIRE_TOV_IN_MS;
796 ring->req.tp_sizeof_priv = BLOCK_PRIV_AREA_SZ;
797 ring->req.tp_feature_req_word |= TP_FT_REQ_FILL_RXHASH;
798
799 err = setsockopt(fd, SOL_PACKET, PACKET_RX_RING, &ring->req,
800 sizeof(ring->req));
801 if (err < 0) {
802 perror("setsockopt");
803 exit(1);
804 }
805
806 ring->map = mmap(NULL, ring->req.tp_block_size * ring->req.tp_block_nr,
807 PROT_READ | PROT_WRITE, MAP_SHARED | MAP_LOCKED,
808 fd, 0);
809 if (ring->map == MAP_FAILED) {
810 perror("mmap");
811 exit(1);
812 }
813
814 ring->rd = malloc(ring->req.tp_block_nr * sizeof(*ring->rd));
815 assert(ring->rd);
816 for (i = 0; i < ring->req.tp_block_nr; ++i) {
817 ring->rd[i].iov_base = ring->map + (i * ring->req.tp_block_size);
818 ring->rd[i].iov_len = ring->req.tp_block_size;
819 }
820
821 memset(&ll, 0, sizeof(ll));
822 ll.sll_family = PF_PACKET;
823 ll.sll_protocol = htons(ETH_P_ALL);
824 ll.sll_ifindex = if_nametoindex(netdev);
825 ll.sll_hatype = 0;
826 ll.sll_pkttype = 0;
827 ll.sll_halen = 0;
828
829 err = bind(fd, (struct sockaddr *) &ll, sizeof(ll));
830 if (err < 0) {
831 perror("bind");
832 exit(1);
833 }
834
835 return fd;
836}
837
838#ifdef __checked
839static uint64_t prev_block_seq_num = 0;
840
841void assert_block_seq_num(struct block_desc *pbd)
842{
843 if (unlikely(prev_block_seq_num + 1 != BLOCK_SNUM(pbd))) {
844 printf("prev_block_seq_num:%"PRIu64", expected seq:%"PRIu64" != "
845 "actual seq:%"PRIu64"\n", prev_block_seq_num,
846 prev_block_seq_num + 1, (uint64_t) BLOCK_SNUM(pbd));
847 exit(1);
848 }
849
850 prev_block_seq_num = BLOCK_SNUM(pbd);
851}
852
853static void assert_block_len(struct block_desc *pbd, uint32_t bytes, int block_num)
854{
855 if (BLOCK_NUM_PKTS(pbd)) {
856 if (unlikely(bytes != BLOCK_LEN(pbd))) {
857 printf("block:%u with %upackets, expected len:%u != actual len:%u\n",
858 block_num, BLOCK_NUM_PKTS(pbd), bytes, BLOCK_LEN(pbd));
859 exit(1);
860 }
861 } else {
862 if (unlikely(BLOCK_LEN(pbd) != BLOCK_PLUS_PRIV(BLOCK_PRIV_AREA_SZ))) {
863 printf("block:%u, expected len:%lu != actual len:%u\n",
864 block_num, BLOCK_HDR_LEN, BLOCK_LEN(pbd));
865 exit(1);
866 }
867 }
868}
869
870static void assert_block_header(struct block_desc *pbd, const int block_num)
871{
872 uint32_t block_status = BLOCK_STATUS(pbd);
873
874 if (unlikely((block_status & TP_STATUS_USER) == 0)) {
875 printf("block:%u, not in TP_STATUS_USER\n", block_num);
876 exit(1);
877 }
878
879 assert_block_seq_num(pbd);
880}
881#else
882static inline void assert_block_header(struct block_desc *pbd, const int block_num)
883{
884}
885static void assert_block_len(struct block_desc *pbd, uint32_t bytes, int block_num)
886{
887}
888#endif
889
890static void display(struct tpacket3_hdr *ppd)
891{
892 struct ethhdr *eth = (struct ethhdr *) ((uint8_t *) ppd + ppd->tp_mac);
893 struct iphdr *ip = (struct iphdr *) ((uint8_t *) eth + ETH_HLEN);
894
895 if (eth->h_proto == htons(ETH_P_IP)) {
896 struct sockaddr_in ss, sd;
897 char sbuff[NI_MAXHOST], dbuff[NI_MAXHOST];
898
899 memset(&ss, 0, sizeof(ss));
900 ss.sin_family = PF_INET;
901 ss.sin_addr.s_addr = ip->saddr;
902 getnameinfo((struct sockaddr *) &ss, sizeof(ss),
903 sbuff, sizeof(sbuff), NULL, 0, NI_NUMERICHOST);
904
905 memset(&sd, 0, sizeof(sd));
906 sd.sin_family = PF_INET;
907 sd.sin_addr.s_addr = ip->daddr;
908 getnameinfo((struct sockaddr *) &sd, sizeof(sd),
909 dbuff, sizeof(dbuff), NULL, 0, NI_NUMERICHOST);
910
911 printf("%s -> %s, ", sbuff, dbuff);
912 }
913
914 printf("rxhash: 0x%x\n", ppd->hv1.tp_rxhash);
915}
916
917static void walk_block(struct block_desc *pbd, const int block_num)
918{
919 int num_pkts = BLOCK_NUM_PKTS(pbd), i;
920 unsigned long bytes = 0;
921 unsigned long bytes_with_padding = BLOCK_PLUS_PRIV(BLOCK_PRIV_AREA_SZ);
922 struct tpacket3_hdr *ppd;
923
924 assert_block_header(pbd, block_num);
925
926 ppd = (struct tpacket3_hdr *) ((uint8_t *) pbd + BLOCK_O2FP(pbd));
927 for (i = 0; i < num_pkts; ++i) {
928 bytes += ppd->tp_snaplen;
929 if (ppd->tp_next_offset)
930 bytes_with_padding += ppd->tp_next_offset;
931 else
932 bytes_with_padding += ALIGN_8(ppd->tp_snaplen + ppd->tp_mac);
933
934 display(ppd);
935
936 ppd = (struct tpacket3_hdr *) ((uint8_t *) ppd + ppd->tp_next_offset);
937 __sync_synchronize();
938 }
939
940 assert_block_len(pbd, bytes_with_padding, block_num);
941
942 packets_total += num_pkts;
943 bytes_total += bytes;
944}
945
946void flush_block(struct block_desc *pbd)
947{
948 BLOCK_STATUS(pbd) = TP_STATUS_KERNEL;
949 __sync_synchronize();
950}
951
952static void teardown_socket(struct ring *ring, int fd)
953{
954 munmap(ring->map, ring->req.tp_block_size * ring->req.tp_block_nr);
955 free(ring->rd);
956 close(fd);
957}
958
959int main(int argc, char **argp)
960{
961 int fd, err;
962 socklen_t len;
963 struct ring ring;
964 struct pollfd pfd;
965 unsigned int block_num = 0;
966 struct block_desc *pbd;
967 struct tpacket_stats_v3 stats;
968
969 if (argc != 2) {
970 fprintf(stderr, "Usage: %s INTERFACE\n", argp[0]);
971 return EXIT_FAILURE;
972 }
973
974 signal(SIGINT, sighandler);
975
976 memset(&ring, 0, sizeof(ring));
977 fd = setup_socket(&ring, argp[argc - 1]);
978 assert(fd > 0);
979
980 memset(&pfd, 0, sizeof(pfd));
981 pfd.fd = fd;
982 pfd.events = POLLIN | POLLERR;
983 pfd.revents = 0;
984
985 while (likely(!sigint)) {
986 pbd = (struct block_desc *) ring.rd[block_num].iov_base;
987retry_block:
988 if ((BLOCK_STATUS(pbd) & TP_STATUS_USER) == 0) {
989 poll(&pfd, 1, -1);
990 goto retry_block;
991 }
992
993 walk_block(pbd, block_num);
994 flush_block(pbd);
995 block_num = (block_num + 1) % NUM_BLOCKS;
996 }
997
998 len = sizeof(stats);
999 err = getsockopt(fd, SOL_PACKET, PACKET_STATISTICS, &stats, &len);
1000 if (err < 0) {
1001 perror("getsockopt");
1002 exit(1);
1003 }
1004
1005 fflush(stdout);
1006 printf("\nReceived %u packets, %lu bytes, %u dropped, freeze_q_cnt: %u\n",
1007 stats.tp_packets, bytes_total, stats.tp_drops,
1008 stats.tp_freeze_q_cnt);
1009
1010 teardown_socket(&ring, fd);
1011 return 0;
1012}
1013
1014-------------------------------------------------------------------------------
688+ PACKET_TIMESTAMP 1015+ PACKET_TIMESTAMP
689------------------------------------------------------------------------------- 1016-------------------------------------------------------------------------------
690 1017
691The PACKET_TIMESTAMP setting determines the source of the timestamp in 1018The PACKET_TIMESTAMP setting determines the source of the timestamp in
692the packet meta information. If your NIC is capable of timestamping 1019the packet meta information for mmap(2)ed RX_RING and TX_RINGs. If your
693packets in hardware, you can request those hardware timestamps to used. 1020NIC is capable of timestamping packets in hardware, you can request those
694Note: you may need to enable the generation of hardware timestamps with 1021hardware timestamps to be used. Note: you may need to enable the generation
695SIOCSHWTSTAMP. 1022of hardware timestamps with SIOCSHWTSTAMP (see related information from
1023Documentation/networking/timestamping.txt).
696 1024
697PACKET_TIMESTAMP accepts the same integer bit field as 1025PACKET_TIMESTAMP accepts the same integer bit field as
698SO_TIMESTAMPING. However, only the SOF_TIMESTAMPING_SYS_HARDWARE 1026SO_TIMESTAMPING. However, only the SOF_TIMESTAMPING_SYS_HARDWARE
@@ -704,8 +1032,36 @@ SOF_TIMESTAMPING_RAW_HARDWARE if both bits are set.
704 req |= SOF_TIMESTAMPING_SYS_HARDWARE; 1032 req |= SOF_TIMESTAMPING_SYS_HARDWARE;
705 setsockopt(fd, SOL_PACKET, PACKET_TIMESTAMP, (void *) &req, sizeof(req)) 1033 setsockopt(fd, SOL_PACKET, PACKET_TIMESTAMP, (void *) &req, sizeof(req))
706 1034
707If PACKET_TIMESTAMP is not set, a software timestamp generated inside 1035For the mmap(2)ed ring buffers, such timestamps are stored in the
708the networking stack is used (the behavior before this setting was added). 1036tpacket{,2,3}_hdr structure's tp_sec and tp_{n,u}sec members. To determine
1037what kind of timestamp has been reported, the tp_status field is binary |'ed
1038with the following possible bits ...
1039
1040 TP_STATUS_TS_SYS_HARDWARE
1041 TP_STATUS_TS_RAW_HARDWARE
1042 TP_STATUS_TS_SOFTWARE
1043
1044... that are equivalent to its SOF_TIMESTAMPING_* counterparts. For the
1045RX_RING, if none of those 3 are set (i.e. PACKET_TIMESTAMP is not set),
1046then this means that a software fallback was invoked *within* PF_PACKET's
1047processing code (less precise).
1048
1049Getting timestamps for the TX_RING works as follows: i) fill the ring frames,
1050ii) call sendto() e.g. in blocking mode, iii) wait for status of relevant
1051frames to be updated resp. the frame handed over to the application, iv) walk
1052through the frames to pick up the individual hw/sw timestamps.
1053
1054Only (!) if transmit timestamping is enabled, then these bits are combined
1055with binary | with TP_STATUS_AVAILABLE, so you must check for that in your
1056application (e.g. !(tp_status & (TP_STATUS_SEND_REQUEST | TP_STATUS_SENDING))
1057in a first step to see if the frame belongs to the application, and then
1058one can extract the type of timestamp in a second step from tp_status)!
1059
1060If you don't care about them, thus having it disabled, checking for
1061TP_STATUS_AVAILABLE resp. TP_STATUS_WRONG_FORMAT is sufficient. If in the
1062TX_RING part only TP_STATUS_AVAILABLE is set, then the tp_sec and tp_{n,u}sec
1063members do not contain a valid value. For TX_RINGs, by default no timestamp
1064is generated!
709 1065
710See include/linux/net_tstamp.h and Documentation/networking/timestamping 1066See include/linux/net_tstamp.h and Documentation/networking/timestamping
711for more information on hardware timestamps. 1067for more information on hardware timestamps.
diff --git a/Documentation/networking/stmmac.txt b/Documentation/networking/stmmac.txt
index f9fa6db40a52..654d2e55c8cb 100644
--- a/Documentation/networking/stmmac.txt
+++ b/Documentation/networking/stmmac.txt
@@ -1,6 +1,6 @@
1 STMicroelectronics 10/100/1000 Synopsys Ethernet driver 1 STMicroelectronics 10/100/1000 Synopsys Ethernet driver
2 2
3Copyright (C) 2007-2010 STMicroelectronics Ltd 3Copyright (C) 2007-2013 STMicroelectronics Ltd
4Author: Giuseppe Cavallaro <peppe.cavallaro@st.com> 4Author: Giuseppe Cavallaro <peppe.cavallaro@st.com>
5 5
6This is the driver for the MAC 10/100/1000 on-chip Ethernet controllers 6This is the driver for the MAC 10/100/1000 on-chip Ethernet controllers
@@ -10,7 +10,7 @@ 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 13DWC Ether MAC 10/100/1000 Universal version 3.70a (and older) and DWC Ether
14MAC 10/100 Universal 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.
@@ -32,6 +32,8 @@ The kernel configuration option is STMMAC_ETH:
32 watchdog: transmit timeout (in milliseconds); 32 watchdog: transmit timeout (in milliseconds);
33 flow_ctrl: Flow control ability [on/off]; 33 flow_ctrl: Flow control ability [on/off];
34 pause: Flow Control Pause Time; 34 pause: Flow Control Pause Time;
35 eee_timer: tx EEE timer;
36 chain_mode: select chain mode instead of ring.
35 37
363) Command line options 383) Command line options
37Driver parameters can be also passed in command line by using: 39Driver parameters can be also passed in command line by using:
@@ -164,12 +166,12 @@ Where:
164 o bus_setup: perform HW setup of the bus. For example, on some ST platforms 166 o bus_setup: perform HW setup of the bus. For example, on some ST platforms
165 this field is used to configure the AMBA bridge to generate more 167 this field is used to configure the AMBA bridge to generate more
166 efficient STBus traffic. 168 efficient STBus traffic.
167 o init/exit: callbacks used for calling a custom initialisation; 169 o init/exit: callbacks used for calling a custom initialization;
168 this is sometime necessary on some platforms (e.g. ST boxes) 170 this is sometime necessary on some platforms (e.g. ST boxes)
169 where the HW needs to have set some PIO lines or system cfg 171 where the HW needs to have set some PIO lines or system cfg
170 registers. 172 registers.
171 o custom_cfg/custom_data: this is a custom configuration that can be passed 173 o custom_cfg/custom_data: this is a custom configuration that can be passed
172 while initialising the resources. 174 while initializing the resources.
173 o bsp_priv: another private poiter. 175 o bsp_priv: another private poiter.
174 176
175For MDIO bus The we have: 177For MDIO bus The we have:
@@ -273,6 +275,8 @@ reset procedure etc).
273 o norm_desc.c: functions for handling normal descriptors; 275 o norm_desc.c: functions for handling normal descriptors;
274 o chain_mode.c/ring_mode.c:: functions to manage RING/CHAINED modes; 276 o chain_mode.c/ring_mode.c:: functions to manage RING/CHAINED modes;
275 o mmc_core.c/mmc.h: Management MAC Counters; 277 o mmc_core.c/mmc.h: Management MAC Counters;
278 o stmmac_hwtstamp.c: HW timestamp support for PTP
279 o stmmac_ptp.c: PTP 1588 clock
276 280
2775) Debug Information 2815) Debug Information
278 282
@@ -326,6 +330,35 @@ To enter in Tx LPI mode the driver needs to have a software timer
326that enable and disable the LPI mode when there is nothing to be 330that enable and disable the LPI mode when there is nothing to be
327transmitted. 331transmitted.
328 332
3297) TODO: 3337) Extended descriptors
334The extended descriptors give us information about the receive Ethernet payload
335when it is carrying PTP packets or TCP/UDP/ICMP over IP.
336These are not available on GMAC Synopsys chips older than the 3.50.
337At probe time the driver will decide if these can be actually used.
338This support also is mandatory for PTPv2 because the extra descriptors 6 and 7
339are used for saving the hardware timestamps.
340
3418) Precision Time Protocol (PTP)
342The driver supports the IEEE 1588-2002, Precision Time Protocol (PTP),
343which enables precise synchronization of clocks in measurement and
344control systems implemented with technologies such as network
345communication.
346
347In addition to the basic timestamp features mentioned in IEEE 1588-2002
348Timestamps, new GMAC cores support the advanced timestamp features.
349IEEE 1588-2008 that can be enabled when configure the Kernel.
350
3519) SGMII/RGMII supports
352New GMAC devices provide own way to manage RGMII/SGMII.
353This information is available at run-time by looking at the
354HW capability register. This means that the stmmac can manage
355auto-negotiation and link status w/o using the PHYLIB stuff
356In fact, the HW provides a subset of extended registers to
357restart the ANE, verify Full/Half duplex mode and Speed.
358Also thanks to these registers it is possible to look at the
359Auto-negotiated Link Parter Ability.
360
36110) TODO:
330 o XGMAC is not supported. 362 o XGMAC is not supported.
331 o Add the PTP - precision time protocol 363 o Complete the TBI & RTBI support.
364 o extened VLAN support for 3.70a SYNP GMAC.
diff --git a/Documentation/networking/tuntap.txt b/Documentation/networking/tuntap.txt
index c0aab985bad9..949d5dcdd9a3 100644
--- a/Documentation/networking/tuntap.txt
+++ b/Documentation/networking/tuntap.txt
@@ -105,6 +105,83 @@ Copyright (C) 1999-2000 Maxim Krasnyansky <max_mk@yahoo.com>
105 Proto [2 bytes] 105 Proto [2 bytes]
106 Raw protocol(IP, IPv6, etc) frame. 106 Raw protocol(IP, IPv6, etc) frame.
107 107
108 3.3 Multiqueue tuntap interface:
109
110 From version 3.8, Linux supports multiqueue tuntap which can uses multiple
111 file descriptors (queues) to parallelize packets sending or receiving. The
112 device allocation is the same as before, and if user wants to create multiple
113 queues, TUNSETIFF with the same device name must be called many times with
114 IFF_MULTI_QUEUE flag.
115
116 char *dev should be the name of the device, queues is the number of queues to
117 be created, fds is used to store and return the file descriptors (queues)
118 created to the caller. Each file descriptor were served as the interface of a
119 queue which could be accessed by userspace.
120
121 #include <linux/if.h>
122 #include <linux/if_tun.h>
123
124 int tun_alloc_mq(char *dev, int queues, int *fds)
125 {
126 struct ifreq ifr;
127 int fd, err, i;
128
129 if (!dev)
130 return -1;
131
132 memset(&ifr, 0, sizeof(ifr));
133 /* Flags: IFF_TUN - TUN device (no Ethernet headers)
134 * IFF_TAP - TAP device
135 *
136 * IFF_NO_PI - Do not provide packet information
137 * IFF_MULTI_QUEUE - Create a queue of multiqueue device
138 */
139 ifr.ifr_flags = IFF_TAP | IFF_NO_PI | IFF_MULTI_QUEUE;
140 strcpy(ifr.ifr_name, dev);
141
142 for (i = 0; i < queues; i++) {
143 if ((fd = open("/dev/net/tun", O_RDWR)) < 0)
144 goto err;
145 err = ioctl(fd, TUNSETIFF, (void *)&ifr);
146 if (err) {
147 close(fd);
148 goto err;
149 }
150 fds[i] = fd;
151 }
152
153 return 0;
154 err:
155 for (--i; i >= 0; i--)
156 close(fds[i]);
157 return err;
158 }
159
160 A new ioctl(TUNSETQUEUE) were introduced to enable or disable a queue. When
161 calling it with IFF_DETACH_QUEUE flag, the queue were disabled. And when
162 calling it with IFF_ATTACH_QUEUE flag, the queue were enabled. The queue were
163 enabled by default after it was created through TUNSETIFF.
164
165 fd is the file descriptor (queue) that we want to enable or disable, when
166 enable is true we enable it, otherwise we disable it
167
168 #include <linux/if.h>
169 #include <linux/if_tun.h>
170
171 int tun_set_queue(int fd, int enable)
172 {
173 struct ifreq ifr;
174
175 memset(&ifr, 0, sizeof(ifr));
176
177 if (enable)
178 ifr.ifr_flags = IFF_ATTACH_QUEUE;
179 else
180 ifr.ifr_flags = IFF_DETACH_QUEUE;
181
182 return ioctl(fd, TUNSETQUEUE, (void *)&ifr);
183 }
184
108Universal TUN/TAP device driver Frequently Asked Question. 185Universal TUN/TAP device driver Frequently Asked Question.
109 186
1101. What platforms are supported by TUN/TAP driver ? 1871. What platforms are supported by TUN/TAP driver ?
diff --git a/Documentation/pinctrl.txt b/Documentation/pinctrl.txt
index a2b57e0a1db0..447fd4cd54ec 100644
--- a/Documentation/pinctrl.txt
+++ b/Documentation/pinctrl.txt
@@ -736,6 +736,13 @@ All the above functions are mandatory to implement for a pinmux driver.
736Pin control interaction with the GPIO subsystem 736Pin control interaction with the GPIO subsystem
737=============================================== 737===============================================
738 738
739Note that the following implies that the use case is to use a certain pin
740from the Linux kernel using the API in <linux/gpio.h> with gpio_request()
741and similar functions. There are cases where you may be using something
742that your datasheet calls "GPIO mode" but actually is just an electrical
743configuration for a certain device. See the section below named
744"GPIO mode pitfalls" for more details on this scenario.
745
739The public pinmux API contains two functions named pinctrl_request_gpio() 746The public pinmux API contains two functions named pinctrl_request_gpio()
740and pinctrl_free_gpio(). These two functions shall *ONLY* be called from 747and pinctrl_free_gpio(). These two functions shall *ONLY* be called from
741gpiolib-based drivers as part of their gpio_request() and 748gpiolib-based drivers as part of their gpio_request() and
@@ -774,6 +781,111 @@ obtain the function "gpioN" where "N" is the global GPIO pin number if no
774special GPIO-handler is registered. 781special GPIO-handler is registered.
775 782
776 783
784GPIO mode pitfalls
785==================
786
787Sometime the developer may be confused by a datasheet talking about a pin
788being possible to set into "GPIO mode". It appears that what hardware
789engineers mean with "GPIO mode" is not necessarily the use case that is
790implied in the kernel interface <linux/gpio.h>: a pin that you grab from
791kernel code and then either listen for input or drive high/low to
792assert/deassert some external line.
793
794Rather hardware engineers think that "GPIO mode" means that you can
795software-control a few electrical properties of the pin that you would
796not be able to control if the pin was in some other mode, such as muxed in
797for a device.
798
799Example: a pin is usually muxed in to be used as a UART TX line. But during
800system sleep, we need to put this pin into "GPIO mode" and ground it.
801
802If you make a 1-to-1 map to the GPIO subsystem for this pin, you may start
803to think that you need to come up with something real complex, that the
804pin shall be used for UART TX and GPIO at the same time, that you will grab
805a pin control handle and set it to a certain state to enable UART TX to be
806muxed in, then twist it over to GPIO mode and use gpio_direction_output()
807to drive it low during sleep, then mux it over to UART TX again when you
808wake up and maybe even gpio_request/gpio_free as part of this cycle. This
809all gets very complicated.
810
811The solution is to not think that what the datasheet calls "GPIO mode"
812has to be handled by the <linux/gpio.h> interface. Instead view this as
813a certain pin config setting. Look in e.g. <linux/pinctrl/pinconf-generic.h>
814and you find this in the documentation:
815
816 PIN_CONFIG_OUTPUT: this will configure the pin in output, use argument
817 1 to indicate high level, argument 0 to indicate low level.
818
819So it is perfectly possible to push a pin into "GPIO mode" and drive the
820line low as part of the usual pin control map. So for example your UART
821driver may look like this:
822
823#include <linux/pinctrl/consumer.h>
824
825struct pinctrl *pinctrl;
826struct pinctrl_state *pins_default;
827struct pinctrl_state *pins_sleep;
828
829pins_default = pinctrl_lookup_state(uap->pinctrl, PINCTRL_STATE_DEFAULT);
830pins_sleep = pinctrl_lookup_state(uap->pinctrl, PINCTRL_STATE_SLEEP);
831
832/* Normal mode */
833retval = pinctrl_select_state(pinctrl, pins_default);
834/* Sleep mode */
835retval = pinctrl_select_state(pinctrl, pins_sleep);
836
837And your machine configuration may look like this:
838--------------------------------------------------
839
840static unsigned long uart_default_mode[] = {
841 PIN_CONF_PACKED(PIN_CONFIG_DRIVE_PUSH_PULL, 0),
842};
843
844static unsigned long uart_sleep_mode[] = {
845 PIN_CONF_PACKED(PIN_CONFIG_OUTPUT, 0),
846};
847
848static struct pinctrl_map __initdata pinmap[] = {
849 PIN_MAP_MUX_GROUP("uart", PINCTRL_STATE_DEFAULT, "pinctrl-foo",
850 "u0_group", "u0"),
851 PIN_MAP_CONFIGS_PIN("uart", PINCTRL_STATE_DEFAULT, "pinctrl-foo",
852 "UART_TX_PIN", uart_default_mode),
853 PIN_MAP_MUX_GROUP("uart", PINCTRL_STATE_SLEEP, "pinctrl-foo",
854 "u0_group", "gpio-mode"),
855 PIN_MAP_CONFIGS_PIN("uart", PINCTRL_STATE_SLEEP, "pinctrl-foo",
856 "UART_TX_PIN", uart_sleep_mode),
857};
858
859foo_init(void) {
860 pinctrl_register_mappings(pinmap, ARRAY_SIZE(pinmap));
861}
862
863Here the pins we want to control are in the "u0_group" and there is some
864function called "u0" that can be enabled on this group of pins, and then
865everything is UART business as usual. But there is also some function
866named "gpio-mode" that can be mapped onto the same pins to move them into
867GPIO mode.
868
869This will give the desired effect without any bogus interaction with the
870GPIO subsystem. It is just an electrical configuration used by that device
871when going to sleep, it might imply that the pin is set into something the
872datasheet calls "GPIO mode" but that is not the point: it is still used
873by that UART device to control the pins that pertain to that very UART
874driver, putting them into modes needed by the UART. GPIO in the Linux
875kernel sense are just some 1-bit line, and is a different use case.
876
877How the registers are poked to attain the push/pull and output low
878configuration and the muxing of the "u0" or "gpio-mode" group onto these
879pins is a question for the driver.
880
881Some datasheets will be more helpful and refer to the "GPIO mode" as
882"low power mode" rather than anything to do with GPIO. This often means
883the same thing electrically speaking, but in this latter case the
884software engineers will usually quickly identify that this is some
885specific muxing/configuration rather than anything related to the GPIO
886API.
887
888
777Board/machine configuration 889Board/machine configuration
778================================== 890==================================
779 891
diff --git a/Documentation/power/opp.txt b/Documentation/power/opp.txt
index 3035d00757ad..425c51d56aef 100644
--- a/Documentation/power/opp.txt
+++ b/Documentation/power/opp.txt
@@ -1,6 +1,5 @@
1*=============* 1Operating Performance Points (OPP) Library
2* OPP Library * 2==========================================
3*=============*
4 3
5(C) 2009-2010 Nishanth Menon <nm@ti.com>, Texas Instruments Incorporated 4(C) 2009-2010 Nishanth Menon <nm@ti.com>, Texas Instruments Incorporated
6 5
@@ -16,15 +15,31 @@ Contents
16 15
171. Introduction 161. Introduction
18=============== 17===============
181.1 What is an Operating Performance Point (OPP)?
19
19Complex SoCs of today consists of a multiple sub-modules working in conjunction. 20Complex SoCs of today consists of a multiple sub-modules working in conjunction.
20In an operational system executing varied use cases, not all modules in the SoC 21In an operational system executing varied use cases, not all modules in the SoC
21need to function at their highest performing frequency all the time. To 22need to function at their highest performing frequency all the time. To
22facilitate this, sub-modules in a SoC are grouped into domains, allowing some 23facilitate this, sub-modules in a SoC are grouped into domains, allowing some
23domains to run at lower voltage and frequency while other domains are loaded 24domains to run at lower voltage and frequency while other domains run at
24more. The set of discrete tuples consisting of frequency and voltage pairs that 25voltage/frequency pairs that are higher.
26
27The set of discrete tuples consisting of frequency and voltage pairs that
25the device will support per domain are called Operating Performance Points or 28the device will support per domain are called Operating Performance Points or
26OPPs. 29OPPs.
27 30
31As an example:
32Let us consider an MPU device which supports the following:
33{300MHz at minimum voltage of 1V}, {800MHz at minimum voltage of 1.2V},
34{1GHz at minimum voltage of 1.3V}
35
36We can represent these as three OPPs as the following {Hz, uV} tuples:
37{300000000, 1000000}
38{800000000, 1200000}
39{1000000000, 1300000}
40
411.2 Operating Performance Points Library
42
28OPP library provides a set of helper functions to organize and query the OPP 43OPP library provides a set of helper functions to organize and query the OPP
29information. The library is located in drivers/base/power/opp.c and the header 44information. The library is located in drivers/base/power/opp.c and the header
30is located in include/linux/opp.h. OPP library can be enabled by enabling 45is located in include/linux/opp.h. OPP library can be enabled by enabling
diff --git a/Documentation/powerpc/00-INDEX b/Documentation/powerpc/00-INDEX
index 5620fb5ac425..dd9e92802ec0 100644
--- a/Documentation/powerpc/00-INDEX
+++ b/Documentation/powerpc/00-INDEX
@@ -14,10 +14,6 @@ hvcs.txt
14 - IBM "Hypervisor Virtual Console Server" Installation Guide 14 - IBM "Hypervisor Virtual Console Server" Installation Guide
15mpc52xx.txt 15mpc52xx.txt
16 - Linux 2.6.x on MPC52xx family 16 - Linux 2.6.x on MPC52xx family
17sound.txt
18 - info on sound support under Linux/PPC
19zImage_layout.txt
20 - info on the kernel images for Linux/PPC
21qe_firmware.txt 17qe_firmware.txt
22 - describes the layout of firmware binaries for the Freescale QUICC 18 - describes the layout of firmware binaries for the Freescale QUICC
23 Engine and the code that parses and uploads the microcode therein. 19 Engine and the code that parses and uploads the microcode therein.
diff --git a/Documentation/powerpc/ptrace.txt b/Documentation/powerpc/ptrace.txt
index f2a7a3919772..99c5ce88d0fe 100644
--- a/Documentation/powerpc/ptrace.txt
+++ b/Documentation/powerpc/ptrace.txt
@@ -40,6 +40,7 @@ features will have bits indicating whether there is support for:
40#define PPC_DEBUG_FEATURE_INSN_BP_MASK 0x2 40#define PPC_DEBUG_FEATURE_INSN_BP_MASK 0x2
41#define PPC_DEBUG_FEATURE_DATA_BP_RANGE 0x4 41#define PPC_DEBUG_FEATURE_DATA_BP_RANGE 0x4
42#define PPC_DEBUG_FEATURE_DATA_BP_MASK 0x8 42#define PPC_DEBUG_FEATURE_DATA_BP_MASK 0x8
43#define PPC_DEBUG_FEATURE_DATA_BP_DAWR 0x10
43 44
442. PTRACE_SETHWDEBUG 452. PTRACE_SETHWDEBUG
45 46
diff --git a/Documentation/powerpc/sound.txt b/Documentation/powerpc/sound.txt
deleted file mode 100644
index df23d95e03a0..000000000000
--- a/Documentation/powerpc/sound.txt
+++ /dev/null
@@ -1,81 +0,0 @@
1 Information about PowerPC Sound support
2=====================================================================
3
4Please mail me (Cort Dougan, cort@fsmlabs.com) if you have questions,
5comments or corrections.
6
7Last Change: 6.16.99
8
9This just covers sound on the PReP and CHRP systems for now and later
10will contain information on the PowerMac's.
11
12Sound on PReP has been tested and is working with the PowerStack and IBM
13Power Series onboard sound systems which are based on the cs4231(2) chip.
14The sound options when doing the make config are a bit different from
15the default, though.
16
17The I/O base, irq and dma lines that you enter during the make config
18are ignored and are set when booting according to the machine type.
19This is so that one binary can be used for Motorola and IBM machines
20which use different values and isn't allowed by the driver, so things
21are hacked together in such a way as to allow this information to be
22set automatically on boot.
23
241. Motorola PowerStack PReP machines
25
26 Enable support for "Crystal CS4232 based (PnP) cards" and for the
27 Microsoft Sound System. The MSS isn't used, but some of the routines
28 that the CS4232 driver uses are in it.
29
30 Although the options you set are ignored and determined automatically
31 on boot these are included for information only:
32
33 (830) CS4232 audio I/O base 530, 604, E80 or F40
34 (10) CS4232 audio IRQ 5, 7, 9, 11, 12 or 15
35 (6) CS4232 audio DMA 0, 1 or 3
36 (7) CS4232 second (duplex) DMA 0, 1 or 3
37
38 This will allow simultaneous record and playback, as 2 different dma
39 channels are used.
40
41 The sound will be all left channel and very low volume since the
42 auxiliary input isn't muted by default. I had the changes necessary
43 for this in the kernel but the sound driver maintainer didn't want
44 to include them since it wasn't common in other machines. To fix this
45 you need to mute it using a mixer utility of some sort (if you find one
46 please let me know) or by patching the driver yourself and recompiling.
47
48 There is a problem on the PowerStack 2's (PowerStack Pro's) using a
49 different irq/drq than the kernel expects. Unfortunately, I don't know
50 which irq/drq it is so if anyone knows please email me.
51
52 Midi is not supported since the cs4232 driver doesn't support midi yet.
53
542. IBM PowerPersonal PReP machines
55
56 I've only tested sound on the Power Personal Series of IBM workstations
57 so if you try it on others please let me know the result. I'm especially
58 interested in the 43p's sound system, which I know nothing about.
59
60 Enable support for "Crystal CS4232 based (PnP) cards" and for the
61 Microsoft Sound System. The MSS isn't used, but some of the routines
62 that the CS4232 driver uses are in it.
63
64 Although the options you set are ignored and determined automatically
65 on boot these are included for information only:
66
67 (530) CS4232 audio I/O base 530, 604, E80 or F40
68 (5) CS4232 audio IRQ 5, 7, 9, 11, 12 or 15
69 (1) CS4232 audio DMA 0, 1 or 3
70 (7) CS4232 second (duplex) DMA 0, 1 or 3
71 (330) CS4232 MIDI I/O base 330, 370, 3B0 or 3F0
72 (9) CS4232 MIDI IRQ 5, 7, 9, 11, 12 or 15
73
74 This setup does _NOT_ allow for recording yet.
75
76 Midi is not supported since the cs4232 driver doesn't support midi yet.
77
782. IBM CHRP
79
80 I have only tested this on the 43P-150. Build the kernel with the cs4232
81 set as a module and load the module with irq=9 dma=1 dma2=2 io=0x550
diff --git a/Documentation/powerpc/zImage_layout.txt b/Documentation/powerpc/zImage_layout.txt
deleted file mode 100644
index 048e0150f571..000000000000
--- a/Documentation/powerpc/zImage_layout.txt
+++ /dev/null
@@ -1,47 +0,0 @@
1 Information about the Linux/PPC kernel images
2=====================================================================
3
4Please mail me (Cort Dougan, cort@fsmlabs.com) if you have questions,
5comments or corrections.
6
7This document is meant to answer several questions I've had about how
8the PReP system boots and how Linux/PPC interacts with that mechanism.
9It would be nice if we could have information on how other architectures
10boot here as well. If you have anything to contribute, please
11let me know.
12
13
141. PReP boot file
15
16 This is the file necessary to boot PReP systems from floppy or
17 hard drive. The firmware reads the PReP partition table entry
18 and will load the image accordingly.
19
20 To boot the zImage, copy it onto a floppy with dd if=zImage of=/dev/fd0h1440
21 or onto a PReP hard drive partition with dd if=zImage of=/dev/sda4
22 assuming you've created a PReP partition (type 0x41) with fdisk on
23 /dev/sda4.
24
25 The layout of the image format is:
26
27 0x0 +------------+
28 | | PReP partition table entry
29 | |
30 0x400 +------------+
31 | | Bootstrap program code + data
32 | |
33 | |
34 +------------+
35 | | compressed kernel, elf header removed
36 +------------+
37 | | initrd (if loaded)
38 +------------+
39 | | Elf section table for bootstrap program
40 +------------+
41
42
432. MBX boot file
44
45 The MBX boards can load an elf image, and relocate it to the
46 proper location in memory - it copies the image to the location it was
47 linked at.
diff --git a/Documentation/printk-formats.txt b/Documentation/printk-formats.txt
index e8a6aa473bab..3af5ae6c9c11 100644
--- a/Documentation/printk-formats.txt
+++ b/Documentation/printk-formats.txt
@@ -17,6 +17,8 @@ Symbols/Function Pointers:
17 %pF versatile_init+0x0/0x110 17 %pF versatile_init+0x0/0x110
18 %pf versatile_init 18 %pf versatile_init
19 %pS versatile_init+0x0/0x110 19 %pS versatile_init+0x0/0x110
20 %pSR versatile_init+0x9/0x110
21 (with __builtin_extract_return_addr() translation)
20 %ps versatile_init 22 %ps versatile_init
21 %pB prev_fn_of_versatile_init+0x88/0x88 23 %pB prev_fn_of_versatile_init+0x88/0x88
22 24
@@ -170,5 +172,5 @@ Reminder: sizeof() result is of type size_t.
170Thank you for your cooperation and attention. 172Thank you for your cooperation and attention.
171 173
172 174
173By Randy Dunlap <rdunlap@xenotime.net> and 175By Randy Dunlap <rdunlap@infradead.org> and
174Andrew Murray <amurray@mpc-data.co.uk> 176Andrew Murray <amurray@mpc-data.co.uk>
diff --git a/Documentation/s390/CommonIO b/Documentation/s390/CommonIO
index d378cba66456..6e0f63f343b4 100644
--- a/Documentation/s390/CommonIO
+++ b/Documentation/s390/CommonIO
@@ -8,9 +8,9 @@ Command line parameters
8 8
9 Enable logging of debug information in case of ccw device timeouts. 9 Enable logging of debug information in case of ccw device timeouts.
10 10
11* cio_ignore = {all} | 11* cio_ignore = device[,device[,..]]
12 {<device> | <range of devices>} | 12
13 {!<device> | !<range of devices>} 13 device := {all | [!]ipldev | [!]condev | [!]<devno> | [!]<devno>-<devno>}
14 14
15 The given devices will be ignored by the common I/O-layer; no detection 15 The given devices will be ignored by the common I/O-layer; no detection
16 and device sensing will be done on any of those devices. The subchannel to 16 and device sensing will be done on any of those devices. The subchannel to
@@ -24,8 +24,10 @@ Command line parameters
24 device numbers (0xabcd or abcd, for 2.4 backward compatibility). If you 24 device numbers (0xabcd or abcd, for 2.4 backward compatibility). If you
25 give a device number 0xabcd, it will be interpreted as 0.0.abcd. 25 give a device number 0xabcd, it will be interpreted as 0.0.abcd.
26 26
27 You can use the 'all' keyword to ignore all devices. 27 You can use the 'all' keyword to ignore all devices. The 'ipldev' and 'condev'
28 The '!' operator will cause the I/O-layer to _not_ ignore a device. 28 keywords can be used to refer to the CCW based boot device and CCW console
29 device respectively (these are probably useful only when combined with the '!'
30 operator). The '!' operator will cause the I/O-layer to _not_ ignore a device.
29 The command line is parsed from left to right. 31 The command line is parsed from left to right.
30 32
31 For example, 33 For example,
diff --git a/Documentation/s390/s390dbf.txt b/Documentation/s390/s390dbf.txt
index ae66f9b90a25..fcaf0b4efba2 100644
--- a/Documentation/s390/s390dbf.txt
+++ b/Documentation/s390/s390dbf.txt
@@ -143,7 +143,8 @@ Parameter: id: handle for debug log
143 143
144Return Value: none 144Return Value: none
145 145
146Description: frees memory for a debug log 146Description: frees memory for a debug log and removes all registered debug
147 views.
147 Must not be called within an interrupt handler 148 Must not be called within an interrupt handler
148 149
149--------------------------------------------------------------------------- 150---------------------------------------------------------------------------
diff --git a/Documentation/scsi/LICENSE.qla2xxx b/Documentation/scsi/LICENSE.qla2xxx
index 27a91cf43d6d..5020b7b5a244 100644
--- a/Documentation/scsi/LICENSE.qla2xxx
+++ b/Documentation/scsi/LICENSE.qla2xxx
@@ -1,4 +1,4 @@
1Copyright (c) 2003-2012 QLogic Corporation 1Copyright (c) 2003-2013 QLogic Corporation
2QLogic Linux FC-FCoE Driver 2QLogic Linux FC-FCoE Driver
3 3
4This program includes a device driver for Linux 3.x. 4This program includes a device driver for Linux 3.x.
diff --git a/Documentation/security/Smack.txt b/Documentation/security/Smack.txt
index 8a177e4b6e21..7a2d30c132e3 100644
--- a/Documentation/security/Smack.txt
+++ b/Documentation/security/Smack.txt
@@ -117,6 +117,17 @@ access2
117ambient 117ambient
118 This contains the Smack label applied to unlabeled network 118 This contains the Smack label applied to unlabeled network
119 packets. 119 packets.
120change-rule
121 This interface allows modification of existing access control rules.
122 The format accepted on write is:
123 "%s %s %s %s"
124 where the first string is the subject label, the second the
125 object label, the third the access to allow and the fourth the
126 access to deny. The access strings may contain only the characters
127 "rwxat-". If a rule for a given subject and object exists it will be
128 modified by enabling the permissions in the third string and disabling
129 those in the fourth string. If there is no such rule it will be
130 created using the access specified in the third and the fourth strings.
120cipso 131cipso
121 This interface allows a specific CIPSO header to be assigned 132 This interface allows a specific CIPSO header to be assigned
122 to a Smack label. The format accepted on write is: 133 to a Smack label. The format accepted on write is:
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt
index ce6581c8ca26..95731a08f257 100644
--- a/Documentation/sound/alsa/ALSA-Configuration.txt
+++ b/Documentation/sound/alsa/ALSA-Configuration.txt
@@ -890,9 +890,8 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
890 enable_msi - Enable Message Signaled Interrupt (MSI) (default = off) 890 enable_msi - Enable Message Signaled Interrupt (MSI) (default = off)
891 power_save - Automatic power-saving timeout (in second, 0 = 891 power_save - Automatic power-saving timeout (in second, 0 =
892 disable) 892 disable)
893 power_save_controller - Support runtime D3 of HD-audio controller 893 power_save_controller - Reset HD-audio controller in power-saving mode
894 (-1 = on for supported chip (default), false = off, 894 (default = on)
895 true = force to on even for unsupported hardware)
896 align_buffer_size - Force rounding of buffer/period sizes to multiples 895 align_buffer_size - Force rounding of buffer/period sizes to multiples
897 of 128 bytes. This is more efficient in terms of memory 896 of 128 bytes. This is more efficient in terms of memory
898 access but isn't required by the HDA spec and prevents 897 access but isn't required by the HDA spec and prevents
@@ -912,7 +911,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
912 models depending on the codec chip. The list of available models 911 models depending on the codec chip. The list of available models
913 is found in HD-Audio-Models.txt 912 is found in HD-Audio-Models.txt
914 913
915 The model name "genric" is treated as a special case. When this 914 The model name "generic" is treated as a special case. When this
916 model is given, the driver uses the generic codec parser without 915 model is given, the driver uses the generic codec parser without
917 "codec-patch". It's sometimes good for testing and debugging. 916 "codec-patch". It's sometimes good for testing and debugging.
918 917
diff --git a/Documentation/sound/alsa/HD-Audio.txt b/Documentation/sound/alsa/HD-Audio.txt
index d4faa63ff352..c3c912d023cc 100644
--- a/Documentation/sound/alsa/HD-Audio.txt
+++ b/Documentation/sound/alsa/HD-Audio.txt
@@ -461,11 +461,13 @@ The generic parser supports the following hints:
461 the corresponding mixer control, if available 461 the corresponding mixer control, if available
462- add_stereo_mix_input (bool): add the stereo mix (analog-loopback 462- add_stereo_mix_input (bool): add the stereo mix (analog-loopback
463 mix) to the input mux if available 463 mix) to the input mux if available
464- add_out_jack_modes (bool): add "xxx Jack Mode" enum controls to each 464- add_jack_modes (bool): add "xxx Jack Mode" enum controls to each
465 output jack for allowing to change the headphone amp capability 465 I/O jack for allowing to change the headphone amp and mic bias VREF
466- add_in_jack_modes (bool): add "xxx Jack Mode" enum controls to each 466 capabilities
467 input jack for allowing to change the mic bias vref
468- power_down_unused (bool): power down the unused widgets 467- power_down_unused (bool): power down the unused widgets
468- add_hp_mic (bool): add the headphone to capture source if possible
469- hp_mic_detect (bool): enable/disable the hp/mic shared input for a
470 single built-in mic case; default true
469- mixer_nid (int): specifies the widget NID of the analog-loopback 471- mixer_nid (int): specifies the widget NID of the analog-loopback
470 mixer 472 mixer
471 473
diff --git a/Documentation/sound/alsa/seq_oss.html b/Documentation/sound/alsa/seq_oss.html
index d9776cf60c07..9663b45f6fde 100644
--- a/Documentation/sound/alsa/seq_oss.html
+++ b/Documentation/sound/alsa/seq_oss.html
@@ -285,7 +285,7 @@ sample data.
285<H4> 285<H4>
2867.2.4 Close Callback</H4> 2867.2.4 Close Callback</H4>
287The <TT>close</TT> callback is called when this device is closed by the 287The <TT>close</TT> callback is called when this device is closed by the
288applicaion. If any private data was allocated in open callback, it must 288application. If any private data was allocated in open callback, it must
289be released in the close callback. The deletion of ALSA port should be 289be released in the close callback. The deletion of ALSA port should be
290done here, too. This callback must not be NULL. 290done here, too. This callback must not be NULL.
291<H4> 291<H4>
diff --git a/Documentation/sysctl/vm.txt b/Documentation/sysctl/vm.txt
index 078701fdbd4d..dcc75a9ed919 100644
--- a/Documentation/sysctl/vm.txt
+++ b/Documentation/sysctl/vm.txt
@@ -18,6 +18,7 @@ files can be found in mm/swap.c.
18 18
19Currently, these files are in /proc/sys/vm: 19Currently, these files are in /proc/sys/vm:
20 20
21- admin_reserve_kbytes
21- block_dump 22- block_dump
22- compact_memory 23- compact_memory
23- dirty_background_bytes 24- dirty_background_bytes
@@ -53,11 +54,41 @@ Currently, these files are in /proc/sys/vm:
53- percpu_pagelist_fraction 54- percpu_pagelist_fraction
54- stat_interval 55- stat_interval
55- swappiness 56- swappiness
57- user_reserve_kbytes
56- vfs_cache_pressure 58- vfs_cache_pressure
57- zone_reclaim_mode 59- zone_reclaim_mode
58 60
59============================================================== 61==============================================================
60 62
63admin_reserve_kbytes
64
65The amount of free memory in the system that should be reserved for users
66with the capability cap_sys_admin.
67
68admin_reserve_kbytes defaults to min(3% of free pages, 8MB)
69
70That should provide enough for the admin to log in and kill a process,
71if necessary, under the default overcommit 'guess' mode.
72
73Systems running under overcommit 'never' should increase this to account
74for the full Virtual Memory Size of programs used to recover. Otherwise,
75root may not be able to log in to recover the system.
76
77How do you calculate a minimum useful reserve?
78
79sshd or login + bash (or some other shell) + top (or ps, kill, etc.)
80
81For overcommit 'guess', we can sum resident set sizes (RSS).
82On x86_64 this is about 8MB.
83
84For overcommit 'never', we can take the max of their virtual sizes (VSZ)
85and add the sum of their RSS.
86On x86_64 this is about 128MB.
87
88Changing this takes effect whenever an application requests memory.
89
90==============================================================
91
61block_dump 92block_dump
62 93
63block_dump enables block I/O debugging when set to a nonzero value. More 94block_dump enables block I/O debugging when set to a nonzero value. More
@@ -542,6 +573,7 @@ memory until it actually runs out.
542 573
543When this flag is 2, the kernel uses a "never overcommit" 574When this flag is 2, the kernel uses a "never overcommit"
544policy that attempts to prevent any overcommit of memory. 575policy that attempts to prevent any overcommit of memory.
576Note that user_reserve_kbytes affects this policy.
545 577
546This feature can be very useful because there are a lot of 578This feature can be very useful because there are a lot of
547programs that malloc() huge amounts of memory "just-in-case" 579programs that malloc() huge amounts of memory "just-in-case"
@@ -645,6 +677,24 @@ The default value is 60.
645 677
646============================================================== 678==============================================================
647 679
680- user_reserve_kbytes
681
682When overcommit_memory is set to 2, "never overommit" mode, reserve
683min(3% of current process size, user_reserve_kbytes) of free memory.
684This is intended to prevent a user from starting a single memory hogging
685process, such that they cannot recover (kill the hog).
686
687user_reserve_kbytes defaults to min(3% of the current process size, 128MB).
688
689If this is reduced to zero, then the user will be allowed to allocate
690all free memory with a single process, minus admin_reserve_kbytes.
691Any subsequent attempts to execute a command will result in
692"fork: Cannot allocate memory".
693
694Changing this takes effect whenever an application requests memory.
695
696==============================================================
697
648vfs_cache_pressure 698vfs_cache_pressure
649------------------ 699------------------
650 700
diff --git a/Documentation/sysrq.txt b/Documentation/sysrq.txt
index 2a4cdda4828e..8cb4d7842a5f 100644
--- a/Documentation/sysrq.txt
+++ b/Documentation/sysrq.txt
@@ -129,9 +129,9 @@ On all - write a character to /proc/sysrq-trigger. e.g.:
129 129
130* Okay, so what can I use them for? 130* Okay, so what can I use them for?
131~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 131~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
132Well, un'R'aw is very handy when your X server or a svgalib program crashes. 132Well, unraw(r) is very handy when your X server or a svgalib program crashes.
133 133
134sa'K' (Secure Access Key) is useful when you want to be sure there is no 134sak(k) (Secure Access Key) is useful when you want to be sure there is no
135trojan program running at console which could grab your password 135trojan program running at console which could grab your password
136when you would try to login. It will kill all programs on given console, 136when you would try to login. It will kill all programs on given console,
137thus letting you make sure that the login prompt you see is actually 137thus letting you make sure that the login prompt you see is actually
@@ -143,20 +143,20 @@ IMPORTANT: such. :IMPORTANT
143useful when you want to exit a program that will not let you switch consoles. 143useful when you want to exit a program that will not let you switch consoles.
144(For example, X or a svgalib program.) 144(For example, X or a svgalib program.)
145 145
146re'B'oot is good when you're unable to shut down. But you should also 'S'ync 146reboot(b) is good when you're unable to shut down. But you should also
147and 'U'mount first. 147sync(s) and umount(u) first.
148 148
149'C'rash can be used to manually trigger a crashdump when the system is hung. 149crash(c) can be used to manually trigger a crashdump when the system is hung.
150Note that this just triggers a crash if there is no dump mechanism available. 150Note that this just triggers a crash if there is no dump mechanism available.
151 151
152'S'ync is great when your system is locked up, it allows you to sync your 152sync(s) is great when your system is locked up, it allows you to sync your
153disks and will certainly lessen the chance of data loss and fscking. Note 153disks and will certainly lessen the chance of data loss and fscking. Note
154that the sync hasn't taken place until you see the "OK" and "Done" appear 154that the sync hasn't taken place until you see the "OK" and "Done" appear
155on the screen. (If the kernel is really in strife, you may not ever get the 155on the screen. (If the kernel is really in strife, you may not ever get the
156OK or Done message...) 156OK or Done message...)
157 157
158'U'mount is basically useful in the same ways as 'S'ync. I generally 'S'ync, 158umount(u) is basically useful in the same ways as sync(s). I generally sync(s),
159'U'mount, then re'B'oot when my system locks. It's saved me many a fsck. 159umount(u), then reboot(b) when my system locks. It's saved me many a fsck.
160Again, the unmount (remount read-only) hasn't taken place until you see the 160Again, the unmount (remount read-only) hasn't taken place until you see the
161"OK" and "Done" message appear on the screen. 161"OK" and "Done" message appear on the screen.
162 162
@@ -165,11 +165,11 @@ kernel messages you do not want to see. Selecting '0' will prevent all but
165the most urgent kernel messages from reaching your console. (They will 165the most urgent kernel messages from reaching your console. (They will
166still be logged if syslogd/klogd are alive, though.) 166still be logged if syslogd/klogd are alive, though.)
167 167
168t'E'rm and k'I'll are useful if you have some sort of runaway process you 168term(e) and kill(i) are useful if you have some sort of runaway process you
169are unable to kill any other way, especially if it's spawning other 169are unable to kill any other way, especially if it's spawning other
170processes. 170processes.
171 171
172"'J'ust thaw it" is useful if your system becomes unresponsive due to a frozen 172"just thaw it(j)" is useful if your system becomes unresponsive due to a frozen
173(probably root) filesystem via the FIFREEZE ioctl. 173(probably root) filesystem via the FIFREEZE ioctl.
174 174
175* Sometimes SysRq seems to get 'stuck' after using it, what can I do? 175* Sometimes SysRq seems to get 'stuck' after using it, what can I do?
diff --git a/Documentation/this_cpu_ops.txt b/Documentation/this_cpu_ops.txt
new file mode 100644
index 000000000000..1a4ce7e3e05f
--- /dev/null
+++ b/Documentation/this_cpu_ops.txt
@@ -0,0 +1,205 @@
1this_cpu operations
2-------------------
3
4this_cpu operations are a way of optimizing access to per cpu
5variables associated with the *currently* executing processor through
6the use of segment registers (or a dedicated register where the cpu
7permanently stored the beginning of the per cpu area for a specific
8processor).
9
10The this_cpu operations add a per cpu variable offset to the processor
11specific percpu base and encode that operation in the instruction
12operating on the per cpu variable.
13
14This means there are no atomicity issues between the calculation of
15the offset and the operation on the data. Therefore it is not
16necessary to disable preempt or interrupts to ensure that the
17processor is not changed between the calculation of the address and
18the operation on the data.
19
20Read-modify-write operations are of particular interest. Frequently
21processors have special lower latency instructions that can operate
22without the typical synchronization overhead but still provide some
23sort of relaxed atomicity guarantee. The x86 for example can execute
24RMV (Read Modify Write) instructions like inc/dec/cmpxchg without the
25lock prefix and the associated latency penalty.
26
27Access to the variable without the lock prefix is not synchronized but
28synchronization is not necessary since we are dealing with per cpu
29data specific to the currently executing processor. Only the current
30processor should be accessing that variable and therefore there are no
31concurrency issues with other processors in the system.
32
33On x86 the fs: or the gs: segment registers contain the base of the
34per cpu area. It is then possible to simply use the segment override
35to relocate a per cpu relative address to the proper per cpu area for
36the processor. So the relocation to the per cpu base is encoded in the
37instruction via a segment register prefix.
38
39For example:
40
41 DEFINE_PER_CPU(int, x);
42 int z;
43
44 z = this_cpu_read(x);
45
46results in a single instruction
47
48 mov ax, gs:[x]
49
50instead of a sequence of calculation of the address and then a fetch
51from that address which occurs with the percpu operations. Before
52this_cpu_ops such sequence also required preempt disable/enable to
53prevent the kernel from moving the thread to a different processor
54while the calculation is performed.
55
56The main use of the this_cpu operations has been to optimize counter
57operations.
58
59 this_cpu_inc(x)
60
61results in the following single instruction (no lock prefix!)
62
63 inc gs:[x]
64
65instead of the following operations required if there is no segment
66register.
67
68 int *y;
69 int cpu;
70
71 cpu = get_cpu();
72 y = per_cpu_ptr(&x, cpu);
73 (*y)++;
74 put_cpu();
75
76Note that these operations can only be used on percpu data that is
77reserved for a specific processor. Without disabling preemption in the
78surrounding code this_cpu_inc() will only guarantee that one of the
79percpu counters is correctly incremented. However, there is no
80guarantee that the OS will not move the process directly before or
81after the this_cpu instruction is executed. In general this means that
82the value of the individual counters for each processor are
83meaningless. The sum of all the per cpu counters is the only value
84that is of interest.
85
86Per cpu variables are used for performance reasons. Bouncing cache
87lines can be avoided if multiple processors concurrently go through
88the same code paths. Since each processor has its own per cpu
89variables no concurrent cacheline updates take place. The price that
90has to be paid for this optimization is the need to add up the per cpu
91counters when the value of the counter is needed.
92
93
94Special operations:
95-------------------
96
97 y = this_cpu_ptr(&x)
98
99Takes the offset of a per cpu variable (&x !) and returns the address
100of the per cpu variable that belongs to the currently executing
101processor. this_cpu_ptr avoids multiple steps that the common
102get_cpu/put_cpu sequence requires. No processor number is
103available. Instead the offset of the local per cpu area is simply
104added to the percpu offset.
105
106
107
108Per cpu variables and offsets
109-----------------------------
110
111Per cpu variables have *offsets* to the beginning of the percpu
112area. They do not have addresses although they look like that in the
113code. Offsets cannot be directly dereferenced. The offset must be
114added to a base pointer of a percpu area of a processor in order to
115form a valid address.
116
117Therefore the use of x or &x outside of the context of per cpu
118operations is invalid and will generally be treated like a NULL
119pointer dereference.
120
121In the context of per cpu operations
122
123 x is a per cpu variable. Most this_cpu operations take a cpu
124 variable.
125
126 &x is the *offset* a per cpu variable. this_cpu_ptr() takes
127 the offset of a per cpu variable which makes this look a bit
128 strange.
129
130
131
132Operations on a field of a per cpu structure
133--------------------------------------------
134
135Let's say we have a percpu structure
136
137 struct s {
138 int n,m;
139 };
140
141 DEFINE_PER_CPU(struct s, p);
142
143
144Operations on these fields are straightforward
145
146 this_cpu_inc(p.m)
147
148 z = this_cpu_cmpxchg(p.m, 0, 1);
149
150
151If we have an offset to struct s:
152
153 struct s __percpu *ps = &p;
154
155 z = this_cpu_dec(ps->m);
156
157 z = this_cpu_inc_return(ps->n);
158
159
160The calculation of the pointer may require the use of this_cpu_ptr()
161if we do not make use of this_cpu ops later to manipulate fields:
162
163 struct s *pp;
164
165 pp = this_cpu_ptr(&p);
166
167 pp->m--;
168
169 z = pp->n++;
170
171
172Variants of this_cpu ops
173-------------------------
174
175this_cpu ops are interrupt safe. Some architecture do not support
176these per cpu local operations. In that case the operation must be
177replaced by code that disables interrupts, then does the operations
178that are guaranteed to be atomic and then reenable interrupts. Doing
179so is expensive. If there are other reasons why the scheduler cannot
180change the processor we are executing on then there is no reason to
181disable interrupts. For that purpose the __this_cpu operations are
182provided. For example.
183
184 __this_cpu_inc(x);
185
186Will increment x and will not fallback to code that disables
187interrupts on platforms that cannot accomplish atomicity through
188address relocation and a Read-Modify-Write operation in the same
189instruction.
190
191
192
193&this_cpu_ptr(pp)->n vs this_cpu_ptr(&pp->n)
194--------------------------------------------
195
196The first operation takes the offset and forms an address and then
197adds the offset of the n field.
198
199The second one first adds the two offsets and then does the
200relocation. IMHO the second form looks cleaner and has an easier time
201with (). The second form also is consistent with the way
202this_cpu_read() and friends are used.
203
204
205Christoph Lameter, April 3rd, 2013
diff --git a/Documentation/timers/NO_HZ.txt b/Documentation/timers/NO_HZ.txt
new file mode 100644
index 000000000000..5b5322024067
--- /dev/null
+++ b/Documentation/timers/NO_HZ.txt
@@ -0,0 +1,273 @@
1 NO_HZ: Reducing Scheduling-Clock Ticks
2
3
4This document describes Kconfig options and boot parameters that can
5reduce the number of scheduling-clock interrupts, thereby improving energy
6efficiency and reducing OS jitter. Reducing OS jitter is important for
7some types of computationally intensive high-performance computing (HPC)
8applications and for real-time applications.
9
10There are two main contexts in which the number of scheduling-clock
11interrupts can be reduced compared to the old-school approach of sending
12a scheduling-clock interrupt to all CPUs every jiffy whether they need
13it or not (CONFIG_HZ_PERIODIC=y or CONFIG_NO_HZ=n for older kernels):
14
151. Idle CPUs (CONFIG_NO_HZ_IDLE=y or CONFIG_NO_HZ=y for older kernels).
16
172. CPUs having only one runnable task (CONFIG_NO_HZ_FULL=y).
18
19These two cases are described in the following two sections, followed
20by a third section on RCU-specific considerations and a fourth and final
21section listing known issues.
22
23
24IDLE CPUs
25
26If a CPU is idle, there is little point in sending it a scheduling-clock
27interrupt. After all, the primary purpose of a scheduling-clock interrupt
28is to force a busy CPU to shift its attention among multiple duties,
29and an idle CPU has no duties to shift its attention among.
30
31The CONFIG_NO_HZ_IDLE=y Kconfig option causes the kernel to avoid sending
32scheduling-clock interrupts to idle CPUs, which is critically important
33both to battery-powered devices and to highly virtualized mainframes.
34A battery-powered device running a CONFIG_HZ_PERIODIC=y kernel would
35drain its battery very quickly, easily 2-3 times as fast as would the
36same device running a CONFIG_NO_HZ_IDLE=y kernel. A mainframe running
371,500 OS instances might find that half of its CPU time was consumed by
38unnecessary scheduling-clock interrupts. In these situations, there
39is strong motivation to avoid sending scheduling-clock interrupts to
40idle CPUs. That said, dyntick-idle mode is not free:
41
421. It increases the number of instructions executed on the path
43 to and from the idle loop.
44
452. On many architectures, dyntick-idle mode also increases the
46 number of expensive clock-reprogramming operations.
47
48Therefore, systems with aggressive real-time response constraints often
49run CONFIG_HZ_PERIODIC=y kernels (or CONFIG_NO_HZ=n for older kernels)
50in order to avoid degrading from-idle transition latencies.
51
52An idle CPU that is not receiving scheduling-clock interrupts is said to
53be "dyntick-idle", "in dyntick-idle mode", "in nohz mode", or "running
54tickless". The remainder of this document will use "dyntick-idle mode".
55
56There is also a boot parameter "nohz=" that can be used to disable
57dyntick-idle mode in CONFIG_NO_HZ_IDLE=y kernels by specifying "nohz=off".
58By default, CONFIG_NO_HZ_IDLE=y kernels boot with "nohz=on", enabling
59dyntick-idle mode.
60
61
62CPUs WITH ONLY ONE RUNNABLE TASK
63
64If a CPU has only one runnable task, there is little point in sending it
65a scheduling-clock interrupt because there is no other task to switch to.
66
67The CONFIG_NO_HZ_FULL=y Kconfig option causes the kernel to avoid
68sending scheduling-clock interrupts to CPUs with a single runnable task,
69and such CPUs are said to be "adaptive-ticks CPUs". This is important
70for applications with aggressive real-time response constraints because
71it allows them to improve their worst-case response times by the maximum
72duration of a scheduling-clock interrupt. It is also important for
73computationally intensive short-iteration workloads: If any CPU is
74delayed during a given iteration, all the other CPUs will be forced to
75wait idle while the delayed CPU finishes. Thus, the delay is multiplied
76by one less than the number of CPUs. In these situations, there is
77again strong motivation to avoid sending scheduling-clock interrupts.
78
79By default, no CPU will be an adaptive-ticks CPU. The "nohz_full="
80boot parameter specifies the adaptive-ticks CPUs. For example,
81"nohz_full=1,6-8" says that CPUs 1, 6, 7, and 8 are to be adaptive-ticks
82CPUs. Note that you are prohibited from marking all of the CPUs as
83adaptive-tick CPUs: At least one non-adaptive-tick CPU must remain
84online to handle timekeeping tasks in order to ensure that system calls
85like gettimeofday() returns accurate values on adaptive-tick CPUs.
86(This is not an issue for CONFIG_NO_HZ_IDLE=y because there are no
87running user processes to observe slight drifts in clock rate.)
88Therefore, the boot CPU is prohibited from entering adaptive-ticks
89mode. Specifying a "nohz_full=" mask that includes the boot CPU will
90result in a boot-time error message, and the boot CPU will be removed
91from the mask.
92
93Alternatively, the CONFIG_NO_HZ_FULL_ALL=y Kconfig parameter specifies
94that all CPUs other than the boot CPU are adaptive-ticks CPUs. This
95Kconfig parameter will be overridden by the "nohz_full=" boot parameter,
96so that if both the CONFIG_NO_HZ_FULL_ALL=y Kconfig parameter and
97the "nohz_full=1" boot parameter is specified, the boot parameter will
98prevail so that only CPU 1 will be an adaptive-ticks CPU.
99
100Finally, adaptive-ticks CPUs must have their RCU callbacks offloaded.
101This is covered in the "RCU IMPLICATIONS" section below.
102
103Normally, a CPU remains in adaptive-ticks mode as long as possible.
104In particular, transitioning to kernel mode does not automatically change
105the mode. Instead, the CPU will exit adaptive-ticks mode only if needed,
106for example, if that CPU enqueues an RCU callback.
107
108Just as with dyntick-idle mode, the benefits of adaptive-tick mode do
109not come for free:
110
1111. CONFIG_NO_HZ_FULL selects CONFIG_NO_HZ_COMMON, so you cannot run
112 adaptive ticks without also running dyntick idle. This dependency
113 extends down into the implementation, so that all of the costs
114 of CONFIG_NO_HZ_IDLE are also incurred by CONFIG_NO_HZ_FULL.
115
1162. The user/kernel transitions are slightly more expensive due
117 to the need to inform kernel subsystems (such as RCU) about
118 the change in mode.
119
1203. POSIX CPU timers on adaptive-tick CPUs may miss their deadlines
121 (perhaps indefinitely) because they currently rely on
122 scheduling-tick interrupts. This will likely be fixed in
123 one of two ways: (1) Prevent CPUs with POSIX CPU timers from
124 entering adaptive-tick mode, or (2) Use hrtimers or other
125 adaptive-ticks-immune mechanism to cause the POSIX CPU timer to
126 fire properly.
127
1284. If there are more perf events pending than the hardware can
129 accommodate, they are normally round-robined so as to collect
130 all of them over time. Adaptive-tick mode may prevent this
131 round-robining from happening. This will likely be fixed by
132 preventing CPUs with large numbers of perf events pending from
133 entering adaptive-tick mode.
134
1355. Scheduler statistics for adaptive-tick CPUs may be computed
136 slightly differently than those for non-adaptive-tick CPUs.
137 This might in turn perturb load-balancing of real-time tasks.
138
1396. The LB_BIAS scheduler feature is disabled by adaptive ticks.
140
141Although improvements are expected over time, adaptive ticks is quite
142useful for many types of real-time and compute-intensive applications.
143However, the drawbacks listed above mean that adaptive ticks should not
144(yet) be enabled by default.
145
146
147RCU IMPLICATIONS
148
149There are situations in which idle CPUs cannot be permitted to
150enter either dyntick-idle mode or adaptive-tick mode, the most
151common being when that CPU has RCU callbacks pending.
152
153The CONFIG_RCU_FAST_NO_HZ=y Kconfig option may be used to cause such CPUs
154to enter dyntick-idle mode or adaptive-tick mode anyway. In this case,
155a timer will awaken these CPUs every four jiffies in order to ensure
156that the RCU callbacks are processed in a timely fashion.
157
158Another approach is to offload RCU callback processing to "rcuo" kthreads
159using the CONFIG_RCU_NOCB_CPU=y Kconfig option. The specific CPUs to
160offload may be selected via several methods:
161
1621. One of three mutually exclusive Kconfig options specify a
163 build-time default for the CPUs to offload:
164
165 a. The CONFIG_RCU_NOCB_CPU_NONE=y Kconfig option results in
166 no CPUs being offloaded.
167
168 b. The CONFIG_RCU_NOCB_CPU_ZERO=y Kconfig option causes
169 CPU 0 to be offloaded.
170
171 c. The CONFIG_RCU_NOCB_CPU_ALL=y Kconfig option causes all
172 CPUs to be offloaded. Note that the callbacks will be
173 offloaded to "rcuo" kthreads, and that those kthreads
174 will in fact run on some CPU. However, this approach
175 gives fine-grained control on exactly which CPUs the
176 callbacks run on, along with their scheduling priority
177 (including the default of SCHED_OTHER), and it further
178 allows this control to be varied dynamically at runtime.
179
1802. The "rcu_nocbs=" kernel boot parameter, which takes a comma-separated
181 list of CPUs and CPU ranges, for example, "1,3-5" selects CPUs 1,
182 3, 4, and 5. The specified CPUs will be offloaded in addition to
183 any CPUs specified as offloaded by CONFIG_RCU_NOCB_CPU_ZERO=y or
184 CONFIG_RCU_NOCB_CPU_ALL=y. This means that the "rcu_nocbs=" boot
185 parameter has no effect for kernels built with RCU_NOCB_CPU_ALL=y.
186
187The offloaded CPUs will never queue RCU callbacks, and therefore RCU
188never prevents offloaded CPUs from entering either dyntick-idle mode
189or adaptive-tick mode. That said, note that it is up to userspace to
190pin the "rcuo" kthreads to specific CPUs if desired. Otherwise, the
191scheduler will decide where to run them, which might or might not be
192where you want them to run.
193
194
195KNOWN ISSUES
196
197o Dyntick-idle slows transitions to and from idle slightly.
198 In practice, this has not been a problem except for the most
199 aggressive real-time workloads, which have the option of disabling
200 dyntick-idle mode, an option that most of them take. However,
201 some workloads will no doubt want to use adaptive ticks to
202 eliminate scheduling-clock interrupt latencies. Here are some
203 options for these workloads:
204
205 a. Use PMQOS from userspace to inform the kernel of your
206 latency requirements (preferred).
207
208 b. On x86 systems, use the "idle=mwait" boot parameter.
209
210 c. On x86 systems, use the "intel_idle.max_cstate=" to limit
211 ` the maximum C-state depth.
212
213 d. On x86 systems, use the "idle=poll" boot parameter.
214 However, please note that use of this parameter can cause
215 your CPU to overheat, which may cause thermal throttling
216 to degrade your latencies -- and that this degradation can
217 be even worse than that of dyntick-idle. Furthermore,
218 this parameter effectively disables Turbo Mode on Intel
219 CPUs, which can significantly reduce maximum performance.
220
221o Adaptive-ticks slows user/kernel transitions slightly.
222 This is not expected to be a problem for computationally intensive
223 workloads, which have few such transitions. Careful benchmarking
224 will be required to determine whether or not other workloads
225 are significantly affected by this effect.
226
227o Adaptive-ticks does not do anything unless there is only one
228 runnable task for a given CPU, even though there are a number
229 of other situations where the scheduling-clock tick is not
230 needed. To give but one example, consider a CPU that has one
231 runnable high-priority SCHED_FIFO task and an arbitrary number
232 of low-priority SCHED_OTHER tasks. In this case, the CPU is
233 required to run the SCHED_FIFO task until it either blocks or
234 some other higher-priority task awakens on (or is assigned to)
235 this CPU, so there is no point in sending a scheduling-clock
236 interrupt to this CPU. However, the current implementation
237 nevertheless sends scheduling-clock interrupts to CPUs having a
238 single runnable SCHED_FIFO task and multiple runnable SCHED_OTHER
239 tasks, even though these interrupts are unnecessary.
240
241 Better handling of these sorts of situations is future work.
242
243o A reboot is required to reconfigure both adaptive idle and RCU
244 callback offloading. Runtime reconfiguration could be provided
245 if needed, however, due to the complexity of reconfiguring RCU at
246 runtime, there would need to be an earthshakingly good reason.
247 Especially given that you have the straightforward option of
248 simply offloading RCU callbacks from all CPUs and pinning them
249 where you want them whenever you want them pinned.
250
251o Additional configuration is required to deal with other sources
252 of OS jitter, including interrupts and system-utility tasks
253 and processes. This configuration normally involves binding
254 interrupts and tasks to particular CPUs.
255
256o Some sources of OS jitter can currently be eliminated only by
257 constraining the workload. For example, the only way to eliminate
258 OS jitter due to global TLB shootdowns is to avoid the unmapping
259 operations (such as kernel module unload operations) that
260 result in these shootdowns. For another example, page faults
261 and TLB misses can be reduced (and in some cases eliminated) by
262 using huge pages and by constraining the amount of memory used
263 by the application. Pre-faulting the working set can also be
264 helpful, especially when combined with the mlock() and mlockall()
265 system calls.
266
267o Unless all CPUs are idle, at least one CPU must keep the
268 scheduling-clock interrupt going in order to support accurate
269 timekeeping.
270
271o If there are adaptive-ticks CPUs, there will be at least one
272 CPU keeping the scheduling-clock interrupt going, even if all
273 CPUs are otherwise idle.
diff --git a/Documentation/trace/ftrace.txt b/Documentation/trace/ftrace.txt
index 53d6a3c51d87..bfe8c29b1f1d 100644
--- a/Documentation/trace/ftrace.txt
+++ b/Documentation/trace/ftrace.txt
@@ -8,6 +8,7 @@ Copyright 2008 Red Hat Inc.
8Reviewers: Elias Oltmanns, Randy Dunlap, Andrew Morton, 8Reviewers: Elias Oltmanns, Randy Dunlap, Andrew Morton,
9 John Kacur, and David Teigland. 9 John Kacur, and David Teigland.
10Written for: 2.6.28-rc2 10Written for: 2.6.28-rc2
11Updated for: 3.10
11 12
12Introduction 13Introduction
13------------ 14------------
@@ -17,13 +18,16 @@ designers of systems to find what is going on inside the kernel.
17It can be used for debugging or analyzing latencies and 18It can be used for debugging or analyzing latencies and
18performance issues that take place outside of user-space. 19performance issues that take place outside of user-space.
19 20
20Although ftrace is the function tracer, it also includes an 21Although ftrace is typically considered the function tracer, it
21infrastructure that allows for other types of tracing. Some of 22is really a frame work of several assorted tracing utilities.
22the tracers that are currently in ftrace include a tracer to 23There's latency tracing to examine what occurs between interrupts
23trace context switches, the time it takes for a high priority 24disabled and enabled, as well as for preemption and from a time
24task to run after it was woken up, the time interrupts are 25a task is woken to the task is actually scheduled in.
25disabled, and more (ftrace allows for tracer plugins, which 26
26means that the list of tracers can always grow). 27One of the most common uses of ftrace is the event tracing.
28Through out the kernel is hundreds of static event points that
29can be enabled via the debugfs file system to see what is
30going on in certain parts of the kernel.
27 31
28 32
29Implementation Details 33Implementation Details
@@ -61,7 +65,7 @@ the extended "/sys/kernel/debug/tracing" path name.
61 65
62That's it! (assuming that you have ftrace configured into your kernel) 66That's it! (assuming that you have ftrace configured into your kernel)
63 67
64After mounting the debugfs, you can see a directory called 68After mounting debugfs, you can see a directory called
65"tracing". This directory contains the control and output files 69"tracing". This directory contains the control and output files
66of ftrace. Here is a list of some of the key files: 70of ftrace. Here is a list of some of the key files:
67 71
@@ -84,7 +88,9 @@ of ftrace. Here is a list of some of the key files:
84 88
85 This sets or displays whether writing to the trace 89 This sets or displays whether writing to the trace
86 ring buffer is enabled. Echo 0 into this file to disable 90 ring buffer is enabled. Echo 0 into this file to disable
87 the tracer or 1 to enable it. 91 the tracer or 1 to enable it. Note, this only disables
92 writing to the ring buffer, the tracing overhead may
93 still be occurring.
88 94
89 trace: 95 trace:
90 96
@@ -109,7 +115,15 @@ of ftrace. Here is a list of some of the key files:
109 115
110 This file lets the user control the amount of data 116 This file lets the user control the amount of data
111 that is displayed in one of the above output 117 that is displayed in one of the above output
112 files. 118 files. Options also exist to modify how a tracer
119 or events work (stack traces, timestamps, etc).
120
121 options:
122
123 This is a directory that has a file for every available
124 trace option (also in trace_options). Options may also be set
125 or cleared by writing a "1" or "0" respectively into the
126 corresponding file with the option name.
113 127
114 tracing_max_latency: 128 tracing_max_latency:
115 129
@@ -121,10 +135,17 @@ of ftrace. Here is a list of some of the key files:
121 latency is greater than the value in this 135 latency is greater than the value in this
122 file. (in microseconds) 136 file. (in microseconds)
123 137
138 tracing_thresh:
139
140 Some latency tracers will record a trace whenever the
141 latency is greater than the number in this file.
142 Only active when the file contains a number greater than 0.
143 (in microseconds)
144
124 buffer_size_kb: 145 buffer_size_kb:
125 146
126 This sets or displays the number of kilobytes each CPU 147 This sets or displays the number of kilobytes each CPU
127 buffer can hold. The tracer buffers are the same size 148 buffer holds. By default, the trace buffers are the same size
128 for each CPU. The displayed number is the size of the 149 for each CPU. The displayed number is the size of the
129 CPU buffer and not total size of all buffers. The 150 CPU buffer and not total size of all buffers. The
130 trace buffers are allocated in pages (blocks of memory 151 trace buffers are allocated in pages (blocks of memory
@@ -133,16 +154,30 @@ of ftrace. Here is a list of some of the key files:
133 than requested, the rest of the page will be used, 154 than requested, the rest of the page will be used,
134 making the actual allocation bigger than requested. 155 making the actual allocation bigger than requested.
135 ( Note, the size may not be a multiple of the page size 156 ( Note, the size may not be a multiple of the page size
136 due to buffer management overhead. ) 157 due to buffer management meta-data. )
137 158
138 This can only be updated when the current_tracer 159 buffer_total_size_kb:
139 is set to "nop". 160
161 This displays the total combined size of all the trace buffers.
162
163 free_buffer:
164
165 If a process is performing the tracing, and the ring buffer
166 should be shrunk "freed" when the process is finished, even
167 if it were to be killed by a signal, this file can be used
168 for that purpose. On close of this file, the ring buffer will
169 be resized to its minimum size. Having a process that is tracing
170 also open this file, when the process exits its file descriptor
171 for this file will be closed, and in doing so, the ring buffer
172 will be "freed".
173
174 It may also stop tracing if disable_on_free option is set.
140 175
141 tracing_cpumask: 176 tracing_cpumask:
142 177
143 This is a mask that lets the user only trace 178 This is a mask that lets the user only trace
144 on specified CPUS. The format is a hex string 179 on specified CPUs. The format is a hex string
145 representing the CPUS. 180 representing the CPUs.
146 181
147 set_ftrace_filter: 182 set_ftrace_filter:
148 183
@@ -183,6 +218,261 @@ of ftrace. Here is a list of some of the key files:
183 "set_ftrace_notrace". (See the section "dynamic ftrace" 218 "set_ftrace_notrace". (See the section "dynamic ftrace"
184 below for more details.) 219 below for more details.)
185 220
221 enabled_functions:
222
223 This file is more for debugging ftrace, but can also be useful
224 in seeing if any function has a callback attached to it.
225 Not only does the trace infrastructure use ftrace function
226 trace utility, but other subsystems might too. This file
227 displays all functions that have a callback attached to them
228 as well as the number of callbacks that have been attached.
229 Note, a callback may also call multiple functions which will
230 not be listed in this count.
231
232 If the callback registered to be traced by a function with
233 the "save regs" attribute (thus even more overhead), a 'R'
234 will be displayed on the same line as the function that
235 is returning registers.
236
237 function_profile_enabled:
238
239 When set it will enable all functions with either the function
240 tracer, or if enabled, the function graph tracer. It will
241 keep a histogram of the number of functions that were called
242 and if run with the function graph tracer, it will also keep
243 track of the time spent in those functions. The histogram
244 content can be displayed in the files:
245
246 trace_stats/function<cpu> ( function0, function1, etc).
247
248 trace_stats:
249
250 A directory that holds different tracing stats.
251
252 kprobe_events:
253
254 Enable dynamic trace points. See kprobetrace.txt.
255
256 kprobe_profile:
257
258 Dynamic trace points stats. See kprobetrace.txt.
259
260 max_graph_depth:
261
262 Used with the function graph tracer. This is the max depth
263 it will trace into a function. Setting this to a value of
264 one will show only the first kernel function that is called
265 from user space.
266
267 printk_formats:
268
269 This is for tools that read the raw format files. If an event in
270 the ring buffer references a string (currently only trace_printk()
271 does this), only a pointer to the string is recorded into the buffer
272 and not the string itself. This prevents tools from knowing what
273 that string was. This file displays the string and address for
274 the string allowing tools to map the pointers to what the
275 strings were.
276
277 saved_cmdlines:
278
279 Only the pid of the task is recorded in a trace event unless
280 the event specifically saves the task comm as well. Ftrace
281 makes a cache of pid mappings to comms to try to display
282 comms for events. If a pid for a comm is not listed, then
283 "<...>" is displayed in the output.
284
285 snapshot:
286
287 This displays the "snapshot" buffer and also lets the user
288 take a snapshot of the current running trace.
289 See the "Snapshot" section below for more details.
290
291 stack_max_size:
292
293 When the stack tracer is activated, this will display the
294 maximum stack size it has encountered.
295 See the "Stack Trace" section below.
296
297 stack_trace:
298
299 This displays the stack back trace of the largest stack
300 that was encountered when the stack tracer is activated.
301 See the "Stack Trace" section below.
302
303 stack_trace_filter:
304
305 This is similar to "set_ftrace_filter" but it limits what
306 functions the stack tracer will check.
307
308 trace_clock:
309
310 Whenever an event is recorded into the ring buffer, a
311 "timestamp" is added. This stamp comes from a specified
312 clock. By default, ftrace uses the "local" clock. This
313 clock is very fast and strictly per cpu, but on some
314 systems it may not be monotonic with respect to other
315 CPUs. In other words, the local clocks may not be in sync
316 with local clocks on other CPUs.
317
318 Usual clocks for tracing:
319
320 # cat trace_clock
321 [local] global counter x86-tsc
322
323 local: Default clock, but may not be in sync across CPUs
324
325 global: This clock is in sync with all CPUs but may
326 be a bit slower than the local clock.
327
328 counter: This is not a clock at all, but literally an atomic
329 counter. It counts up one by one, but is in sync
330 with all CPUs. This is useful when you need to
331 know exactly the order events occurred with respect to
332 each other on different CPUs.
333
334 uptime: This uses the jiffies counter and the time stamp
335 is relative to the time since boot up.
336
337 perf: This makes ftrace use the same clock that perf uses.
338 Eventually perf will be able to read ftrace buffers
339 and this will help out in interleaving the data.
340
341 x86-tsc: Architectures may define their own clocks. For
342 example, x86 uses its own TSC cycle clock here.
343
344 To set a clock, simply echo the clock name into this file.
345
346 echo global > trace_clock
347
348 trace_marker:
349
350 This is a very useful file for synchronizing user space
351 with events happening in the kernel. Writing strings into
352 this file will be written into the ftrace buffer.
353
354 It is useful in applications to open this file at the start
355 of the application and just reference the file descriptor
356 for the file.
357
358 void trace_write(const char *fmt, ...)
359 {
360 va_list ap;
361 char buf[256];
362 int n;
363
364 if (trace_fd < 0)
365 return;
366
367 va_start(ap, fmt);
368 n = vsnprintf(buf, 256, fmt, ap);
369 va_end(ap);
370
371 write(trace_fd, buf, n);
372 }
373
374 start:
375
376 trace_fd = open("trace_marker", WR_ONLY);
377
378 uprobe_events:
379
380 Add dynamic tracepoints in programs.
381 See uprobetracer.txt
382
383 uprobe_profile:
384
385 Uprobe statistics. See uprobetrace.txt
386
387 instances:
388
389 This is a way to make multiple trace buffers where different
390 events can be recorded in different buffers.
391 See "Instances" section below.
392
393 events:
394
395 This is the trace event directory. It holds event tracepoints
396 (also known as static tracepoints) that have been compiled
397 into the kernel. It shows what event tracepoints exist
398 and how they are grouped by system. There are "enable"
399 files at various levels that can enable the tracepoints
400 when a "1" is written to them.
401
402 See events.txt for more information.
403
404 per_cpu:
405
406 This is a directory that contains the trace per_cpu information.
407
408 per_cpu/cpu0/buffer_size_kb:
409
410 The ftrace buffer is defined per_cpu. That is, there's a separate
411 buffer for each CPU to allow writes to be done atomically,
412 and free from cache bouncing. These buffers may have different
413 size buffers. This file is similar to the buffer_size_kb
414 file, but it only displays or sets the buffer size for the
415 specific CPU. (here cpu0).
416
417 per_cpu/cpu0/trace:
418
419 This is similar to the "trace" file, but it will only display
420 the data specific for the CPU. If written to, it only clears
421 the specific CPU buffer.
422
423 per_cpu/cpu0/trace_pipe
424
425 This is similar to the "trace_pipe" file, and is a consuming
426 read, but it will only display (and consume) the data specific
427 for the CPU.
428
429 per_cpu/cpu0/trace_pipe_raw
430
431 For tools that can parse the ftrace ring buffer binary format,
432 the trace_pipe_raw file can be used to extract the data
433 from the ring buffer directly. With the use of the splice()
434 system call, the buffer data can be quickly transferred to
435 a file or to the network where a server is collecting the
436 data.
437
438 Like trace_pipe, this is a consuming reader, where multiple
439 reads will always produce different data.
440
441 per_cpu/cpu0/snapshot:
442
443 This is similar to the main "snapshot" file, but will only
444 snapshot the current CPU (if supported). It only displays
445 the content of the snapshot for a given CPU, and if
446 written to, only clears this CPU buffer.
447
448 per_cpu/cpu0/snapshot_raw:
449
450 Similar to the trace_pipe_raw, but will read the binary format
451 from the snapshot buffer for the given CPU.
452
453 per_cpu/cpu0/stats:
454
455 This displays certain stats about the ring buffer:
456
457 entries: The number of events that are still in the buffer.
458
459 overrun: The number of lost events due to overwriting when
460 the buffer was full.
461
462 commit overrun: Should always be zero.
463 This gets set if so many events happened within a nested
464 event (ring buffer is re-entrant), that it fills the
465 buffer and starts dropping events.
466
467 bytes: Bytes actually read (not overwritten).
468
469 oldest event ts: The oldest timestamp in the buffer
470
471 now ts: The current timestamp
472
473 dropped events: Events lost due to overwrite option being off.
474
475 read events: The number of events read.
186 476
187The Tracers 477The Tracers
188----------- 478-----------
@@ -234,11 +524,6 @@ Here is the list of current tracers that may be configured.
234 RT tasks (as the current "wakeup" does). This is useful 524 RT tasks (as the current "wakeup" does). This is useful
235 for those interested in wake up timings of RT tasks. 525 for those interested in wake up timings of RT tasks.
236 526
237 "hw-branch-tracer"
238
239 Uses the BTS CPU feature on x86 CPUs to traces all
240 branches executed.
241
242 "nop" 527 "nop"
243 528
244 This is the "trace nothing" tracer. To remove all 529 This is the "trace nothing" tracer. To remove all
@@ -261,70 +546,100 @@ Here is an example of the output format of the file "trace"
261 -------- 546 --------
262# tracer: function 547# tracer: function
263# 548#
264# TASK-PID CPU# TIMESTAMP FUNCTION 549# entries-in-buffer/entries-written: 140080/250280 #P:4
265# | | | | | 550#
266 bash-4251 [01] 10152.583854: path_put <-path_walk 551# _-----=> irqs-off
267 bash-4251 [01] 10152.583855: dput <-path_put 552# / _----=> need-resched
268 bash-4251 [01] 10152.583855: _atomic_dec_and_lock <-dput 553# | / _---=> hardirq/softirq
554# || / _--=> preempt-depth
555# ||| / delay
556# TASK-PID CPU# |||| TIMESTAMP FUNCTION
557# | | | |||| | |
558 bash-1977 [000] .... 17284.993652: sys_close <-system_call_fastpath
559 bash-1977 [000] .... 17284.993653: __close_fd <-sys_close
560 bash-1977 [000] .... 17284.993653: _raw_spin_lock <-__close_fd
561 sshd-1974 [003] .... 17284.993653: __srcu_read_unlock <-fsnotify
562 bash-1977 [000] .... 17284.993654: add_preempt_count <-_raw_spin_lock
563 bash-1977 [000] ...1 17284.993655: _raw_spin_unlock <-__close_fd
564 bash-1977 [000] ...1 17284.993656: sub_preempt_count <-_raw_spin_unlock
565 bash-1977 [000] .... 17284.993657: filp_close <-__close_fd
566 bash-1977 [000] .... 17284.993657: dnotify_flush <-filp_close
567 sshd-1974 [003] .... 17284.993658: sys_select <-system_call_fastpath
269 -------- 568 --------
270 569
271A header is printed with the tracer name that is represented by 570A header is printed with the tracer name that is represented by
272the trace. In this case the tracer is "function". Then a header 571the trace. In this case the tracer is "function". Then it shows the
273showing the format. Task name "bash", the task PID "4251", the 572number of events in the buffer as well as the total number of entries
274CPU that it was running on "01", the timestamp in <secs>.<usecs> 573that were written. The difference is the number of entries that were
275format, the function name that was traced "path_put" and the 574lost due to the buffer filling up (250280 - 140080 = 110200 events
276parent function that called this function "path_walk". The 575lost).
277timestamp is the time at which the function was entered. 576
577The header explains the content of the events. Task name "bash", the task
578PID "1977", the CPU that it was running on "000", the latency format
579(explained below), the timestamp in <secs>.<usecs> format, the
580function name that was traced "sys_close" and the parent function that
581called this function "system_call_fastpath". The timestamp is the time
582at which the function was entered.
278 583
279Latency trace format 584Latency trace format
280-------------------- 585--------------------
281 586
282When the latency-format option is enabled, the trace file gives 587When the latency-format option is enabled or when one of the latency
283somewhat more information to see why a latency happened. 588tracers is set, the trace file gives somewhat more information to see
284Here is a typical trace. 589why a latency happened. Here is a typical trace.
285 590
286# tracer: irqsoff 591# tracer: irqsoff
287# 592#
288irqsoff latency trace v1.1.5 on 2.6.26-rc8 593# irqsoff latency trace v1.1.5 on 3.8.0-test+
289-------------------------------------------------------------------- 594# --------------------------------------------------------------------
290 latency: 97 us, #3/3, CPU#0 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2) 595# latency: 259 us, #4/4, CPU#2 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:4)
291 ----------------- 596# -----------------
292 | task: swapper-0 (uid:0 nice:0 policy:0 rt_prio:0) 597# | task: ps-6143 (uid:0 nice:0 policy:0 rt_prio:0)
293 ----------------- 598# -----------------
294 => started at: apic_timer_interrupt 599# => started at: __lock_task_sighand
295 => ended at: do_softirq 600# => ended at: _raw_spin_unlock_irqrestore
296 601#
297# _------=> CPU# 602#
298# / _-----=> irqs-off 603# _------=> CPU#
299# | / _----=> need-resched 604# / _-----=> irqs-off
300# || / _---=> hardirq/softirq 605# | / _----=> need-resched
301# ||| / _--=> preempt-depth 606# || / _---=> hardirq/softirq
302# |||| / 607# ||| / _--=> preempt-depth
303# ||||| delay 608# |||| / delay
304# cmd pid ||||| time | caller 609# cmd pid ||||| time | caller
305# \ / ||||| \ | / 610# \ / ||||| \ | /
306 <idle>-0 0d..1 0us+: trace_hardirqs_off_thunk (apic_timer_interrupt) 611 ps-6143 2d... 0us!: trace_hardirqs_off <-__lock_task_sighand
307 <idle>-0 0d.s. 97us : __do_softirq (do_softirq) 612 ps-6143 2d..1 259us+: trace_hardirqs_on <-_raw_spin_unlock_irqrestore
308 <idle>-0 0d.s1 98us : trace_hardirqs_on (do_softirq) 613 ps-6143 2d..1 263us+: time_hardirqs_on <-_raw_spin_unlock_irqrestore
614 ps-6143 2d..1 306us : <stack trace>
615 => trace_hardirqs_on_caller
616 => trace_hardirqs_on
617 => _raw_spin_unlock_irqrestore
618 => do_task_stat
619 => proc_tgid_stat
620 => proc_single_show
621 => seq_read
622 => vfs_read
623 => sys_read
624 => system_call_fastpath
309 625
310 626
311This shows that the current tracer is "irqsoff" tracing the time 627This shows that the current tracer is "irqsoff" tracing the time
312for which interrupts were disabled. It gives the trace version 628for which interrupts were disabled. It gives the trace version (which
313and the version of the kernel upon which this was executed on 629never changes) and the version of the kernel upon which this was executed on
314(2.6.26-rc8). Then it displays the max latency in microsecs (97 630(3.10). Then it displays the max latency in microseconds (259 us). The number
315us). The number of trace entries displayed and the total number 631of trace entries displayed and the total number (both are four: #4/4).
316recorded (both are three: #3/3). The type of preemption that was 632VP, KP, SP, and HP are always zero and are reserved for later use.
317used (PREEMPT). VP, KP, SP, and HP are always zero and are 633#P is the number of online CPUs (#P:4).
318reserved for later use. #P is the number of online CPUS (#P:2).
319 634
320The task is the process that was running when the latency 635The task is the process that was running when the latency
321occurred. (swapper pid: 0). 636occurred. (ps pid: 6143).
322 637
323The start and stop (the functions in which the interrupts were 638The start and stop (the functions in which the interrupts were
324disabled and enabled respectively) that caused the latencies: 639disabled and enabled respectively) that caused the latencies:
325 640
326 apic_timer_interrupt is where the interrupts were disabled. 641 __lock_task_sighand is where the interrupts were disabled.
327 do_softirq is where they were enabled again. 642 _raw_spin_unlock_irqrestore is where they were enabled again.
328 643
329The next lines after the header are the trace itself. The header 644The next lines after the header are the trace itself. The header
330explains which is which. 645explains which is which.
@@ -367,16 +682,43 @@ The above is mostly meaningful for kernel developers.
367 682
368 The rest is the same as the 'trace' file. 683 The rest is the same as the 'trace' file.
369 684
685 Note, the latency tracers will usually end with a back trace
686 to easily find where the latency occurred.
370 687
371trace_options 688trace_options
372------------- 689-------------
373 690
374The trace_options file is used to control what gets printed in 691The trace_options file (or the options directory) is used to control
375the trace output. To see what is available, simply cat the file: 692what gets printed in the trace output, or manipulate the tracers.
693To see what is available, simply cat the file:
376 694
377 cat trace_options 695 cat trace_options
378 print-parent nosym-offset nosym-addr noverbose noraw nohex nobin \ 696print-parent
379 noblock nostacktrace nosched-tree nouserstacktrace nosym-userobj 697nosym-offset
698nosym-addr
699noverbose
700noraw
701nohex
702nobin
703noblock
704nostacktrace
705trace_printk
706noftrace_preempt
707nobranch
708annotate
709nouserstacktrace
710nosym-userobj
711noprintk-msg-only
712context-info
713latency-format
714sleep-time
715graph-time
716record-cmd
717overwrite
718nodisable_on_free
719irq-info
720markers
721function-trace
380 722
381To disable one of the options, echo in the option prepended with 723To disable one of the options, echo in the option prepended with
382"no". 724"no".
@@ -428,13 +770,34 @@ Here are the available options:
428 770
429 bin - This will print out the formats in raw binary. 771 bin - This will print out the formats in raw binary.
430 772
431 block - TBD (needs update) 773 block - When set, reading trace_pipe will not block when polled.
432 774
433 stacktrace - This is one of the options that changes the trace 775 stacktrace - This is one of the options that changes the trace
434 itself. When a trace is recorded, so is the stack 776 itself. When a trace is recorded, so is the stack
435 of functions. This allows for back traces of 777 of functions. This allows for back traces of
436 trace sites. 778 trace sites.
437 779
780 trace_printk - Can disable trace_printk() from writing into the buffer.
781
782 branch - Enable branch tracing with the tracer.
783
784 annotate - It is sometimes confusing when the CPU buffers are full
785 and one CPU buffer had a lot of events recently, thus
786 a shorter time frame, were another CPU may have only had
787 a few events, which lets it have older events. When
788 the trace is reported, it shows the oldest events first,
789 and it may look like only one CPU ran (the one with the
790 oldest events). When the annotate option is set, it will
791 display when a new CPU buffer started:
792
793 <idle>-0 [001] dNs4 21169.031481: wake_up_idle_cpu <-add_timer_on
794 <idle>-0 [001] dNs4 21169.031482: _raw_spin_unlock_irqrestore <-add_timer_on
795 <idle>-0 [001] .Ns4 21169.031484: sub_preempt_count <-_raw_spin_unlock_irqrestore
796##### CPU 2 buffer started ####
797 <idle>-0 [002] .N.1 21169.031484: rcu_idle_exit <-cpu_idle
798 <idle>-0 [001] .Ns3 21169.031484: _raw_spin_unlock <-clocksource_watchdog
799 <idle>-0 [001] .Ns3 21169.031485: sub_preempt_count <-_raw_spin_unlock
800
438 userstacktrace - This option changes the trace. It records a 801 userstacktrace - This option changes the trace. It records a
439 stacktrace of the current userspace thread. 802 stacktrace of the current userspace thread.
440 803
@@ -451,9 +814,13 @@ Here are the available options:
451 a.out-1623 [000] 40874.465068: /root/a.out[+0x480] <-/root/a.out[+0 814 a.out-1623 [000] 40874.465068: /root/a.out[+0x480] <-/root/a.out[+0
452x494] <- /root/a.out[+0x4a8] <- /lib/libc-2.7.so[+0x1e1a6] 815x494] <- /root/a.out[+0x4a8] <- /lib/libc-2.7.so[+0x1e1a6]
453 816
454 sched-tree - trace all tasks that are on the runqueue, at 817
455 every scheduling event. Will add overhead if 818 printk-msg-only - When set, trace_printk()s will only show the format
456 there's a lot of tasks running at once. 819 and not their parameters (if trace_bprintk() or
820 trace_bputs() was used to save the trace_printk()).
821
822 context-info - Show only the event data. Hides the comm, PID,
823 timestamp, CPU, and other useful data.
457 824
458 latency-format - This option changes the trace. When 825 latency-format - This option changes the trace. When
459 it is enabled, the trace displays 826 it is enabled, the trace displays
@@ -461,31 +828,61 @@ x494] <- /root/a.out[+0x4a8] <- /lib/libc-2.7.so[+0x1e1a6]
461 latencies, as described in "Latency 828 latencies, as described in "Latency
462 trace format". 829 trace format".
463 830
831 sleep-time - When running function graph tracer, to include
832 the time a task schedules out in its function.
833 When enabled, it will account time the task has been
834 scheduled out as part of the function call.
835
836 graph-time - When running function graph tracer, to include the
837 time to call nested functions. When this is not set,
838 the time reported for the function will only include
839 the time the function itself executed for, not the time
840 for functions that it called.
841
842 record-cmd - When any event or tracer is enabled, a hook is enabled
843 in the sched_switch trace point to fill comm cache
844 with mapped pids and comms. But this may cause some
845 overhead, and if you only care about pids, and not the
846 name of the task, disabling this option can lower the
847 impact of tracing.
848
464 overwrite - This controls what happens when the trace buffer is 849 overwrite - This controls what happens when the trace buffer is
465 full. If "1" (default), the oldest events are 850 full. If "1" (default), the oldest events are
466 discarded and overwritten. If "0", then the newest 851 discarded and overwritten. If "0", then the newest
467 events are discarded. 852 events are discarded.
853 (see per_cpu/cpu0/stats for overrun and dropped)
468 854
469ftrace_enabled 855 disable_on_free - When the free_buffer is closed, tracing will
470-------------- 856 stop (tracing_on set to 0).
471 857
472The following tracers (listed below) give different output 858 irq-info - Shows the interrupt, preempt count, need resched data.
473depending on whether or not the sysctl ftrace_enabled is set. To 859 When disabled, the trace looks like:
474set ftrace_enabled, one can either use the sysctl function or
475set it via the proc file system interface.
476 860
477 sysctl kernel.ftrace_enabled=1 861# tracer: function
862#
863# entries-in-buffer/entries-written: 144405/9452052 #P:4
864#
865# TASK-PID CPU# TIMESTAMP FUNCTION
866# | | | | |
867 <idle>-0 [002] 23636.756054: ttwu_do_activate.constprop.89 <-try_to_wake_up
868 <idle>-0 [002] 23636.756054: activate_task <-ttwu_do_activate.constprop.89
869 <idle>-0 [002] 23636.756055: enqueue_task <-activate_task
478 870
479 or
480 871
481 echo 1 > /proc/sys/kernel/ftrace_enabled 872 markers - When set, the trace_marker is writable (only by root).
873 When disabled, the trace_marker will error with EINVAL
874 on write.
875
876
877 function-trace - The latency tracers will enable function tracing
878 if this option is enabled (default it is). When
879 it is disabled, the latency tracers do not trace
880 functions. This keeps the overhead of the tracer down
881 when performing latency tests.
482 882
483To disable ftrace_enabled simply replace the '1' with '0' in the 883 Note: Some tracers have their own options. They only appear
484above commands. 884 when the tracer is active.
485 885
486When ftrace_enabled is set the tracers will also record the
487functions that are within the trace. The descriptions of the
488tracers will also show an example with ftrace enabled.
489 886
490 887
491irqsoff 888irqsoff
@@ -506,95 +903,133 @@ new trace is saved.
506To reset the maximum, echo 0 into tracing_max_latency. Here is 903To reset the maximum, echo 0 into tracing_max_latency. Here is
507an example: 904an example:
508 905
906 # echo 0 > options/function-trace
509 # echo irqsoff > current_tracer 907 # echo irqsoff > current_tracer
510 # echo latency-format > trace_options
511 # echo 0 > tracing_max_latency
512 # echo 1 > tracing_on 908 # echo 1 > tracing_on
909 # echo 0 > tracing_max_latency
513 # ls -ltr 910 # ls -ltr
514 [...] 911 [...]
515 # echo 0 > tracing_on 912 # echo 0 > tracing_on
516 # cat trace 913 # cat trace
517# tracer: irqsoff 914# tracer: irqsoff
518# 915#
519irqsoff latency trace v1.1.5 on 2.6.26 916# irqsoff latency trace v1.1.5 on 3.8.0-test+
520-------------------------------------------------------------------- 917# --------------------------------------------------------------------
521 latency: 12 us, #3/3, CPU#1 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2) 918# latency: 16 us, #4/4, CPU#0 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:4)
522 ----------------- 919# -----------------
523 | task: bash-3730 (uid:0 nice:0 policy:0 rt_prio:0) 920# | task: swapper/0-0 (uid:0 nice:0 policy:0 rt_prio:0)
524 ----------------- 921# -----------------
525 => started at: sys_setpgid 922# => started at: run_timer_softirq
526 => ended at: sys_setpgid 923# => ended at: run_timer_softirq
527 924#
528# _------=> CPU# 925#
529# / _-----=> irqs-off 926# _------=> CPU#
530# | / _----=> need-resched 927# / _-----=> irqs-off
531# || / _---=> hardirq/softirq 928# | / _----=> need-resched
532# ||| / _--=> preempt-depth 929# || / _---=> hardirq/softirq
533# |||| / 930# ||| / _--=> preempt-depth
534# ||||| delay 931# |||| / delay
535# cmd pid ||||| time | caller 932# cmd pid ||||| time | caller
536# \ / ||||| \ | / 933# \ / ||||| \ | /
537 bash-3730 1d... 0us : _write_lock_irq (sys_setpgid) 934 <idle>-0 0d.s2 0us+: _raw_spin_lock_irq <-run_timer_softirq
538 bash-3730 1d..1 1us+: _write_unlock_irq (sys_setpgid) 935 <idle>-0 0dNs3 17us : _raw_spin_unlock_irq <-run_timer_softirq
539 bash-3730 1d..2 14us : trace_hardirqs_on (sys_setpgid) 936 <idle>-0 0dNs3 17us+: trace_hardirqs_on <-run_timer_softirq
540 937 <idle>-0 0dNs3 25us : <stack trace>
541 938 => _raw_spin_unlock_irq
542Here we see that that we had a latency of 12 microsecs (which is 939 => run_timer_softirq
543very good). The _write_lock_irq in sys_setpgid disabled 940 => __do_softirq
544interrupts. The difference between the 12 and the displayed 941 => call_softirq
545timestamp 14us occurred because the clock was incremented 942 => do_softirq
943 => irq_exit
944 => smp_apic_timer_interrupt
945 => apic_timer_interrupt
946 => rcu_idle_exit
947 => cpu_idle
948 => rest_init
949 => start_kernel
950 => x86_64_start_reservations
951 => x86_64_start_kernel
952
953Here we see that that we had a latency of 16 microseconds (which is
954very good). The _raw_spin_lock_irq in run_timer_softirq disabled
955interrupts. The difference between the 16 and the displayed
956timestamp 25us occurred because the clock was incremented
546between the time of recording the max latency and the time of 957between the time of recording the max latency and the time of
547recording the function that had that latency. 958recording the function that had that latency.
548 959
549Note the above example had ftrace_enabled not set. If we set the 960Note the above example had function-trace not set. If we set
550ftrace_enabled, we get a much larger output: 961function-trace, we get a much larger output:
962
963 with echo 1 > options/function-trace
551 964
552# tracer: irqsoff 965# tracer: irqsoff
553# 966#
554irqsoff latency trace v1.1.5 on 2.6.26-rc8 967# irqsoff latency trace v1.1.5 on 3.8.0-test+
555-------------------------------------------------------------------- 968# --------------------------------------------------------------------
556 latency: 50 us, #101/101, CPU#0 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2) 969# latency: 71 us, #168/168, CPU#3 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:4)
557 ----------------- 970# -----------------
558 | task: ls-4339 (uid:0 nice:0 policy:0 rt_prio:0) 971# | task: bash-2042 (uid:0 nice:0 policy:0 rt_prio:0)
559 ----------------- 972# -----------------
560 => started at: __alloc_pages_internal 973# => started at: ata_scsi_queuecmd
561 => ended at: __alloc_pages_internal 974# => ended at: ata_scsi_queuecmd
562 975#
563# _------=> CPU# 976#
564# / _-----=> irqs-off 977# _------=> CPU#
565# | / _----=> need-resched 978# / _-----=> irqs-off
566# || / _---=> hardirq/softirq 979# | / _----=> need-resched
567# ||| / _--=> preempt-depth 980# || / _---=> hardirq/softirq
568# |||| / 981# ||| / _--=> preempt-depth
569# ||||| delay 982# |||| / delay
570# cmd pid ||||| time | caller 983# cmd pid ||||| time | caller
571# \ / ||||| \ | / 984# \ / ||||| \ | /
572 ls-4339 0...1 0us+: get_page_from_freelist (__alloc_pages_internal) 985 bash-2042 3d... 0us : _raw_spin_lock_irqsave <-ata_scsi_queuecmd
573 ls-4339 0d..1 3us : rmqueue_bulk (get_page_from_freelist) 986 bash-2042 3d... 0us : add_preempt_count <-_raw_spin_lock_irqsave
574 ls-4339 0d..1 3us : _spin_lock (rmqueue_bulk) 987 bash-2042 3d..1 1us : ata_scsi_find_dev <-ata_scsi_queuecmd
575 ls-4339 0d..1 4us : add_preempt_count (_spin_lock) 988 bash-2042 3d..1 1us : __ata_scsi_find_dev <-ata_scsi_find_dev
576 ls-4339 0d..2 4us : __rmqueue (rmqueue_bulk) 989 bash-2042 3d..1 2us : ata_find_dev.part.14 <-__ata_scsi_find_dev
577 ls-4339 0d..2 5us : __rmqueue_smallest (__rmqueue) 990 bash-2042 3d..1 2us : ata_qc_new_init <-__ata_scsi_queuecmd
578 ls-4339 0d..2 5us : __mod_zone_page_state (__rmqueue_smallest) 991 bash-2042 3d..1 3us : ata_sg_init <-__ata_scsi_queuecmd
579 ls-4339 0d..2 6us : __rmqueue (rmqueue_bulk) 992 bash-2042 3d..1 4us : ata_scsi_rw_xlat <-__ata_scsi_queuecmd
580 ls-4339 0d..2 6us : __rmqueue_smallest (__rmqueue) 993 bash-2042 3d..1 4us : ata_build_rw_tf <-ata_scsi_rw_xlat
581 ls-4339 0d..2 7us : __mod_zone_page_state (__rmqueue_smallest)
582 ls-4339 0d..2 7us : __rmqueue (rmqueue_bulk)
583 ls-4339 0d..2 8us : __rmqueue_smallest (__rmqueue)
584[...] 994[...]
585 ls-4339 0d..2 46us : __rmqueue_smallest (__rmqueue) 995 bash-2042 3d..1 67us : delay_tsc <-__delay
586 ls-4339 0d..2 47us : __mod_zone_page_state (__rmqueue_smallest) 996 bash-2042 3d..1 67us : add_preempt_count <-delay_tsc
587 ls-4339 0d..2 47us : __rmqueue (rmqueue_bulk) 997 bash-2042 3d..2 67us : sub_preempt_count <-delay_tsc
588 ls-4339 0d..2 48us : __rmqueue_smallest (__rmqueue) 998 bash-2042 3d..1 67us : add_preempt_count <-delay_tsc
589 ls-4339 0d..2 48us : __mod_zone_page_state (__rmqueue_smallest) 999 bash-2042 3d..2 68us : sub_preempt_count <-delay_tsc
590 ls-4339 0d..2 49us : _spin_unlock (rmqueue_bulk) 1000 bash-2042 3d..1 68us+: ata_bmdma_start <-ata_bmdma_qc_issue
591 ls-4339 0d..2 49us : sub_preempt_count (_spin_unlock) 1001 bash-2042 3d..1 71us : _raw_spin_unlock_irqrestore <-ata_scsi_queuecmd
592 ls-4339 0d..1 50us : get_page_from_freelist (__alloc_pages_internal) 1002 bash-2042 3d..1 71us : _raw_spin_unlock_irqrestore <-ata_scsi_queuecmd
593 ls-4339 0d..2 51us : trace_hardirqs_on (__alloc_pages_internal) 1003 bash-2042 3d..1 72us+: trace_hardirqs_on <-ata_scsi_queuecmd
594 1004 bash-2042 3d..1 120us : <stack trace>
595 1005 => _raw_spin_unlock_irqrestore
596 1006 => ata_scsi_queuecmd
597Here we traced a 50 microsecond latency. But we also see all the 1007 => scsi_dispatch_cmd
1008 => scsi_request_fn
1009 => __blk_run_queue_uncond
1010 => __blk_run_queue
1011 => blk_queue_bio
1012 => generic_make_request
1013 => submit_bio
1014 => submit_bh
1015 => __ext3_get_inode_loc
1016 => ext3_iget
1017 => ext3_lookup
1018 => lookup_real
1019 => __lookup_hash
1020 => walk_component
1021 => lookup_last
1022 => path_lookupat
1023 => filename_lookup
1024 => user_path_at_empty
1025 => user_path_at
1026 => vfs_fstatat
1027 => vfs_stat
1028 => sys_newstat
1029 => system_call_fastpath
1030
1031
1032Here we traced a 71 microsecond latency. But we also see all the
598functions that were called during that time. Note that by 1033functions that were called during that time. Note that by
599enabling function tracing, we incur an added overhead. This 1034enabling function tracing, we incur an added overhead. This
600overhead may extend the latency times. But nevertheless, this 1035overhead may extend the latency times. But nevertheless, this
@@ -614,120 +1049,122 @@ Like the irqsoff tracer, it records the maximum latency for
614which preemption was disabled. The control of preemptoff tracer 1049which preemption was disabled. The control of preemptoff tracer
615is much like the irqsoff tracer. 1050is much like the irqsoff tracer.
616 1051
1052 # echo 0 > options/function-trace
617 # echo preemptoff > current_tracer 1053 # echo preemptoff > current_tracer
618 # echo latency-format > trace_options
619 # echo 0 > tracing_max_latency
620 # echo 1 > tracing_on 1054 # echo 1 > tracing_on
1055 # echo 0 > tracing_max_latency
621 # ls -ltr 1056 # ls -ltr
622 [...] 1057 [...]
623 # echo 0 > tracing_on 1058 # echo 0 > tracing_on
624 # cat trace 1059 # cat trace
625# tracer: preemptoff 1060# tracer: preemptoff
626# 1061#
627preemptoff latency trace v1.1.5 on 2.6.26-rc8 1062# preemptoff latency trace v1.1.5 on 3.8.0-test+
628-------------------------------------------------------------------- 1063# --------------------------------------------------------------------
629 latency: 29 us, #3/3, CPU#0 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2) 1064# latency: 46 us, #4/4, CPU#1 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:4)
630 ----------------- 1065# -----------------
631 | task: sshd-4261 (uid:0 nice:0 policy:0 rt_prio:0) 1066# | task: sshd-1991 (uid:0 nice:0 policy:0 rt_prio:0)
632 ----------------- 1067# -----------------
633 => started at: do_IRQ 1068# => started at: do_IRQ
634 => ended at: __do_softirq 1069# => ended at: do_IRQ
635 1070#
636# _------=> CPU# 1071#
637# / _-----=> irqs-off 1072# _------=> CPU#
638# | / _----=> need-resched 1073# / _-----=> irqs-off
639# || / _---=> hardirq/softirq 1074# | / _----=> need-resched
640# ||| / _--=> preempt-depth 1075# || / _---=> hardirq/softirq
641# |||| / 1076# ||| / _--=> preempt-depth
642# ||||| delay 1077# |||| / delay
643# cmd pid ||||| time | caller 1078# cmd pid ||||| time | caller
644# \ / ||||| \ | / 1079# \ / ||||| \ | /
645 sshd-4261 0d.h. 0us+: irq_enter (do_IRQ) 1080 sshd-1991 1d.h. 0us+: irq_enter <-do_IRQ
646 sshd-4261 0d.s. 29us : _local_bh_enable (__do_softirq) 1081 sshd-1991 1d..1 46us : irq_exit <-do_IRQ
647 sshd-4261 0d.s1 30us : trace_preempt_on (__do_softirq) 1082 sshd-1991 1d..1 47us+: trace_preempt_on <-do_IRQ
1083 sshd-1991 1d..1 52us : <stack trace>
1084 => sub_preempt_count
1085 => irq_exit
1086 => do_IRQ
1087 => ret_from_intr
648 1088
649 1089
650This has some more changes. Preemption was disabled when an 1090This has some more changes. Preemption was disabled when an
651interrupt came in (notice the 'h'), and was enabled while doing 1091interrupt came in (notice the 'h'), and was enabled on exit.
652a softirq. (notice the 's'). But we also see that interrupts 1092But we also see that interrupts have been disabled when entering
653have been disabled when entering the preempt off section and 1093the preempt off section and leaving it (the 'd'). We do not know if
654leaving it (the 'd'). We do not know if interrupts were enabled 1094interrupts were enabled in the mean time or shortly after this
655in the mean time. 1095was over.
656 1096
657# tracer: preemptoff 1097# tracer: preemptoff
658# 1098#
659preemptoff latency trace v1.1.5 on 2.6.26-rc8 1099# preemptoff latency trace v1.1.5 on 3.8.0-test+
660-------------------------------------------------------------------- 1100# --------------------------------------------------------------------
661 latency: 63 us, #87/87, CPU#0 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2) 1101# latency: 83 us, #241/241, CPU#1 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:4)
662 ----------------- 1102# -----------------
663 | task: sshd-4261 (uid:0 nice:0 policy:0 rt_prio:0) 1103# | task: bash-1994 (uid:0 nice:0 policy:0 rt_prio:0)
664 ----------------- 1104# -----------------
665 => started at: remove_wait_queue 1105# => started at: wake_up_new_task
666 => ended at: __do_softirq 1106# => ended at: task_rq_unlock
667 1107#
668# _------=> CPU# 1108#
669# / _-----=> irqs-off 1109# _------=> CPU#
670# | / _----=> need-resched 1110# / _-----=> irqs-off
671# || / _---=> hardirq/softirq 1111# | / _----=> need-resched
672# ||| / _--=> preempt-depth 1112# || / _---=> hardirq/softirq
673# |||| / 1113# ||| / _--=> preempt-depth
674# ||||| delay 1114# |||| / delay
675# cmd pid ||||| time | caller 1115# cmd pid ||||| time | caller
676# \ / ||||| \ | / 1116# \ / ||||| \ | /
677 sshd-4261 0d..1 0us : _spin_lock_irqsave (remove_wait_queue) 1117 bash-1994 1d..1 0us : _raw_spin_lock_irqsave <-wake_up_new_task
678 sshd-4261 0d..1 1us : _spin_unlock_irqrestore (remove_wait_queue) 1118 bash-1994 1d..1 0us : select_task_rq_fair <-select_task_rq
679 sshd-4261 0d..1 2us : do_IRQ (common_interrupt) 1119 bash-1994 1d..1 1us : __rcu_read_lock <-select_task_rq_fair
680 sshd-4261 0d..1 2us : irq_enter (do_IRQ) 1120 bash-1994 1d..1 1us : source_load <-select_task_rq_fair
681 sshd-4261 0d..1 2us : idle_cpu (irq_enter) 1121 bash-1994 1d..1 1us : source_load <-select_task_rq_fair
682 sshd-4261 0d..1 3us : add_preempt_count (irq_enter)
683 sshd-4261 0d.h1 3us : idle_cpu (irq_enter)
684 sshd-4261 0d.h. 4us : handle_fasteoi_irq (do_IRQ)
685[...] 1122[...]
686 sshd-4261 0d.h. 12us : add_preempt_count (_spin_lock) 1123 bash-1994 1d..1 12us : irq_enter <-smp_apic_timer_interrupt
687 sshd-4261 0d.h1 12us : ack_ioapic_quirk_irq (handle_fasteoi_irq) 1124 bash-1994 1d..1 12us : rcu_irq_enter <-irq_enter
688 sshd-4261 0d.h1 13us : move_native_irq (ack_ioapic_quirk_irq) 1125 bash-1994 1d..1 13us : add_preempt_count <-irq_enter
689 sshd-4261 0d.h1 13us : _spin_unlock (handle_fasteoi_irq) 1126 bash-1994 1d.h1 13us : exit_idle <-smp_apic_timer_interrupt
690 sshd-4261 0d.h1 14us : sub_preempt_count (_spin_unlock) 1127 bash-1994 1d.h1 13us : hrtimer_interrupt <-smp_apic_timer_interrupt
691 sshd-4261 0d.h1 14us : irq_exit (do_IRQ) 1128 bash-1994 1d.h1 13us : _raw_spin_lock <-hrtimer_interrupt
692 sshd-4261 0d.h1 15us : sub_preempt_count (irq_exit) 1129 bash-1994 1d.h1 14us : add_preempt_count <-_raw_spin_lock
693 sshd-4261 0d..2 15us : do_softirq (irq_exit) 1130 bash-1994 1d.h2 14us : ktime_get_update_offsets <-hrtimer_interrupt
694 sshd-4261 0d... 15us : __do_softirq (do_softirq)
695 sshd-4261 0d... 16us : __local_bh_disable (__do_softirq)
696 sshd-4261 0d... 16us+: add_preempt_count (__local_bh_disable)
697 sshd-4261 0d.s4 20us : add_preempt_count (__local_bh_disable)
698 sshd-4261 0d.s4 21us : sub_preempt_count (local_bh_enable)
699 sshd-4261 0d.s5 21us : sub_preempt_count (local_bh_enable)
700[...] 1131[...]
701 sshd-4261 0d.s6 41us : add_preempt_count (__local_bh_disable) 1132 bash-1994 1d.h1 35us : lapic_next_event <-clockevents_program_event
702 sshd-4261 0d.s6 42us : sub_preempt_count (local_bh_enable) 1133 bash-1994 1d.h1 35us : irq_exit <-smp_apic_timer_interrupt
703 sshd-4261 0d.s7 42us : sub_preempt_count (local_bh_enable) 1134 bash-1994 1d.h1 36us : sub_preempt_count <-irq_exit
704 sshd-4261 0d.s5 43us : add_preempt_count (__local_bh_disable) 1135 bash-1994 1d..2 36us : do_softirq <-irq_exit
705 sshd-4261 0d.s5 43us : sub_preempt_count (local_bh_enable_ip) 1136 bash-1994 1d..2 36us : __do_softirq <-call_softirq
706 sshd-4261 0d.s6 44us : sub_preempt_count (local_bh_enable_ip) 1137 bash-1994 1d..2 36us : __local_bh_disable <-__do_softirq
707 sshd-4261 0d.s5 44us : add_preempt_count (__local_bh_disable) 1138 bash-1994 1d.s2 37us : add_preempt_count <-_raw_spin_lock_irq
708 sshd-4261 0d.s5 45us : sub_preempt_count (local_bh_enable) 1139 bash-1994 1d.s3 38us : _raw_spin_unlock <-run_timer_softirq
1140 bash-1994 1d.s3 39us : sub_preempt_count <-_raw_spin_unlock
1141 bash-1994 1d.s2 39us : call_timer_fn <-run_timer_softirq
709[...] 1142[...]
710 sshd-4261 0d.s. 63us : _local_bh_enable (__do_softirq) 1143 bash-1994 1dNs2 81us : cpu_needs_another_gp <-rcu_process_callbacks
711 sshd-4261 0d.s1 64us : trace_preempt_on (__do_softirq) 1144 bash-1994 1dNs2 82us : __local_bh_enable <-__do_softirq
1145 bash-1994 1dNs2 82us : sub_preempt_count <-__local_bh_enable
1146 bash-1994 1dN.2 82us : idle_cpu <-irq_exit
1147 bash-1994 1dN.2 83us : rcu_irq_exit <-irq_exit
1148 bash-1994 1dN.2 83us : sub_preempt_count <-irq_exit
1149 bash-1994 1.N.1 84us : _raw_spin_unlock_irqrestore <-task_rq_unlock
1150 bash-1994 1.N.1 84us+: trace_preempt_on <-task_rq_unlock
1151 bash-1994 1.N.1 104us : <stack trace>
1152 => sub_preempt_count
1153 => _raw_spin_unlock_irqrestore
1154 => task_rq_unlock
1155 => wake_up_new_task
1156 => do_fork
1157 => sys_clone
1158 => stub_clone
712 1159
713 1160
714The above is an example of the preemptoff trace with 1161The above is an example of the preemptoff trace with
715ftrace_enabled set. Here we see that interrupts were disabled 1162function-trace set. Here we see that interrupts were not disabled
716the entire time. The irq_enter code lets us know that we entered 1163the entire time. The irq_enter code lets us know that we entered
717an interrupt 'h'. Before that, the functions being traced still 1164an interrupt 'h'. Before that, the functions being traced still
718show that it is not in an interrupt, but we can see from the 1165show that it is not in an interrupt, but we can see from the
719functions themselves that this is not the case. 1166functions themselves that this is not the case.
720 1167
721Notice that __do_softirq when called does not have a
722preempt_count. It may seem that we missed a preempt enabling.
723What really happened is that the preempt count is held on the
724thread's stack and we switched to the softirq stack (4K stacks
725in effect). The code does not copy the preempt count, but
726because interrupts are disabled, we do not need to worry about
727it. Having a tracer like this is good for letting people know
728what really happens inside the kernel.
729
730
731preemptirqsoff 1168preemptirqsoff
732-------------- 1169--------------
733 1170
@@ -762,38 +1199,57 @@ tracer.
762Again, using this trace is much like the irqsoff and preemptoff 1199Again, using this trace is much like the irqsoff and preemptoff
763tracers. 1200tracers.
764 1201
1202 # echo 0 > options/function-trace
765 # echo preemptirqsoff > current_tracer 1203 # echo preemptirqsoff > current_tracer
766 # echo latency-format > trace_options
767 # echo 0 > tracing_max_latency
768 # echo 1 > tracing_on 1204 # echo 1 > tracing_on
1205 # echo 0 > tracing_max_latency
769 # ls -ltr 1206 # ls -ltr
770 [...] 1207 [...]
771 # echo 0 > tracing_on 1208 # echo 0 > tracing_on
772 # cat trace 1209 # cat trace
773# tracer: preemptirqsoff 1210# tracer: preemptirqsoff
774# 1211#
775preemptirqsoff latency trace v1.1.5 on 2.6.26-rc8 1212# preemptirqsoff latency trace v1.1.5 on 3.8.0-test+
776-------------------------------------------------------------------- 1213# --------------------------------------------------------------------
777 latency: 293 us, #3/3, CPU#0 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2) 1214# latency: 100 us, #4/4, CPU#3 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:4)
778 ----------------- 1215# -----------------
779 | task: ls-4860 (uid:0 nice:0 policy:0 rt_prio:0) 1216# | task: ls-2230 (uid:0 nice:0 policy:0 rt_prio:0)
780 ----------------- 1217# -----------------
781 => started at: apic_timer_interrupt 1218# => started at: ata_scsi_queuecmd
782 => ended at: __do_softirq 1219# => ended at: ata_scsi_queuecmd
783 1220#
784# _------=> CPU# 1221#
785# / _-----=> irqs-off 1222# _------=> CPU#
786# | / _----=> need-resched 1223# / _-----=> irqs-off
787# || / _---=> hardirq/softirq 1224# | / _----=> need-resched
788# ||| / _--=> preempt-depth 1225# || / _---=> hardirq/softirq
789# |||| / 1226# ||| / _--=> preempt-depth
790# ||||| delay 1227# |||| / delay
791# cmd pid ||||| time | caller 1228# cmd pid ||||| time | caller
792# \ / ||||| \ | / 1229# \ / ||||| \ | /
793 ls-4860 0d... 0us!: trace_hardirqs_off_thunk (apic_timer_interrupt) 1230 ls-2230 3d... 0us+: _raw_spin_lock_irqsave <-ata_scsi_queuecmd
794 ls-4860 0d.s. 294us : _local_bh_enable (__do_softirq) 1231 ls-2230 3...1 100us : _raw_spin_unlock_irqrestore <-ata_scsi_queuecmd
795 ls-4860 0d.s1 294us : trace_preempt_on (__do_softirq) 1232 ls-2230 3...1 101us+: trace_preempt_on <-ata_scsi_queuecmd
796 1233 ls-2230 3...1 111us : <stack trace>
1234 => sub_preempt_count
1235 => _raw_spin_unlock_irqrestore
1236 => ata_scsi_queuecmd
1237 => scsi_dispatch_cmd
1238 => scsi_request_fn
1239 => __blk_run_queue_uncond
1240 => __blk_run_queue
1241 => blk_queue_bio
1242 => generic_make_request
1243 => submit_bio
1244 => submit_bh
1245 => ext3_bread
1246 => ext3_dir_bread
1247 => htree_dirblock_to_tree
1248 => ext3_htree_fill_tree
1249 => ext3_readdir
1250 => vfs_readdir
1251 => sys_getdents
1252 => system_call_fastpath
797 1253
798 1254
799The trace_hardirqs_off_thunk is called from assembly on x86 when 1255The trace_hardirqs_off_thunk is called from assembly on x86 when
@@ -802,105 +1258,158 @@ function tracing, we do not know if interrupts were enabled
802within the preemption points. We do see that it started with 1258within the preemption points. We do see that it started with
803preemption enabled. 1259preemption enabled.
804 1260
805Here is a trace with ftrace_enabled set: 1261Here is a trace with function-trace set:
806
807 1262
808# tracer: preemptirqsoff 1263# tracer: preemptirqsoff
809# 1264#
810preemptirqsoff latency trace v1.1.5 on 2.6.26-rc8 1265# preemptirqsoff latency trace v1.1.5 on 3.8.0-test+
811-------------------------------------------------------------------- 1266# --------------------------------------------------------------------
812 latency: 105 us, #183/183, CPU#0 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2) 1267# latency: 161 us, #339/339, CPU#3 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:4)
813 ----------------- 1268# -----------------
814 | task: sshd-4261 (uid:0 nice:0 policy:0 rt_prio:0) 1269# | task: ls-2269 (uid:0 nice:0 policy:0 rt_prio:0)
815 ----------------- 1270# -----------------
816 => started at: write_chan 1271# => started at: schedule
817 => ended at: __do_softirq 1272# => ended at: mutex_unlock
818 1273#
819# _------=> CPU# 1274#
820# / _-----=> irqs-off 1275# _------=> CPU#
821# | / _----=> need-resched 1276# / _-----=> irqs-off
822# || / _---=> hardirq/softirq 1277# | / _----=> need-resched
823# ||| / _--=> preempt-depth 1278# || / _---=> hardirq/softirq
824# |||| / 1279# ||| / _--=> preempt-depth
825# ||||| delay 1280# |||| / delay
826# cmd pid ||||| time | caller 1281# cmd pid ||||| time | caller
827# \ / ||||| \ | / 1282# \ / ||||| \ | /
828 ls-4473 0.N.. 0us : preempt_schedule (write_chan) 1283kworker/-59 3...1 0us : __schedule <-schedule
829 ls-4473 0dN.1 1us : _spin_lock (schedule) 1284kworker/-59 3d..1 0us : rcu_preempt_qs <-rcu_note_context_switch
830 ls-4473 0dN.1 2us : add_preempt_count (_spin_lock) 1285kworker/-59 3d..1 1us : add_preempt_count <-_raw_spin_lock_irq
831 ls-4473 0d..2 2us : put_prev_task_fair (schedule) 1286kworker/-59 3d..2 1us : deactivate_task <-__schedule
832[...] 1287kworker/-59 3d..2 1us : dequeue_task <-deactivate_task
833 ls-4473 0d..2 13us : set_normalized_timespec (ktime_get_ts) 1288kworker/-59 3d..2 2us : update_rq_clock <-dequeue_task
834 ls-4473 0d..2 13us : __switch_to (schedule) 1289kworker/-59 3d..2 2us : dequeue_task_fair <-dequeue_task
835 sshd-4261 0d..2 14us : finish_task_switch (schedule) 1290kworker/-59 3d..2 2us : update_curr <-dequeue_task_fair
836 sshd-4261 0d..2 14us : _spin_unlock_irq (finish_task_switch) 1291kworker/-59 3d..2 2us : update_min_vruntime <-update_curr
837 sshd-4261 0d..1 15us : add_preempt_count (_spin_lock_irqsave) 1292kworker/-59 3d..2 3us : cpuacct_charge <-update_curr
838 sshd-4261 0d..2 16us : _spin_unlock_irqrestore (hrtick_set) 1293kworker/-59 3d..2 3us : __rcu_read_lock <-cpuacct_charge
839 sshd-4261 0d..2 16us : do_IRQ (common_interrupt) 1294kworker/-59 3d..2 3us : __rcu_read_unlock <-cpuacct_charge
840 sshd-4261 0d..2 17us : irq_enter (do_IRQ) 1295kworker/-59 3d..2 3us : update_cfs_rq_blocked_load <-dequeue_task_fair
841 sshd-4261 0d..2 17us : idle_cpu (irq_enter) 1296kworker/-59 3d..2 4us : clear_buddies <-dequeue_task_fair
842 sshd-4261 0d..2 18us : add_preempt_count (irq_enter) 1297kworker/-59 3d..2 4us : account_entity_dequeue <-dequeue_task_fair
843 sshd-4261 0d.h2 18us : idle_cpu (irq_enter) 1298kworker/-59 3d..2 4us : update_min_vruntime <-dequeue_task_fair
844 sshd-4261 0d.h. 18us : handle_fasteoi_irq (do_IRQ) 1299kworker/-59 3d..2 4us : update_cfs_shares <-dequeue_task_fair
845 sshd-4261 0d.h. 19us : _spin_lock (handle_fasteoi_irq) 1300kworker/-59 3d..2 5us : hrtick_update <-dequeue_task_fair
846 sshd-4261 0d.h. 19us : add_preempt_count (_spin_lock) 1301kworker/-59 3d..2 5us : wq_worker_sleeping <-__schedule
847 sshd-4261 0d.h1 20us : _spin_unlock (handle_fasteoi_irq) 1302kworker/-59 3d..2 5us : kthread_data <-wq_worker_sleeping
848 sshd-4261 0d.h1 20us : sub_preempt_count (_spin_unlock) 1303kworker/-59 3d..2 5us : put_prev_task_fair <-__schedule
849[...] 1304kworker/-59 3d..2 6us : pick_next_task_fair <-pick_next_task
850 sshd-4261 0d.h1 28us : _spin_unlock (handle_fasteoi_irq) 1305kworker/-59 3d..2 6us : clear_buddies <-pick_next_task_fair
851 sshd-4261 0d.h1 29us : sub_preempt_count (_spin_unlock) 1306kworker/-59 3d..2 6us : set_next_entity <-pick_next_task_fair
852 sshd-4261 0d.h2 29us : irq_exit (do_IRQ) 1307kworker/-59 3d..2 6us : update_stats_wait_end <-set_next_entity
853 sshd-4261 0d.h2 29us : sub_preempt_count (irq_exit) 1308 ls-2269 3d..2 7us : finish_task_switch <-__schedule
854 sshd-4261 0d..3 30us : do_softirq (irq_exit) 1309 ls-2269 3d..2 7us : _raw_spin_unlock_irq <-finish_task_switch
855 sshd-4261 0d... 30us : __do_softirq (do_softirq) 1310 ls-2269 3d..2 8us : do_IRQ <-ret_from_intr
856 sshd-4261 0d... 31us : __local_bh_disable (__do_softirq) 1311 ls-2269 3d..2 8us : irq_enter <-do_IRQ
857 sshd-4261 0d... 31us+: add_preempt_count (__local_bh_disable) 1312 ls-2269 3d..2 8us : rcu_irq_enter <-irq_enter
858 sshd-4261 0d.s4 34us : add_preempt_count (__local_bh_disable) 1313 ls-2269 3d..2 9us : add_preempt_count <-irq_enter
1314 ls-2269 3d.h2 9us : exit_idle <-do_IRQ
859[...] 1315[...]
860 sshd-4261 0d.s3 43us : sub_preempt_count (local_bh_enable_ip) 1316 ls-2269 3d.h3 20us : sub_preempt_count <-_raw_spin_unlock
861 sshd-4261 0d.s4 44us : sub_preempt_count (local_bh_enable_ip) 1317 ls-2269 3d.h2 20us : irq_exit <-do_IRQ
862 sshd-4261 0d.s3 44us : smp_apic_timer_interrupt (apic_timer_interrupt) 1318 ls-2269 3d.h2 21us : sub_preempt_count <-irq_exit
863 sshd-4261 0d.s3 45us : irq_enter (smp_apic_timer_interrupt) 1319 ls-2269 3d..3 21us : do_softirq <-irq_exit
864 sshd-4261 0d.s3 45us : idle_cpu (irq_enter) 1320 ls-2269 3d..3 21us : __do_softirq <-call_softirq
865 sshd-4261 0d.s3 46us : add_preempt_count (irq_enter) 1321 ls-2269 3d..3 21us+: __local_bh_disable <-__do_softirq
866 sshd-4261 0d.H3 46us : idle_cpu (irq_enter) 1322 ls-2269 3d.s4 29us : sub_preempt_count <-_local_bh_enable_ip
867 sshd-4261 0d.H3 47us : hrtimer_interrupt (smp_apic_timer_interrupt) 1323 ls-2269 3d.s5 29us : sub_preempt_count <-_local_bh_enable_ip
868 sshd-4261 0d.H3 47us : ktime_get (hrtimer_interrupt) 1324 ls-2269 3d.s5 31us : do_IRQ <-ret_from_intr
1325 ls-2269 3d.s5 31us : irq_enter <-do_IRQ
1326 ls-2269 3d.s5 31us : rcu_irq_enter <-irq_enter
869[...] 1327[...]
870 sshd-4261 0d.H3 81us : tick_program_event (hrtimer_interrupt) 1328 ls-2269 3d.s5 31us : rcu_irq_enter <-irq_enter
871 sshd-4261 0d.H3 82us : ktime_get (tick_program_event) 1329 ls-2269 3d.s5 32us : add_preempt_count <-irq_enter
872 sshd-4261 0d.H3 82us : ktime_get_ts (ktime_get) 1330 ls-2269 3d.H5 32us : exit_idle <-do_IRQ
873 sshd-4261 0d.H3 83us : getnstimeofday (ktime_get_ts) 1331 ls-2269 3d.H5 32us : handle_irq <-do_IRQ
874 sshd-4261 0d.H3 83us : set_normalized_timespec (ktime_get_ts) 1332 ls-2269 3d.H5 32us : irq_to_desc <-handle_irq
875 sshd-4261 0d.H3 84us : clockevents_program_event (tick_program_event) 1333 ls-2269 3d.H5 33us : handle_fasteoi_irq <-handle_irq
876 sshd-4261 0d.H3 84us : lapic_next_event (clockevents_program_event)
877 sshd-4261 0d.H3 85us : irq_exit (smp_apic_timer_interrupt)
878 sshd-4261 0d.H3 85us : sub_preempt_count (irq_exit)
879 sshd-4261 0d.s4 86us : sub_preempt_count (irq_exit)
880 sshd-4261 0d.s3 86us : add_preempt_count (__local_bh_disable)
881[...] 1334[...]
882 sshd-4261 0d.s1 98us : sub_preempt_count (net_rx_action) 1335 ls-2269 3d.s5 158us : _raw_spin_unlock_irqrestore <-rtl8139_poll
883 sshd-4261 0d.s. 99us : add_preempt_count (_spin_lock_irq) 1336 ls-2269 3d.s3 158us : net_rps_action_and_irq_enable.isra.65 <-net_rx_action
884 sshd-4261 0d.s1 99us+: _spin_unlock_irq (run_timer_softirq) 1337 ls-2269 3d.s3 159us : __local_bh_enable <-__do_softirq
885 sshd-4261 0d.s. 104us : _local_bh_enable (__do_softirq) 1338 ls-2269 3d.s3 159us : sub_preempt_count <-__local_bh_enable
886 sshd-4261 0d.s. 104us : sub_preempt_count (_local_bh_enable) 1339 ls-2269 3d..3 159us : idle_cpu <-irq_exit
887 sshd-4261 0d.s. 105us : _local_bh_enable (__do_softirq) 1340 ls-2269 3d..3 159us : rcu_irq_exit <-irq_exit
888 sshd-4261 0d.s1 105us : trace_preempt_on (__do_softirq) 1341 ls-2269 3d..3 160us : sub_preempt_count <-irq_exit
889 1342 ls-2269 3d... 161us : __mutex_unlock_slowpath <-mutex_unlock
890 1343 ls-2269 3d... 162us+: trace_hardirqs_on <-mutex_unlock
891This is a very interesting trace. It started with the preemption 1344 ls-2269 3d... 186us : <stack trace>
892of the ls task. We see that the task had the "need_resched" bit 1345 => __mutex_unlock_slowpath
893set via the 'N' in the trace. Interrupts were disabled before 1346 => mutex_unlock
894the spin_lock at the beginning of the trace. We see that a 1347 => process_output
895schedule took place to run sshd. When the interrupts were 1348 => n_tty_write
896enabled, we took an interrupt. On return from the interrupt 1349 => tty_write
897handler, the softirq ran. We took another interrupt while 1350 => vfs_write
898running the softirq as we see from the capital 'H'. 1351 => sys_write
1352 => system_call_fastpath
1353
1354This is an interesting trace. It started with kworker running and
1355scheduling out and ls taking over. But as soon as ls released the
1356rq lock and enabled interrupts (but not preemption) an interrupt
1357triggered. When the interrupt finished, it started running softirqs.
1358But while the softirq was running, another interrupt triggered.
1359When an interrupt is running inside a softirq, the annotation is 'H'.
899 1360
900 1361
901wakeup 1362wakeup
902------ 1363------
903 1364
1365One common case that people are interested in tracing is the
1366time it takes for a task that is woken to actually wake up.
1367Now for non Real-Time tasks, this can be arbitrary. But tracing
1368it none the less can be interesting.
1369
1370Without function tracing:
1371
1372 # echo 0 > options/function-trace
1373 # echo wakeup > current_tracer
1374 # echo 1 > tracing_on
1375 # echo 0 > tracing_max_latency
1376 # chrt -f 5 sleep 1
1377 # echo 0 > tracing_on
1378 # cat trace
1379# tracer: wakeup
1380#
1381# wakeup latency trace v1.1.5 on 3.8.0-test+
1382# --------------------------------------------------------------------
1383# latency: 15 us, #4/4, CPU#3 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:4)
1384# -----------------
1385# | task: kworker/3:1H-312 (uid:0 nice:-20 policy:0 rt_prio:0)
1386# -----------------
1387#
1388# _------=> CPU#
1389# / _-----=> irqs-off
1390# | / _----=> need-resched
1391# || / _---=> hardirq/softirq
1392# ||| / _--=> preempt-depth
1393# |||| / delay
1394# cmd pid ||||| time | caller
1395# \ / ||||| \ | /
1396 <idle>-0 3dNs7 0us : 0:120:R + [003] 312:100:R kworker/3:1H
1397 <idle>-0 3dNs7 1us+: ttwu_do_activate.constprop.87 <-try_to_wake_up
1398 <idle>-0 3d..3 15us : __schedule <-schedule
1399 <idle>-0 3d..3 15us : 0:120:R ==> [003] 312:100:R kworker/3:1H
1400
1401The tracer only traces the highest priority task in the system
1402to avoid tracing the normal circumstances. Here we see that
1403the kworker with a nice priority of -20 (not very nice), took
1404just 15 microseconds from the time it woke up, to the time it
1405ran.
1406
1407Non Real-Time tasks are not that interesting. A more interesting
1408trace is to concentrate only on Real-Time tasks.
1409
1410wakeup_rt
1411---------
1412
904In a Real-Time environment it is very important to know the 1413In a Real-Time environment it is very important to know the
905wakeup time it takes for the highest priority task that is woken 1414wakeup time it takes for the highest priority task that is woken
906up to the time that it executes. This is also known as "schedule 1415up to the time that it executes. This is also known as "schedule
@@ -914,124 +1423,229 @@ Real-Time environments are interested in the worst case latency.
914That is the longest latency it takes for something to happen, 1423That is the longest latency it takes for something to happen,
915and not the average. We can have a very fast scheduler that may 1424and not the average. We can have a very fast scheduler that may
916only have a large latency once in a while, but that would not 1425only have a large latency once in a while, but that would not
917work well with Real-Time tasks. The wakeup tracer was designed 1426work well with Real-Time tasks. The wakeup_rt tracer was designed
918to record the worst case wakeups of RT tasks. Non-RT tasks are 1427to record the worst case wakeups of RT tasks. Non-RT tasks are
919not recorded because the tracer only records one worst case and 1428not recorded because the tracer only records one worst case and
920tracing non-RT tasks that are unpredictable will overwrite the 1429tracing non-RT tasks that are unpredictable will overwrite the
921worst case latency of RT tasks. 1430worst case latency of RT tasks (just run the normal wakeup
1431tracer for a while to see that effect).
922 1432
923Since this tracer only deals with RT tasks, we will run this 1433Since this tracer only deals with RT tasks, we will run this
924slightly differently than we did with the previous tracers. 1434slightly differently than we did with the previous tracers.
925Instead of performing an 'ls', we will run 'sleep 1' under 1435Instead of performing an 'ls', we will run 'sleep 1' under
926'chrt' which changes the priority of the task. 1436'chrt' which changes the priority of the task.
927 1437
928 # echo wakeup > current_tracer 1438 # echo 0 > options/function-trace
929 # echo latency-format > trace_options 1439 # echo wakeup_rt > current_tracer
930 # echo 0 > tracing_max_latency
931 # echo 1 > tracing_on 1440 # echo 1 > tracing_on
1441 # echo 0 > tracing_max_latency
932 # chrt -f 5 sleep 1 1442 # chrt -f 5 sleep 1
933 # echo 0 > tracing_on 1443 # echo 0 > tracing_on
934 # cat trace 1444 # cat trace
935# tracer: wakeup 1445# tracer: wakeup
936# 1446#
937wakeup latency trace v1.1.5 on 2.6.26-rc8 1447# tracer: wakeup_rt
938-------------------------------------------------------------------- 1448#
939 latency: 4 us, #2/2, CPU#1 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2) 1449# wakeup_rt latency trace v1.1.5 on 3.8.0-test+
940 ----------------- 1450# --------------------------------------------------------------------
941 | task: sleep-4901 (uid:0 nice:0 policy:1 rt_prio:5) 1451# latency: 5 us, #4/4, CPU#3 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:4)
942 ----------------- 1452# -----------------
943 1453# | task: sleep-2389 (uid:0 nice:0 policy:1 rt_prio:5)
944# _------=> CPU# 1454# -----------------
945# / _-----=> irqs-off 1455#
946# | / _----=> need-resched 1456# _------=> CPU#
947# || / _---=> hardirq/softirq 1457# / _-----=> irqs-off
948# ||| / _--=> preempt-depth 1458# | / _----=> need-resched
949# |||| / 1459# || / _---=> hardirq/softirq
950# ||||| delay 1460# ||| / _--=> preempt-depth
951# cmd pid ||||| time | caller 1461# |||| / delay
952# \ / ||||| \ | / 1462# cmd pid ||||| time | caller
953 <idle>-0 1d.h4 0us+: try_to_wake_up (wake_up_process) 1463# \ / ||||| \ | /
954 <idle>-0 1d..4 4us : schedule (cpu_idle) 1464 <idle>-0 3d.h4 0us : 0:120:R + [003] 2389: 94:R sleep
955 1465 <idle>-0 3d.h4 1us+: ttwu_do_activate.constprop.87 <-try_to_wake_up
956 1466 <idle>-0 3d..3 5us : __schedule <-schedule
957Running this on an idle system, we see that it only took 4 1467 <idle>-0 3d..3 5us : 0:120:R ==> [003] 2389: 94:R sleep
958microseconds to perform the task switch. Note, since the trace 1468
959marker in the schedule is before the actual "switch", we stop 1469
960the tracing when the recorded task is about to schedule in. This 1470Running this on an idle system, we see that it only took 5 microseconds
961may change if we add a new marker at the end of the scheduler. 1471to perform the task switch. Note, since the trace point in the schedule
962 1472is before the actual "switch", we stop the tracing when the recorded task
963Notice that the recorded task is 'sleep' with the PID of 4901 1473is about to schedule in. This may change if we add a new marker at the
1474end of the scheduler.
1475
1476Notice that the recorded task is 'sleep' with the PID of 2389
964and it has an rt_prio of 5. This priority is user-space priority 1477and it has an rt_prio of 5. This priority is user-space priority
965and not the internal kernel priority. The policy is 1 for 1478and not the internal kernel priority. The policy is 1 for
966SCHED_FIFO and 2 for SCHED_RR. 1479SCHED_FIFO and 2 for SCHED_RR.
967 1480
968Doing the same with chrt -r 5 and ftrace_enabled set. 1481Note, that the trace data shows the internal priority (99 - rtprio).
969 1482
970# tracer: wakeup 1483 <idle>-0 3d..3 5us : 0:120:R ==> [003] 2389: 94:R sleep
1484
1485The 0:120:R means idle was running with a nice priority of 0 (120 - 20)
1486and in the running state 'R'. The sleep task was scheduled in with
14872389: 94:R. That is the priority is the kernel rtprio (99 - 5 = 94)
1488and it too is in the running state.
1489
1490Doing the same with chrt -r 5 and function-trace set.
1491
1492 echo 1 > options/function-trace
1493
1494# tracer: wakeup_rt
971# 1495#
972wakeup latency trace v1.1.5 on 2.6.26-rc8 1496# wakeup_rt latency trace v1.1.5 on 3.8.0-test+
973-------------------------------------------------------------------- 1497# --------------------------------------------------------------------
974 latency: 50 us, #60/60, CPU#1 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2) 1498# latency: 29 us, #85/85, CPU#3 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:4)
975 ----------------- 1499# -----------------
976 | task: sleep-4068 (uid:0 nice:0 policy:2 rt_prio:5) 1500# | task: sleep-2448 (uid:0 nice:0 policy:1 rt_prio:5)
977 ----------------- 1501# -----------------
978 1502#
979# _------=> CPU# 1503# _------=> CPU#
980# / _-----=> irqs-off 1504# / _-----=> irqs-off
981# | / _----=> need-resched 1505# | / _----=> need-resched
982# || / _---=> hardirq/softirq 1506# || / _---=> hardirq/softirq
983# ||| / _--=> preempt-depth 1507# ||| / _--=> preempt-depth
984# |||| / 1508# |||| / delay
985# ||||| delay 1509# cmd pid ||||| time | caller
986# cmd pid ||||| time | caller 1510# \ / ||||| \ | /
987# \ / ||||| \ | / 1511 <idle>-0 3d.h4 1us+: 0:120:R + [003] 2448: 94:R sleep
988ksoftirq-7 1d.H3 0us : try_to_wake_up (wake_up_process) 1512 <idle>-0 3d.h4 2us : ttwu_do_activate.constprop.87 <-try_to_wake_up
989ksoftirq-7 1d.H4 1us : sub_preempt_count (marker_probe_cb) 1513 <idle>-0 3d.h3 3us : check_preempt_curr <-ttwu_do_wakeup
990ksoftirq-7 1d.H3 2us : check_preempt_wakeup (try_to_wake_up) 1514 <idle>-0 3d.h3 3us : resched_task <-check_preempt_curr
991ksoftirq-7 1d.H3 3us : update_curr (check_preempt_wakeup) 1515 <idle>-0 3dNh3 4us : task_woken_rt <-ttwu_do_wakeup
992ksoftirq-7 1d.H3 4us : calc_delta_mine (update_curr) 1516 <idle>-0 3dNh3 4us : _raw_spin_unlock <-try_to_wake_up
993ksoftirq-7 1d.H3 5us : __resched_task (check_preempt_wakeup) 1517 <idle>-0 3dNh3 4us : sub_preempt_count <-_raw_spin_unlock
994ksoftirq-7 1d.H3 6us : task_wake_up_rt (try_to_wake_up) 1518 <idle>-0 3dNh2 5us : ttwu_stat <-try_to_wake_up
995ksoftirq-7 1d.H3 7us : _spin_unlock_irqrestore (try_to_wake_up) 1519 <idle>-0 3dNh2 5us : _raw_spin_unlock_irqrestore <-try_to_wake_up
996[...] 1520 <idle>-0 3dNh2 6us : sub_preempt_count <-_raw_spin_unlock_irqrestore
997ksoftirq-7 1d.H2 17us : irq_exit (smp_apic_timer_interrupt) 1521 <idle>-0 3dNh1 6us : _raw_spin_lock <-__run_hrtimer
998ksoftirq-7 1d.H2 18us : sub_preempt_count (irq_exit) 1522 <idle>-0 3dNh1 6us : add_preempt_count <-_raw_spin_lock
999ksoftirq-7 1d.s3 19us : sub_preempt_count (irq_exit) 1523 <idle>-0 3dNh2 7us : _raw_spin_unlock <-hrtimer_interrupt
1000ksoftirq-7 1..s2 20us : rcu_process_callbacks (__do_softirq) 1524 <idle>-0 3dNh2 7us : sub_preempt_count <-_raw_spin_unlock
1001[...] 1525 <idle>-0 3dNh1 7us : tick_program_event <-hrtimer_interrupt
1002ksoftirq-7 1..s2 26us : __rcu_process_callbacks (rcu_process_callbacks) 1526 <idle>-0 3dNh1 7us : clockevents_program_event <-tick_program_event
1003ksoftirq-7 1d.s2 27us : _local_bh_enable (__do_softirq) 1527 <idle>-0 3dNh1 8us : ktime_get <-clockevents_program_event
1004ksoftirq-7 1d.s2 28us : sub_preempt_count (_local_bh_enable) 1528 <idle>-0 3dNh1 8us : lapic_next_event <-clockevents_program_event
1005ksoftirq-7 1.N.3 29us : sub_preempt_count (ksoftirqd) 1529 <idle>-0 3dNh1 8us : irq_exit <-smp_apic_timer_interrupt
1006ksoftirq-7 1.N.2 30us : _cond_resched (ksoftirqd) 1530 <idle>-0 3dNh1 9us : sub_preempt_count <-irq_exit
1007ksoftirq-7 1.N.2 31us : __cond_resched (_cond_resched) 1531 <idle>-0 3dN.2 9us : idle_cpu <-irq_exit
1008ksoftirq-7 1.N.2 32us : add_preempt_count (__cond_resched) 1532 <idle>-0 3dN.2 9us : rcu_irq_exit <-irq_exit
1009ksoftirq-7 1.N.2 33us : schedule (__cond_resched) 1533 <idle>-0 3dN.2 10us : rcu_eqs_enter_common.isra.45 <-rcu_irq_exit
1010ksoftirq-7 1.N.2 33us : add_preempt_count (schedule) 1534 <idle>-0 3dN.2 10us : sub_preempt_count <-irq_exit
1011ksoftirq-7 1.N.3 34us : hrtick_clear (schedule) 1535 <idle>-0 3.N.1 11us : rcu_idle_exit <-cpu_idle
1012ksoftirq-7 1dN.3 35us : _spin_lock (schedule) 1536 <idle>-0 3dN.1 11us : rcu_eqs_exit_common.isra.43 <-rcu_idle_exit
1013ksoftirq-7 1dN.3 36us : add_preempt_count (_spin_lock) 1537 <idle>-0 3.N.1 11us : tick_nohz_idle_exit <-cpu_idle
1014ksoftirq-7 1d..4 37us : put_prev_task_fair (schedule) 1538 <idle>-0 3dN.1 12us : menu_hrtimer_cancel <-tick_nohz_idle_exit
1015ksoftirq-7 1d..4 38us : update_curr (put_prev_task_fair) 1539 <idle>-0 3dN.1 12us : ktime_get <-tick_nohz_idle_exit
1016[...] 1540 <idle>-0 3dN.1 12us : tick_do_update_jiffies64 <-tick_nohz_idle_exit
1017ksoftirq-7 1d..5 47us : _spin_trylock (tracing_record_cmdline) 1541 <idle>-0 3dN.1 13us : update_cpu_load_nohz <-tick_nohz_idle_exit
1018ksoftirq-7 1d..5 48us : add_preempt_count (_spin_trylock) 1542 <idle>-0 3dN.1 13us : _raw_spin_lock <-update_cpu_load_nohz
1019ksoftirq-7 1d..6 49us : _spin_unlock (tracing_record_cmdline) 1543 <idle>-0 3dN.1 13us : add_preempt_count <-_raw_spin_lock
1020ksoftirq-7 1d..6 49us : sub_preempt_count (_spin_unlock) 1544 <idle>-0 3dN.2 13us : __update_cpu_load <-update_cpu_load_nohz
1021ksoftirq-7 1d..4 50us : schedule (__cond_resched) 1545 <idle>-0 3dN.2 14us : sched_avg_update <-__update_cpu_load
1022 1546 <idle>-0 3dN.2 14us : _raw_spin_unlock <-update_cpu_load_nohz
1023The interrupt went off while running ksoftirqd. This task runs 1547 <idle>-0 3dN.2 14us : sub_preempt_count <-_raw_spin_unlock
1024at SCHED_OTHER. Why did not we see the 'N' set early? This may 1548 <idle>-0 3dN.1 15us : calc_load_exit_idle <-tick_nohz_idle_exit
1025be a harmless bug with x86_32 and 4K stacks. On x86_32 with 4K 1549 <idle>-0 3dN.1 15us : touch_softlockup_watchdog <-tick_nohz_idle_exit
1026stacks configured, the interrupt and softirq run with their own 1550 <idle>-0 3dN.1 15us : hrtimer_cancel <-tick_nohz_idle_exit
1027stack. Some information is held on the top of the task's stack 1551 <idle>-0 3dN.1 15us : hrtimer_try_to_cancel <-hrtimer_cancel
1028(need_resched and preempt_count are both stored there). The 1552 <idle>-0 3dN.1 16us : lock_hrtimer_base.isra.18 <-hrtimer_try_to_cancel
1029setting of the NEED_RESCHED bit is done directly to the task's 1553 <idle>-0 3dN.1 16us : _raw_spin_lock_irqsave <-lock_hrtimer_base.isra.18
1030stack, but the reading of the NEED_RESCHED is done by looking at 1554 <idle>-0 3dN.1 16us : add_preempt_count <-_raw_spin_lock_irqsave
1031the current stack, which in this case is the stack for the hard 1555 <idle>-0 3dN.2 17us : __remove_hrtimer <-remove_hrtimer.part.16
1032interrupt. This hides the fact that NEED_RESCHED has been set. 1556 <idle>-0 3dN.2 17us : hrtimer_force_reprogram <-__remove_hrtimer
1033We do not see the 'N' until we switch back to the task's 1557 <idle>-0 3dN.2 17us : tick_program_event <-hrtimer_force_reprogram
1034assigned stack. 1558 <idle>-0 3dN.2 18us : clockevents_program_event <-tick_program_event
1559 <idle>-0 3dN.2 18us : ktime_get <-clockevents_program_event
1560 <idle>-0 3dN.2 18us : lapic_next_event <-clockevents_program_event
1561 <idle>-0 3dN.2 19us : _raw_spin_unlock_irqrestore <-hrtimer_try_to_cancel
1562 <idle>-0 3dN.2 19us : sub_preempt_count <-_raw_spin_unlock_irqrestore
1563 <idle>-0 3dN.1 19us : hrtimer_forward <-tick_nohz_idle_exit
1564 <idle>-0 3dN.1 20us : ktime_add_safe <-hrtimer_forward
1565 <idle>-0 3dN.1 20us : ktime_add_safe <-hrtimer_forward
1566 <idle>-0 3dN.1 20us : hrtimer_start_range_ns <-hrtimer_start_expires.constprop.11
1567 <idle>-0 3dN.1 20us : __hrtimer_start_range_ns <-hrtimer_start_range_ns
1568 <idle>-0 3dN.1 21us : lock_hrtimer_base.isra.18 <-__hrtimer_start_range_ns
1569 <idle>-0 3dN.1 21us : _raw_spin_lock_irqsave <-lock_hrtimer_base.isra.18
1570 <idle>-0 3dN.1 21us : add_preempt_count <-_raw_spin_lock_irqsave
1571 <idle>-0 3dN.2 22us : ktime_add_safe <-__hrtimer_start_range_ns
1572 <idle>-0 3dN.2 22us : enqueue_hrtimer <-__hrtimer_start_range_ns
1573 <idle>-0 3dN.2 22us : tick_program_event <-__hrtimer_start_range_ns
1574 <idle>-0 3dN.2 23us : clockevents_program_event <-tick_program_event
1575 <idle>-0 3dN.2 23us : ktime_get <-clockevents_program_event
1576 <idle>-0 3dN.2 23us : lapic_next_event <-clockevents_program_event
1577 <idle>-0 3dN.2 24us : _raw_spin_unlock_irqrestore <-__hrtimer_start_range_ns
1578 <idle>-0 3dN.2 24us : sub_preempt_count <-_raw_spin_unlock_irqrestore
1579 <idle>-0 3dN.1 24us : account_idle_ticks <-tick_nohz_idle_exit
1580 <idle>-0 3dN.1 24us : account_idle_time <-account_idle_ticks
1581 <idle>-0 3.N.1 25us : sub_preempt_count <-cpu_idle
1582 <idle>-0 3.N.. 25us : schedule <-cpu_idle
1583 <idle>-0 3.N.. 25us : __schedule <-preempt_schedule
1584 <idle>-0 3.N.. 26us : add_preempt_count <-__schedule
1585 <idle>-0 3.N.1 26us : rcu_note_context_switch <-__schedule
1586 <idle>-0 3.N.1 26us : rcu_sched_qs <-rcu_note_context_switch
1587 <idle>-0 3dN.1 27us : rcu_preempt_qs <-rcu_note_context_switch
1588 <idle>-0 3.N.1 27us : _raw_spin_lock_irq <-__schedule
1589 <idle>-0 3dN.1 27us : add_preempt_count <-_raw_spin_lock_irq
1590 <idle>-0 3dN.2 28us : put_prev_task_idle <-__schedule
1591 <idle>-0 3dN.2 28us : pick_next_task_stop <-pick_next_task
1592 <idle>-0 3dN.2 28us : pick_next_task_rt <-pick_next_task
1593 <idle>-0 3dN.2 29us : dequeue_pushable_task <-pick_next_task_rt
1594 <idle>-0 3d..3 29us : __schedule <-preempt_schedule
1595 <idle>-0 3d..3 30us : 0:120:R ==> [003] 2448: 94:R sleep
1596
1597This isn't that big of a trace, even with function tracing enabled,
1598so I included the entire trace.
1599
1600The interrupt went off while when the system was idle. Somewhere
1601before task_woken_rt() was called, the NEED_RESCHED flag was set,
1602this is indicated by the first occurrence of the 'N' flag.
1603
1604Latency tracing and events
1605--------------------------
1606As function tracing can induce a much larger latency, but without
1607seeing what happens within the latency it is hard to know what
1608caused it. There is a middle ground, and that is with enabling
1609events.
1610
1611 # echo 0 > options/function-trace
1612 # echo wakeup_rt > current_tracer
1613 # echo 1 > events/enable
1614 # echo 1 > tracing_on
1615 # echo 0 > tracing_max_latency
1616 # chrt -f 5 sleep 1
1617 # echo 0 > tracing_on
1618 # cat trace
1619# tracer: wakeup_rt
1620#
1621# wakeup_rt latency trace v1.1.5 on 3.8.0-test+
1622# --------------------------------------------------------------------
1623# latency: 6 us, #12/12, CPU#2 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:4)
1624# -----------------
1625# | task: sleep-5882 (uid:0 nice:0 policy:1 rt_prio:5)
1626# -----------------
1627#
1628# _------=> CPU#
1629# / _-----=> irqs-off
1630# | / _----=> need-resched
1631# || / _---=> hardirq/softirq
1632# ||| / _--=> preempt-depth
1633# |||| / delay
1634# cmd pid ||||| time | caller
1635# \ / ||||| \ | /
1636 <idle>-0 2d.h4 0us : 0:120:R + [002] 5882: 94:R sleep
1637 <idle>-0 2d.h4 0us : ttwu_do_activate.constprop.87 <-try_to_wake_up
1638 <idle>-0 2d.h4 1us : sched_wakeup: comm=sleep pid=5882 prio=94 success=1 target_cpu=002
1639 <idle>-0 2dNh2 1us : hrtimer_expire_exit: hrtimer=ffff88007796feb8
1640 <idle>-0 2.N.2 2us : power_end: cpu_id=2
1641 <idle>-0 2.N.2 3us : cpu_idle: state=4294967295 cpu_id=2
1642 <idle>-0 2dN.3 4us : hrtimer_cancel: hrtimer=ffff88007d50d5e0
1643 <idle>-0 2dN.3 4us : hrtimer_start: hrtimer=ffff88007d50d5e0 function=tick_sched_timer expires=34311211000000 softexpires=34311211000000
1644 <idle>-0 2.N.2 5us : rcu_utilization: Start context switch
1645 <idle>-0 2.N.2 5us : rcu_utilization: End context switch
1646 <idle>-0 2d..3 6us : __schedule <-schedule
1647 <idle>-0 2d..3 6us : 0:120:R ==> [002] 5882: 94:R sleep
1648
1035 1649
1036function 1650function
1037-------- 1651--------
@@ -1039,6 +1653,7 @@ function
1039This tracer is the function tracer. Enabling the function tracer 1653This tracer is the function tracer. Enabling the function tracer
1040can be done from the debug file system. Make sure the 1654can be done from the debug file system. Make sure the
1041ftrace_enabled is set; otherwise this tracer is a nop. 1655ftrace_enabled is set; otherwise this tracer is a nop.
1656See the "ftrace_enabled" section below.
1042 1657
1043 # sysctl kernel.ftrace_enabled=1 1658 # sysctl kernel.ftrace_enabled=1
1044 # echo function > current_tracer 1659 # echo function > current_tracer
@@ -1048,23 +1663,23 @@ ftrace_enabled is set; otherwise this tracer is a nop.
1048 # cat trace 1663 # cat trace
1049# tracer: function 1664# tracer: function
1050# 1665#
1051# TASK-PID CPU# TIMESTAMP FUNCTION 1666# entries-in-buffer/entries-written: 24799/24799 #P:4
1052# | | | | | 1667#
1053 bash-4003 [00] 123.638713: finish_task_switch <-schedule 1668# _-----=> irqs-off
1054 bash-4003 [00] 123.638714: _spin_unlock_irq <-finish_task_switch 1669# / _----=> need-resched
1055 bash-4003 [00] 123.638714: sub_preempt_count <-_spin_unlock_irq 1670# | / _---=> hardirq/softirq
1056 bash-4003 [00] 123.638715: hrtick_set <-schedule 1671# || / _--=> preempt-depth
1057 bash-4003 [00] 123.638715: _spin_lock_irqsave <-hrtick_set 1672# ||| / delay
1058 bash-4003 [00] 123.638716: add_preempt_count <-_spin_lock_irqsave 1673# TASK-PID CPU# |||| TIMESTAMP FUNCTION
1059 bash-4003 [00] 123.638716: _spin_unlock_irqrestore <-hrtick_set 1674# | | | |||| | |
1060 bash-4003 [00] 123.638717: sub_preempt_count <-_spin_unlock_irqrestore 1675 bash-1994 [002] .... 3082.063030: mutex_unlock <-rb_simple_write
1061 bash-4003 [00] 123.638717: hrtick_clear <-hrtick_set 1676 bash-1994 [002] .... 3082.063031: __mutex_unlock_slowpath <-mutex_unlock
1062 bash-4003 [00] 123.638718: sub_preempt_count <-schedule 1677 bash-1994 [002] .... 3082.063031: __fsnotify_parent <-fsnotify_modify
1063 bash-4003 [00] 123.638718: sub_preempt_count <-preempt_schedule 1678 bash-1994 [002] .... 3082.063032: fsnotify <-fsnotify_modify
1064 bash-4003 [00] 123.638719: wait_for_completion <-__stop_machine_run 1679 bash-1994 [002] .... 3082.063032: __srcu_read_lock <-fsnotify
1065 bash-4003 [00] 123.638719: wait_for_common <-wait_for_completion 1680 bash-1994 [002] .... 3082.063032: add_preempt_count <-__srcu_read_lock
1066 bash-4003 [00] 123.638720: _spin_lock_irq <-wait_for_common 1681 bash-1994 [002] ...1 3082.063032: sub_preempt_count <-__srcu_read_lock
1067 bash-4003 [00] 123.638720: add_preempt_count <-_spin_lock_irq 1682 bash-1994 [002] .... 3082.063033: __srcu_read_unlock <-fsnotify
1068[...] 1683[...]
1069 1684
1070 1685
@@ -1214,79 +1829,19 @@ int main (int argc, char **argv)
1214 return 0; 1829 return 0;
1215} 1830}
1216 1831
1832Or this simple script!
1217 1833
1218hw-branch-tracer (x86 only) 1834------
1219--------------------------- 1835#!/bin/bash
1220 1836
1221This tracer uses the x86 last branch tracing hardware feature to 1837debugfs=`sed -ne 's/^debugfs \(.*\) debugfs.*/\1/p' /proc/mounts`
1222collect a branch trace on all cpus with relatively low overhead. 1838echo nop > $debugfs/tracing/current_tracer
1223 1839echo 0 > $debugfs/tracing/tracing_on
1224The tracer uses a fixed-size circular buffer per cpu and only 1840echo $$ > $debugfs/tracing/set_ftrace_pid
1225traces ring 0 branches. The trace file dumps that buffer in the 1841echo function > $debugfs/tracing/current_tracer
1226following format: 1842echo 1 > $debugfs/tracing/tracing_on
1227 1843exec "$@"
1228# tracer: hw-branch-tracer 1844------
1229#
1230# CPU# TO <- FROM
1231 0 scheduler_tick+0xb5/0x1bf <- task_tick_idle+0x5/0x6
1232 2 run_posix_cpu_timers+0x2b/0x72a <- run_posix_cpu_timers+0x25/0x72a
1233 0 scheduler_tick+0x139/0x1bf <- scheduler_tick+0xed/0x1bf
1234 0 scheduler_tick+0x17c/0x1bf <- scheduler_tick+0x148/0x1bf
1235 2 run_posix_cpu_timers+0x9e/0x72a <- run_posix_cpu_timers+0x5e/0x72a
1236 0 scheduler_tick+0x1b6/0x1bf <- scheduler_tick+0x1aa/0x1bf
1237
1238
1239The tracer may be used to dump the trace for the oops'ing cpu on
1240a kernel oops into the system log. To enable this,
1241ftrace_dump_on_oops must be set. To set ftrace_dump_on_oops, one
1242can either use the sysctl function or set it via the proc system
1243interface.
1244
1245 sysctl kernel.ftrace_dump_on_oops=n
1246
1247or
1248
1249 echo n > /proc/sys/kernel/ftrace_dump_on_oops
1250
1251If n = 1, ftrace will dump buffers of all CPUs, if n = 2 ftrace will
1252only dump the buffer of the CPU that triggered the oops.
1253
1254Here's an example of such a dump after a null pointer
1255dereference in a kernel module:
1256
1257[57848.105921] BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
1258[57848.106019] IP: [<ffffffffa0000006>] open+0x6/0x14 [oops]
1259[57848.106019] PGD 2354e9067 PUD 2375e7067 PMD 0
1260[57848.106019] Oops: 0002 [#1] SMP
1261[57848.106019] last sysfs file: /sys/devices/pci0000:00/0000:00:1e.0/0000:20:05.0/local_cpus
1262[57848.106019] Dumping ftrace buffer:
1263[57848.106019] ---------------------------------
1264[...]
1265[57848.106019] 0 chrdev_open+0xe6/0x165 <- cdev_put+0x23/0x24
1266[57848.106019] 0 chrdev_open+0x117/0x165 <- chrdev_open+0xfa/0x165
1267[57848.106019] 0 chrdev_open+0x120/0x165 <- chrdev_open+0x11c/0x165
1268[57848.106019] 0 chrdev_open+0x134/0x165 <- chrdev_open+0x12b/0x165
1269[57848.106019] 0 open+0x0/0x14 [oops] <- chrdev_open+0x144/0x165
1270[57848.106019] 0 page_fault+0x0/0x30 <- open+0x6/0x14 [oops]
1271[57848.106019] 0 error_entry+0x0/0x5b <- page_fault+0x4/0x30
1272[57848.106019] 0 error_kernelspace+0x0/0x31 <- error_entry+0x59/0x5b
1273[57848.106019] 0 error_sti+0x0/0x1 <- error_kernelspace+0x2d/0x31
1274[57848.106019] 0 page_fault+0x9/0x30 <- error_sti+0x0/0x1
1275[57848.106019] 0 do_page_fault+0x0/0x881 <- page_fault+0x1a/0x30
1276[...]
1277[57848.106019] 0 do_page_fault+0x66b/0x881 <- is_prefetch+0x1ee/0x1f2
1278[57848.106019] 0 do_page_fault+0x6e0/0x881 <- do_page_fault+0x67a/0x881
1279[57848.106019] 0 oops_begin+0x0/0x96 <- do_page_fault+0x6e0/0x881
1280[57848.106019] 0 trace_hw_branch_oops+0x0/0x2d <- oops_begin+0x9/0x96
1281[...]
1282[57848.106019] 0 ds_suspend_bts+0x2a/0xe3 <- ds_suspend_bts+0x1a/0xe3
1283[57848.106019] ---------------------------------
1284[57848.106019] CPU 0
1285[57848.106019] Modules linked in: oops
1286[57848.106019] Pid: 5542, comm: cat Tainted: G W 2.6.28 #23
1287[57848.106019] RIP: 0010:[<ffffffffa0000006>] [<ffffffffa0000006>] open+0x6/0x14 [oops]
1288[57848.106019] RSP: 0018:ffff880235457d48 EFLAGS: 00010246
1289[...]
1290 1845
1291 1846
1292function graph tracer 1847function graph tracer
@@ -1473,16 +2028,18 @@ starts of pointing to a simple return. (Enabling FTRACE will
1473include the -pg switch in the compiling of the kernel.) 2028include the -pg switch in the compiling of the kernel.)
1474 2029
1475At compile time every C file object is run through the 2030At compile time every C file object is run through the
1476recordmcount.pl script (located in the scripts directory). This 2031recordmcount program (located in the scripts directory). This
1477script will process the C object using objdump to find all the 2032program will parse the ELF headers in the C object to find all
1478locations in the .text section that call mcount. (Note, only the 2033the locations in the .text section that call mcount. (Note, only
1479.text section is processed, since processing other sections like 2034white listed .text sections are processed, since processing other
1480.init.text may cause races due to those sections being freed). 2035sections like .init.text may cause races due to those sections
2036being freed unexpectedly).
1481 2037
1482A new section called "__mcount_loc" is created that holds 2038A new section called "__mcount_loc" is created that holds
1483references to all the mcount call sites in the .text section. 2039references to all the mcount call sites in the .text section.
1484This section is compiled back into the original object. The 2040The recordmcount program re-links this section back into the
1485final linker will add all these references into a single table. 2041original object. The final linking stage of the kernel will add all these
2042references into a single table.
1486 2043
1487On boot up, before SMP is initialized, the dynamic ftrace code 2044On boot up, before SMP is initialized, the dynamic ftrace code
1488scans this table and updates all the locations into nops. It 2045scans this table and updates all the locations into nops. It
@@ -1493,13 +2050,25 @@ unloaded, it also removes its functions from the ftrace function
1493list. This is automatic in the module unload code, and the 2050list. This is automatic in the module unload code, and the
1494module author does not need to worry about it. 2051module author does not need to worry about it.
1495 2052
1496When tracing is enabled, kstop_machine is called to prevent 2053When tracing is enabled, the process of modifying the function
1497races with the CPUS executing code being modified (which can 2054tracepoints is dependent on architecture. The old method is to use
1498cause the CPU to do undesirable things), and the nops are 2055kstop_machine to prevent races with the CPUs executing code being
2056modified (which can cause the CPU to do undesirable things, especially
2057if the modified code crosses cache (or page) boundaries), and the nops are
1499patched back to calls. But this time, they do not call mcount 2058patched back to calls. But this time, they do not call mcount
1500(which is just a function stub). They now call into the ftrace 2059(which is just a function stub). They now call into the ftrace
1501infrastructure. 2060infrastructure.
1502 2061
2062The new method of modifying the function tracepoints is to place
2063a breakpoint at the location to be modified, sync all CPUs, modify
2064the rest of the instruction not covered by the breakpoint. Sync
2065all CPUs again, and then remove the breakpoint with the finished
2066version to the ftrace call site.
2067
2068Some archs do not even need to monkey around with the synchronization,
2069and can just slap the new code on top of the old without any
2070problems with other CPUs executing it at the same time.
2071
1503One special side-effect to the recording of the functions being 2072One special side-effect to the recording of the functions being
1504traced is that we can now selectively choose which functions we 2073traced is that we can now selectively choose which functions we
1505wish to trace and which ones we want the mcount calls to remain 2074wish to trace and which ones we want the mcount calls to remain
@@ -1530,20 +2099,28 @@ mutex_lock
1530 2099
1531If I am only interested in sys_nanosleep and hrtimer_interrupt: 2100If I am only interested in sys_nanosleep and hrtimer_interrupt:
1532 2101
1533 # echo sys_nanosleep hrtimer_interrupt \ 2102 # echo sys_nanosleep hrtimer_interrupt > set_ftrace_filter
1534 > set_ftrace_filter
1535 # echo function > current_tracer 2103 # echo function > current_tracer
1536 # echo 1 > tracing_on 2104 # echo 1 > tracing_on
1537 # usleep 1 2105 # usleep 1
1538 # echo 0 > tracing_on 2106 # echo 0 > tracing_on
1539 # cat trace 2107 # cat trace
1540# tracer: ftrace 2108# tracer: function
2109#
2110# entries-in-buffer/entries-written: 5/5 #P:4
1541# 2111#
1542# TASK-PID CPU# TIMESTAMP FUNCTION 2112# _-----=> irqs-off
1543# | | | | | 2113# / _----=> need-resched
1544 usleep-4134 [00] 1317.070017: hrtimer_interrupt <-smp_apic_timer_interrupt 2114# | / _---=> hardirq/softirq
1545 usleep-4134 [00] 1317.070111: sys_nanosleep <-syscall_call 2115# || / _--=> preempt-depth
1546 <idle>-0 [00] 1317.070115: hrtimer_interrupt <-smp_apic_timer_interrupt 2116# ||| / delay
2117# TASK-PID CPU# |||| TIMESTAMP FUNCTION
2118# | | | |||| | |
2119 usleep-2665 [001] .... 4186.475355: sys_nanosleep <-system_call_fastpath
2120 <idle>-0 [001] d.h1 4186.475409: hrtimer_interrupt <-smp_apic_timer_interrupt
2121 usleep-2665 [001] d.h1 4186.475426: hrtimer_interrupt <-smp_apic_timer_interrupt
2122 <idle>-0 [003] d.h1 4186.475426: hrtimer_interrupt <-smp_apic_timer_interrupt
2123 <idle>-0 [002] d.h1 4186.475427: hrtimer_interrupt <-smp_apic_timer_interrupt
1547 2124
1548To see which functions are being traced, you can cat the file: 2125To see which functions are being traced, you can cat the file:
1549 2126
@@ -1571,20 +2148,25 @@ Note: It is better to use quotes to enclose the wild cards,
1571 2148
1572Produces: 2149Produces:
1573 2150
1574# tracer: ftrace 2151# tracer: function
1575# 2152#
1576# TASK-PID CPU# TIMESTAMP FUNCTION 2153# entries-in-buffer/entries-written: 897/897 #P:4
1577# | | | | | 2154#
1578 bash-4003 [00] 1480.611794: hrtimer_init <-copy_process 2155# _-----=> irqs-off
1579 bash-4003 [00] 1480.611941: hrtimer_start <-hrtick_set 2156# / _----=> need-resched
1580 bash-4003 [00] 1480.611956: hrtimer_cancel <-hrtick_clear 2157# | / _---=> hardirq/softirq
1581 bash-4003 [00] 1480.611956: hrtimer_try_to_cancel <-hrtimer_cancel 2158# || / _--=> preempt-depth
1582 <idle>-0 [00] 1480.612019: hrtimer_get_next_event <-get_next_timer_interrupt 2159# ||| / delay
1583 <idle>-0 [00] 1480.612025: hrtimer_get_next_event <-get_next_timer_interrupt 2160# TASK-PID CPU# |||| TIMESTAMP FUNCTION
1584 <idle>-0 [00] 1480.612032: hrtimer_get_next_event <-get_next_timer_interrupt 2161# | | | |||| | |
1585 <idle>-0 [00] 1480.612037: hrtimer_get_next_event <-get_next_timer_interrupt 2162 <idle>-0 [003] dN.1 4228.547803: hrtimer_cancel <-tick_nohz_idle_exit
1586 <idle>-0 [00] 1480.612382: hrtimer_get_next_event <-get_next_timer_interrupt 2163 <idle>-0 [003] dN.1 4228.547804: hrtimer_try_to_cancel <-hrtimer_cancel
1587 2164 <idle>-0 [003] dN.2 4228.547805: hrtimer_force_reprogram <-__remove_hrtimer
2165 <idle>-0 [003] dN.1 4228.547805: hrtimer_forward <-tick_nohz_idle_exit
2166 <idle>-0 [003] dN.1 4228.547805: hrtimer_start_range_ns <-hrtimer_start_expires.constprop.11
2167 <idle>-0 [003] d..1 4228.547858: hrtimer_get_next_event <-get_next_timer_interrupt
2168 <idle>-0 [003] d..1 4228.547859: hrtimer_start <-__tick_nohz_idle_enter
2169 <idle>-0 [003] d..2 4228.547860: hrtimer_force_reprogram <-__rem
1588 2170
1589Notice that we lost the sys_nanosleep. 2171Notice that we lost the sys_nanosleep.
1590 2172
@@ -1651,19 +2233,29 @@ traced.
1651 2233
1652Produces: 2234Produces:
1653 2235
1654# tracer: ftrace 2236# tracer: function
2237#
2238# entries-in-buffer/entries-written: 39608/39608 #P:4
1655# 2239#
1656# TASK-PID CPU# TIMESTAMP FUNCTION 2240# _-----=> irqs-off
1657# | | | | | 2241# / _----=> need-resched
1658 bash-4043 [01] 115.281644: finish_task_switch <-schedule 2242# | / _---=> hardirq/softirq
1659 bash-4043 [01] 115.281645: hrtick_set <-schedule 2243# || / _--=> preempt-depth
1660 bash-4043 [01] 115.281645: hrtick_clear <-hrtick_set 2244# ||| / delay
1661 bash-4043 [01] 115.281646: wait_for_completion <-__stop_machine_run 2245# TASK-PID CPU# |||| TIMESTAMP FUNCTION
1662 bash-4043 [01] 115.281647: wait_for_common <-wait_for_completion 2246# | | | |||| | |
1663 bash-4043 [01] 115.281647: kthread_stop <-stop_machine_run 2247 bash-1994 [000] .... 4342.324896: file_ra_state_init <-do_dentry_open
1664 bash-4043 [01] 115.281648: init_waitqueue_head <-kthread_stop 2248 bash-1994 [000] .... 4342.324897: open_check_o_direct <-do_last
1665 bash-4043 [01] 115.281648: wake_up_process <-kthread_stop 2249 bash-1994 [000] .... 4342.324897: ima_file_check <-do_last
1666 bash-4043 [01] 115.281649: try_to_wake_up <-wake_up_process 2250 bash-1994 [000] .... 4342.324898: process_measurement <-ima_file_check
2251 bash-1994 [000] .... 4342.324898: ima_get_action <-process_measurement
2252 bash-1994 [000] .... 4342.324898: ima_match_policy <-ima_get_action
2253 bash-1994 [000] .... 4342.324899: do_truncate <-do_last
2254 bash-1994 [000] .... 4342.324899: should_remove_suid <-do_truncate
2255 bash-1994 [000] .... 4342.324899: notify_change <-do_truncate
2256 bash-1994 [000] .... 4342.324900: current_fs_time <-notify_change
2257 bash-1994 [000] .... 4342.324900: current_kernel_time <-current_fs_time
2258 bash-1994 [000] .... 4342.324900: timespec_trunc <-current_fs_time
1667 2259
1668We can see that there's no more lock or preempt tracing. 2260We can see that there's no more lock or preempt tracing.
1669 2261
@@ -1729,6 +2321,28 @@ this special filter via:
1729 echo > set_graph_function 2321 echo > set_graph_function
1730 2322
1731 2323
2324ftrace_enabled
2325--------------
2326
2327Note, the proc sysctl ftrace_enable is a big on/off switch for the
2328function tracer. By default it is enabled (when function tracing is
2329enabled in the kernel). If it is disabled, all function tracing is
2330disabled. This includes not only the function tracers for ftrace, but
2331also for any other uses (perf, kprobes, stack tracing, profiling, etc).
2332
2333Please disable this with care.
2334
2335This can be disable (and enabled) with:
2336
2337 sysctl kernel.ftrace_enabled=0
2338 sysctl kernel.ftrace_enabled=1
2339
2340 or
2341
2342 echo 0 > /proc/sys/kernel/ftrace_enabled
2343 echo 1 > /proc/sys/kernel/ftrace_enabled
2344
2345
1732Filter commands 2346Filter commands
1733--------------- 2347---------------
1734 2348
@@ -1763,12 +2377,58 @@ The following commands are supported:
1763 2377
1764 echo '__schedule_bug:traceoff:5' > set_ftrace_filter 2378 echo '__schedule_bug:traceoff:5' > set_ftrace_filter
1765 2379
2380 To always disable tracing when __schedule_bug is hit:
2381
2382 echo '__schedule_bug:traceoff' > set_ftrace_filter
2383
1766 These commands are cumulative whether or not they are appended 2384 These commands are cumulative whether or not they are appended
1767 to set_ftrace_filter. To remove a command, prepend it by '!' 2385 to set_ftrace_filter. To remove a command, prepend it by '!'
1768 and drop the parameter: 2386 and drop the parameter:
1769 2387
2388 echo '!__schedule_bug:traceoff:0' > set_ftrace_filter
2389
2390 The above removes the traceoff command for __schedule_bug
2391 that have a counter. To remove commands without counters:
2392
1770 echo '!__schedule_bug:traceoff' > set_ftrace_filter 2393 echo '!__schedule_bug:traceoff' > set_ftrace_filter
1771 2394
2395- snapshot
2396 Will cause a snapshot to be triggered when the function is hit.
2397
2398 echo 'native_flush_tlb_others:snapshot' > set_ftrace_filter
2399
2400 To only snapshot once:
2401
2402 echo 'native_flush_tlb_others:snapshot:1' > set_ftrace_filter
2403
2404 To remove the above commands:
2405
2406 echo '!native_flush_tlb_others:snapshot' > set_ftrace_filter
2407 echo '!native_flush_tlb_others:snapshot:0' > set_ftrace_filter
2408
2409- enable_event/disable_event
2410 These commands can enable or disable a trace event. Note, because
2411 function tracing callbacks are very sensitive, when these commands
2412 are registered, the trace point is activated, but disabled in
2413 a "soft" mode. That is, the tracepoint will be called, but
2414 just will not be traced. The event tracepoint stays in this mode
2415 as long as there's a command that triggers it.
2416
2417 echo 'try_to_wake_up:enable_event:sched:sched_switch:2' > \
2418 set_ftrace_filter
2419
2420 The format is:
2421
2422 <function>:enable_event:<system>:<event>[:count]
2423 <function>:disable_event:<system>:<event>[:count]
2424
2425 To remove the events commands:
2426
2427
2428 echo '!try_to_wake_up:enable_event:sched:sched_switch:0' > \
2429 set_ftrace_filter
2430 echo '!schedule:disable_event:sched:sched_switch' > \
2431 set_ftrace_filter
1772 2432
1773trace_pipe 2433trace_pipe
1774---------- 2434----------
@@ -1787,28 +2447,31 @@ different. The trace is live.
1787 # cat trace 2447 # cat trace
1788# tracer: function 2448# tracer: function
1789# 2449#
1790# TASK-PID CPU# TIMESTAMP FUNCTION 2450# entries-in-buffer/entries-written: 0/0 #P:4
1791# | | | | | 2451#
2452# _-----=> irqs-off
2453# / _----=> need-resched
2454# | / _---=> hardirq/softirq
2455# || / _--=> preempt-depth
2456# ||| / delay
2457# TASK-PID CPU# |||| TIMESTAMP FUNCTION
2458# | | | |||| | |
1792 2459
1793 # 2460 #
1794 # cat /tmp/trace.out 2461 # cat /tmp/trace.out
1795 bash-4043 [00] 41.267106: finish_task_switch <-schedule 2462 bash-1994 [000] .... 5281.568961: mutex_unlock <-rb_simple_write
1796 bash-4043 [00] 41.267106: hrtick_set <-schedule 2463 bash-1994 [000] .... 5281.568963: __mutex_unlock_slowpath <-mutex_unlock
1797 bash-4043 [00] 41.267107: hrtick_clear <-hrtick_set 2464 bash-1994 [000] .... 5281.568963: __fsnotify_parent <-fsnotify_modify
1798 bash-4043 [00] 41.267108: wait_for_completion <-__stop_machine_run 2465 bash-1994 [000] .... 5281.568964: fsnotify <-fsnotify_modify
1799 bash-4043 [00] 41.267108: wait_for_common <-wait_for_completion 2466 bash-1994 [000] .... 5281.568964: __srcu_read_lock <-fsnotify
1800 bash-4043 [00] 41.267109: kthread_stop <-stop_machine_run 2467 bash-1994 [000] .... 5281.568964: add_preempt_count <-__srcu_read_lock
1801 bash-4043 [00] 41.267109: init_waitqueue_head <-kthread_stop 2468 bash-1994 [000] ...1 5281.568965: sub_preempt_count <-__srcu_read_lock
1802 bash-4043 [00] 41.267110: wake_up_process <-kthread_stop 2469 bash-1994 [000] .... 5281.568965: __srcu_read_unlock <-fsnotify
1803 bash-4043 [00] 41.267110: try_to_wake_up <-wake_up_process 2470 bash-1994 [000] .... 5281.568967: sys_dup2 <-system_call_fastpath
1804 bash-4043 [00] 41.267111: select_task_rq_rt <-try_to_wake_up
1805 2471
1806 2472
1807Note, reading the trace_pipe file will block until more input is 2473Note, reading the trace_pipe file will block until more input is
1808added. By changing the tracer, trace_pipe will issue an EOF. We 2474added.
1809needed to set the function tracer _before_ we "cat" the
1810trace_pipe file.
1811
1812 2475
1813trace entries 2476trace entries
1814------------- 2477-------------
@@ -1817,31 +2480,50 @@ Having too much or not enough data can be troublesome in
1817diagnosing an issue in the kernel. The file buffer_size_kb is 2480diagnosing an issue in the kernel. The file buffer_size_kb is
1818used to modify the size of the internal trace buffers. The 2481used to modify the size of the internal trace buffers. The
1819number listed is the number of entries that can be recorded per 2482number listed is the number of entries that can be recorded per
1820CPU. To know the full size, multiply the number of possible CPUS 2483CPU. To know the full size, multiply the number of possible CPUs
1821with the number of entries. 2484with the number of entries.
1822 2485
1823 # cat buffer_size_kb 2486 # cat buffer_size_kb
18241408 (units kilobytes) 24871408 (units kilobytes)
1825 2488
1826Note, to modify this, you must have tracing completely disabled. 2489Or simply read buffer_total_size_kb
1827To do that, echo "nop" into the current_tracer. If the 2490
1828current_tracer is not set to "nop", an EINVAL error will be 2491 # cat buffer_total_size_kb
1829returned. 24925632
2493
2494To modify the buffer, simple echo in a number (in 1024 byte segments).
1830 2495
1831 # echo nop > current_tracer
1832 # echo 10000 > buffer_size_kb 2496 # echo 10000 > buffer_size_kb
1833 # cat buffer_size_kb 2497 # cat buffer_size_kb
183410000 (units kilobytes) 249810000 (units kilobytes)
1835 2499
1836The number of pages which will be allocated is limited to a 2500It will try to allocate as much as possible. If you allocate too
1837percentage of available memory. Allocating too much will produce 2501much, it can cause Out-Of-Memory to trigger.
1838an error.
1839 2502
1840 # echo 1000000000000 > buffer_size_kb 2503 # echo 1000000000000 > buffer_size_kb
1841-bash: echo: write error: Cannot allocate memory 2504-bash: echo: write error: Cannot allocate memory
1842 # cat buffer_size_kb 2505 # cat buffer_size_kb
184385 250685
1844 2507
2508The per_cpu buffers can be changed individually as well:
2509
2510 # echo 10000 > per_cpu/cpu0/buffer_size_kb
2511 # echo 100 > per_cpu/cpu1/buffer_size_kb
2512
2513When the per_cpu buffers are not the same, the buffer_size_kb
2514at the top level will just show an X
2515
2516 # cat buffer_size_kb
2517X
2518
2519This is where the buffer_total_size_kb is useful:
2520
2521 # cat buffer_total_size_kb
252212916
2523
2524Writing to the top level buffer_size_kb will reset all the buffers
2525to be the same again.
2526
1845Snapshot 2527Snapshot
1846-------- 2528--------
1847CONFIG_TRACER_SNAPSHOT makes a generic snapshot feature 2529CONFIG_TRACER_SNAPSHOT makes a generic snapshot feature
@@ -1873,7 +2555,7 @@ feature:
1873 2555
1874 status\input | 0 | 1 | else | 2556 status\input | 0 | 1 | else |
1875 --------------+------------+------------+------------+ 2557 --------------+------------+------------+------------+
1876 not allocated |(do nothing)| alloc+swap | EINVAL | 2558 not allocated |(do nothing)| alloc+swap |(do nothing)|
1877 --------------+------------+------------+------------+ 2559 --------------+------------+------------+------------+
1878 allocated | free | swap | clear | 2560 allocated | free | swap | clear |
1879 --------------+------------+------------+------------+ 2561 --------------+------------+------------+------------+
@@ -1925,7 +2607,188 @@ bash: echo: write error: Device or resource busy
1925 # cat snapshot 2607 # cat snapshot
1926cat: snapshot: Device or resource busy 2608cat: snapshot: Device or resource busy
1927 2609
2610
2611Instances
2612---------
2613In the debugfs tracing directory is a directory called "instances".
2614This directory can have new directories created inside of it using
2615mkdir, and removing directories with rmdir. The directory created
2616with mkdir in this directory will already contain files and other
2617directories after it is created.
2618
2619 # mkdir instances/foo
2620 # ls instances/foo
2621buffer_size_kb buffer_total_size_kb events free_buffer per_cpu
2622set_event snapshot trace trace_clock trace_marker trace_options
2623trace_pipe tracing_on
2624
2625As you can see, the new directory looks similar to the tracing directory
2626itself. In fact, it is very similar, except that the buffer and
2627events are agnostic from the main director, or from any other
2628instances that are created.
2629
2630The files in the new directory work just like the files with the
2631same name in the tracing directory except the buffer that is used
2632is a separate and new buffer. The files affect that buffer but do not
2633affect the main buffer with the exception of trace_options. Currently,
2634the trace_options affect all instances and the top level buffer
2635the same, but this may change in future releases. That is, options
2636may become specific to the instance they reside in.
2637
2638Notice that none of the function tracer files are there, nor is
2639current_tracer and available_tracers. This is because the buffers
2640can currently only have events enabled for them.
2641
2642 # mkdir instances/foo
2643 # mkdir instances/bar
2644 # mkdir instances/zoot
2645 # echo 100000 > buffer_size_kb
2646 # echo 1000 > instances/foo/buffer_size_kb
2647 # echo 5000 > instances/bar/per_cpu/cpu1/buffer_size_kb
2648 # echo function > current_trace
2649 # echo 1 > instances/foo/events/sched/sched_wakeup/enable
2650 # echo 1 > instances/foo/events/sched/sched_wakeup_new/enable
2651 # echo 1 > instances/foo/events/sched/sched_switch/enable
2652 # echo 1 > instances/bar/events/irq/enable
2653 # echo 1 > instances/zoot/events/syscalls/enable
2654 # cat trace_pipe
2655CPU:2 [LOST 11745 EVENTS]
2656 bash-2044 [002] .... 10594.481032: _raw_spin_lock_irqsave <-get_page_from_freelist
2657 bash-2044 [002] d... 10594.481032: add_preempt_count <-_raw_spin_lock_irqsave
2658 bash-2044 [002] d..1 10594.481032: __rmqueue <-get_page_from_freelist
2659 bash-2044 [002] d..1 10594.481033: _raw_spin_unlock <-get_page_from_freelist
2660 bash-2044 [002] d..1 10594.481033: sub_preempt_count <-_raw_spin_unlock
2661 bash-2044 [002] d... 10594.481033: get_pageblock_flags_group <-get_pageblock_migratetype
2662 bash-2044 [002] d... 10594.481034: __mod_zone_page_state <-get_page_from_freelist
2663 bash-2044 [002] d... 10594.481034: zone_statistics <-get_page_from_freelist
2664 bash-2044 [002] d... 10594.481034: __inc_zone_state <-zone_statistics
2665 bash-2044 [002] d... 10594.481034: __inc_zone_state <-zone_statistics
2666 bash-2044 [002] .... 10594.481035: arch_dup_task_struct <-copy_process
2667[...]
2668
2669 # cat instances/foo/trace_pipe
2670 bash-1998 [000] d..4 136.676759: sched_wakeup: comm=kworker/0:1 pid=59 prio=120 success=1 target_cpu=000
2671 bash-1998 [000] dN.4 136.676760: sched_wakeup: comm=bash pid=1998 prio=120 success=1 target_cpu=000
2672 <idle>-0 [003] d.h3 136.676906: sched_wakeup: comm=rcu_preempt pid=9 prio=120 success=1 target_cpu=003
2673 <idle>-0 [003] d..3 136.676909: sched_switch: prev_comm=swapper/3 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=rcu_preempt next_pid=9 next_prio=120
2674 rcu_preempt-9 [003] d..3 136.676916: sched_switch: prev_comm=rcu_preempt prev_pid=9 prev_prio=120 prev_state=S ==> next_comm=swapper/3 next_pid=0 next_prio=120
2675 bash-1998 [000] d..4 136.677014: sched_wakeup: comm=kworker/0:1 pid=59 prio=120 success=1 target_cpu=000
2676 bash-1998 [000] dN.4 136.677016: sched_wakeup: comm=bash pid=1998 prio=120 success=1 target_cpu=000
2677 bash-1998 [000] d..3 136.677018: sched_switch: prev_comm=bash prev_pid=1998 prev_prio=120 prev_state=R+ ==> next_comm=kworker/0:1 next_pid=59 next_prio=120
2678 kworker/0:1-59 [000] d..4 136.677022: sched_wakeup: comm=sshd pid=1995 prio=120 success=1 target_cpu=001
2679 kworker/0:1-59 [000] d..3 136.677025: sched_switch: prev_comm=kworker/0:1 prev_pid=59 prev_prio=120 prev_state=S ==> next_comm=bash next_pid=1998 next_prio=120
2680[...]
2681
2682 # cat instances/bar/trace_pipe
2683 migration/1-14 [001] d.h3 138.732674: softirq_raise: vec=3 [action=NET_RX]
2684 <idle>-0 [001] dNh3 138.732725: softirq_raise: vec=3 [action=NET_RX]
2685 bash-1998 [000] d.h1 138.733101: softirq_raise: vec=1 [action=TIMER]
2686 bash-1998 [000] d.h1 138.733102: softirq_raise: vec=9 [action=RCU]
2687 bash-1998 [000] ..s2 138.733105: softirq_entry: vec=1 [action=TIMER]
2688 bash-1998 [000] ..s2 138.733106: softirq_exit: vec=1 [action=TIMER]
2689 bash-1998 [000] ..s2 138.733106: softirq_entry: vec=9 [action=RCU]
2690 bash-1998 [000] ..s2 138.733109: softirq_exit: vec=9 [action=RCU]
2691 sshd-1995 [001] d.h1 138.733278: irq_handler_entry: irq=21 name=uhci_hcd:usb4
2692 sshd-1995 [001] d.h1 138.733280: irq_handler_exit: irq=21 ret=unhandled
2693 sshd-1995 [001] d.h1 138.733281: irq_handler_entry: irq=21 name=eth0
2694 sshd-1995 [001] d.h1 138.733283: irq_handler_exit: irq=21 ret=handled
2695[...]
2696
2697 # cat instances/zoot/trace
2698# tracer: nop
2699#
2700# entries-in-buffer/entries-written: 18996/18996 #P:4
2701#
2702# _-----=> irqs-off
2703# / _----=> need-resched
2704# | / _---=> hardirq/softirq
2705# || / _--=> preempt-depth
2706# ||| / delay
2707# TASK-PID CPU# |||| TIMESTAMP FUNCTION
2708# | | | |||| | |
2709 bash-1998 [000] d... 140.733501: sys_write -> 0x2
2710 bash-1998 [000] d... 140.733504: sys_dup2(oldfd: a, newfd: 1)
2711 bash-1998 [000] d... 140.733506: sys_dup2 -> 0x1
2712 bash-1998 [000] d... 140.733508: sys_fcntl(fd: a, cmd: 1, arg: 0)
2713 bash-1998 [000] d... 140.733509: sys_fcntl -> 0x1
2714 bash-1998 [000] d... 140.733510: sys_close(fd: a)
2715 bash-1998 [000] d... 140.733510: sys_close -> 0x0
2716 bash-1998 [000] d... 140.733514: sys_rt_sigprocmask(how: 0, nset: 0, oset: 6e2768, sigsetsize: 8)
2717 bash-1998 [000] d... 140.733515: sys_rt_sigprocmask -> 0x0
2718 bash-1998 [000] d... 140.733516: sys_rt_sigaction(sig: 2, act: 7fff718846f0, oact: 7fff71884650, sigsetsize: 8)
2719 bash-1998 [000] d... 140.733516: sys_rt_sigaction -> 0x0
2720
2721You can see that the trace of the top most trace buffer shows only
2722the function tracing. The foo instance displays wakeups and task
2723switches.
2724
2725To remove the instances, simply delete their directories:
2726
2727 # rmdir instances/foo
2728 # rmdir instances/bar
2729 # rmdir instances/zoot
2730
2731Note, if a process has a trace file open in one of the instance
2732directories, the rmdir will fail with EBUSY.
2733
2734
2735Stack trace
1928----------- 2736-----------
2737Since the kernel has a fixed sized stack, it is important not to
2738waste it in functions. A kernel developer must be conscience of
2739what they allocate on the stack. If they add too much, the system
2740can be in danger of a stack overflow, and corruption will occur,
2741usually leading to a system panic.
2742
2743There are some tools that check this, usually with interrupts
2744periodically checking usage. But if you can perform a check
2745at every function call that will become very useful. As ftrace provides
2746a function tracer, it makes it convenient to check the stack size
2747at every function call. This is enabled via the stack tracer.
2748
2749CONFIG_STACK_TRACER enables the ftrace stack tracing functionality.
2750To enable it, write a '1' into /proc/sys/kernel/stack_tracer_enabled.
2751
2752 # echo 1 > /proc/sys/kernel/stack_tracer_enabled
2753
2754You can also enable it from the kernel command line to trace
2755the stack size of the kernel during boot up, by adding "stacktrace"
2756to the kernel command line parameter.
2757
2758After running it for a few minutes, the output looks like:
2759
2760 # cat stack_max_size
27612928
2762
2763 # cat stack_trace
2764 Depth Size Location (18 entries)
2765 ----- ---- --------
2766 0) 2928 224 update_sd_lb_stats+0xbc/0x4ac
2767 1) 2704 160 find_busiest_group+0x31/0x1f1
2768 2) 2544 256 load_balance+0xd9/0x662
2769 3) 2288 80 idle_balance+0xbb/0x130
2770 4) 2208 128 __schedule+0x26e/0x5b9
2771 5) 2080 16 schedule+0x64/0x66
2772 6) 2064 128 schedule_timeout+0x34/0xe0
2773 7) 1936 112 wait_for_common+0x97/0xf1
2774 8) 1824 16 wait_for_completion+0x1d/0x1f
2775 9) 1808 128 flush_work+0xfe/0x119
2776 10) 1680 16 tty_flush_to_ldisc+0x1e/0x20
2777 11) 1664 48 input_available_p+0x1d/0x5c
2778 12) 1616 48 n_tty_poll+0x6d/0x134
2779 13) 1568 64 tty_poll+0x64/0x7f
2780 14) 1504 880 do_select+0x31e/0x511
2781 15) 624 400 core_sys_select+0x177/0x216
2782 16) 224 96 sys_select+0x91/0xb9
2783 17) 128 128 system_call_fastpath+0x16/0x1b
2784
2785Note, if -mfentry is being used by gcc, functions get traced before
2786they set up the stack frame. This means that leaf level functions
2787are not tested by the stack tracer when -mfentry is used.
2788
2789Currently, -mfentry is used by gcc 4.6.0 and above on x86 only.
2790
2791---------
1929 2792
1930More details can be found in the source code, in the 2793More details can be found in the source code, in the
1931kernel/trace/*.c files. 2794kernel/trace/*.c files.
diff --git a/Documentation/trace/tracepoints.txt b/Documentation/trace/tracepoints.txt
index c0e1ceed75a4..da49437d5aeb 100644
--- a/Documentation/trace/tracepoints.txt
+++ b/Documentation/trace/tracepoints.txt
@@ -81,7 +81,6 @@ tracepoint_synchronize_unregister() must be called before the end of
81the module exit function to make sure there is no caller left using 81the module exit function to make sure there is no caller left using
82the probe. This, and the fact that preemption is disabled around the 82the probe. This, and the fact that preemption is disabled around the
83probe call, make sure that probe removal and module unload are safe. 83probe call, make sure that probe removal and module unload are safe.
84See the "Probe example" section below for a sample probe module.
85 84
86The tracepoint mechanism supports inserting multiple instances of the 85The tracepoint mechanism supports inserting multiple instances of the
87same tracepoint, but a single definition must be made of a given 86same tracepoint, but a single definition must be made of a given
@@ -100,17 +99,3 @@ core kernel image or in modules.
100If the tracepoint has to be used in kernel modules, an 99If the tracepoint has to be used in kernel modules, an
101EXPORT_TRACEPOINT_SYMBOL_GPL() or EXPORT_TRACEPOINT_SYMBOL() can be 100EXPORT_TRACEPOINT_SYMBOL_GPL() or EXPORT_TRACEPOINT_SYMBOL() can be
102used to export the defined tracepoints. 101used to export the defined tracepoints.
103
104* Probe / tracepoint example
105
106See the example provided in samples/tracepoints
107
108Compile them with your kernel. They are built during 'make' (not
109'make modules') when CONFIG_SAMPLE_TRACEPOINTS=m.
110
111Run, as root :
112modprobe tracepoint-sample (insmod order is not important)
113modprobe tracepoint-probe-sample
114cat /proc/tracepoint-sample (returns an expected error)
115rmmod tracepoint-sample tracepoint-probe-sample
116dmesg
diff --git a/Documentation/trace/uprobetracer.txt b/Documentation/trace/uprobetracer.txt
index 24ce6823a09e..d9c3e682312c 100644
--- a/Documentation/trace/uprobetracer.txt
+++ b/Documentation/trace/uprobetracer.txt
@@ -1,6 +1,8 @@
1 Uprobe-tracer: Uprobe-based Event Tracing 1 Uprobe-tracer: Uprobe-based Event Tracing
2 ========================================= 2 =========================================
3 Documentation written by Srikar Dronamraju 3
4 Documentation written by Srikar Dronamraju
5
4 6
5Overview 7Overview
6-------- 8--------
@@ -13,78 +15,94 @@ current_tracer. Instead of that, add probe points via
13/sys/kernel/debug/tracing/events/uprobes/<EVENT>/enabled. 15/sys/kernel/debug/tracing/events/uprobes/<EVENT>/enabled.
14 16
15However unlike kprobe-event tracer, the uprobe event interface expects the 17However unlike kprobe-event tracer, the uprobe event interface expects the
16user to calculate the offset of the probepoint in the object 18user to calculate the offset of the probepoint in the object.
17 19
18Synopsis of uprobe_tracer 20Synopsis of uprobe_tracer
19------------------------- 21-------------------------
20 p[:[GRP/]EVENT] PATH:SYMBOL[+offs] [FETCHARGS] : Set a probe 22 p[:[GRP/]EVENT] PATH:SYMBOL[+offs] [FETCHARGS] : Set a uprobe
23 r[:[GRP/]EVENT] PATH:SYMBOL[+offs] [FETCHARGS] : Set a return uprobe (uretprobe)
24 -:[GRP/]EVENT : Clear uprobe or uretprobe event
21 25
22 GRP : Group name. If omitted, use "uprobes" for it. 26 GRP : Group name. If omitted, "uprobes" is the default value.
23 EVENT : Event name. If omitted, the event name is generated 27 EVENT : Event name. If omitted, the event name is generated based
24 based on SYMBOL+offs. 28 on SYMBOL+offs.
25 PATH : path to an executable or a library. 29 PATH : Path to an executable or a library.
26 SYMBOL[+offs] : Symbol+offset where the probe is inserted. 30 SYMBOL[+offs] : Symbol+offset where the probe is inserted.
27 31
28 FETCHARGS : Arguments. Each probe can have up to 128 args. 32 FETCHARGS : Arguments. Each probe can have up to 128 args.
29 %REG : Fetch register REG 33 %REG : Fetch register REG
30 34
31Event Profiling 35Event Profiling
32--------------- 36---------------
33 You can check the total number of probe hits and probe miss-hits via 37You can check the total number of probe hits and probe miss-hits via
34/sys/kernel/debug/tracing/uprobe_profile. 38/sys/kernel/debug/tracing/uprobe_profile.
35 The first column is event name, the second is the number of probe hits, 39The first column is event name, the second is the number of probe hits,
36the third is the number of probe miss-hits. 40the third is the number of probe miss-hits.
37 41
38Usage examples 42Usage examples
39-------------- 43--------------
40To add a probe as a new event, write a new definition to uprobe_events 44 * Add a probe as a new uprobe event, write a new definition to uprobe_events
41as below. 45as below: (sets a uprobe at an offset of 0x4245c0 in the executable /bin/bash)
46
47 echo 'p: /bin/bash:0x4245c0' > /sys/kernel/debug/tracing/uprobe_events
48
49 * Add a probe as a new uretprobe event:
50
51 echo 'r: /bin/bash:0x4245c0' > /sys/kernel/debug/tracing/uprobe_events
52
53 * Unset registered event:
42 54
43 echo 'p: /bin/bash:0x4245c0' > /sys/kernel/debug/tracing/uprobe_events 55 echo '-:bash_0x4245c0' >> /sys/kernel/debug/tracing/uprobe_events
44 56
45 This sets a uprobe at an offset of 0x4245c0 in the executable /bin/bash 57 * Print out the events that are registered:
46 58
47 echo > /sys/kernel/debug/tracing/uprobe_events 59 cat /sys/kernel/debug/tracing/uprobe_events
48 60
49 This clears all probe points. 61 * Clear all events:
50 62
51The following example shows how to dump the instruction pointer and %ax 63 echo > /sys/kernel/debug/tracing/uprobe_events
52a register at the probed text address. Here we are trying to probe 64
53function zfree in /bin/zsh 65Following example shows how to dump the instruction pointer and %ax register
66at the probed text address. Probe zfree function in /bin/zsh:
54 67
55 # cd /sys/kernel/debug/tracing/ 68 # cd /sys/kernel/debug/tracing/
56 # cat /proc/`pgrep zsh`/maps | grep /bin/zsh | grep r-xp 69 # cat /proc/`pgrep zsh`/maps | grep /bin/zsh | grep r-xp
57 00400000-0048a000 r-xp 00000000 08:03 130904 /bin/zsh 70 00400000-0048a000 r-xp 00000000 08:03 130904 /bin/zsh
58 # objdump -T /bin/zsh | grep -w zfree 71 # objdump -T /bin/zsh | grep -w zfree
59 0000000000446420 g DF .text 0000000000000012 Base zfree 72 0000000000446420 g DF .text 0000000000000012 Base zfree
60 73
610x46420 is the offset of zfree in object /bin/zsh that is loaded at 74 0x46420 is the offset of zfree in object /bin/zsh that is loaded at
620x00400000. Hence the command to probe would be : 75 0x00400000. Hence the command to uprobe would be:
76
77 # echo 'p:zfree_entry /bin/zsh:0x46420 %ip %ax' > uprobe_events
78
79 And the same for the uretprobe would be:
63 80
64 # echo 'p /bin/zsh:0x46420 %ip %ax' > uprobe_events 81 # echo 'r:zfree_exit /bin/zsh:0x46420 %ip %ax' >> uprobe_events
65 82
66Please note: User has to explicitly calculate the offset of the probepoint 83Please note: User has to explicitly calculate the offset of the probe-point
67in the object. We can see the events that are registered by looking at the 84in the object. We can see the events that are registered by looking at the
68uprobe_events file. 85uprobe_events file.
69 86
70 # cat uprobe_events 87 # cat uprobe_events
71 p:uprobes/p_zsh_0x46420 /bin/zsh:0x00046420 arg1=%ip arg2=%ax 88 p:uprobes/zfree_entry /bin/zsh:0x00046420 arg1=%ip arg2=%ax
89 r:uprobes/zfree_exit /bin/zsh:0x00046420 arg1=%ip arg2=%ax
72 90
73The format of events can be seen by viewing the file events/uprobes/p_zsh_0x46420/format 91Format of events can be seen by viewing the file events/uprobes/zfree_entry/format
74 92
75 # cat events/uprobes/p_zsh_0x46420/format 93 # cat events/uprobes/zfree_entry/format
76 name: p_zsh_0x46420 94 name: zfree_entry
77 ID: 922 95 ID: 922
78 format: 96 format:
79 field:unsigned short common_type; offset:0; size:2; signed:0; 97 field:unsigned short common_type; offset:0; size:2; signed:0;
80 field:unsigned char common_flags; offset:2; size:1; signed:0; 98 field:unsigned char common_flags; offset:2; size:1; signed:0;
81 field:unsigned char common_preempt_count; offset:3; size:1; signed:0; 99 field:unsigned char common_preempt_count; offset:3; size:1; signed:0;
82 field:int common_pid; offset:4; size:4; signed:1; 100 field:int common_pid; offset:4; size:4; signed:1;
83 field:int common_padding; offset:8; size:4; signed:1; 101 field:int common_padding; offset:8; size:4; signed:1;
84 102
85 field:unsigned long __probe_ip; offset:12; size:4; signed:0; 103 field:unsigned long __probe_ip; offset:12; size:4; signed:0;
86 field:u32 arg1; offset:16; size:4; signed:0; 104 field:u32 arg1; offset:16; size:4; signed:0;
87 field:u32 arg2; offset:20; size:4; signed:0; 105 field:u32 arg2; offset:20; size:4; signed:0;
88 106
89 print fmt: "(%lx) arg1=%lx arg2=%lx", REC->__probe_ip, REC->arg1, REC->arg2 107 print fmt: "(%lx) arg1=%lx arg2=%lx", REC->__probe_ip, REC->arg1, REC->arg2
90 108
@@ -94,6 +112,7 @@ events, you need to enable it by:
94 # echo 1 > events/uprobes/enable 112 # echo 1 > events/uprobes/enable
95 113
96Lets disable the event after sleeping for some time. 114Lets disable the event after sleeping for some time.
115
97 # sleep 20 116 # sleep 20
98 # echo 0 > events/uprobes/enable 117 # echo 0 > events/uprobes/enable
99 118
@@ -104,10 +123,11 @@ And you can see the traced information via /sys/kernel/debug/tracing/trace.
104 # 123 #
105 # TASK-PID CPU# TIMESTAMP FUNCTION 124 # TASK-PID CPU# TIMESTAMP FUNCTION
106 # | | | | | 125 # | | | | |
107 zsh-24842 [006] 258544.995456: p_zsh_0x46420: (0x446420) arg1=446421 arg2=79 126 zsh-24842 [006] 258544.995456: zfree_entry: (0x446420) arg1=446420 arg2=79
108 zsh-24842 [007] 258545.000270: p_zsh_0x46420: (0x446420) arg1=446421 arg2=79 127 zsh-24842 [007] 258545.000270: zfree_exit: (0x446540 <- 0x446420) arg1=446540 arg2=0
109 zsh-24842 [002] 258545.043929: p_zsh_0x46420: (0x446420) arg1=446421 arg2=79 128 zsh-24842 [002] 258545.043929: zfree_entry: (0x446420) arg1=446420 arg2=79
110 zsh-24842 [004] 258547.046129: p_zsh_0x46420: (0x446420) arg1=446421 arg2=79 129 zsh-24842 [004] 258547.046129: zfree_exit: (0x446540 <- 0x446420) arg1=446540 arg2=0
111 130
112Each line shows us probes were triggered for a pid 24842 with ip being 131Output shows us uprobe was triggered for a pid 24842 with ip being 0x446420
1130x446421 and contents of ax register being 79. 132and contents of ax register being 79. And uretprobe was triggered with ip at
1330x446540 with counterpart function entry at 0x446420.
diff --git a/Documentation/usb/power-management.txt b/Documentation/usb/power-management.txt
index 4204eb01fd38..1392b61d6ebe 100644
--- a/Documentation/usb/power-management.txt
+++ b/Documentation/usb/power-management.txt
@@ -33,6 +33,10 @@ built with CONFIG_USB_SUSPEND enabled (which depends on
33CONFIG_PM_RUNTIME). System PM support is present only if the kernel 33CONFIG_PM_RUNTIME). System PM support is present only if the kernel
34was built with CONFIG_SUSPEND or CONFIG_HIBERNATION enabled. 34was built with CONFIG_SUSPEND or CONFIG_HIBERNATION enabled.
35 35
36(Starting with the 3.10 kernel release, dynamic PM support for USB is
37present whenever the kernel was built with CONFIG_PM_RUNTIME enabled.
38The CONFIG_USB_SUSPEND option has been eliminated.)
39
36 40
37 What is Remote Wakeup? 41 What is Remote Wakeup?
38 ---------------------- 42 ----------------------
@@ -206,10 +210,8 @@ initialized to 5. (The idle-delay values for already existing devices
206will not be affected.) 210will not be affected.)
207 211
208Setting the initial default idle-delay to -1 will prevent any 212Setting the initial default idle-delay to -1 will prevent any
209autosuspend of any USB device. This is a simple alternative to 213autosuspend of any USB device. This has the benefit of allowing you
210disabling CONFIG_USB_SUSPEND and rebuilding the kernel, and it has the 214then to enable autosuspend for selected devices.
211added benefit of allowing you to enable autosuspend for selected
212devices.
213 215
214 216
215 Warnings 217 Warnings
diff --git a/Documentation/video4linux/CARDLIST.em28xx b/Documentation/video4linux/CARDLIST.em28xx
index 3f12865b2a88..e81864405102 100644
--- a/Documentation/video4linux/CARDLIST.em28xx
+++ b/Documentation/video4linux/CARDLIST.em28xx
@@ -76,7 +76,7 @@
76 76 -> KWorld PlusTV 340U or UB435-Q (ATSC) (em2870) [1b80:a340] 76 76 -> KWorld PlusTV 340U or UB435-Q (ATSC) (em2870) [1b80:a340]
77 77 -> EM2874 Leadership ISDBT (em2874) 77 77 -> EM2874 Leadership ISDBT (em2874)
78 78 -> PCTV nanoStick T2 290e (em28174) 78 78 -> PCTV nanoStick T2 290e (em28174)
79 79 -> Terratec Cinergy H5 (em2884) [0ccd:10a2,0ccd:10ad] 79 79 -> Terratec Cinergy H5 (em2884) [0ccd:10a2,0ccd:10ad,0ccd:10b6]
80 80 -> PCTV DVB-S2 Stick (460e) (em28174) 80 80 -> PCTV DVB-S2 Stick (460e) (em28174)
81 81 -> Hauppauge WinTV HVR 930C (em2884) [2040:1605] 81 81 -> Hauppauge WinTV HVR 930C (em2884) [2040:1605]
82 82 -> Terratec Cinergy HTC Stick (em2884) [0ccd:00b2] 82 82 -> Terratec Cinergy HTC Stick (em2884) [0ccd:00b2]
@@ -85,3 +85,4 @@
85 85 -> PCTV QuatroStick (510e) (em2884) [2304:0242] 85 85 -> PCTV QuatroStick (510e) (em2884) [2304:0242]
86 86 -> PCTV QuatroStick nano (520e) (em2884) [2013:0251] 86 86 -> PCTV QuatroStick nano (520e) (em2884) [2013:0251]
87 87 -> Terratec Cinergy HTC USB XS (em2884) [0ccd:008e,0ccd:00ac] 87 87 -> Terratec Cinergy HTC USB XS (em2884) [0ccd:008e,0ccd:00ac]
88 88 -> C3 Tech Digital Duo HDTV/SDTV USB (em2884) [1b80:e755]
diff --git a/Documentation/video4linux/CARDLIST.tuner b/Documentation/video4linux/CARDLIST.tuner
index c83f6e418879..5b83a3ff15c2 100644
--- a/Documentation/video4linux/CARDLIST.tuner
+++ b/Documentation/video4linux/CARDLIST.tuner
@@ -86,3 +86,6 @@ tuner=85 - Philips FQ1236 MK5
86tuner=86 - Tena TNF5337 MFD 86tuner=86 - Tena TNF5337 MFD
87tuner=87 - Xceive 4000 tuner 87tuner=87 - Xceive 4000 tuner
88tuner=88 - Xceive 5000C tuner 88tuner=88 - Xceive 5000C tuner
89tuner=89 - Sony PAL+SECAM (BTF-PG472Z)
90tuner=90 - Sony NTSC-M-JP (BTF-PK467Z)
91tuner=91 - Sony NTSC-M (BTF-PB463Z)
diff --git a/Documentation/video4linux/si476x.txt b/Documentation/video4linux/si476x.txt
new file mode 100644
index 000000000000..d1a08db2cbd9
--- /dev/null
+++ b/Documentation/video4linux/si476x.txt
@@ -0,0 +1,187 @@
1SI476x Driver Readme
2------------------------------------------------
3 Copyright (C) 2013 Andrey Smirnov <andrew.smirnov@gmail.com>
4
5TODO for the driver
6------------------------------
7
8- According to the SiLabs' datasheet it is possible to update the
9 firmware of the radio chip in the run-time, thus bringing it to the
10 most recent version. Unfortunately I couldn't find any mentioning of
11 the said firmware update for the old chips that I tested the driver
12 against, so for chips like that the driver only exposes the old
13 functionality.
14
15
16Parameters exposed over debugfs
17-------------------------------
18SI476x allow user to get multiple characteristics that can be very
19useful for EoL testing/RF performance estimation, parameters that have
20very little to do with V4L2 subsystem. Such parameters are exposed via
21debugfs and can be accessed via regular file I/O operations.
22
23The drivers exposes following files:
24
25* /sys/kernel/debug/<device-name>/acf
26 This file contains ACF(Automatically Controlled Features) status
27 information. The contents of the file is binary data of the
28 following layout:
29
30 Offset | Name | Description
31 ====================================================================
32 0x00 | blend_int | Flag, set when stereo separation has
33 | | crossed below the blend threshold
34 --------------------------------------------------------------------
35 0x01 | hblend_int | Flag, set when HiBlend cutoff
36 | | frequency is lower than threshold
37 --------------------------------------------------------------------
38 0x02 | hicut_int | Flag, set when HiCut cutoff
39 | | frequency is lower than threshold
40 --------------------------------------------------------------------
41 0x03 | chbw_int | Flag, set when channel filter
42 | | bandwidth is less than threshold
43 --------------------------------------------------------------------
44 0x04 | softmute_int | Flag indicating that softmute
45 | | attenuation has increased above
46 | | softmute threshold
47 --------------------------------------------------------------------
48 0x05 | smute | 0 - Audio is not soft muted
49 | | 1 - Audio is soft muted
50 --------------------------------------------------------------------
51 0x06 | smattn | Soft mute attenuation level in dB
52 --------------------------------------------------------------------
53 0x07 | chbw | Channel filter bandwidth in kHz
54 --------------------------------------------------------------------
55 0x08 | hicut | HiCut cutoff frequency in units of
56 | | 100Hz
57 --------------------------------------------------------------------
58 0x09 | hiblend | HiBlend cutoff frequency in units
59 | | of 100 Hz
60 --------------------------------------------------------------------
61 0x10 | pilot | 0 - Stereo pilot is not present
62 | | 1 - Stereo pilot is present
63 --------------------------------------------------------------------
64 0x11 | stblend | Stereo blend in %
65 --------------------------------------------------------------------
66
67
68* /sys/kernel/debug/<device-name>/rds_blckcnt
69 This file contains statistics about RDS receptions. It's binary data
70 has the following layout:
71
72 Offset | Name | Description
73 ====================================================================
74 0x00 | expected | Number of expected RDS blocks
75 --------------------------------------------------------------------
76 0x02 | received | Number of received RDS blocks
77 --------------------------------------------------------------------
78 0x04 | uncorrectable | Number of uncorrectable RDS blocks
79 --------------------------------------------------------------------
80
81* /sys/kernel/debug/<device-name>/agc
82 This file contains information about parameters pertaining to
83 AGC(Automatic Gain Control)
84
85 The layout is:
86 Offset | Name | Description
87 ====================================================================
88 0x00 | mxhi | 0 - FM Mixer PD high threshold is
89 | | not tripped
90 | | 1 - FM Mixer PD high threshold is
91 | | tripped
92 --------------------------------------------------------------------
93 0x01 | mxlo | ditto for FM Mixer PD low
94 --------------------------------------------------------------------
95 0x02 | lnahi | ditto for FM LNA PD high
96 --------------------------------------------------------------------
97 0x03 | lnalo | ditto for FM LNA PD low
98 --------------------------------------------------------------------
99 0x04 | fmagc1 | FMAGC1 attenuator resistance
100 | | (see datasheet for more detail)
101 --------------------------------------------------------------------
102 0x05 | fmagc2 | ditto for FMAGC2
103 --------------------------------------------------------------------
104 0x06 | pgagain | PGA gain in dB
105 --------------------------------------------------------------------
106 0x07 | fmwblang | FM/WB LNA Gain in dB
107 --------------------------------------------------------------------
108
109* /sys/kernel/debug/<device-name>/rsq
110 This file contains information about parameters pertaining to
111 RSQ(Received Signal Quality)
112
113 The layout is:
114 Offset | Name | Description
115 ====================================================================
116 0x00 | multhint | 0 - multipath value has not crossed
117 | | the Multipath high threshold
118 | | 1 - multipath value has crossed
119 | | the Multipath high threshold
120 --------------------------------------------------------------------
121 0x01 | multlint | ditto for Multipath low threshold
122 --------------------------------------------------------------------
123 0x02 | snrhint | 0 - received signal's SNR has not
124 | | crossed high threshold
125 | | 1 - received signal's SNR has
126 | | crossed high threshold
127 --------------------------------------------------------------------
128 0x03 | snrlint | ditto for low threshold
129 --------------------------------------------------------------------
130 0x04 | rssihint | ditto for RSSI high threshold
131 --------------------------------------------------------------------
132 0x05 | rssilint | ditto for RSSI low threshold
133 --------------------------------------------------------------------
134 0x06 | bltf | Flag indicating if seek command
135 | | reached/wrapped seek band limit
136 --------------------------------------------------------------------
137 0x07 | snr_ready | Indicates that SNR metrics is ready
138 --------------------------------------------------------------------
139 0x08 | rssiready | ditto for RSSI metrics
140 --------------------------------------------------------------------
141 0x09 | injside | 0 - Low-side injection is being used
142 | | 1 - High-side injection is used
143 --------------------------------------------------------------------
144 0x10 | afcrl | Flag indicating if AFC rails
145 --------------------------------------------------------------------
146 0x11 | valid | Flag indicating if channel is valid
147 --------------------------------------------------------------------
148 0x12 | readfreq | Current tuned frequency
149 --------------------------------------------------------------------
150 0x14 | freqoff | Singed frequency offset in units of
151 | | 2ppm
152 --------------------------------------------------------------------
153 0x15 | rssi | Signed value of RSSI in dBuV
154 --------------------------------------------------------------------
155 0x16 | snr | Signed RF SNR in dB
156 --------------------------------------------------------------------
157 0x17 | issi | Signed Image Strength Signal
158 | | indicator
159 --------------------------------------------------------------------
160 0x18 | lassi | Signed Low side adjacent Channel
161 | | Strength indicator
162 --------------------------------------------------------------------
163 0x19 | hassi | ditto fpr High side
164 --------------------------------------------------------------------
165 0x20 | mult | Multipath indicator
166 --------------------------------------------------------------------
167 0x21 | dev | Frequency deviation
168 --------------------------------------------------------------------
169 0x24 | assi | Adjascent channel SSI
170 --------------------------------------------------------------------
171 0x25 | usn | Ultrasonic noise indicator
172 --------------------------------------------------------------------
173 0x26 | pilotdev | Pilot deviation in units of 100 Hz
174 --------------------------------------------------------------------
175 0x27 | rdsdev | ditto for RDS
176 --------------------------------------------------------------------
177 0x28 | assidev | ditto for ASSI
178 --------------------------------------------------------------------
179 0x29 | strongdev | Frequency deviation
180 --------------------------------------------------------------------
181 0x30 | rdspi | RDS PI code
182 --------------------------------------------------------------------
183
184* /sys/kernel/debug/<device-name>/rsq_primary
185 This file contains information about parameters pertaining to
186 RSQ(Received Signal Quality) for primary tuner only. Layout is as
187 the one above.
diff --git a/Documentation/virtual/00-INDEX b/Documentation/virtual/00-INDEX
index 924bd462675e..e952d30bbf0f 100644
--- a/Documentation/virtual/00-INDEX
+++ b/Documentation/virtual/00-INDEX
@@ -6,6 +6,3 @@ kvm/
6 - Kernel Virtual Machine. See also http://linux-kvm.org 6 - Kernel Virtual Machine. See also http://linux-kvm.org
7uml/ 7uml/
8 - User Mode Linux, builds/runs Linux kernel as a userspace program. 8 - User Mode Linux, builds/runs Linux kernel as a userspace program.
9virtio.txt
10 - Text version of draft virtio spec.
11 See http://ozlabs.org/~rusty/virtio-spec
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
index 119358dfb742..5f91eda91647 100644
--- a/Documentation/virtual/kvm/api.txt
+++ b/Documentation/virtual/kvm/api.txt
@@ -1486,15 +1486,23 @@ struct kvm_ioeventfd {
1486 __u8 pad[36]; 1486 __u8 pad[36];
1487}; 1487};
1488 1488
1489For the special case of virtio-ccw devices on s390, the ioevent is matched
1490to a subchannel/virtqueue tuple instead.
1491
1489The following flags are defined: 1492The following flags are defined:
1490 1493
1491#define KVM_IOEVENTFD_FLAG_DATAMATCH (1 << kvm_ioeventfd_flag_nr_datamatch) 1494#define KVM_IOEVENTFD_FLAG_DATAMATCH (1 << kvm_ioeventfd_flag_nr_datamatch)
1492#define KVM_IOEVENTFD_FLAG_PIO (1 << kvm_ioeventfd_flag_nr_pio) 1495#define KVM_IOEVENTFD_FLAG_PIO (1 << kvm_ioeventfd_flag_nr_pio)
1493#define KVM_IOEVENTFD_FLAG_DEASSIGN (1 << kvm_ioeventfd_flag_nr_deassign) 1496#define KVM_IOEVENTFD_FLAG_DEASSIGN (1 << kvm_ioeventfd_flag_nr_deassign)
1497#define KVM_IOEVENTFD_FLAG_VIRTIO_CCW_NOTIFY \
1498 (1 << kvm_ioeventfd_flag_nr_virtio_ccw_notify)
1494 1499
1495If datamatch flag is set, the event will be signaled only if the written value 1500If datamatch flag is set, the event will be signaled only if the written value
1496to the registered address is equal to datamatch in struct kvm_ioeventfd. 1501to the registered address is equal to datamatch in struct kvm_ioeventfd.
1497 1502
1503For virtio-ccw devices, addr contains the subchannel id and datamatch the
1504virtqueue index.
1505
1498 1506
14994.60 KVM_DIRTY_TLB 15074.60 KVM_DIRTY_TLB
1500 1508
@@ -1780,27 +1788,48 @@ registers, find a list below:
1780 PPC | KVM_REG_PPC_VPA_DTL | 128 1788 PPC | KVM_REG_PPC_VPA_DTL | 128
1781 PPC | KVM_REG_PPC_EPCR | 32 1789 PPC | KVM_REG_PPC_EPCR | 32
1782 PPC | KVM_REG_PPC_EPR | 32 1790 PPC | KVM_REG_PPC_EPR | 32
1791 PPC | KVM_REG_PPC_TCR | 32
1792 PPC | KVM_REG_PPC_TSR | 32
1793 PPC | KVM_REG_PPC_OR_TSR | 32
1794 PPC | KVM_REG_PPC_CLEAR_TSR | 32
1795 PPC | KVM_REG_PPC_MAS0 | 32
1796 PPC | KVM_REG_PPC_MAS1 | 32
1797 PPC | KVM_REG_PPC_MAS2 | 64
1798 PPC | KVM_REG_PPC_MAS7_3 | 64
1799 PPC | KVM_REG_PPC_MAS4 | 32
1800 PPC | KVM_REG_PPC_MAS6 | 32
1801 PPC | KVM_REG_PPC_MMUCFG | 32
1802 PPC | KVM_REG_PPC_TLB0CFG | 32
1803 PPC | KVM_REG_PPC_TLB1CFG | 32
1804 PPC | KVM_REG_PPC_TLB2CFG | 32
1805 PPC | KVM_REG_PPC_TLB3CFG | 32
1806 PPC | KVM_REG_PPC_TLB0PS | 32
1807 PPC | KVM_REG_PPC_TLB1PS | 32
1808 PPC | KVM_REG_PPC_TLB2PS | 32
1809 PPC | KVM_REG_PPC_TLB3PS | 32
1810 PPC | KVM_REG_PPC_EPTCFG | 32
1811 PPC | KVM_REG_PPC_ICP_STATE | 64
1783 1812
1784ARM registers are mapped using the lower 32 bits. The upper 16 of that 1813ARM registers are mapped using the lower 32 bits. The upper 16 of that
1785is the register group type, or coprocessor number: 1814is the register group type, or coprocessor number:
1786 1815
1787ARM core registers have the following id bit patterns: 1816ARM core registers have the following id bit patterns:
1788 0x4002 0000 0010 <index into the kvm_regs struct:16> 1817 0x4020 0000 0010 <index into the kvm_regs struct:16>
1789 1818
1790ARM 32-bit CP15 registers have the following id bit patterns: 1819ARM 32-bit CP15 registers have the following id bit patterns:
1791 0x4002 0000 000F <zero:1> <crn:4> <crm:4> <opc1:4> <opc2:3> 1820 0x4020 0000 000F <zero:1> <crn:4> <crm:4> <opc1:4> <opc2:3>
1792 1821
1793ARM 64-bit CP15 registers have the following id bit patterns: 1822ARM 64-bit CP15 registers have the following id bit patterns:
1794 0x4003 0000 000F <zero:1> <zero:4> <crm:4> <opc1:4> <zero:3> 1823 0x4030 0000 000F <zero:1> <zero:4> <crm:4> <opc1:4> <zero:3>
1795 1824
1796ARM CCSIDR registers are demultiplexed by CSSELR value: 1825ARM CCSIDR registers are demultiplexed by CSSELR value:
1797 0x4002 0000 0011 00 <csselr:8> 1826 0x4020 0000 0011 00 <csselr:8>
1798 1827
1799ARM 32-bit VFP control registers have the following id bit patterns: 1828ARM 32-bit VFP control registers have the following id bit patterns:
1800 0x4002 0000 0012 1 <regno:12> 1829 0x4020 0000 0012 1 <regno:12>
1801 1830
1802ARM 64-bit FP registers have the following id bit patterns: 1831ARM 64-bit FP registers have the following id bit patterns:
1803 0x4002 0000 0012 0 <regno:12> 1832 0x4030 0000 0012 0 <regno:12>
1804 1833
18054.69 KVM_GET_ONE_REG 18344.69 KVM_GET_ONE_REG
1806 1835
@@ -2161,6 +2190,76 @@ header; first `n_valid' valid entries with contents from the data
2161written, then `n_invalid' invalid entries, invalidating any previously 2190written, then `n_invalid' invalid entries, invalidating any previously
2162valid entries found. 2191valid entries found.
2163 2192
21934.79 KVM_CREATE_DEVICE
2194
2195Capability: KVM_CAP_DEVICE_CTRL
2196Type: vm ioctl
2197Parameters: struct kvm_create_device (in/out)
2198Returns: 0 on success, -1 on error
2199Errors:
2200 ENODEV: The device type is unknown or unsupported
2201 EEXIST: Device already created, and this type of device may not
2202 be instantiated multiple times
2203
2204 Other error conditions may be defined by individual device types or
2205 have their standard meanings.
2206
2207Creates an emulated device in the kernel. The file descriptor returned
2208in fd can be used with KVM_SET/GET/HAS_DEVICE_ATTR.
2209
2210If the KVM_CREATE_DEVICE_TEST flag is set, only test whether the
2211device type is supported (not necessarily whether it can be created
2212in the current vm).
2213
2214Individual devices should not define flags. Attributes should be used
2215for specifying any behavior that is not implied by the device type
2216number.
2217
2218struct kvm_create_device {
2219 __u32 type; /* in: KVM_DEV_TYPE_xxx */
2220 __u32 fd; /* out: device handle */
2221 __u32 flags; /* in: KVM_CREATE_DEVICE_xxx */
2222};
2223
22244.80 KVM_SET_DEVICE_ATTR/KVM_GET_DEVICE_ATTR
2225
2226Capability: KVM_CAP_DEVICE_CTRL
2227Type: device ioctl
2228Parameters: struct kvm_device_attr
2229Returns: 0 on success, -1 on error
2230Errors:
2231 ENXIO: The group or attribute is unknown/unsupported for this device
2232 EPERM: The attribute cannot (currently) be accessed this way
2233 (e.g. read-only attribute, or attribute that only makes
2234 sense when the device is in a different state)
2235
2236 Other error conditions may be defined by individual device types.
2237
2238Gets/sets a specified piece of device configuration and/or state. The
2239semantics are device-specific. See individual device documentation in
2240the "devices" directory. As with ONE_REG, the size of the data
2241transferred is defined by the particular attribute.
2242
2243struct kvm_device_attr {
2244 __u32 flags; /* no flags currently defined */
2245 __u32 group; /* device-defined */
2246 __u64 attr; /* group-defined */
2247 __u64 addr; /* userspace address of attr data */
2248};
2249
22504.81 KVM_HAS_DEVICE_ATTR
2251
2252Capability: KVM_CAP_DEVICE_CTRL
2253Type: device ioctl
2254Parameters: struct kvm_device_attr
2255Returns: 0 on success, -1 on error
2256Errors:
2257 ENXIO: The group or attribute is unknown/unsupported for this device
2258
2259Tests whether a device supports a particular attribute. A successful
2260return indicates the attribute is implemented. It does not necessarily
2261indicate that the attribute can be read or written in the device's
2262current state. "addr" is ignored.
2164 2263
21654.77 KVM_ARM_VCPU_INIT 22644.77 KVM_ARM_VCPU_INIT
2166 2265
@@ -2243,6 +2342,25 @@ and distributor interface, the ioctl must be called after calling
2243KVM_CREATE_IRQCHIP, but before calling KVM_RUN on any of the VCPUs. Calling 2342KVM_CREATE_IRQCHIP, but before calling KVM_RUN on any of the VCPUs. Calling
2244this ioctl twice for any of the base addresses will return -EEXIST. 2343this ioctl twice for any of the base addresses will return -EEXIST.
2245 2344
23454.82 KVM_PPC_RTAS_DEFINE_TOKEN
2346
2347Capability: KVM_CAP_PPC_RTAS
2348Architectures: ppc
2349Type: vm ioctl
2350Parameters: struct kvm_rtas_token_args
2351Returns: 0 on success, -1 on error
2352
2353Defines a token value for a RTAS (Run Time Abstraction Services)
2354service in order to allow it to be handled in the kernel. The
2355argument struct gives the name of the service, which must be the name
2356of a service that has a kernel-side implementation. If the token
2357value is non-zero, it will be associated with that service, and
2358subsequent RTAS calls by the guest specifying that token will be
2359handled by the kernel. If the token value is 0, then any token
2360associated with the service will be forgotten, and subsequent RTAS
2361calls by the guest for that service will be passed to userspace to be
2362handled.
2363
2246 2364
22475. The kvm_run structure 23655. The kvm_run structure
2248------------------------ 2366------------------------
@@ -2646,3 +2764,19 @@ to receive the topmost interrupt vector.
2646When disabled (args[0] == 0), behavior is as if this facility is unsupported. 2764When disabled (args[0] == 0), behavior is as if this facility is unsupported.
2647 2765
2648When this capability is enabled, KVM_EXIT_EPR can occur. 2766When this capability is enabled, KVM_EXIT_EPR can occur.
2767
27686.6 KVM_CAP_IRQ_MPIC
2769
2770Architectures: ppc
2771Parameters: args[0] is the MPIC device fd
2772 args[1] is the MPIC CPU number for this vcpu
2773
2774This capability connects the vcpu to an in-kernel MPIC device.
2775
27766.7 KVM_CAP_IRQ_XICS
2777
2778Architectures: ppc
2779Parameters: args[0] is the XICS device fd
2780 args[1] is the XICS CPU number (server ID) for this vcpu
2781
2782This capability connects the vcpu to an in-kernel XICS device.
diff --git a/Documentation/virtual/kvm/devices/README b/Documentation/virtual/kvm/devices/README
new file mode 100644
index 000000000000..34a69834124a
--- /dev/null
+++ b/Documentation/virtual/kvm/devices/README
@@ -0,0 +1 @@
This directory contains specific device bindings for KVM_CAP_DEVICE_CTRL.
diff --git a/Documentation/virtual/kvm/devices/mpic.txt b/Documentation/virtual/kvm/devices/mpic.txt
new file mode 100644
index 000000000000..8257397adc3c
--- /dev/null
+++ b/Documentation/virtual/kvm/devices/mpic.txt
@@ -0,0 +1,53 @@
1MPIC interrupt controller
2=========================
3
4Device types supported:
5 KVM_DEV_TYPE_FSL_MPIC_20 Freescale MPIC v2.0
6 KVM_DEV_TYPE_FSL_MPIC_42 Freescale MPIC v4.2
7
8Only one MPIC instance, of any type, may be instantiated. The created
9MPIC will act as the system interrupt controller, connecting to each
10vcpu's interrupt inputs.
11
12Groups:
13 KVM_DEV_MPIC_GRP_MISC
14 Attributes:
15 KVM_DEV_MPIC_BASE_ADDR (rw, 64-bit)
16 Base address of the 256 KiB MPIC register space. Must be
17 naturally aligned. A value of zero disables the mapping.
18 Reset value is zero.
19
20 KVM_DEV_MPIC_GRP_REGISTER (rw, 32-bit)
21 Access an MPIC register, as if the access were made from the guest.
22 "attr" is the byte offset into the MPIC register space. Accesses
23 must be 4-byte aligned.
24
25 MSIs may be signaled by using this attribute group to write
26 to the relevant MSIIR.
27
28 KVM_DEV_MPIC_GRP_IRQ_ACTIVE (rw, 32-bit)
29 IRQ input line for each standard openpic source. 0 is inactive and 1
30 is active, regardless of interrupt sense.
31
32 For edge-triggered interrupts: Writing 1 is considered an activating
33 edge, and writing 0 is ignored. Reading returns 1 if a previously
34 signaled edge has not been acknowledged, and 0 otherwise.
35
36 "attr" is the IRQ number. IRQ numbers for standard sources are the
37 byte offset of the relevant IVPR from EIVPR0, divided by 32.
38
39IRQ Routing:
40
41 The MPIC emulation supports IRQ routing. Only a single MPIC device can
42 be instantiated. Once that device has been created, it's available as
43 irqchip id 0.
44
45 This irqchip 0 has 256 interrupt pins, which expose the interrupts in
46 the main array of interrupt sources (a.k.a. "SRC" interrupts).
47
48 The numbering is the same as the MPIC device tree binding -- based on
49 the register offset from the beginning of the sources array, without
50 regard to any subdivisions in chip documentation such as "internal"
51 or "external" interrupts.
52
53 Access to non-SRC interrupts is not implemented through IRQ routing mechanisms.
diff --git a/Documentation/virtual/kvm/devices/xics.txt b/Documentation/virtual/kvm/devices/xics.txt
new file mode 100644
index 000000000000..42864935ac5d
--- /dev/null
+++ b/Documentation/virtual/kvm/devices/xics.txt
@@ -0,0 +1,66 @@
1XICS interrupt controller
2
3Device type supported: KVM_DEV_TYPE_XICS
4
5Groups:
6 KVM_DEV_XICS_SOURCES
7 Attributes: One per interrupt source, indexed by the source number.
8
9This device emulates the XICS (eXternal Interrupt Controller
10Specification) defined in PAPR. The XICS has a set of interrupt
11sources, each identified by a 20-bit source number, and a set of
12Interrupt Control Presentation (ICP) entities, also called "servers",
13each associated with a virtual CPU.
14
15The ICP entities are created by enabling the KVM_CAP_IRQ_ARCH
16capability for each vcpu, specifying KVM_CAP_IRQ_XICS in args[0] and
17the interrupt server number (i.e. the vcpu number from the XICS's
18point of view) in args[1] of the kvm_enable_cap struct. Each ICP has
1964 bits of state which can be read and written using the
20KVM_GET_ONE_REG and KVM_SET_ONE_REG ioctls on the vcpu. The 64 bit
21state word has the following bitfields, starting at the
22least-significant end of the word:
23
24* Unused, 16 bits
25
26* Pending interrupt priority, 8 bits
27 Zero is the highest priority, 255 means no interrupt is pending.
28
29* Pending IPI (inter-processor interrupt) priority, 8 bits
30 Zero is the highest priority, 255 means no IPI is pending.
31
32* Pending interrupt source number, 24 bits
33 Zero means no interrupt pending, 2 means an IPI is pending
34
35* Current processor priority, 8 bits
36 Zero is the highest priority, meaning no interrupts can be
37 delivered, and 255 is the lowest priority.
38
39Each source has 64 bits of state that can be read and written using
40the KVM_GET_DEVICE_ATTR and KVM_SET_DEVICE_ATTR ioctls, specifying the
41KVM_DEV_XICS_SOURCES attribute group, with the attribute number being
42the interrupt source number. The 64 bit state word has the following
43bitfields, starting from the least-significant end of the word:
44
45* Destination (server number), 32 bits
46 This specifies where the interrupt should be sent, and is the
47 interrupt server number specified for the destination vcpu.
48
49* Priority, 8 bits
50 This is the priority specified for this interrupt source, where 0 is
51 the highest priority and 255 is the lowest. An interrupt with a
52 priority of 255 will never be delivered.
53
54* Level sensitive flag, 1 bit
55 This bit is 1 for a level-sensitive interrupt source, or 0 for
56 edge-sensitive (or MSI).
57
58* Masked flag, 1 bit
59 This bit is set to 1 if the interrupt is masked (cannot be delivered
60 regardless of its priority), for example by the ibm,int-off RTAS
61 call, or 0 if it is not masked.
62
63* Pending flag, 1 bit
64 This bit is 1 if the source has a pending interrupt, otherwise 0.
65
66Only one XICS instance may be created per VM.
diff --git a/Documentation/virtual/virtio-spec.txt b/Documentation/virtual/virtio-spec.txt
deleted file mode 100644
index 0d6ec85481cb..000000000000
--- a/Documentation/virtual/virtio-spec.txt
+++ /dev/null
@@ -1,3210 +0,0 @@
1[Generated file: see http://ozlabs.org/~rusty/virtio-spec/]
2Virtio PCI Card Specification
3v0.9.5 DRAFT
4-
5
6Rusty Russell <rusty@rustcorp.com.au> IBM Corporation (Editor)
7
82012 May 7.
9
10Purpose and Description
11
12This document describes the specifications of the “virtio” family
13of PCI[LaTeX Command: nomenclature] devices. These are devices
14are found in virtual environments[LaTeX Command: nomenclature],
15yet by design they are not all that different from physical PCI
16devices, and this document treats them as such. This allows the
17guest to use standard PCI drivers and discovery mechanisms.
18
19The purpose of virtio and this specification is that virtual
20environments and guests should have a straightforward, efficient,
21standard and extensible mechanism for virtual devices, rather
22than boutique per-environment or per-OS mechanisms.
23
24 Straightforward: Virtio PCI devices use normal PCI mechanisms
25 of interrupts and DMA which should be familiar to any device
26 driver author. There is no exotic page-flipping or COW
27 mechanism: it's just a PCI device.[footnote:
28This lack of page-sharing implies that the implementation of the
29device (e.g. the hypervisor or host) needs full access to the
30guest memory. Communication with untrusted parties (i.e.
31inter-guest communication) requires copying.
32]
33
34 Efficient: Virtio PCI devices consist of rings of descriptors
35 for input and output, which are neatly separated to avoid cache
36 effects from both guest and device writing to the same cache
37 lines.
38
39 Standard: Virtio PCI makes no assumptions about the environment
40 in which it operates, beyond supporting PCI. In fact the virtio
41 devices specified in the appendices do not require PCI at all:
42 they have been implemented on non-PCI buses.[footnote:
43The Linux implementation further separates the PCI virtio code
44from the specific virtio drivers: these drivers are shared with
45the non-PCI implementations (currently lguest and S/390).
46]
47
48 Extensible: Virtio PCI devices contain feature bits which are
49 acknowledged by the guest operating system during device setup.
50 This allows forwards and backwards compatibility: the device
51 offers all the features it knows about, and the driver
52 acknowledges those it understands and wishes to use.
53
54 Virtqueues
55
56The mechanism for bulk data transport on virtio PCI devices is
57pretentiously called a virtqueue. Each device can have zero or
58more virtqueues: for example, the network device has one for
59transmit and one for receive.
60
61Each virtqueue occupies two or more physically-contiguous pages
62(defined, for the purposes of this specification, as 4096 bytes),
63and consists of three parts:
64
65
66+-------------------+-----------------------------------+-----------+
67| Descriptor Table | Available Ring (padding) | Used Ring |
68+-------------------+-----------------------------------+-----------+
69
70
71When the driver wants to send a buffer to the device, it fills in
72a slot in the descriptor table (or chains several together), and
73writes the descriptor index into the available ring. It then
74notifies the device. When the device has finished a buffer, it
75writes the descriptor into the used ring, and sends an interrupt.
76
77Specification
78
79 PCI Discovery
80
81Any PCI device with Vendor ID 0x1AF4, and Device ID 0x1000
82through 0x103F inclusive is a virtio device[footnote:
83The actual value within this range is ignored
84]. The device must also have a Revision ID of 0 to match this
85specification.
86
87The Subsystem Device ID indicates which virtio device is
88supported by the device. The Subsystem Vendor ID should reflect
89the PCI Vendor ID of the environment (it's currently only used
90for informational purposes by the guest).
91
92
93+----------------------+--------------------+---------------+
94| Subsystem Device ID | Virtio Device | Specification |
95+----------------------+--------------------+---------------+
96+----------------------+--------------------+---------------+
97| 1 | network card | Appendix C |
98+----------------------+--------------------+---------------+
99| 2 | block device | Appendix D |
100+----------------------+--------------------+---------------+
101| 3 | console | Appendix E |
102+----------------------+--------------------+---------------+
103| 4 | entropy source | Appendix F |
104+----------------------+--------------------+---------------+
105| 5 | memory ballooning | Appendix G |
106+----------------------+--------------------+---------------+
107| 6 | ioMemory | - |
108+----------------------+--------------------+---------------+
109| 7 | rpmsg | Appendix H |
110+----------------------+--------------------+---------------+
111| 8 | SCSI host | Appendix I |
112+----------------------+--------------------+---------------+
113| 9 | 9P transport | - |
114+----------------------+--------------------+---------------+
115| 10 | mac80211 wlan | - |
116+----------------------+--------------------+---------------+
117
118
119 Device Configuration
120
121To configure the device, we use the first I/O region of the PCI
122device. This contains a virtio header followed by a
123device-specific region.
124
125There may be different widths of accesses to the I/O region; the “
126natural” access method for each field in the virtio header must
127be used (i.e. 32-bit accesses for 32-bit fields, etc), but the
128device-specific region can be accessed using any width accesses,
129and should obtain the same results.
130
131Note that this is possible because while the virtio header is PCI
132(i.e. little) endian, the device-specific region is encoded in
133the native endian of the guest (where such distinction is
134applicable).
135
136 Device Initialization Sequence<sub:Device-Initialization-Sequence>
137
138We start with an overview of device initialization, then expand
139on the details of the device and how each step is preformed.
140
141 Reset the device. This is not required on initial start up.
142
143 The ACKNOWLEDGE status bit is set: we have noticed the device.
144
145 The DRIVER status bit is set: we know how to drive the device.
146
147 Device-specific setup, including reading the Device Feature
148 Bits, discovery of virtqueues for the device, optional MSI-X
149 setup, and reading and possibly writing the virtio
150 configuration space.
151
152 The subset of Device Feature Bits understood by the driver is
153 written to the device.
154
155 The DRIVER_OK status bit is set.
156
157 The device can now be used (ie. buffers added to the
158 virtqueues)[footnote:
159Historically, drivers have used the device before steps 5 and 6.
160This is only allowed if the driver does not use any features
161which would alter this early use of the device.
162]
163
164If any of these steps go irrecoverably wrong, the guest should
165set the FAILED status bit to indicate that it has given up on the
166device (it can reset the device later to restart if desired).
167
168We now cover the fields required for general setup in detail.
169
170 Virtio Header
171
172The virtio header looks as follows:
173
174
175+------------++---------------------+---------------------+----------+--------+---------+---------+---------+--------+
176| Bits || 32 | 32 | 32 | 16 | 16 | 16 | 8 | 8 |
177+------------++---------------------+---------------------+----------+--------+---------+---------+---------+--------+
178| Read/Write || R | R+W | R+W | R | R+W | R+W | R+W | R |
179+------------++---------------------+---------------------+----------+--------+---------+---------+---------+--------+
180| Purpose || Device | Guest | Queue | Queue | Queue | Queue | Device | ISR |
181| || Features bits 0:31 | Features bits 0:31 | Address | Size | Select | Notify | Status | Status |
182+------------++---------------------+---------------------+----------+--------+---------+---------+---------+--------+
183
184
185If MSI-X is enabled for the device, two additional fields
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]
190
191
192+------------++----------------+--------+
193| Bits || 16 | 16 |
194 +----------------+--------+
195+------------++----------------+--------+
196| Read/Write || R+W | R+W |
197+------------++----------------+--------+
198| Purpose || Configuration | Queue |
199| (MSI-X) || Vector | Vector |
200+------------++----------------+--------+
201
202
203Immediately following these general headers, there may be
204device-specific headers:
205
206
207+------------++--------------------+
208| Bits || Device Specific |
209 +--------------------+
210+------------++--------------------+
211| Read/Write || Device Specific |
212+------------++--------------------+
213| Purpose || Device Specific... |
214| || |
215+------------++--------------------+
216
217
218 Device Status
219
220The Device Status field is updated by the guest to indicate its
221progress. This provides a simple low-level diagnostic: it's most
222useful to imagine them hooked up to traffic lights on the console
223indicating the status of each device.
224
225The device can be reset by writing a 0 to this field, otherwise
226at least one bit should be set:
227
228 ACKNOWLEDGE (1) Indicates that the guest OS has found the
229 device and recognized it as a valid virtio device.
230
231 DRIVER (2) Indicates that the guest OS knows how to drive the
232 device. Under Linux, drivers can be loadable modules so there
233 may be a significant (or infinite) delay before setting this
234 bit.
235
236 DRIVER_OK (4) Indicates that the driver is set up and ready to
237 drive the device.
238
239 FAILED (128) Indicates that something went wrong in the guest,
240 and it has given up on the device. This could be an internal
241 error, or the driver didn't like the device for some reason, or
242 even a fatal error during device operation. The device must be
243 reset before attempting to re-initialize.
244
245 Feature Bits<sub:Feature-Bits>
246
247Thefirst configuration field indicates the features that the
248device supports. The bits are allocated as follows:
249
250 0 to 23 Feature bits for the specific device type
251
252 24 to 32 Feature bits reserved for extensions to the queue and
253 feature negotiation mechanisms
254
255For example, feature bit 0 for a network device (i.e. Subsystem
256Device ID 1) indicates that the device supports checksumming of
257packets.
258
259The feature bits are negotiated: the device lists all the
260features it understands in the Device Features field, and the
261guest writes the subset that it understands into the Guest
262Features field. The only way to renegotiate is to reset the
263device.
264
265In particular, new fields in the device configuration header are
266indicated by offering a feature bit, so the guest can check
267before accessing that part of the configuration space.
268
269This allows for forwards and backwards compatibility: if the
270device is enhanced with a new feature bit, older guests will not
271write that feature bit back to the Guest Features field and it
272can go into backwards compatibility mode. Similarly, if a guest
273is enhanced with a feature that the device doesn't support, it
274will not see that feature bit in the Device Features field and
275can go into backwards compatibility mode (or, for poor
276implementations, set the FAILED Device Status bit).
277
278 Configuration/Queue Vectors
279
280When MSI-X capability is present and enabled in the device
281(through standard PCI configuration space) 4 bytes at byte offset
28220 are used to map configuration change and queue interrupts to
283MSI-X vectors. In this case, the ISR Status field is unused, and
284device specific configuration starts at byte offset 24 in virtio
285header structure. When MSI-X capability is not enabled, device
286specific configuration starts at byte offset 20 in virtio header.
287
288Writing a valid MSI-X Table entry number, 0 to 0x7FF, to one of
289Configuration/Queue Vector registers, maps interrupts triggered
290by the configuration change/selected queue events respectively to
291the corresponding MSI-X vector. To disable interrupts for a
292specific event type, unmap it by writing a special NO_VECTOR
293value:
294
295/* Vector value used to disable MSI for queue */
296
297#define VIRTIO_MSI_NO_VECTOR 0xffff
298
299Reading these registers returns vector mapped to a given event,
300or NO_VECTOR if unmapped. All queue and configuration change
301events are unmapped by default.
302
303Note that mapping an event to vector might require allocating
304internal device resources, and might fail. Devices report such
305failures by returning the NO_VECTOR value when the relevant
306Vector field is read. After mapping an event to vector, the
307driver must verify success by reading the Vector field value: on
308success, the previously written value is returned, and on
309failure, NO_VECTOR is returned. If a mapping failure is detected,
310the driver can retry mapping with fewervectors, or disable MSI-X.
311
312 Virtqueue Configuration<sec:Virtqueue-Configuration>
313
314As a device can have zero or more virtqueues for bulk data
315transport (for example, the network driver has two), the driver
316needs to configure them as part of the device-specific
317configuration.
318
319This is done as follows, for each virtqueue a device has:
320
321 Write the virtqueue index (first queue is 0) to the Queue
322 Select field.
323
324 Read the virtqueue size from the Queue Size field, which is
325 always a power of 2. This controls how big the virtqueue is
326 (see below). If this field is 0, the virtqueue does not exist.
327
328 Allocate and zero virtqueue in contiguous physical memory, on a
329 4096 byte alignment. Write the physical address, divided by
330 4096 to the Queue Address field.[footnote:
331The 4096 is based on the x86 page size, but it's also large
332enough to ensure that the separate parts of the virtqueue are on
333separate cache lines.
334]
335
336 Optionally, if MSI-X capability is present and enabled on the
337 device, select a vector to use to request interrupts triggered
338 by virtqueue events. Write the MSI-X Table entry number
339 corresponding to this vector in Queue Vector field. Read the
340 Queue Vector field: on success, previously written value is
341 returned; on failure, NO_VECTOR value is returned.
342
343The Queue Size field controls the total number of bytes required
344for the virtqueue according to the following formula:
345
346#define ALIGN(x) (((x) + 4095) & ~4095)
347
348static inline unsigned vring_size(unsigned int qsz)
349
350{
351
352 return ALIGN(sizeof(struct vring_desc)*qsz + sizeof(u16)*(2
353+ qsz))
354
355 + ALIGN(sizeof(struct vring_used_elem)*qsz);
356
357}
358
359This currently wastes some space with padding, but also allows
360future extensions. The virtqueue layout structure looks like this
361(qsz is the Queue Size field, which is a variable, so this code
362won't compile):
363
364struct vring {
365
366 /* The actual descriptors (16 bytes each) */
367
368 struct vring_desc desc[qsz];
369
370
371
372 /* A ring of available descriptor heads with free-running
373index. */
374
375 struct vring_avail avail;
376
377
378
379 // Padding to the next 4096 boundary.
380
381 char pad[];
382
383
384
385 // A ring of used descriptor heads with free-running index.
386
387 struct vring_used used;
388
389};
390
391 A Note on Virtqueue Endianness
392
393Note that the endian of these fields and everything else in the
394virtqueue is the native endian of the guest, not little-endian as
395PCI normally is. This makes for simpler guest code, and it is
396assumed that the host already has to be deeply aware of the guest
397endian so such an “endian-aware” device is not a significant
398issue.
399
400 Descriptor Table
401
402The descriptor table refers to the buffers the guest is using for
403the device. The addresses are physical addresses, and the buffers
404can be chained via the next field. Each descriptor describes a
405buffer which is read-only or write-only, but a chain of
406descriptors can contain both read-only and write-only buffers.
407
408No descriptor chain may be more than 2^32 bytes long in total.struct vring_desc {
409
410 /* Address (guest-physical). */
411
412 u64 addr;
413
414 /* Length. */
415
416 u32 len;
417
418/* This marks a buffer as continuing via the next field. */
419
420#define VRING_DESC_F_NEXT 1
421
422/* This marks a buffer as write-only (otherwise read-only). */
423
424#define VRING_DESC_F_WRITE 2
425
426/* This means the buffer contains a list of buffer descriptors.
427*/
428
429#define VRING_DESC_F_INDIRECT 4
430
431 /* The flags as indicated above. */
432
433 u16 flags;
434
435 /* Next field if flags & NEXT */
436
437 u16 next;
438
439};
440
441The number of descriptors in the table is specified by the Queue
442Size field for this virtqueue.
443
444 <sub:Indirect-Descriptors>Indirect Descriptors
445
446Some devices benefit by concurrently dispatching a large number
447of large requests. The VIRTIO_RING_F_INDIRECT_DESC feature can be
448used to allow this (see [cha:Reserved-Feature-Bits]). To increase
449ring capacity it is possible to store a table of indirect
450descriptors anywhere in memory, and insert a descriptor in main
451virtqueue (with flags&INDIRECT on) that refers to memory buffer
452containing this indirect descriptor table; fields addr and len
453refer to the indirect table address and length in bytes,
454respectively. The indirect table layout structure looks like this
455(len is the length of the descriptor that refers to this table,
456which is a variable, so this code won't compile):
457
458struct indirect_descriptor_table {
459
460 /* The actual descriptors (16 bytes each) */
461
462 struct vring_desc desc[len / 16];
463
464};
465
466The first indirect descriptor is located at start of the indirect
467descriptor table (index 0), additional indirect descriptors are
468chained by next field. An indirect descriptor without next field
469(with flags&NEXT off) signals the end of the indirect descriptor
470table, and transfers control back to the main virtqueue. An
471indirect descriptor can not refer to another indirect descriptor
472table (flags&INDIRECT must be off). A single indirect descriptor
473table can include both read-only and write-only descriptors;
474write-only flag (flags&WRITE) in the descriptor that refers to it
475is ignored.
476
477 Available Ring
478
479The available ring refers to what descriptors we are offering the
480device: it refers to the head of a descriptor chain. The “flags”
481field is currently 0 or 1: 1 indicating that we do not need an
482interrupt when the device consumes a descriptor from the
483available ring. Alternatively, the guest can ask the device to
484delay interrupts until an entry with an index specified by the “
485used_event” field is written in the used ring (equivalently,
486until the idx field in the used ring will reach the value
487used_event + 1). The method employed by the device is controlled
488by the VIRTIO_RING_F_EVENT_IDX feature bit (see [cha:Reserved-Feature-Bits]
489). This interrupt suppression is merely an optimization; it may
490not suppress interrupts entirely.
491
492The “idx” field indicates where we would put the next descriptor
493entry (modulo the ring size). This starts at 0, and increases.
494
495struct vring_avail {
496
497#define VRING_AVAIL_F_NO_INTERRUPT 1
498
499 u16 flags;
500
501 u16 idx;
502
503 u16 ring[qsz]; /* qsz is the Queue Size field read from device
504*/
505
506 u16 used_event;
507
508};
509
510 Used Ring
511
512The used ring is where the device returns buffers once it is done
513with them. The flags field can be used by the device to hint that
514no notification is necessary when the guest adds to the available
515ring. Alternatively, the “avail_event” field can be used by the
516device to hint that no notification is necessary until an entry
517with an index specified by the “avail_event” is written in the
518available ring (equivalently, until the idx field in the
519available ring will reach the value avail_event + 1). The method
520employed by the device is controlled by the guest through the
521VIRTIO_RING_F_EVENT_IDX feature bit (see [cha:Reserved-Feature-Bits]
522). [footnote:
523These fields are kept here because this is the only part of the
524virtqueue written by the device
525].
526
527Each entry in the ring is a pair: the head entry of the
528descriptor chain describing the buffer (this matches an entry
529placed in the available ring by the guest earlier), and the total
530of bytes written into the buffer. The latter is extremely useful
531for guests using untrusted buffers: if you do not know exactly
532how much has been written by the device, you usually have to zero
533the buffer to ensure no data leakage occurs.
534
535/* u32 is used here for ids for padding reasons. */
536
537struct vring_used_elem {
538
539 /* Index of start of used descriptor chain. */
540
541 u32 id;
542
543 /* Total length of the descriptor chain which was used
544(written to) */
545
546 u32 len;
547
548};
549
550
551
552struct vring_used {
553
554#define VRING_USED_F_NO_NOTIFY 1
555
556 u16 flags;
557
558 u16 idx;
559
560 struct vring_used_elem ring[qsz];
561
562 u16 avail_event;
563
564};
565
566 Helpers for Managing Virtqueues
567
568The Linux Kernel Source code contains the definitions above and
569helper routines in a more usable form, in
570include/linux/virtio_ring.h. This was explicitly licensed by IBM
571and Red Hat under the (3-clause) BSD license so that it can be
572freely used by all other projects, and is reproduced (with slight
573variation to remove Linux assumptions) in Appendix A.
574
575 Device Operation<sec:Device-Operation>
576
577There are two parts to device operation: supplying new buffers to
578the device, and processing used buffers from the device. As an
579example, the virtio network device has two virtqueues: the
580transmit virtqueue and the receive virtqueue. The driver adds
581outgoing (read-only) packets to the transmit virtqueue, and then
582frees them after they are used. Similarly, incoming (write-only)
583buffers are added to the receive virtqueue, and processed after
584they are used.
585
586 Supplying Buffers to The Device
587
588Actual transfer of buffers from the guest OS to the device
589operates as follows:
590
591 Place the buffer(s) into free descriptor(s).
592
593 If there are no free descriptors, the guest may choose to
594 notify the device even if notifications are suppressed (to
595 reduce latency).[footnote:
596The Linux drivers do this only for read-only buffers: for
597write-only buffers, it is assumed that the driver is merely
598trying to keep the receive buffer ring full, and no notification
599of this expected condition is necessary.
600]
601
602 Place the id of the buffer in the next ring entry of the
603 available ring.
604
605 The steps (1) and (2) may be performed repeatedly if batching
606 is possible.
607
608 A memory barrier should be executed to ensure the device sees
609 the updated descriptor table and available ring before the next
610 step.
611
612 The available “idx” field should be increased by the number of
613 entries added to the available ring.
614
615 A memory barrier should be executed to ensure that we update
616 the idx field before checking for notification suppression.
617
618 If notifications are not suppressed, the device should be
619 notified of the new buffers.
620
621Note that the above code does not take precautions against the
622available ring buffer wrapping around: this is not possible since
623the ring buffer is the same size as the descriptor table, so step
624(1) will prevent such a condition.
625
626In addition, the maximum queue size is 32768 (it must be a power
627of 2 which fits in 16 bits), so the 16-bit “idx” value can always
628distinguish between a full and empty buffer.
629
630Here is a description of each stage in more detail.
631
632 Placing Buffers Into The Descriptor Table
633
634A buffer consists of zero or more read-only physically-contiguous
635elements followed by zero or more physically-contiguous
636write-only elements (it must have at least one element). This
637algorithm maps it into the descriptor table:
638
639 for each buffer element, b:
640
641 Get the next free descriptor table entry, d
642
643 Set d.addr to the physical address of the start of b
644
645 Set d.len to the length of b.
646
647 If b is write-only, set d.flags to VRING_DESC_F_WRITE,
648 otherwise 0.
649
650 If there is a buffer element after this:
651
652 Set d.next to the index of the next free descriptor element.
653
654 Set the VRING_DESC_F_NEXT bit in d.flags.
655
656In practice, the d.next fields are usually used to chain free
657descriptors, and a separate count kept to check there are enough
658free descriptors before beginning the mappings.
659
660 Updating The Available Ring
661
662The head of the buffer we mapped is the first d in the algorithm
663above. A naive implementation would do the following:
664
665avail->ring[avail->idx % qsz] = head;
666
667However, in general we can add many descriptors before we update
668the “idx” field (at which point they become visible to the
669device), so we keep a counter of how many we've added:
670
671avail->ring[(avail->idx + added++) % qsz] = head;
672
673 Updating The Index Field
674
675Once the idx field of the virtqueue is updated, the device will
676be able to access the descriptor entries we've created and the
677memory they refer to. This is why a memory barrier is generally
678used before the idx update, to ensure it sees the most up-to-date
679copy.
680
681The idx field always increments, and we let it wrap naturally at
68265536:
683
684avail->idx += added;
685
686 <sub:Notifying-The-Device>Notifying The Device
687
688Device notification occurs by writing the 16-bit virtqueue index
689of this virtqueue to the Queue Notify field of the virtio header
690in the first I/O region of the PCI device. This can be expensive,
691however, so the device can suppress such notifications if it
692doesn't need them. We have to be careful to expose the new idx
693value before checking the suppression flag: it's OK to notify
694gratuitously, but not to omit a required notification. So again,
695we use a memory barrier here before reading the flags or the
696avail_event field.
697
698If the VIRTIO_F_RING_EVENT_IDX feature is not negotiated, and if
699the VRING_USED_F_NOTIFY flag is not set, we go ahead and write to
700the PCI configuration space.
701
702If the VIRTIO_F_RING_EVENT_IDX feature is negotiated, we read the
703avail_event field in the available ring structure. If the
704available index crossed_the avail_event field value since the
705last notification, we go ahead and write to the PCI configuration
706space. The avail_event field wraps naturally at 65536 as well:
707
708(u16)(new_idx - avail_event - 1) < (u16)(new_idx - old_idx)
709
710 <sub:Receiving-Used-Buffers>Receiving Used Buffers From The
711 Device
712
713Once the device has used a buffer (read from or written to it, or
714parts of both, depending on the nature of the virtqueue and the
715device), it sends an interrupt, following an algorithm very
716similar to the algorithm used for the driver to send the device a
717buffer:
718
719 Write the head descriptor number to the next field in the used
720 ring.
721
722 Update the used ring idx.
723
724 Determine whether an interrupt is necessary:
725
726 If the VIRTIO_F_RING_EVENT_IDX feature is not negotiated: check
727 if f the VRING_AVAIL_F_NO_INTERRUPT flag is not set in avail-
728 >flags
729
730 If the VIRTIO_F_RING_EVENT_IDX feature is negotiated: check
731 whether the used index crossed the used_event field value
732 since the last update. The used_event field wraps naturally
733 at 65536 as well:(u16)(new_idx - used_event - 1) < (u16)(new_idx - old_idx)
734
735 If an interrupt is necessary:
736
737 If MSI-X capability is disabled:
738
739 Set the lower bit of the ISR Status field for the device.
740
741 Send the appropriate PCI interrupt for the device.
742
743 If MSI-X capability is enabled:
744
745 Request the appropriate MSI-X interrupt message for the
746 device, Queue Vector field sets the MSI-X Table entry
747 number.
748
749 If Queue Vector field value is NO_VECTOR, no interrupt
750 message is requested for this event.
751
752The guest interrupt handler should:
753
754 If MSI-X capability is disabled: read the ISR Status field,
755 which will reset it to zero. If the lower bit is zero, the
756 interrupt was not for this device. Otherwise, the guest driver
757 should look through the used rings of each virtqueue for the
758 device, to see if any progress has been made by the device
759 which requires servicing.
760
761 If MSI-X capability is enabled: look through the used rings of
762 each virtqueue mapped to the specific MSI-X vector for the
763 device, to see if any progress has been made by the device
764 which requires servicing.
765
766For each ring, guest should then disable interrupts by writing
767VRING_AVAIL_F_NO_INTERRUPT flag in avail structure, if required.
768It can then process used ring entries finally enabling interrupts
769by clearing the VRING_AVAIL_F_NO_INTERRUPT flag or updating the
770EVENT_IDX field in the available structure, Guest should then
771execute a memory barrier, and then recheck the ring empty
772condition. This is necessary to handle the case where, after the
773last check and before enabling interrupts, an interrupt has been
774suppressed by the device:
775
776vring_disable_interrupts(vq);
777
778for (;;) {
779
780 if (vq->last_seen_used != vring->used.idx) {
781
782 vring_enable_interrupts(vq);
783
784 mb();
785
786 if (vq->last_seen_used != vring->used.idx)
787
788 break;
789
790 }
791
792 struct vring_used_elem *e =
793vring.used->ring[vq->last_seen_used%vsz];
794
795 process_buffer(e);
796
797 vq->last_seen_used++;
798
799}
800
801 Dealing With Configuration Changes<sub:Dealing-With-Configuration>
802
803Some virtio PCI devices can change the device configuration
804state, as reflected in the virtio header in the PCI configuration
805space. In this case:
806
807 If MSI-X capability is disabled: an interrupt is delivered and
808 the second highest bit is set in the ISR Status field to
809 indicate that the driver should re-examine the configuration
810 space.Note that a single interrupt can indicate both that one
811 or more virtqueue has been used and that the configuration
812 space has changed: even if the config bit is set, virtqueues
813 must be scanned.
814
815 If MSI-X capability is enabled: an interrupt message is
816 requested. The Configuration Vector field sets the MSI-X Table
817 entry number to use. If Configuration Vector field value is
818 NO_VECTOR, no interrupt message is requested for this event.
819
820Creating New Device Types
821
822Various considerations are necessary when creating a new device
823type:
824
825 How Many Virtqueues?
826
827It is possible that a very simple device will operate entirely
828through its configuration space, but most will need at least one
829virtqueue in which it will place requests. A device with both
830input and output (eg. console and network devices described here)
831need two queues: one which the driver fills with buffers to
832receive input, and one which the driver places buffers to
833transmit output.
834
835 What Configuration Space Layout?
836
837Configuration space is generally used for rarely-changing or
838initialization-time parameters. But it is a limited resource, so
839it might be better to use a virtqueue to update configuration
840information (the network device does this for filtering,
841otherwise the table in the config space could potentially be very
842large).
843
844Note that this space is generally the guest's native endian,
845rather than PCI's little-endian.
846
847 What Device Number?
848
849Currently device numbers are assigned quite freely: a simple
850request mail to the author of this document or the Linux
851virtualization mailing list[footnote:
852
853https://lists.linux-foundation.org/mailman/listinfo/virtualization
854] will be sufficient to secure a unique one.
855
856Meanwhile for experimental drivers, use 65535 and work backwards.
857
858 How many MSI-X vectors?
859
860Using the optional MSI-X capability devices can speed up
861interrupt processing by removing the need to read ISR Status
862register by guest driver (which might be an expensive operation),
863reducing interrupt sharing between devices and queues within the
864device, and handling interrupts from multiple CPUs. However, some
865systems impose a limit (which might be as low as 256) on the
866total number of MSI-X vectors that can be allocated to all
867devices. Devices and/or device drivers should take this into
868account, limiting the number of vectors used unless the device is
869expected to cause a high volume of interrupts. Devices can
870control the number of vectors used by limiting the MSI-X Table
871Size or not presenting MSI-X capability in PCI configuration
872space. Drivers can control this by mapping events to as small
873number of vectors as possible, or disabling MSI-X capability
874altogether.
875
876 Message Framing
877
878The descriptors used for a buffer should not effect the semantics
879of the message, except for the total length of the buffer. For
880example, a network buffer consists of a 10 byte header followed
881by the network packet. Whether this is presented in the ring
882descriptor chain as (say) a 10 byte buffer and a 1514 byte
883buffer, or a single 1524 byte buffer, or even three buffers,
884should have no effect.
885
886In particular, no implementation should use the descriptor
887boundaries to determine the size of any header in a request.[footnote:
888The current qemu device implementations mistakenly insist that
889the first descriptor cover the header in these cases exactly, so
890a cautious driver should arrange it so.
891]
892
893 Device Improvements
894
895Any change to configuration space, or new virtqueues, or
896behavioural changes, should be indicated by negotiation of a new
897feature bit. This establishes clarity[footnote:
898Even if it does mean documenting design or implementation
899mistakes!
900] and avoids future expansion problems.
901
902Clusters of functionality which are always implemented together
903can use a single bit, but if one feature makes sense without the
904others they should not be gratuitously grouped together to
905conserve feature bits. We can always extend the spec when the
906first person needs more than 24 feature bits for their device.
907
908[LaTeX Command: printnomenclature]
909
910Appendix A: virtio_ring.h
911
912#ifndef VIRTIO_RING_H
913
914#define VIRTIO_RING_H
915
916/* An interface for efficient virtio implementation.
917
918 *
919
920 * This header is BSD licensed so anyone can use the definitions
921
922 * to implement compatible drivers/servers.
923
924 *
925
926 * Copyright 2007, 2009, IBM Corporation
927
928 * Copyright 2011, Red Hat, Inc
929
930 * All rights reserved.
931
932 *
933
934 * Redistribution and use in source and binary forms, with or
935without
936
937 * modification, are permitted provided that the following
938conditions
939
940 * are met:
941
942 * 1. Redistributions of source code must retain the above
943copyright
944
945 * notice, this list of conditions and the following
946disclaimer.
947
948 * 2. Redistributions in binary form must reproduce the above
949copyright
950
951 * notice, this list of conditions and the following
952disclaimer in the
953
954 * documentation and/or other materials provided with the
955distribution.
956
957 * 3. Neither the name of IBM nor the names of its contributors
958
959 * may be used to endorse or promote products derived from
960this software
961
962 * without specific prior written permission.
963
964 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
965CONTRIBUTORS ``AS IS'' AND
966
967 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
968TO, THE
969
970 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
971PARTICULAR PURPOSE
972
973 * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE
974LIABLE
975
976 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
977CONSEQUENTIAL
978
979 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
980SUBSTITUTE GOODS
981
982 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
983INTERRUPTION)
984
985 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
986CONTRACT, STRICT
987
988 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
989IN ANY WAY
990
991 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
992POSSIBILITY OF
993
994 * SUCH DAMAGE.
995
996 */
997
998
999
1000/* This marks a buffer as continuing via the next field. */
1001
1002#define VRING_DESC_F_NEXT 1
1003
1004/* This marks a buffer as write-only (otherwise read-only). */
1005
1006#define VRING_DESC_F_WRITE 2
1007
1008
1009
1010/* The Host uses this in used->flags to advise the Guest: don't
1011kick me
1012
1013 * when you add a buffer. It's unreliable, so it's simply an
1014
1015 * optimization. Guest will still kick if it's out of buffers.
1016*/
1017
1018#define VRING_USED_F_NO_NOTIFY 1
1019
1020/* The Guest uses this in avail->flags to advise the Host: don't
1021
1022 * interrupt me when you consume a buffer. It's unreliable, so
1023it's
1024
1025 * simply an optimization. */
1026
1027#define VRING_AVAIL_F_NO_INTERRUPT 1
1028
1029
1030
1031/* Virtio ring descriptors: 16 bytes.
1032
1033 * These can chain together via "next". */
1034
1035struct vring_desc {
1036
1037 /* Address (guest-physical). */
1038
1039 uint64_t addr;
1040
1041 /* Length. */
1042
1043 uint32_t len;
1044
1045 /* The flags as indicated above. */
1046
1047 uint16_t flags;
1048
1049 /* We chain unused descriptors via this, too */
1050
1051 uint16_t next;
1052
1053};
1054
1055
1056
1057struct vring_avail {
1058
1059 uint16_t flags;
1060
1061 uint16_t idx;
1062
1063 uint16_t ring[];
1064
1065 uint16_t used_event;
1066
1067};
1068
1069
1070
1071/* u32 is used here for ids for padding reasons. */
1072
1073struct vring_used_elem {
1074
1075 /* Index of start of used descriptor chain. */
1076
1077 uint32_t id;
1078
1079 /* Total length of the descriptor chain which was written
1080to. */
1081
1082 uint32_t len;
1083
1084};
1085
1086
1087
1088struct vring_used {
1089
1090 uint16_t flags;
1091
1092 uint16_t idx;
1093
1094 struct vring_used_elem ring[];
1095
1096 uint16_t avail_event;
1097
1098};
1099
1100
1101
1102struct vring {
1103
1104 unsigned int num;
1105
1106
1107
1108 struct vring_desc *desc;
1109
1110 struct vring_avail *avail;
1111
1112 struct vring_used *used;
1113
1114};
1115
1116
1117
1118/* The standard layout for the ring is a continuous chunk of
1119memory which
1120
1121 * looks like this. We assume num is a power of 2.
1122
1123 *
1124
1125 * struct vring {
1126
1127 * // The actual descriptors (16 bytes each)
1128
1129 * struct vring_desc desc[num];
1130
1131 *
1132
1133 * // A ring of available descriptor heads with free-running
1134index.
1135
1136 * __u16 avail_flags;
1137
1138 * __u16 avail_idx;
1139
1140 * __u16 available[num];
1141
1142 *
1143
1144 * // Padding to the next align boundary.
1145
1146 * char pad[];
1147
1148 *
1149
1150 * // A ring of used descriptor heads with free-running
1151index.
1152
1153 * __u16 used_flags;
1154
1155 * __u16 EVENT_IDX;
1156
1157 * struct vring_used_elem used[num];
1158
1159 * };
1160
1161 * Note: for virtio PCI, align is 4096.
1162
1163 */
1164
1165static inline void vring_init(struct vring *vr, unsigned int num,
1166void *p,
1167
1168 unsigned long align)
1169
1170{
1171
1172 vr->num = num;
1173
1174 vr->desc = p;
1175
1176 vr->avail = p + num*sizeof(struct vring_desc);
1177
1178 vr->used = (void *)(((unsigned long)&vr->avail->ring[num]
1179
1180 + align-1)
1181
1182 & ~(align - 1));
1183
1184}
1185
1186
1187
1188static inline unsigned vring_size(unsigned int num, unsigned long
1189align)
1190
1191{
1192
1193 return ((sizeof(struct vring_desc)*num +
1194sizeof(uint16_t)*(2+num)
1195
1196 + align - 1) & ~(align - 1))
1197
1198 + sizeof(uint16_t)*3 + sizeof(struct
1199vring_used_elem)*num;
1200
1201}
1202
1203
1204
1205static inline int vring_need_event(uint16_t event_idx, uint16_t
1206new_idx, uint16_t old_idx)
1207
1208{
1209
1210 return (uint16_t)(new_idx - event_idx - 1) <
1211(uint16_t)(new_idx - old_idx);
1212
1213}
1214
1215#endif /* VIRTIO_RING_H */
1216
1217<cha:Reserved-Feature-Bits>Appendix B: Reserved Feature Bits
1218
1219Currently there are five device-independent feature bits defined:
1220
1221 VIRTIO_F_NOTIFY_ON_EMPTY (24) Negotiating this feature
1222 indicates that the driver wants an interrupt if the device runs
1223 out of available descriptors on a virtqueue, even though
1224 interrupts are suppressed using the VRING_AVAIL_F_NO_INTERRUPT
1225 flag or the used_event field. An example of this is the
1226 networking driver: it doesn't need to know every time a packet
1227 is transmitted, but it does need to free the transmitted
1228 packets a finite time after they are transmitted. It can avoid
1229 using a timer if the device interrupts it when all the packets
1230 are transmitted.
1231
1232 VIRTIO_F_RING_INDIRECT_DESC (28) Negotiating this feature
1233 indicates that the driver can use descriptors with the
1234 VRING_DESC_F_INDIRECT flag set, as described in [sub:Indirect-Descriptors]
1235 .
1236
1237 VIRTIO_F_RING_EVENT_IDX(29) This feature enables the used_event
1238 and the avail_event fields. If set, it indicates that the
1239 device should ignore the flags field in the available ring
1240 structure. Instead, the used_event field in this structure is
1241 used by guest to suppress device interrupts. Further, the
1242 driver should ignore the flags field in the used ring
1243 structure. Instead, the avail_event field in this structure is
1244 used by the device to suppress notifications. If unset, the
1245 driver should ignore the used_event field; the device should
1246 ignore the avail_event field; the flags field is used
1247
1248Appendix C: Network Device
1249
1250The virtio network device is a virtual ethernet card, and is the
1251most complex of the devices supported so far by virtio. It has
1252enhanced rapidly and demonstrates clearly how support for new
1253features should be added to an existing device. Empty buffers are
1254placed in one virtqueue for receiving packets, and outgoing
1255packets are enqueued into another for transmission in that order.
1256A third command queue is used to control advanced filtering
1257features.
1258
1259 Configuration
1260
1261 Subsystem Device ID 1
1262
1263 Virtqueues 0:receiveq. 1:transmitq. 2:controlq[footnote:
1264Only if VIRTIO_NET_F_CTRL_VQ set
1265]
1266
1267 Feature bits
1268
1269 VIRTIO_NET_F_CSUM (0) Device handles packets with partial
1270 checksum
1271
1272 VIRTIO_NET_F_GUEST_CSUM (1) Guest handles packets with partial
1273 checksum
1274
1275 VIRTIO_NET_F_MAC (5) Device has given MAC address.
1276
1277 VIRTIO_NET_F_GSO (6) (Deprecated) device handles packets with
1278 any GSO type.[footnote:
1279It was supposed to indicate segmentation offload support, but
1280upon further investigation it became clear that multiple bits
1281were required.
1282]
1283
1284 VIRTIO_NET_F_GUEST_TSO4 (7) Guest can receive TSOv4.
1285
1286 VIRTIO_NET_F_GUEST_TSO6 (8) Guest can receive TSOv6.
1287
1288 VIRTIO_NET_F_GUEST_ECN (9) Guest can receive TSO with ECN.
1289
1290 VIRTIO_NET_F_GUEST_UFO (10) Guest can receive UFO.
1291
1292 VIRTIO_NET_F_HOST_TSO4 (11) Device can receive TSOv4.
1293
1294 VIRTIO_NET_F_HOST_TSO6 (12) Device can receive TSOv6.
1295
1296 VIRTIO_NET_F_HOST_ECN (13) Device can receive TSO with ECN.
1297
1298 VIRTIO_NET_F_HOST_UFO (14) Device can receive UFO.
1299
1300 VIRTIO_NET_F_MRG_RXBUF (15) Guest can merge receive buffers.
1301
1302 VIRTIO_NET_F_STATUS (16) Configuration status field is
1303 available.
1304
1305 VIRTIO_NET_F_CTRL_VQ (17) Control channel is available.
1306
1307 VIRTIO_NET_F_CTRL_RX (18) Control channel RX mode support.
1308
1309 VIRTIO_NET_F_CTRL_VLAN (19) Control channel VLAN filtering.
1310
1311 VIRTIO_NET_F_GUEST_ANNOUNCE(21) Guest can send gratuitous
1312 packets.
1313
1314 Device configuration layout Two configuration fields are
1315 currently defined. The mac address field always exists (though
1316 is only valid if VIRTIO_NET_F_MAC is set), and the status field
1317 only exists if VIRTIO_NET_F_STATUS is set. Two read-only bits
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
1322
1323
1324
1325struct virtio_net_config {
1326
1327 u8 mac[6];
1328
1329 u16 status;
1330
1331};
1332
1333 Device Initialization
1334
1335 The initialization routine should identify the receive and
1336 transmission virtqueues.
1337
1338 If the VIRTIO_NET_F_MAC feature bit is set, the configuration
1339 space “mac” entry indicates the “physical” address of the the
1340 network card, otherwise a private MAC address should be
1341 assigned. All guests are expected to negotiate this feature if
1342 it is set.
1343
1344 If the VIRTIO_NET_F_CTRL_VQ feature bit is negotiated, identify
1345 the control virtqueue.
1346
1347 If the VIRTIO_NET_F_STATUS feature bit is negotiated, the link
1348 status can be read from the bottom bit of the “status” config
1349 field. Otherwise, the link should be assumed active.
1350
1351 The receive virtqueue should be filled with receive buffers.
1352 This is described in detail below in “Setting Up Receive
1353 Buffers”.
1354
1355 A driver can indicate that it will generate checksumless
1356 packets by negotating the VIRTIO_NET_F_CSUM feature. This “
1357 checksum offload” is a common feature on modern network cards.
1358
1359 If that feature is negotiated[footnote:
1360ie. VIRTIO_NET_F_HOST_TSO* and VIRTIO_NET_F_HOST_UFO are
1361dependent on VIRTIO_NET_F_CSUM; a dvice which offers the offload
1362features must offer the checksum feature, and a driver which
1363accepts the offload features must accept the checksum feature.
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
1372 VIRTIO_NET_F_HOST_ECN feature is negotiated.[footnote:
1373This is a common restriction in real, older network cards.
1374]
1375
1376 The converse features are also available: a driver can save the
1377 virtual device some work by negotiating these features.[footnote:
1378For example, a network packet transported between two guests on
1379the same system may not require checksumming at all, nor
1380segmentation, if both guests are amenable.
1381] The VIRTIO_NET_F_GUEST_CSUM feature indicates that partially
1382 checksummed packets can be received, and if it can do that then
1383 the VIRTIO_NET_F_GUEST_TSO4, VIRTIO_NET_F_GUEST_TSO6,
1384 VIRTIO_NET_F_GUEST_UFO and VIRTIO_NET_F_GUEST_ECN are the input
1385 equivalents of the features described above. See “Receiving
1386 Packets” below.
1387
1388 Device Operation
1389
1390Packets are transmitted by placing them in the transmitq, and
1391buffers for incoming packets are placed in the receiveq. In each
1392case, the packet itself is preceeded by a header:
1393
1394struct virtio_net_hdr {
1395
1396#define VIRTIO_NET_HDR_F_NEEDS_CSUM 1
1397
1398 u8 flags;
1399
1400#define VIRTIO_NET_HDR_GSO_NONE 0
1401
1402#define VIRTIO_NET_HDR_GSO_TCPV4 1
1403
1404#define VIRTIO_NET_HDR_GSO_UDP 3
1405
1406#define VIRTIO_NET_HDR_GSO_TCPV6 4
1407
1408#define VIRTIO_NET_HDR_GSO_ECN 0x80
1409
1410 u8 gso_type;
1411
1412 u16 hdr_len;
1413
1414 u16 gso_size;
1415
1416 u16 csum_start;
1417
1418 u16 csum_offset;
1419
1420/* Only if VIRTIO_NET_F_MRG_RXBUF: */
1421
1422 u16 num_buffers
1423
1424};
1425
1426The controlq is used to control device features such as
1427filtering.
1428
1429 Packet Transmission
1430
1431Transmitting a single packet is simple, but varies depending on
1432the different features the driver negotiated.
1433
1434 If the driver negotiated VIRTIO_NET_F_CSUM, and the packet has
1435 not been fully checksummed, then the virtio_net_hdr's fields
1436 are set as follows. Otherwise, the packet must be fully
1437 checksummed, and flags is zero.
1438
1439 flags has the VIRTIO_NET_HDR_F_NEEDS_CSUM set,
1440
1441 <ite:csum_start-is-set>csum_start is set to the offset within
1442 the packet to begin checksumming, and
1443
1444 csum_offset indicates how many bytes after the csum_start the
1445 new (16 bit ones' complement) checksum should be placed.[footnote:
1446For example, consider a partially checksummed TCP (IPv4) packet.
1447It will have a 14 byte ethernet header and 20 byte IP header
1448followed by the TCP header (with the TCP checksum field 16 bytes
1449into that header). csum_start will be 14+20 = 34 (the TCP
1450checksum includes the header), and csum_offset will be 16. The
1451value in the TCP checksum field should be initialized to the sum
1452of the TCP pseudo header, so that replacing it by the ones'
1453complement checksum of the TCP header and body will give the
1454correct result.
1455]
1456
1457 <enu:If-the-driver>If the driver negotiated
1458 VIRTIO_NET_F_HOST_TSO4, TSO6 or UFO, and the packet requires
1459 TCP segmentation or UDP fragmentation, then the “gso_type”
1460 field is set to VIRTIO_NET_HDR_GSO_TCPV4, TCPV6 or UDP.
1461 (Otherwise, it is set to VIRTIO_NET_HDR_GSO_NONE). In this
1462 case, packets larger than 1514 bytes can be transmitted: the
1463 metadata indicates how to replicate the packet header to cut it
1464 into smaller packets. The other gso fields are set:
1465
1466 hdr_len is a hint to the device as to how much of the header
1467 needs to be kept to copy into each packet, usually set to the
1468 length of the headers, including the transport header.[footnote:
1469Due to various bugs in implementations, this field is not useful
1470as a guarantee of the transport header size.
1471]
1472
1473 gso_size is the maximum size of each packet beyond that header
1474 (ie. MSS).
1475
1476 If the driver negotiated the VIRTIO_NET_F_HOST_ECN feature, the
1477 VIRTIO_NET_HDR_GSO_ECN bit may be set in “gso_type” as well,
1478 indicating that the TCP packet has the ECN bit set.[footnote:
1479This case is not handled by some older hardware, so is called out
1480specifically in the protocol.
1481]
1482
1483 If the driver negotiated the VIRTIO_NET_F_MRG_RXBUF feature,
1484 the num_buffers field is set to zero.
1485
1486 The header and packet are added as one output buffer to the
1487 transmitq, and the device is notified of the new entry (see [sub:Notifying-The-Device]
1488 ).[footnote:
1489Note that the header will be two bytes longer for the
1490VIRTIO_NET_F_MRG_RXBUF case.
1491]
1492
1493 Packet Transmission Interrupt
1494
1495Often a driver will suppress transmission interrupts using the
1496VRING_AVAIL_F_NO_INTERRUPT flag (see [sub:Receiving-Used-Buffers]
1497) and check for used packets in the transmit path of following
1498packets. However, it will still receive interrupts if the
1499VIRTIO_F_NOTIFY_ON_EMPTY feature is negotiated, indicating that
1500the transmission queue is completely emptied.
1501
1502The normal behavior in this interrupt handler is to retrieve and
1503new descriptors from the used ring and free the corresponding
1504headers and packets.
1505
1506 Setting Up Receive Buffers
1507
1508It is generally a good idea to keep the receive virtqueue as
1509fully populated as possible: if it runs out, network performance
1510will suffer.
1511
1512If the VIRTIO_NET_F_GUEST_TSO4, VIRTIO_NET_F_GUEST_TSO6 or
1513VIRTIO_NET_F_GUEST_UFO features are used, the Guest will need to
1514accept packets of up to 65550 bytes long (the maximum size of a
1515TCP or UDP packet, plus the 14 byte ethernet header), otherwise
15161514 bytes. So unless VIRTIO_NET_F_MRG_RXBUF is negotiated, every
1517buffer in the receive queue needs to be at least this length [footnote:
1518Obviously each one can be split across multiple descriptor
1519elements.
1520].
1521
1522If VIRTIO_NET_F_MRG_RXBUF is negotiated, each buffer must be at
1523least the size of the struct virtio_net_hdr.
1524
1525 Packet Receive Interrupt
1526
1527When a packet is copied into a buffer in the receiveq, the
1528optimal path is to disable further interrupts for the receiveq
1529(see [sub:Receiving-Used-Buffers]) and process packets until no
1530more are found, then re-enable them.
1531
1532Processing packet involves:
1533
1534 If the driver negotiated the VIRTIO_NET_F_MRG_RXBUF feature,
1535 then the “num_buffers” field indicates how many descriptors
1536 this packet is spread over (including this one). This allows
1537 receipt of large packets without having to allocate large
1538 buffers. In this case, there will be at least “num_buffers” in
1539 the used ring, and they should be chained together to form a
1540 single packet. The other buffers will not begin with a struct
1541 virtio_net_hdr.
1542
1543 If the VIRTIO_NET_F_MRG_RXBUF feature was not negotiated, or
1544 the “num_buffers” field is one, then the entire packet will be
1545 contained within this buffer, immediately following the struct
1546 virtio_net_hdr.
1547
1548 If the VIRTIO_NET_F_GUEST_CSUM feature was negotiated, the
1549 VIRTIO_NET_HDR_F_NEEDS_CSUM bit in the “flags” field may be
1550 set: if so, the checksum on the packet is incomplete and the “
1551 csum_start” and “csum_offset” fields indicate how to calculate
1552 it (see [ite:csum_start-is-set]).
1553
1554 If the VIRTIO_NET_F_GUEST_TSO4, TSO6 or UFO options were
1555 negotiated, then the “gso_type” may be something other than
1556 VIRTIO_NET_HDR_GSO_NONE, and the “gso_size” field indicates the
1557 desired MSS (see [enu:If-the-driver]).
1558
1559 Control Virtqueue
1560
1561The driver uses the control virtqueue (if VIRTIO_NET_F_VTRL_VQ is
1562negotiated) to send commands to manipulate various features of
1563the device which would not easily map into the configuration
1564space.
1565
1566All commands are of the following form:
1567
1568struct virtio_net_ctrl {
1569
1570 u8 class;
1571
1572 u8 command;
1573
1574 u8 command-specific-data[];
1575
1576 u8 ack;
1577
1578};
1579
1580
1581
1582/* ack values */
1583
1584#define VIRTIO_NET_OK 0
1585
1586#define VIRTIO_NET_ERR 1
1587
1588The class, command and command-specific-data are set by the
1589driver, and the device sets the ack byte. There is little it can
1590do except issue a diagnostic if the ack byte is not
1591VIRTIO_NET_OK.
1592
1593 Packet Receive Filtering
1594
1595If the VIRTIO_NET_F_CTRL_RX feature is negotiated, the driver can
1596send control commands for promiscuous mode, multicast receiving,
1597and filtering of MAC addresses.
1598
1599Note that in general, these commands are best-effort: unwanted
1600packets may still arrive.
1601
1602 Setting Promiscuous Mode
1603
1604#define VIRTIO_NET_CTRL_RX 0
1605
1606 #define VIRTIO_NET_CTRL_RX_PROMISC 0
1607
1608 #define VIRTIO_NET_CTRL_RX_ALLMULTI 1
1609
1610The class VIRTIO_NET_CTRL_RX has two commands:
1611VIRTIO_NET_CTRL_RX_PROMISC turns promiscuous mode on and off, and
1612VIRTIO_NET_CTRL_RX_ALLMULTI turns all-multicast receive on and
1613off. The command-specific-data is one byte containing 0 (off) or
16141 (on).
1615
1616 Setting MAC Address Filtering
1617
1618struct virtio_net_ctrl_mac {
1619
1620 u32 entries;
1621
1622 u8 macs[entries][ETH_ALEN];
1623
1624};
1625
1626
1627
1628#define VIRTIO_NET_CTRL_MAC 1
1629
1630 #define VIRTIO_NET_CTRL_MAC_TABLE_SET 0
1631
1632The device can filter incoming packets by any number of
1633destination MAC addresses.[footnote:
1634Since there are no guarentees, it can use a hash filter
1635orsilently switch to allmulti or promiscuous mode if it is given
1636too many addresses.
1637] This table is set using the class VIRTIO_NET_CTRL_MAC and the
1638command VIRTIO_NET_CTRL_MAC_TABLE_SET. The command-specific-data
1639is two variable length tables of 6-byte MAC addresses. The first
1640table contains unicast addresses, and the second contains
1641multicast addresses.
1642
1643 VLAN Filtering
1644
1645If the driver negotiates the VIRTION_NET_F_CTRL_VLAN feature, it
1646can control a VLAN filter table in the device.
1647
1648#define VIRTIO_NET_CTRL_VLAN 2
1649
1650 #define VIRTIO_NET_CTRL_VLAN_ADD 0
1651
1652 #define VIRTIO_NET_CTRL_VLAN_DEL 1
1653
1654Both the VIRTIO_NET_CTRL_VLAN_ADD and VIRTIO_NET_CTRL_VLAN_DEL
1655command take a 16-bit VLAN id as the command-specific-data.
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
1689Appendix D: Block Device
1690
1691The virtio block device is a simple virtual block device (ie.
1692disk). Read and write requests (and other exotic requests) are
1693placed in the queue, and serviced (probably out of order) by the
1694device except where noted.
1695
1696 Configuration
1697
1698 Subsystem Device ID 2
1699
1700 Virtqueues 0:requestq.
1701
1702 Feature bits
1703
1704 VIRTIO_BLK_F_BARRIER (0) Host supports request barriers.
1705
1706 VIRTIO_BLK_F_SIZE_MAX (1) Maximum size of any single segment is
1707 in “size_max”.
1708
1709 VIRTIO_BLK_F_SEG_MAX (2) Maximum number of segments in a
1710 request is in “seg_max”.
1711
1712 VIRTIO_BLK_F_GEOMETRY (4) Disk-style geometry specified in “
1713 geometry”.
1714
1715 VIRTIO_BLK_F_RO (5) Device is read-only.
1716
1717 VIRTIO_BLK_F_BLK_SIZE (6) Block size of disk is in “blk_size”.
1718
1719 VIRTIO_BLK_F_SCSI (7) Device supports scsi packet commands.
1720
1721 VIRTIO_BLK_F_FLUSH (9) Cache flush command support.
1722
1723 Device configuration layout The capacity of the device
1724 (expressed in 512-byte sectors) is always present. The
1725 availability of the others all depend on various feature bits
1726 as indicated above. struct virtio_blk_config {
1727
1728 u64 capacity;
1729
1730 u32 size_max;
1731
1732 u32 seg_max;
1733
1734 struct virtio_blk_geometry {
1735
1736 u16 cylinders;
1737
1738 u8 heads;
1739
1740 u8 sectors;
1741
1742 } geometry;
1743
1744 u32 blk_size;
1745
1746
1747
1748};
1749
1750 Device Initialization
1751
1752 The device size should be read from the “capacity”
1753 configuration field. No requests should be submitted which goes
1754 beyond this limit.
1755
1756 If the VIRTIO_BLK_F_BLK_SIZE feature is negotiated, the
1757 blk_size field can be read to determine the optimal sector size
1758 for the driver to use. This does not effect the units used in
1759 the protocol (always 512 bytes), but awareness of the correct
1760 value can effect performance.
1761
1762 If the VIRTIO_BLK_F_RO feature is set by the device, any write
1763 requests will fail.
1764
1765 Device Operation
1766
1767The driver queues requests to the virtqueue, and they are used by
1768the device (not necessarily in order). Each request is of form:
1769
1770struct virtio_blk_req {
1771
1772
1773
1774 u32 type;
1775
1776 u32 ioprio;
1777
1778 u64 sector;
1779
1780 char data[][512];
1781
1782 u8 status;
1783
1784};
1785
1786If the device has VIRTIO_BLK_F_SCSI feature, it can also support
1787scsi packet command requests, each of these requests is of form:struct virtio_scsi_pc_req {
1788
1789 u32 type;
1790
1791 u32 ioprio;
1792
1793 u64 sector;
1794
1795 char cmd[];
1796
1797 char data[][512];
1798
1799#define SCSI_SENSE_BUFFERSIZE 96
1800
1801 u8 sense[SCSI_SENSE_BUFFERSIZE];
1802
1803 u32 errors;
1804
1805 u32 data_len;
1806
1807 u32 sense_len;
1808
1809 u32 residual;
1810
1811 u8 status;
1812
1813};
1814
1815The type of the request is either a read (VIRTIO_BLK_T_IN), a
1816write (VIRTIO_BLK_T_OUT), a scsi packet command
1817(VIRTIO_BLK_T_SCSI_CMD or VIRTIO_BLK_T_SCSI_CMD_OUT[footnote:
1818the SCSI_CMD and SCSI_CMD_OUT types are equivalent, the device
1819does not distinguish between them
1820]) or a flush (VIRTIO_BLK_T_FLUSH or VIRTIO_BLK_T_FLUSH_OUT[footnote:
1821the FLUSH and FLUSH_OUT types are equivalent, the device does not
1822distinguish between them
1823]). If the device has VIRTIO_BLK_F_BARRIER feature the high bit
1824(VIRTIO_BLK_T_BARRIER) indicates that this request acts as a
1825barrier and that all preceeding requests must be complete before
1826this one, and all following requests must not be started until
1827this is complete. Note that a barrier does not flush caches in
1828the underlying backend device in host, and thus does not serve as
1829data consistency guarantee. Driver must use FLUSH request to
1830flush the host cache.
1831
1832#define VIRTIO_BLK_T_IN 0
1833
1834#define VIRTIO_BLK_T_OUT 1
1835
1836#define VIRTIO_BLK_T_SCSI_CMD 2
1837
1838#define VIRTIO_BLK_T_SCSI_CMD_OUT 3
1839
1840#define VIRTIO_BLK_T_FLUSH 4
1841
1842#define VIRTIO_BLK_T_FLUSH_OUT 5
1843
1844#define VIRTIO_BLK_T_BARRIER 0x80000000
1845
1846The ioprio field is a hint about the relative priorities of
1847requests to the device: higher numbers indicate more important
1848requests.
1849
1850The sector number indicates the offset (multiplied by 512) where
1851the read or write is to occur. This field is unused and set to 0
1852for scsi packet commands and for flush commands.
1853
1854The cmd field is only present for scsi packet command requests,
1855and indicates the command to perform. This field must reside in a
1856single, separate read-only buffer; command length can be derived
1857from the length of this buffer.
1858
1859Note that these first three (four for scsi packet commands)
1860fields are always read-only: the data field is either read-only
1861or write-only, depending on the request. The size of the read or
1862write can be derived from the total size of the request buffers.
1863
1864The sense field is only present for scsi packet command requests,
1865and indicates the buffer for scsi sense data.
1866
1867The data_len field is only present for scsi packet command
1868requests, this field is deprecated, and should be ignored by the
1869driver. Historically, devices copied data length there.
1870
1871The sense_len field is only present for scsi packet command
1872requests and indicates the number of bytes actually written to
1873the sense buffer.
1874
1875The residual field is only present for scsi packet command
1876requests and indicates the residual size, calculated as data
1877length - number of bytes actually transferred.
1878
1879The final status byte is written by the device: either
1880VIRTIO_BLK_S_OK for success, VIRTIO_BLK_S_IOERR for host or guest
1881error or VIRTIO_BLK_S_UNSUPP for a request unsupported by host:#define VIRTIO_BLK_S_OK 0
1882
1883#define VIRTIO_BLK_S_IOERR 1
1884
1885#define VIRTIO_BLK_S_UNSUPP 2
1886
1887Historically, devices assumed that the fields type, ioprio and
1888sector reside in a single, separate read-only buffer; the fields
1889errors, data_len, sense_len and residual reside in a single,
1890separate write-only buffer; the sense field in a separate
1891write-only buffer of size 96 bytes, by itself; the fields errors,
1892data_len, sense_len and residual in a single write-only buffer;
1893and the status field is a separate read-only buffer of size 1
1894byte, by itself.
1895
1896Appendix E: Console Device
1897
1898The virtio console device is a simple device for data input and
1899output. A device may have one or more ports. Each port has a pair
1900of input and output virtqueues. Moreover, a device has a pair of
1901control IO virtqueues. The control virtqueues are used to
1902communicate information between the device and the driver about
1903ports being opened and closed on either side of the connection,
1904indication from the host about whether a particular port is a
1905console port, adding new ports, port hot-plug/unplug, etc., and
1906indication from the guest about whether a port or a device was
1907successfully added, port open/close, etc.. For data IO, one or
1908more empty buffers are placed in the receive queue for incoming
1909data and outgoing characters are placed in the transmit queue.
1910
1911 Configuration
1912
1913 Subsystem Device ID 3
1914
1915 Virtqueues 0:receiveq(port0). 1:transmitq(port0), 2:control
1916 receiveq[footnote:
1917Ports 2 onwards only if VIRTIO_CONSOLE_F_MULTIPORT is set
1918], 3:control transmitq, 4:receiveq(port1), 5:transmitq(port1),
1919 ...
1920
1921 Feature bits
1922
1923 VIRTIO_CONSOLE_F_SIZE (0) Configuration cols and rows fields
1924 are valid.
1925
1926 VIRTIO_CONSOLE_F_MULTIPORT(1) Device has support for multiple
1927 ports; configuration fields nr_ports and max_nr_ports are
1928 valid and control virtqueues will be used.
1929
1930 Device configuration layout The size of the console is supplied
1931 in the configuration space if the VIRTIO_CONSOLE_F_SIZE feature
1932 is set. Furthermore, if the VIRTIO_CONSOLE_F_MULTIPORT feature
1933 is set, the maximum number of ports supported by the device can
1934 be fetched.struct virtio_console_config {
1935
1936 u16 cols;
1937
1938 u16 rows;
1939
1940
1941
1942 u32 max_nr_ports;
1943
1944};
1945
1946 Device Initialization
1947
1948 If the VIRTIO_CONSOLE_F_SIZE feature is negotiated, the driver
1949 can read the console dimensions from the configuration fields.
1950
1951 If the VIRTIO_CONSOLE_F_MULTIPORT feature is negotiated, the
1952 driver can spawn multiple ports, not all of which may be
1953 attached to a console. Some could be generic ports. In this
1954 case, the control virtqueues are enabled and according to the
1955 max_nr_ports configuration-space value, the appropriate number
1956 of virtqueues are created. A control message indicating the
1957 driver is ready is sent to the host. The host can then send
1958 control messages for adding new ports to the device. After
1959 creating and initializing each port, a
1960 VIRTIO_CONSOLE_PORT_READY control message is sent to the host
1961 for that port so the host can let us know of any additional
1962 configuration options set for that port.
1963
1964 The receiveq for each port is populated with one or more
1965 receive buffers.
1966
1967 Device Operation
1968
1969 For output, a buffer containing the characters is placed in the
1970 port's transmitq.[footnote:
1971Because this is high importance and low bandwidth, the current
1972Linux implementation polls for the buffer to be used, rather than
1973waiting for an interrupt, simplifying the implementation
1974significantly. However, for generic serial ports with the
1975O_NONBLOCK flag set, the polling limitation is relaxed and the
1976consumed buffers are freed upon the next write or poll call or
1977when a port is closed or hot-unplugged.
1978]
1979
1980 When a buffer is used in the receiveq (signalled by an
1981 interrupt), the contents is the input to the port associated
1982 with the virtqueue for which the notification was received.
1983
1984 If the driver negotiated the VIRTIO_CONSOLE_F_SIZE feature, a
1985 configuration change interrupt may occur. The updated size can
1986 be read from the configuration fields.
1987
1988 If the driver negotiated the VIRTIO_CONSOLE_F_MULTIPORT
1989 feature, active ports are announced by the host using the
1990 VIRTIO_CONSOLE_PORT_ADD control message. The same message is
1991 used for port hot-plug as well.
1992
1993 If the host specified a port `name', a sysfs attribute is
1994 created with the name filled in, so that udev rules can be
1995 written that can create a symlink from the port's name to the
1996 char device for port discovery by applications in the guest.
1997
1998 Changes to ports' state are effected by control messages.
1999 Appropriate action is taken on the port indicated in the
2000 control message. The layout of the structure of the control
2001 buffer and the events associated are:struct virtio_console_control {
2002
2003 uint32_t id; /* Port number */
2004
2005 uint16_t event; /* The kind of control event */
2006
2007 uint16_t value; /* Extra information for the event */
2008
2009};
2010
2011
2012
2013/* Some events for the internal messages (control packets) */
2014
2015
2016
2017#define VIRTIO_CONSOLE_DEVICE_READY 0
2018
2019#define VIRTIO_CONSOLE_PORT_ADD 1
2020
2021#define VIRTIO_CONSOLE_PORT_REMOVE 2
2022
2023#define VIRTIO_CONSOLE_PORT_READY 3
2024
2025#define VIRTIO_CONSOLE_CONSOLE_PORT 4
2026
2027#define VIRTIO_CONSOLE_RESIZE 5
2028
2029#define VIRTIO_CONSOLE_PORT_OPEN 6
2030
2031#define VIRTIO_CONSOLE_PORT_NAME 7
2032
2033Appendix F: Entropy Device
2034
2035The virtio entropy device supplies high-quality randomness for
2036guest use.
2037
2038 Configuration
2039
2040 Subsystem Device ID 4
2041
2042 Virtqueues 0:requestq.
2043
2044 Feature bits None currently defined
2045
2046 Device configuration layout None currently defined.
2047
2048 Device Initialization
2049
2050 The virtqueue is initialized
2051
2052 Device Operation
2053
2054When the driver requires random bytes, it places the descriptor
2055of one or more buffers in the queue. It will be completely filled
2056by random data by the device.
2057
2058Appendix G: Memory Balloon Device
2059
2060The virtio memory balloon device is a primitive device for
2061managing guest memory: the device asks for a certain amount of
2062memory, and the guest supplies it (or withdraws it, if the device
2063has more than it asks for). This allows the guest to adapt to
2064changes in allowance of underlying physical memory. If the
2065feature is negotiated, the device can also be used to communicate
2066guest memory statistics to the host.
2067
2068 Configuration
2069
2070 Subsystem Device ID 5
2071
2072 Virtqueues 0:inflateq. 1:deflateq. 2:statsq.[footnote:
2073Only if VIRTIO_BALLON_F_STATS_VQ set
2074]
2075
2076 Feature bits
2077
2078 VIRTIO_BALLOON_F_MUST_TELL_HOST (0) Host must be told before
2079 pages from the balloon are used.
2080
2081 VIRTIO_BALLOON_F_STATS_VQ (1) A virtqueue for reporting guest
2082 memory statistics is present.
2083
2084 Device configuration layout Both fields of this configuration
2085 are always available. Note that they are little endian, despite
2086 convention that device fields are guest endian:struct virtio_balloon_config {
2087
2088 u32 num_pages;
2089
2090 u32 actual;
2091
2092};
2093
2094 Device Initialization
2095
2096 The inflate and deflate virtqueues are identified.
2097
2098 If the VIRTIO_BALLOON_F_STATS_VQ feature bit is negotiated:
2099
2100 Identify the stats virtqueue.
2101
2102 Add one empty buffer to the stats virtqueue and notify the
2103 host.
2104
2105Device operation begins immediately.
2106
2107 Device Operation
2108
2109 Memory Ballooning The device is driven by the receipt of a
2110 configuration change interrupt.
2111
2112 The “num_pages” configuration field is examined. If this is
2113 greater than the “actual” number of pages, memory must be given
2114 to the balloon. If it is less than the “actual” number of
2115 pages, memory may be taken back from the balloon for general
2116 use.
2117
2118 To supply memory to the balloon (aka. inflate):
2119
2120 The driver constructs an array of addresses of unused memory
2121 pages. These addresses are divided by 4096[footnote:
2122This is historical, and independent of the guest page size
2123] and the descriptor describing the resulting 32-bit array is
2124 added to the inflateq.
2125
2126 To remove memory from the balloon (aka. deflate):
2127
2128 The driver constructs an array of addresses of memory pages it
2129 has previously given to the balloon, as described above. This
2130 descriptor is added to the deflateq.
2131
2132 If the VIRTIO_BALLOON_F_MUST_TELL_HOST feature is set, the
2133 guest may not use these requested pages until that descriptor
2134 in the deflateq has been used by the device.
2135
2136 Otherwise, the guest may begin to re-use pages previously given
2137 to the balloon before the device has acknowledged their
2138 withdrawl. [footnote:
2139In this case, deflation advice is merely a courtesy
2140]
2141
2142 In either case, once the device has completed the inflation or
2143 deflation, the “actual” field of the configuration should be
2144 updated to reflect the new number of pages in the balloon.[footnote:
2145As updates to configuration space are not atomic, this field
2146isn't particularly reliable, but can be used to diagnose buggy
2147guests.
2148]
2149
2150 Memory Statistics
2151
2152The stats virtqueue is atypical because communication is driven
2153by the device (not the driver). The channel becomes active at
2154driver initialization time when the driver adds an empty buffer
2155and notifies the device. A request for memory statistics proceeds
2156as follows:
2157
2158 The device pushes the buffer onto the used ring and sends an
2159 interrupt.
2160
2161 The driver pops the used buffer and discards it.
2162
2163 The driver collects memory statistics and writes them into a
2164 new buffer.
2165
2166 The driver adds the buffer to the virtqueue and notifies the
2167 device.
2168
2169 The device pops the buffer (retaining it to initiate a
2170 subsequent request) and consumes the statistics.
2171
2172 Memory Statistics Format Each statistic consists of a 16 bit
2173 tag and a 64 bit value. Both quantities are represented in the
2174 native endian of the guest. All statistics are optional and the
2175 driver may choose which ones to supply. To guarantee backwards
2176 compatibility, unsupported statistics should be omitted.
2177
2178 struct virtio_balloon_stat {
2179
2180#define VIRTIO_BALLOON_S_SWAP_IN 0
2181
2182#define VIRTIO_BALLOON_S_SWAP_OUT 1
2183
2184#define VIRTIO_BALLOON_S_MAJFLT 2
2185
2186#define VIRTIO_BALLOON_S_MINFLT 3
2187
2188#define VIRTIO_BALLOON_S_MEMFREE 4
2189
2190#define VIRTIO_BALLOON_S_MEMTOT 5
2191
2192 u16 tag;
2193
2194 u64 val;
2195
2196} __attribute__((packed));
2197
2198 Tags
2199
2200 VIRTIO_BALLOON_S_SWAP_IN The amount of memory that has been
2201 swapped in (in bytes).
2202
2203 VIRTIO_BALLOON_S_SWAP_OUT The amount of memory that has been
2204 swapped out to disk (in bytes).
2205
2206 VIRTIO_BALLOON_S_MAJFLT The number of major page faults that
2207 have occurred.
2208
2209 VIRTIO_BALLOON_S_MINFLT The number of minor page faults that
2210 have occurred.
2211
2212 VIRTIO_BALLOON_S_MEMFREE The amount of memory not being used
2213 for any purpose (in bytes).
2214
2215 VIRTIO_BALLOON_S_MEMTOT The total amount of memory available
2216 (in bytes).
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/overcommit-accounting b/Documentation/vm/overcommit-accounting
index 706d7ed9d8d2..8eaa2fc4b8fa 100644
--- a/Documentation/vm/overcommit-accounting
+++ b/Documentation/vm/overcommit-accounting
@@ -8,7 +8,9 @@ The Linux kernel supports the following overcommit handling modes
8 default. 8 default.
9 9
101 - Always overcommit. Appropriate for some scientific 101 - Always overcommit. Appropriate for some scientific
11 applications. 11 applications. Classic example is code using sparse arrays
12 and just relying on the virtual memory consisting almost
13 entirely of zero pages.
12 14
132 - Don't overcommit. The total address space commit 152 - Don't overcommit. The total address space commit
14 for the system is not permitted to exceed swap + a 16 for the system is not permitted to exceed swap + a
@@ -18,6 +20,10 @@ The Linux kernel supports the following overcommit handling modes
18 pages but will receive errors on memory allocation as 20 pages but will receive errors on memory allocation as
19 appropriate. 21 appropriate.
20 22
23 Useful for applications that want to guarantee their
24 memory allocations will be available in the future
25 without having to initialize every page.
26
21The overcommit policy is set via the sysctl `vm.overcommit_memory'. 27The overcommit policy is set via the sysctl `vm.overcommit_memory'.
22 28
23The overcommit percentage is set via `vm.overcommit_ratio'. 29The overcommit percentage is set via `vm.overcommit_ratio'.
diff --git a/Documentation/x86/x86_64/boot-options.txt b/Documentation/x86/x86_64/boot-options.txt
index e015a83c3996..e9e8ddbbf376 100644
--- a/Documentation/x86/x86_64/boot-options.txt
+++ b/Documentation/x86/x86_64/boot-options.txt
@@ -91,20 +91,6 @@ APICs
91 apicmaintimer. Useful when your PIT timer is totally 91 apicmaintimer. Useful when your PIT timer is totally
92 broken. 92 broken.
93 93
94Early Console
95
96 syntax: earlyprintk=vga
97 earlyprintk=serial[,ttySn[,baudrate]]
98
99 The early console is useful when the kernel crashes before the
100 normal console is initialized. It is not enabled by
101 default because it has some cosmetic problems.
102 Append ,keep to not disable it when the real console takes over.
103 Only vga or serial at a time, not both.
104 Currently only ttyS0 and ttyS1 are supported.
105 Interaction with the standard serial driver is not very good.
106 The VGA output is eventually overwritten by the real console.
107
108Timing 94Timing
109 95
110 notsc 96 notsc
diff --git a/Documentation/x86/x86_64/mm.txt b/Documentation/x86/x86_64/mm.txt
index d6498e3cd713..881582f75c9c 100644
--- a/Documentation/x86/x86_64/mm.txt
+++ b/Documentation/x86/x86_64/mm.txt
@@ -13,7 +13,9 @@ ffffe90000000000 - ffffe9ffffffffff (=40 bits) hole
13ffffea0000000000 - ffffeaffffffffff (=40 bits) virtual memory map (1TB) 13ffffea0000000000 - ffffeaffffffffff (=40 bits) virtual memory map (1TB)
14... unused hole ... 14... unused hole ...
15ffffffff80000000 - ffffffffa0000000 (=512 MB) kernel text mapping, from phys 0 15ffffffff80000000 - ffffffffa0000000 (=512 MB) kernel text mapping, from phys 0
16ffffffffa0000000 - fffffffffff00000 (=1536 MB) module mapping space 16ffffffffa0000000 - ffffffffff5fffff (=1525 MB) module mapping space
17ffffffffff600000 - ffffffffffdfffff (=8 MB) vsyscalls
18ffffffffffe00000 - ffffffffffffffff (=2 MB) unused hole
17 19
18The direct mapping covers all memory in the system up to the highest 20The direct mapping covers all memory in the system up to the highest
19memory address (this means in some cases it can also include PCI memory 21memory address (this means in some cases it can also include PCI memory