aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/00-INDEX2
-rw-r--r--Documentation/ABI/stable/sysfs-bus-usb142
-rw-r--r--Documentation/ABI/testing/configfs-usb-gadget-mass-storage31
-rw-r--r--Documentation/ABI/testing/sysfs-block-zram9
-rw-r--r--Documentation/ABI/testing/sysfs-bus-iio90
-rw-r--r--Documentation/ABI/testing/sysfs-bus-iio-frequency-ad95238
-rw-r--r--Documentation/ABI/testing/sysfs-bus-iio-frequency-adf43502
-rw-r--r--Documentation/ABI/testing/sysfs-bus-usb89
-rw-r--r--Documentation/ABI/testing/sysfs-class-mic.txt157
-rw-r--r--Documentation/ABI/testing/sysfs-class-mtd17
-rw-r--r--Documentation/ABI/testing/sysfs-devices-power32
-rw-r--r--Documentation/ABI/testing/sysfs-driver-sunxi-sid22
-rw-r--r--Documentation/ABI/testing/sysfs-fs-f2fs26
-rw-r--r--Documentation/ABI/testing/sysfs-power22
-rw-r--r--Documentation/DocBook/80211.tmpl1
-rw-r--r--Documentation/DocBook/device-drivers.tmpl5
-rw-r--r--Documentation/DocBook/drm.tmpl138
-rw-r--r--Documentation/DocBook/filesystems.tmpl1
-rw-r--r--Documentation/DocBook/genericirq.tmpl64
-rw-r--r--Documentation/DocBook/media/v4l/controls.xml168
-rw-r--r--Documentation/DocBook/media/v4l/lirc_device_interface.xml4
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-nv16m.xml171
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt.xml7
-rw-r--r--Documentation/DocBook/media/v4l/subdev-formats.xml611
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-create-bufs.xml41
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml6
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml4
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-parm.xml4
-rw-r--r--Documentation/DocBook/media_api.tmpl6
-rw-r--r--Documentation/DocBook/mtdnand.tmpl2
-rw-r--r--Documentation/IRQ-affinity.txt4
-rw-r--r--Documentation/RCU/RTFP.txt858
-rw-r--r--Documentation/RCU/checklist.txt4
-rw-r--r--Documentation/RCU/rcubarrier.txt12
-rw-r--r--Documentation/RCU/stallwarn.txt22
-rw-r--r--Documentation/RCU/torture.txt10
-rw-r--r--Documentation/SubmittingPatches10
-rw-r--r--Documentation/acpi/dsdt-override.txt2
-rw-r--r--Documentation/acpi/enumeration.txt44
-rw-r--r--Documentation/aoe/udev.txt2
-rw-r--r--Documentation/arm/Booting42
-rw-r--r--Documentation/arm/Marvell/README1
-rw-r--r--Documentation/arm/OMAP/omap_pm2
-rw-r--r--Documentation/arm/kernel_mode_neon.txt121
-rw-r--r--Documentation/arm/sunxi/README26
-rw-r--r--Documentation/arm64/booting.txt67
-rw-r--r--Documentation/arm64/memory.txt29
-rw-r--r--Documentation/arm64/tagged-pointers.txt34
-rw-r--r--Documentation/block/00-INDEX2
-rw-r--r--Documentation/block/cfq-iosched.txt2
-rw-r--r--Documentation/block/cmdline-partition.txt39
-rw-r--r--Documentation/cachetlb.txt6
-rw-r--r--Documentation/cgroups/memory.txt2
-rw-r--r--Documentation/clk.txt46
-rw-r--r--Documentation/connector/ucon.c2
-rw-r--r--Documentation/cpu-freq/cpu-drivers.txt2
-rw-r--r--Documentation/cputopology.txt2
-rw-r--r--Documentation/development-process/2.Process4
-rw-r--r--Documentation/device-mapper/cache.txt6
-rw-r--r--Documentation/device-mapper/statistics.txt186
-rw-r--r--Documentation/device-mapper/thin-provisioning.txt15
-rw-r--r--Documentation/devices.txt1
-rw-r--r--Documentation/devicetree/bindings/arm/arch_timer.txt59
-rw-r--r--Documentation/devicetree/bindings/arm/arm-boards50
-rw-r--r--Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt3
-rw-r--r--Documentation/devicetree/bindings/arm/atmel-adc.txt15
-rw-r--r--Documentation/devicetree/bindings/arm/bcm/bcm11351.txt3
-rw-r--r--Documentation/devicetree/bindings/arm/bcm/kona-timer.txt (renamed from Documentation/devicetree/bindings/arm/bcm/bcm,kona-timer.txt)5
-rw-r--r--Documentation/devicetree/bindings/arm/bcm/kona-wdt.txt15
-rw-r--r--Documentation/devicetree/bindings/arm/cci.txt60
-rw-r--r--Documentation/devicetree/bindings/arm/cpus.txt401
-rw-r--r--Documentation/devicetree/bindings/arm/l2cc.txt4
-rw-r--r--Documentation/devicetree/bindings/arm/omap/omap.txt6
-rw-r--r--Documentation/devicetree/bindings/arm/ste-u300.txt2
-rw-r--r--Documentation/devicetree/bindings/arm/topology.txt474
-rw-r--r--Documentation/devicetree/bindings/arm/vexpress-scc.txt33
-rw-r--r--Documentation/devicetree/bindings/arm/vexpress-sysreg.txt4
-rw-r--r--Documentation/devicetree/bindings/arm/vic.txt12
-rw-r--r--Documentation/devicetree/bindings/ata/ahci-platform.txt18
-rw-r--r--Documentation/devicetree/bindings/ata/sata_highbank.txt44
-rw-r--r--Documentation/devicetree/bindings/bus/imx-weim.txt17
-rw-r--r--Documentation/devicetree/bindings/bus/mvebu-mbus.txt276
-rw-r--r--Documentation/devicetree/bindings/c6x/dscr.txt2
-rw-r--r--Documentation/devicetree/bindings/clock/clk-exynos-audss.txt2
-rw-r--r--Documentation/devicetree/bindings/clock/efm32-clock.txt11
-rw-r--r--Documentation/devicetree/bindings/clock/exynos4-clock.txt1
-rw-r--r--Documentation/devicetree/bindings/clock/exynos5250-clock.txt14
-rw-r--r--Documentation/devicetree/bindings/clock/exynos5420-clock.txt12
-rw-r--r--Documentation/devicetree/bindings/clock/imx5-clock.txt1
-rw-r--r--Documentation/devicetree/bindings/clock/imx6q-clock.txt11
-rw-r--r--Documentation/devicetree/bindings/clock/keystone-gate.txt29
-rw-r--r--Documentation/devicetree/bindings/clock/keystone-pll.txt84
-rw-r--r--Documentation/devicetree/bindings/clock/mvebu-corediv-clock.txt19
-rw-r--r--Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt14
-rw-r--r--Documentation/devicetree/bindings/clock/samsung,s3c64xx-clock.txt77
-rw-r--r--Documentation/devicetree/bindings/clock/st,nomadik.txt2
-rw-r--r--Documentation/devicetree/bindings/clock/sunxi.txt16
-rw-r--r--Documentation/devicetree/bindings/clock/sunxi/sun4i-a10-gates.txt93
-rw-r--r--Documentation/devicetree/bindings/clock/sunxi/sun5i-a13-gates.txt58
-rw-r--r--Documentation/devicetree/bindings/clock/xgene.txt111
-rw-r--r--Documentation/devicetree/bindings/crypto/fsl-sec6.txt157
-rw-r--r--Documentation/devicetree/bindings/crypto/omap-aes.txt31
-rw-r--r--Documentation/devicetree/bindings/crypto/omap-sham.txt28
-rw-r--r--Documentation/devicetree/bindings/dma/atmel-dma.txt4
-rw-r--r--Documentation/devicetree/bindings/dma/fsl-imx-dma.txt2
-rw-r--r--Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt7
-rw-r--r--Documentation/devicetree/bindings/dma/k3dma.txt46
-rw-r--r--Documentation/devicetree/bindings/dma/shdma.txt61
-rw-r--r--Documentation/devicetree/bindings/dma/ste-dma40.txt4
-rw-r--r--Documentation/devicetree/bindings/extcon/extcon-palmas.txt (renamed from Documentation/devicetree/bindings/extcon/extcon-twl.txt)6
-rw-r--r--Documentation/devicetree/bindings/gpio/abilis,tb10x-gpio.txt36
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-bcm-kona.txt52
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt26
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-palmas.txt27
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt71
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-tz1090-pdc.txt45
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-tz1090.txt88
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio.txt93
-rw-r--r--Documentation/devicetree/bindings/gpio/mrvl-gpio.txt7
-rw-r--r--Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt8
-rw-r--r--Documentation/devicetree/bindings/gpu/samsung-g2d.txt7
-rw-r--r--Documentation/devicetree/bindings/gpu/samsung-rotator.txt27
-rw-r--r--Documentation/devicetree/bindings/hid/hid-over-i2c.txt28
-rw-r--r--Documentation/devicetree/bindings/hwrng/omap_rng.txt22
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-imx.txt5
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt10
-rw-r--r--Documentation/devicetree/bindings/iio/accel/bma180.txt24
-rw-r--r--Documentation/devicetree/bindings/iio/adc/nuvoton-nau7802.txt18
-rw-r--r--Documentation/devicetree/bindings/iio/light/apds9300.txt22
-rw-r--r--Documentation/devicetree/bindings/iio/light/cm36651.txt26
-rw-r--r--Documentation/devicetree/bindings/iio/light/gp2ap020a00f.txt21
-rw-r--r--Documentation/devicetree/bindings/input/input-reset.txt33
-rw-r--r--Documentation/devicetree/bindings/input/touchscreen/egalax-ts.txt2
-rw-r--r--Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt3
-rw-r--r--Documentation/devicetree/bindings/interrupt-controller/interrupts.txt29
-rw-r--r--Documentation/devicetree/bindings/interrupt-controller/sunxi/sun4i-a10.txt89
-rw-r--r--Documentation/devicetree/bindings/interrupt-controller/sunxi/sun5i-a13.txt55
-rw-r--r--Documentation/devicetree/bindings/leds/leds-lp55xx.txt83
-rw-r--r--Documentation/devicetree/bindings/leds/pca963x.txt47
-rw-r--r--Documentation/devicetree/bindings/media/i2c/adv7343.txt48
-rw-r--r--Documentation/devicetree/bindings/media/i2c/ths8200.txt19
-rw-r--r--Documentation/devicetree/bindings/media/i2c/tvp7002.txt53
-rw-r--r--Documentation/devicetree/bindings/media/s5p-mfc.txt11
-rw-r--r--Documentation/devicetree/bindings/media/video-interfaces.txt2
-rw-r--r--Documentation/devicetree/bindings/metag/pdc-intc.txt105
-rw-r--r--Documentation/devicetree/bindings/mfd/cros-ec.txt2
-rw-r--r--Documentation/devicetree/bindings/mfd/palmas.txt2
-rw-r--r--Documentation/devicetree/bindings/mfd/s2mps11.txt109
-rw-r--r--Documentation/devicetree/bindings/misc/allwinner,sunxi-sid.txt17
-rw-r--r--Documentation/devicetree/bindings/misc/atmel-ssc.txt23
-rw-r--r--Documentation/devicetree/bindings/misc/smc.txt5
-rw-r--r--Documentation/devicetree/bindings/misc/ti,dac7512.txt20
-rw-r--r--Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt10
-rw-r--r--Documentation/devicetree/bindings/mmc/fsl-esdhc.txt4
-rw-r--r--Documentation/devicetree/bindings/mmc/kona-sdhci.txt (renamed from Documentation/devicetree/bindings/mmc/bcm,kona-sdhci.txt)5
-rw-r--r--Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt10
-rw-r--r--Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt (renamed from Documentation/devicetree/bindings/mmc/synopsis-dw-mshc.txt)8
-rw-r--r--Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt26
-rw-r--r--Documentation/devicetree/bindings/mmc/tmio_mmc.txt17
-rw-r--r--Documentation/devicetree/bindings/mtd/atmel-nand.txt28
-rw-r--r--Documentation/devicetree/bindings/mtd/fsmc-nand.txt25
-rw-r--r--Documentation/devicetree/bindings/mtd/partition.txt1
-rw-r--r--Documentation/devicetree/bindings/net/can/atmel-can.txt2
-rw-r--r--Documentation/devicetree/bindings/net/can/sja1000.txt2
-rw-r--r--Documentation/devicetree/bindings/net/fsl-tsec-phy.txt18
-rw-r--r--Documentation/devicetree/bindings/net/micrel-ksz9021.txt49
-rw-r--r--Documentation/devicetree/bindings/net/moxa,moxart-mac.txt21
-rw-r--r--Documentation/devicetree/bindings/net/stmmac.txt5
-rw-r--r--Documentation/devicetree/bindings/pci/designware-pcie.txt5
-rw-r--r--Documentation/devicetree/bindings/pci/mvebu-pci.txt155
-rw-r--r--Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt163
-rw-r--r--Documentation/devicetree/bindings/pci/ralink,rt3883-pci.txt190
-rw-r--r--Documentation/devicetree/bindings/phy/phy-bindings.txt66
-rw-r--r--Documentation/devicetree/bindings/phy/samsung-phy.txt22
-rw-r--r--Documentation/devicetree/bindings/pinctrl/abilis,tb10x-iomux.txt80
-rw-r--r--Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt4
-rw-r--r--Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt37
-rw-r--r--Documentation/devicetree/bindings/pinctrl/fsl,imx27-pinctrl.txt99
-rw-r--r--Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt859
-rw-r--r--Documentation/devicetree/bindings/pinctrl/nvidia,tegra114-pinmux.txt11
-rw-r--r--Documentation/devicetree/bindings/pinctrl/nvidia,tegra20-pinmux.txt11
-rw-r--r--Documentation/devicetree/bindings/pinctrl/nvidia,tegra30-pinmux.txt12
-rw-r--r--Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt41
-rw-r--r--Documentation/devicetree/bindings/pinctrl/pinctrl-palmas.txt96
-rw-r--r--Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt11
-rw-r--r--Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt46
-rw-r--r--Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt3
-rw-r--r--Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt6
-rw-r--r--Documentation/devicetree/bindings/power_supply/msm-poweroff.txt17
-rw-r--r--Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt53
-rw-r--r--Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt8
-rw-r--r--Documentation/devicetree/bindings/pwm/imx-pwm.txt4
-rw-r--r--Documentation/devicetree/bindings/pwm/mxs-pwm.txt4
-rw-r--r--Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt5
-rw-r--r--Documentation/devicetree/bindings/pwm/nxp,pca9685-pwm.txt4
-rw-r--r--Documentation/devicetree/bindings/pwm/pwm-samsung.txt22
-rw-r--r--Documentation/devicetree/bindings/pwm/pwm-tiecap.txt8
-rw-r--r--Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt8
-rw-r--r--Documentation/devicetree/bindings/pwm/pwm.txt7
-rw-r--r--Documentation/devicetree/bindings/pwm/renesas,tpu-pwm.txt28
-rw-r--r--Documentation/devicetree/bindings/pwm/spear-pwm.txt5
-rw-r--r--Documentation/devicetree/bindings/pwm/ti,twl-pwm.txt4
-rw-r--r--Documentation/devicetree/bindings/pwm/ti,twl-pwmled.txt4
-rw-r--r--Documentation/devicetree/bindings/pwm/vt8500-pwm.txt8
-rw-r--r--Documentation/devicetree/bindings/regulator/88pm800.txt38
-rw-r--r--Documentation/devicetree/bindings/regulator/as3722-regulator.txt91
-rw-r--r--Documentation/devicetree/bindings/regulator/da9210.txt21
-rw-r--r--Documentation/devicetree/bindings/regulator/max8660.txt47
-rw-r--r--Documentation/devicetree/bindings/regulator/palmas-pmic.txt19
-rw-r--r--Documentation/devicetree/bindings/regulator/pfuze100.txt115
-rw-r--r--Documentation/devicetree/bindings/regulator/regulator.txt7
-rw-r--r--Documentation/devicetree/bindings/rtc/dw-apb.txt34
-rw-r--r--Documentation/devicetree/bindings/rtc/moxa,moxart-rtc.txt17
-rw-r--r--Documentation/devicetree/bindings/rtc/rtc-omap.txt6
-rw-r--r--Documentation/devicetree/bindings/rtc/rtc-palmas.txt33
-rw-r--r--Documentation/devicetree/bindings/serial/altera_jtaguart.txt3
-rw-r--r--Documentation/devicetree/bindings/serial/altera_uart.txt3
-rw-r--r--Documentation/devicetree/bindings/serial/arc-uart.txt (renamed from Documentation/devicetree/bindings/tty/serial/arc-uart.txt)0
-rw-r--r--Documentation/devicetree/bindings/serial/atmel-usart.txt (renamed from Documentation/devicetree/bindings/tty/serial/atmel-usart.txt)18
-rw-r--r--Documentation/devicetree/bindings/serial/efm32-uart.txt (renamed from Documentation/devicetree/bindings/tty/serial/efm32-uart.txt)0
-rw-r--r--Documentation/devicetree/bindings/serial/fsl-imx-uart.txt22
-rw-r--r--Documentation/devicetree/bindings/serial/fsl-lpuart.txt (renamed from Documentation/devicetree/bindings/tty/serial/fsl-lpuart.txt)0
-rw-r--r--Documentation/devicetree/bindings/serial/fsl-mxs-auart.txt (renamed from Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt)4
-rw-r--r--Documentation/devicetree/bindings/serial/mrvl,pxa-ssp.txt65
-rw-r--r--Documentation/devicetree/bindings/serial/nxp-lpc32xx-hsuart.txt (renamed from Documentation/devicetree/bindings/tty/serial/nxp-lpc32xx-hsuart.txt)0
-rw-r--r--Documentation/devicetree/bindings/serial/of-serial.txt (renamed from Documentation/devicetree/bindings/tty/serial/of-serial.txt)0
-rw-r--r--Documentation/devicetree/bindings/serial/qca,ar9330-uart.txt34
-rw-r--r--Documentation/devicetree/bindings/serial/qcom,msm-uart.txt25
-rw-r--r--Documentation/devicetree/bindings/serial/qcom,msm-uartdm.txt53
-rw-r--r--Documentation/devicetree/bindings/serial/rs485.txt2
-rw-r--r--Documentation/devicetree/bindings/serial/sirf-uart.txt33
-rw-r--r--Documentation/devicetree/bindings/serial/snps-dw-apb-uart.txt (renamed from Documentation/devicetree/bindings/tty/serial/snps-dw-apb-uart.txt)0
-rw-r--r--Documentation/devicetree/bindings/serial/st-asc.txt18
-rw-r--r--Documentation/devicetree/bindings/serial/via,vt8500-uart.txt (renamed from Documentation/devicetree/bindings/tty/serial/via,vt8500-uart.txt)0
-rw-r--r--Documentation/devicetree/bindings/serio/altera_ps2.txt3
-rw-r--r--Documentation/devicetree/bindings/sound/ak4554.c11
-rw-r--r--Documentation/devicetree/bindings/sound/alc5632.txt19
-rw-r--r--Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt35
-rw-r--r--Documentation/devicetree/bindings/sound/atmel-wm8904.txt55
-rw-r--r--Documentation/devicetree/bindings/sound/cs42l73.txt22
-rw-r--r--Documentation/devicetree/bindings/sound/davinci-evm-audio.txt42
-rw-r--r--Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt41
-rw-r--r--Documentation/devicetree/bindings/sound/fsl,spdif.txt54
-rw-r--r--Documentation/devicetree/bindings/sound/fsl,ssi.txt (renamed from Documentation/devicetree/bindings/powerpc/fsl/ssi.txt)12
-rw-r--r--Documentation/devicetree/bindings/sound/imx-audio-spdif.txt34
-rw-r--r--Documentation/devicetree/bindings/sound/imx-audmux.txt9
-rw-r--r--Documentation/devicetree/bindings/sound/mrvl,pxa-ssp.txt28
-rw-r--r--Documentation/devicetree/bindings/sound/mrvl,pxa2xx-pcm.txt15
-rw-r--r--Documentation/devicetree/bindings/sound/mvebu-audio.txt33
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt24
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt26
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt27
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt24
-rw-r--r--Documentation/devicetree/bindings/sound/pcm1792a.txt18
-rw-r--r--Documentation/devicetree/bindings/sound/rt5640.txt20
-rw-r--r--Documentation/devicetree/bindings/sound/samsung-i2s.txt22
-rw-r--r--Documentation/devicetree/bindings/sound/soc-ac97link.txt28
-rw-r--r--Documentation/devicetree/bindings/sound/ti,pcm1681.txt15
-rw-r--r--Documentation/devicetree/bindings/sound/tlv320aic3x.txt35
-rw-r--r--Documentation/devicetree/bindings/sound/tpa6130a2.txt27
-rw-r--r--Documentation/devicetree/bindings/sound/wm8731.txt9
-rw-r--r--Documentation/devicetree/bindings/sound/wm8753.txt24
-rw-r--r--Documentation/devicetree/bindings/sound/wm8903.txt19
-rw-r--r--Documentation/devicetree/bindings/sound/wm8994.txt4
-rw-r--r--Documentation/devicetree/bindings/spi/efm32-spi.txt34
-rw-r--r--Documentation/devicetree/bindings/spi/sh-hspi.txt7
-rw-r--r--Documentation/devicetree/bindings/spi/spi-bus.txt10
-rw-r--r--Documentation/devicetree/bindings/spi/spi-fsl-dspi.txt42
-rw-r--r--Documentation/devicetree/bindings/spi/spi_altera.txt3
-rw-r--r--Documentation/devicetree/bindings/spi/ti_qspi.txt22
-rw-r--r--Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt36
-rw-r--r--Documentation/devicetree/bindings/thermal/exynos-thermal.txt55
-rw-r--r--Documentation/devicetree/bindings/thermal/imx-thermal.txt17
-rw-r--r--Documentation/devicetree/bindings/timer/efm32,timer.txt23
-rw-r--r--Documentation/devicetree/bindings/timer/marvell,armada-370-xp-timer.txt36
-rw-r--r--Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt17
-rw-r--r--Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt22
-rw-r--r--Documentation/devicetree/bindings/tty/serial/msm_serial.txt27
-rw-r--r--Documentation/devicetree/bindings/usb/am33xx-usb.txt222
-rw-r--r--Documentation/devicetree/bindings/usb/dwc3.txt8
-rw-r--r--Documentation/devicetree/bindings/usb/generic.txt24
-rw-r--r--Documentation/devicetree/bindings/usb/msm-hsusb.txt17
-rw-r--r--Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt17
-rw-r--r--Documentation/devicetree/bindings/usb/omap-usb.txt44
-rw-r--r--Documentation/devicetree/bindings/usb/samsung-hsotg.txt40
-rw-r--r--Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt7
-rw-r--r--Documentation/devicetree/bindings/usb/usb-phy.txt6
-rw-r--r--Documentation/devicetree/bindings/usb/usb-xhci.txt14
-rw-r--r--Documentation/devicetree/bindings/usb/usb3503.txt7
-rw-r--r--Documentation/devicetree/bindings/usb/ux500-usb.txt2
-rw-r--r--Documentation/devicetree/bindings/vendor-prefixes.txt13
-rw-r--r--Documentation/devicetree/bindings/video/exynos_dp.txt17
-rw-r--r--Documentation/devicetree/bindings/video/exynos_hdmi.txt14
-rw-r--r--Documentation/devicetree/bindings/video/exynos_mixer.txt4
-rw-r--r--Documentation/devicetree/bindings/video/simple-framebuffer.txt1
-rw-r--r--Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt (renamed from Documentation/devicetree/bindings/watchdog/sun4i-wdt.txt)5
-rw-r--r--Documentation/dma-buf-sharing.txt14
-rw-r--r--Documentation/dmatest.txt15
-rw-r--r--Documentation/driver-model/devres.txt13
-rw-r--r--Documentation/early-userspace/README3
-rw-r--r--Documentation/efi-stub.txt (renamed from Documentation/x86/efi-stub.txt)0
-rw-r--r--Documentation/extcon/porting-android-switch-class6
-rw-r--r--Documentation/fb/fbcon.txt2
-rw-r--r--Documentation/fb/viafb.modes2
-rw-r--r--Documentation/fb/viafb.txt2
-rw-r--r--Documentation/filesystems/btrfs.txt2
-rw-r--r--Documentation/filesystems/caching/backend-api.txt9
-rw-r--r--Documentation/filesystems/caching/netfs-api.txt110
-rw-r--r--Documentation/filesystems/cifs.txt51
-rw-r--r--Documentation/filesystems/cifs/AUTHORS56
-rw-r--r--Documentation/filesystems/cifs/CHANGES1065
-rw-r--r--Documentation/filesystems/cifs/README753
-rw-r--r--Documentation/filesystems/cifs/TODO129
-rw-r--r--Documentation/filesystems/cifs/cifs.txt31
-rwxr-xr-xDocumentation/filesystems/cifs/winucase_convert.pl62
-rw-r--r--Documentation/filesystems/ext3.txt7
-rw-r--r--Documentation/filesystems/ext4.txt9
-rw-r--r--Documentation/filesystems/f2fs.txt82
-rw-r--r--Documentation/filesystems/nfs/Exporting2
-rw-r--r--Documentation/filesystems/nfs/pnfs.txt2
-rw-r--r--Documentation/filesystems/porting4
-rw-r--r--Documentation/filesystems/proc.txt19
-rw-r--r--Documentation/filesystems/qnx6.txt2
-rw-r--r--Documentation/filesystems/ramfs-rootfs-initramfs.txt4
-rw-r--r--Documentation/filesystems/relay.txt2
-rw-r--r--Documentation/filesystems/sysfs-tagging.txt2
-rw-r--r--Documentation/filesystems/vfs.txt14
-rw-r--r--Documentation/filesystems/xfs.txt2
-rw-r--r--Documentation/fmc/carrier.txt2
-rw-r--r--Documentation/hid/uhid.txt4
-rw-r--r--Documentation/hwmon/abituguru-datasheet2
-rw-r--r--Documentation/hwmon/ads10158
-rw-r--r--Documentation/hwmon/htu2146
-rw-r--r--Documentation/hwmon/k10temp1
-rw-r--r--Documentation/hwmon/lm2506620
-rw-r--r--Documentation/hwmon/ltc297844
-rw-r--r--Documentation/hwmon/submitting-patches2
-rw-r--r--Documentation/hwmon/w83791d2
-rw-r--r--Documentation/hwmon/w83792d3
-rw-r--r--Documentation/hwspinlock.txt2
-rw-r--r--Documentation/i2c/busses/i2c-piix47
-rw-r--r--Documentation/i2c/instantiating-devices2
-rw-r--r--Documentation/i2c/upgrading-clients4
-rw-r--r--Documentation/input/gamepad.txt156
-rw-r--r--Documentation/ioctl/ioctl-number.txt1
-rw-r--r--Documentation/kbuild/kconfig-language.txt1
-rw-r--r--Documentation/kbuild/kconfig.txt8
-rw-r--r--Documentation/kernel-parameters.txt198
-rw-r--r--Documentation/kernel-per-CPU-kthreads.txt17
-rw-r--r--Documentation/kmemcheck.txt6
-rw-r--r--Documentation/ko_KR/HOWTO25
-rw-r--r--Documentation/ko_KR/stable_api_nonsense.txt6
-rw-r--r--Documentation/laptops/asus-laptop.txt8
-rw-r--r--Documentation/laptops/sony-laptop.txt8
-rw-r--r--Documentation/laptops/thinkpad-acpi.txt80
-rw-r--r--Documentation/leds/leds-lm3556.txt2
-rw-r--r--Documentation/leds/leds-lp3944.txt2
-rw-r--r--Documentation/leds/leds-lp5521.txt20
-rw-r--r--Documentation/leds/leds-lp5523.txt21
-rw-r--r--Documentation/leds/leds-lp55xx.txt30
-rw-r--r--Documentation/memory-barriers.txt10
-rw-r--r--Documentation/memory-hotplug.txt18
-rw-r--r--Documentation/mic/mic_overview.txt51
-rw-r--r--Documentation/mic/mpssd/.gitignore1
-rw-r--r--Documentation/mic/mpssd/Makefile19
-rwxr-xr-xDocumentation/mic/mpssd/micctrl173
-rwxr-xr-xDocumentation/mic/mpssd/mpss202
-rw-r--r--Documentation/mic/mpssd/mpssd.c1721
-rw-r--r--Documentation/mic/mpssd/mpssd.h102
-rw-r--r--Documentation/mic/mpssd/sysfs.c102
-rw-r--r--Documentation/mtd/nand_ecc.txt2
-rw-r--r--Documentation/networking/00-INDEX4
-rw-r--r--Documentation/networking/bonding.txt6
-rw-r--r--Documentation/networking/dccp.txt4
-rw-r--r--Documentation/networking/e100.txt6
-rw-r--r--Documentation/networking/e1000.txt12
-rw-r--r--Documentation/networking/e1000e.txt16
-rw-r--r--Documentation/networking/i40e.txt115
-rw-r--r--Documentation/networking/ieee802154.txt4
-rw-r--r--Documentation/networking/igb.txt67
-rw-r--r--Documentation/networking/igbvf.txt8
-rw-r--r--Documentation/networking/ip-sysctl.txt55
-rw-r--r--Documentation/networking/ixgb.txt14
-rw-r--r--Documentation/networking/ixgbe.txt109
-rw-r--r--Documentation/networking/ixgbevf.txt6
-rw-r--r--Documentation/networking/l2tp.txt2
-rw-r--r--Documentation/networking/netdev-FAQ.txt224
-rw-r--r--Documentation/networking/netlink_mmap.txt6
-rw-r--r--Documentation/networking/openvswitch.txt40
-rw-r--r--Documentation/networking/operstates.txt4
-rw-r--r--Documentation/networking/packet_mmap.txt8
-rw-r--r--Documentation/networking/rxrpc.txt2
-rw-r--r--Documentation/networking/sctp.txt5
-rw-r--r--Documentation/networking/stmmac.txt9
-rw-r--r--Documentation/networking/tproxy.txt5
-rw-r--r--Documentation/networking/vortex.txt4
-rw-r--r--Documentation/networking/x25-iface.txt2
-rw-r--r--Documentation/phy.txt166
-rw-r--r--Documentation/pinctrl.txt108
-rw-r--r--Documentation/power/basic-pm-debugging.txt10
-rw-r--r--Documentation/power/swsusp.txt15
-rw-r--r--Documentation/powerpc/00-INDEX11
-rw-r--r--Documentation/pps/pps.txt15
-rw-r--r--Documentation/printk-formats.txt15
-rw-r--r--Documentation/rapidio/rapidio.txt2
-rw-r--r--Documentation/s390/s390dbf.txt10
-rw-r--r--Documentation/scheduler/sched-arch.txt5
-rw-r--r--Documentation/scheduler/sched-design-CFS.txt4
-rw-r--r--Documentation/scsi/ChangeLog.megaraid_sas10
-rw-r--r--Documentation/scsi/LICENSE.qla4xxx2
-rw-r--r--Documentation/scsi/hptiop.txt2
-rw-r--r--Documentation/serial/driver4
-rw-r--r--Documentation/sound/alsa/ALSA-Configuration.txt2
-rw-r--r--Documentation/sound/alsa/Audiophile-Usb.txt2
-rw-r--r--Documentation/sound/alsa/CMIPCI.txt2
-rw-r--r--Documentation/sound/alsa/HD-Audio-Models.txt8
-rw-r--r--Documentation/sound/alsa/HD-Audio.txt2
-rw-r--r--Documentation/sound/alsa/README.maya442
-rw-r--r--Documentation/sound/alsa/compress_offload.txt10
-rw-r--r--Documentation/sound/alsa/soc/DPCM.txt380
-rw-r--r--Documentation/sound/alsa/soc/codec.txt46
-rw-r--r--Documentation/sound/alsa/soc/dapm.txt73
-rw-r--r--Documentation/sound/alsa/soc/machine.txt6
-rw-r--r--Documentation/sound/alsa/soc/platform.txt19
-rw-r--r--Documentation/spi/spi-summary2
-rw-r--r--Documentation/sysctl/kernel.txt77
-rw-r--r--Documentation/sysctl/net.txt13
-rw-r--r--Documentation/sysctl/vm.txt30
-rw-r--r--Documentation/sysfs-rules.txt2
-rw-r--r--Documentation/sysrq.txt28
-rwxr-xr-xDocumentation/target/tcm_mod_builder.py2
-rw-r--r--Documentation/thermal/exynos_thermal43
-rw-r--r--Documentation/thermal/sysfs-api.txt12
-rw-r--r--Documentation/timers/NO_HZ.txt44
-rw-r--r--Documentation/tpm/xen-tpmfront.txt113
-rw-r--r--Documentation/trace/ftrace.txt10
-rw-r--r--Documentation/trace/tracepoints.txt19
-rw-r--r--Documentation/usb/URB.txt21
-rw-r--r--Documentation/usb/proc_usb_info.txt9
-rw-r--r--Documentation/vfio.txt8
-rw-r--r--Documentation/video4linux/v4l2-controls.txt21
-rw-r--r--Documentation/virtual/kvm/api.txt2
-rw-r--r--Documentation/virtual/kvm/cpuid.txt4
-rw-r--r--Documentation/virtual/kvm/hypercalls.txt14
-rw-r--r--Documentation/vm/hugetlbpage.txt25
-rw-r--r--Documentation/vm/soft-dirty.txt7
-rw-r--r--Documentation/workqueue.txt90
-rw-r--r--Documentation/x86/boot.txt2
-rw-r--r--Documentation/x86/x86_64/boot-options.txt5
-rw-r--r--Documentation/zh_CN/SubmittingPatches2
450 files changed, 16332 insertions, 3460 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX
index 0c4cc688e89a..38f8444bdd0e 100644
--- a/Documentation/00-INDEX
+++ b/Documentation/00-INDEX
@@ -40,7 +40,7 @@ IPMI.txt
40IRQ-affinity.txt 40IRQ-affinity.txt
41 - how to select which CPU(s) handle which interrupt events on SMP. 41 - how to select which CPU(s) handle which interrupt events on SMP.
42IRQ-domain.txt 42IRQ-domain.txt
43 - info on inerrupt numbering and setting up IRQ domains. 43 - info on interrupt numbering and setting up IRQ domains.
44IRQ.txt 44IRQ.txt
45 - description of what an IRQ is. 45 - description of what an IRQ is.
46Intel-IOMMU.txt 46Intel-IOMMU.txt
diff --git a/Documentation/ABI/stable/sysfs-bus-usb b/Documentation/ABI/stable/sysfs-bus-usb
new file mode 100644
index 000000000000..a6b685724740
--- /dev/null
+++ b/Documentation/ABI/stable/sysfs-bus-usb
@@ -0,0 +1,142 @@
1What: /sys/bus/usb/devices/.../power/persist
2Date: May 2007
3KernelVersion: 2.6.23
4Contact: Alan Stern <stern@rowland.harvard.edu>
5Description:
6 If CONFIG_USB_PERSIST is set, then each USB device directory
7 will contain a file named power/persist. The file holds a
8 boolean value (0 or 1) indicating whether or not the
9 "USB-Persist" facility is enabled for the device. Since the
10 facility is inherently dangerous, it is disabled by default
11 for all devices except hubs. For more information, see
12 Documentation/usb/persist.txt.
13
14What: /sys/bus/usb/devices/.../power/autosuspend
15Date: March 2007
16KernelVersion: 2.6.21
17Contact: Alan Stern <stern@rowland.harvard.edu>
18Description:
19 Each USB device directory will contain a file named
20 power/autosuspend. This file holds the time (in seconds)
21 the device must be idle before it will be autosuspended.
22 0 means the device will be autosuspended as soon as
23 possible. Negative values will prevent the device from
24 being autosuspended at all, and writing a negative value
25 will resume the device if it is already suspended.
26
27 The autosuspend delay for newly-created devices is set to
28 the value of the usbcore.autosuspend module parameter.
29
30What: /sys/bus/usb/device/.../power/connected_duration
31Date: January 2008
32KernelVersion: 2.6.25
33Contact: Sarah Sharp <sarah.a.sharp@intel.com>
34Description:
35 If CONFIG_PM_RUNTIME is enabled then this file
36 is present. When read, it returns the total time (in msec)
37 that the USB device has been connected to the machine. This
38 file is read-only.
39Users:
40 PowerTOP <powertop@lists.01.org>
41 https://01.org/powertop/
42
43What: /sys/bus/usb/device/.../power/active_duration
44Date: January 2008
45KernelVersion: 2.6.25
46Contact: Sarah Sharp <sarah.a.sharp@intel.com>
47Description:
48 If CONFIG_PM_RUNTIME is enabled then this file
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
51 state. This file is read-only.
52
53 Tools can use this file and the connected_duration file to
54 compute the percentage of time that a device has been active.
55 For example,
56 echo $((100 * `cat active_duration` / `cat connected_duration`))
57 will give an integer percentage. Note that this does not
58 account for counter wrap.
59Users:
60 PowerTOP <powertop@lists.01.org>
61 https://01.org/powertop/
62
63What: /sys/bus/usb/devices/<busnum>-<port[.port]>...:<config num>-<interface num>/supports_autosuspend
64Date: January 2008
65KernelVersion: 2.6.27
66Contact: Sarah Sharp <sarah.a.sharp@intel.com>
67Description:
68 When read, this file returns 1 if the interface driver
69 for this interface supports autosuspend. It also
70 returns 1 if no driver has claimed this interface, as an
71 unclaimed interface will not stop the device from being
72 autosuspended if all other interface drivers are idle.
73 The file returns 0 if autosuspend support has not been
74 added to the driver.
75Users:
76 USB PM tool
77 git://git.moblin.org/users/sarah/usb-pm-tool/
78
79What: /sys/bus/usb/device/.../avoid_reset_quirk
80Date: December 2009
81Contact: Oliver Neukum <oliver@neukum.org>
82Description:
83 Writing 1 to this file tells the kernel that this
84 device will morph into another mode when it is reset.
85 Drivers will not use reset for error handling for
86 such devices.
87Users:
88 usb_modeswitch
89
90What: /sys/bus/usb/devices/.../devnum
91KernelVersion: since at least 2.6.18
92Description:
93 Device address on the USB bus.
94Users:
95 libusb
96
97What: /sys/bus/usb/devices/.../bConfigurationValue
98KernelVersion: since at least 2.6.18
99Description:
100 bConfigurationValue of the *active* configuration for the
101 device. Writing 0 or -1 to bConfigurationValue will reset the
102 active configuration (unconfigure the device). Writing
103 another value will change the active configuration.
104
105 Note that some devices, in violation of the USB spec, have a
106 configuration with a value equal to 0. Writing 0 to
107 bConfigurationValue for these devices will install that
108 configuration, rather then unconfigure the device.
109
110 Writing -1 will always unconfigure the device.
111Users:
112 libusb
113
114What: /sys/bus/usb/devices/.../busnum
115KernelVersion: 2.6.22
116Description:
117 Bus-number of the USB-bus the device is connected to.
118Users:
119 libusb
120
121What: /sys/bus/usb/devices/.../descriptors
122KernelVersion: 2.6.26
123Description:
124 Binary file containing cached descriptors of the device. The
125 binary data consists of the device descriptor followed by the
126 descriptors for each configuration of the device.
127 Note that the wTotalLength of the config descriptors can not
128 be trusted, as the device may have a smaller config descriptor
129 than it advertises. The bLength field of each (sub) descriptor
130 can be trusted, and can be used to seek forward one (sub)
131 descriptor at a time until the next config descriptor is found.
132 All descriptors read from this file are in bus-endian format
133Users:
134 libusb
135
136What: /sys/bus/usb/devices/.../speed
137KernelVersion: since at least 2.6.18
138Description:
139 Speed the device is connected with to the usb-host in
140 Mbit / second. IE one of 1.5 / 12 / 480 / 5000.
141Users:
142 libusb
diff --git a/Documentation/ABI/testing/configfs-usb-gadget-mass-storage b/Documentation/ABI/testing/configfs-usb-gadget-mass-storage
new file mode 100644
index 000000000000..ad72a37ee9ff
--- /dev/null
+++ b/Documentation/ABI/testing/configfs-usb-gadget-mass-storage
@@ -0,0 +1,31 @@
1What: /config/usb-gadget/gadget/functions/mass_storage.name
2Date: Oct 2013
3KenelVersion: 3.13
4Description:
5 The attributes:
6
7 stall - Set to permit function to halt bulk endpoints.
8 Disabled on some USB devices known not to work
9 correctly. You should set it to true.
10 num_buffers - Number of pipeline buffers. Valid numbers
11 are 2..4. Available only if
12 CONFIG_USB_GADGET_DEBUG_FILES is set.
13
14What: /config/usb-gadget/gadget/functions/mass_storage.name/lun.name
15Date: Oct 2013
16KenelVersion: 3.13
17Description:
18 The attributes:
19
20 file - The path to the backing file for the LUN.
21 Required if LUN is not marked as removable.
22 ro - Flag specifying access to the LUN shall be
23 read-only. This is implied if CD-ROM emulation
24 is enabled as well as when it was impossible
25 to open "filename" in R/W mode.
26 removable - Flag specifying that LUN shall be indicated as
27 being removable.
28 cdrom - Flag specifying that LUN shall be reported as
29 being a CD-ROM.
30 nofua - Flag specifying that FUA flag
31 in SCSI WRITE(10,12)
diff --git a/Documentation/ABI/testing/sysfs-block-zram b/Documentation/ABI/testing/sysfs-block-zram
index ec93fe33baa6..3f0b9ae61d8c 100644
--- a/Documentation/ABI/testing/sysfs-block-zram
+++ b/Documentation/ABI/testing/sysfs-block-zram
@@ -5,20 +5,21 @@ Description:
5 The disksize file is read-write and specifies the disk size 5 The disksize file is read-write and specifies the disk size
6 which represents the limit on the *uncompressed* worth of data 6 which represents the limit on the *uncompressed* worth of data
7 that can be stored in this disk. 7 that can be stored in this disk.
8 Unit: bytes
8 9
9What: /sys/block/zram<id>/initstate 10What: /sys/block/zram<id>/initstate
10Date: August 2010 11Date: August 2010
11Contact: Nitin Gupta <ngupta@vflare.org> 12Contact: Nitin Gupta <ngupta@vflare.org>
12Description: 13Description:
13 The disksize file is read-only and shows the initialization 14 The initstate file is read-only and shows the initialization
14 state of the device. 15 state of the device.
15 16
16What: /sys/block/zram<id>/reset 17What: /sys/block/zram<id>/reset
17Date: August 2010 18Date: August 2010
18Contact: Nitin Gupta <ngupta@vflare.org> 19Contact: Nitin Gupta <ngupta@vflare.org>
19Description: 20Description:
20 The disksize file is write-only and allows resetting the 21 The reset file is write-only and allows resetting the
21 device. The reset operation frees all the memory assocaited 22 device. The reset operation frees all the memory associated
22 with this device. 23 with this device.
23 24
24What: /sys/block/zram<id>/num_reads 25What: /sys/block/zram<id>/num_reads
@@ -48,7 +49,7 @@ Contact: Nitin Gupta <ngupta@vflare.org>
48Description: 49Description:
49 The notify_free file is read-only and specifies the number of 50 The notify_free file is read-only and specifies the number of
50 swap slot free notifications received by this device. These 51 swap slot free notifications received by this device. These
51 notifications are send to a swap block device when a swap slot 52 notifications are sent to a swap block device when a swap slot
52 is freed. This statistic is applicable only when this disk is 53 is freed. This statistic is applicable only when this disk is
53 being used as a swap disk. 54 being used as a swap disk.
54 55
diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio
index dda81ffae5cf..b20e829d350f 100644
--- a/Documentation/ABI/testing/sysfs-bus-iio
+++ b/Documentation/ABI/testing/sysfs-bus-iio
@@ -79,7 +79,7 @@ Description:
79 correspond to externally available input one of the named 79 correspond to externally available input one of the named
80 versions may be used. The number must always be specified and 80 versions may be used. The number must always be specified and
81 unique to allow association with event codes. Units after 81 unique to allow association with event codes. Units after
82 application of scale and offset are microvolts. 82 application of scale and offset are millivolts.
83 83
84What: /sys/bus/iio/devices/iio:deviceX/in_voltageY-voltageZ_raw 84What: /sys/bus/iio/devices/iio:deviceX/in_voltageY-voltageZ_raw
85KernelVersion: 2.6.35 85KernelVersion: 2.6.35
@@ -90,7 +90,7 @@ Description:
90 physically equivalent inputs when non differential readings are 90 physically equivalent inputs when non differential readings are
91 separately available. In differential only parts, then all that 91 separately available. In differential only parts, then all that
92 is required is a consistent labeling. Units after application 92 is required is a consistent labeling. Units after application
93 of scale and offset are microvolts. 93 of scale and offset are millivolts.
94 94
95What: /sys/bus/iio/devices/iio:deviceX/in_capacitanceY_raw 95What: /sys/bus/iio/devices/iio:deviceX/in_capacitanceY_raw
96KernelVersion: 3.2 96KernelVersion: 3.2
@@ -351,6 +351,7 @@ Description:
351 6kohm_to_gnd: connected to ground via a 6kOhm resistor, 351 6kohm_to_gnd: connected to ground via a 6kOhm resistor,
352 20kohm_to_gnd: connected to ground via a 20kOhm resistor, 352 20kohm_to_gnd: connected to ground via a 20kOhm resistor,
353 100kohm_to_gnd: connected to ground via an 100kOhm resistor, 353 100kohm_to_gnd: connected to ground via an 100kOhm resistor,
354 500kohm_to_gnd: connected to ground via a 500kOhm resistor,
354 three_state: left floating. 355 three_state: left floating.
355 For a list of available output power down options read 356 For a list of available output power down options read
356 outX_powerdown_mode_available. If Y is not present the 357 outX_powerdown_mode_available. If Y is not present the
@@ -536,6 +537,62 @@ Description:
536 value is in raw device units or in processed units (as _raw 537 value is in raw device units or in processed units (as _raw
537 and _input do on sysfs direct channel read attributes). 538 and _input do on sysfs direct channel read attributes).
538 539
540What: /sys/.../events/in_accel_x_thresh_rising_hysteresis
541What: /sys/.../events/in_accel_x_thresh_falling_hysteresis
542What: /sys/.../events/in_accel_x_thresh_either_hysteresis
543What: /sys/.../events/in_accel_y_thresh_rising_hysteresis
544What: /sys/.../events/in_accel_y_thresh_falling_hysteresis
545What: /sys/.../events/in_accel_y_thresh_either_hysteresis
546What: /sys/.../events/in_accel_z_thresh_rising_hysteresis
547What: /sys/.../events/in_accel_z_thresh_falling_hysteresis
548What: /sys/.../events/in_accel_z_thresh_either_hysteresis
549What: /sys/.../events/in_anglvel_x_thresh_rising_hysteresis
550What: /sys/.../events/in_anglvel_x_thresh_falling_hysteresis
551What: /sys/.../events/in_anglvel_x_thresh_either_hysteresis
552What: /sys/.../events/in_anglvel_y_thresh_rising_hysteresis
553What: /sys/.../events/in_anglvel_y_thresh_falling_hysteresis
554What: /sys/.../events/in_anglvel_y_thresh_either_hysteresis
555What: /sys/.../events/in_anglvel_z_thresh_rising_hysteresis
556What: /sys/.../events/in_anglvel_z_thresh_falling_hysteresis
557What: /sys/.../events/in_anglvel_z_thresh_either_hysteresis
558What: /sys/.../events/in_magn_x_thresh_rising_hysteresis
559What: /sys/.../events/in_magn_x_thresh_falling_hysteresis
560What: /sys/.../events/in_magn_x_thresh_either_hysteresis
561What: /sys/.../events/in_magn_y_thresh_rising_hysteresis
562What: /sys/.../events/in_magn_y_thresh_falling_hysteresis
563What: /sys/.../events/in_magn_y_thresh_either_hysteresis
564What: /sys/.../events/in_magn_z_thresh_rising_hysteresis
565What: /sys/.../events/in_magn_z_thresh_falling_hysteresis
566What: /sys/.../events/in_magn_z_thresh_either_hysteresis
567What: /sys/.../events/in_voltageY_thresh_rising_hysteresis
568What: /sys/.../events/in_voltageY_thresh_falling_hysteresis
569What: /sys/.../events/in_voltageY_thresh_either_hysteresis
570What: /sys/.../events/in_tempY_thresh_rising_hysteresis
571What: /sys/.../events/in_tempY_thresh_falling_hysteresis
572What: /sys/.../events/in_tempY_thresh_either_hysteresis
573What: /sys/.../events/in_illuminance0_thresh_falling_hysteresis
574what: /sys/.../events/in_illuminance0_thresh_rising_hysteresis
575what: /sys/.../events/in_illuminance0_thresh_either_hysteresis
576what: /sys/.../events/in_proximity0_thresh_falling_hysteresis
577what: /sys/.../events/in_proximity0_thresh_rising_hysteresis
578what: /sys/.../events/in_proximity0_thresh_either_hysteresis
579KernelVersion: 3.13
580Contact: linux-iio@vger.kernel.org
581Description:
582 Specifies the hysteresis of threshold that the device is comparing
583 against for the events enabled by
584 <type>Y[_name]_thresh[_(rising|falling)]_hysteresis.
585 If separate attributes exist for the two directions, but
586 direction is not specified for this attribute, then a single
587 hysteresis value applies to both directions.
588 For falling events the hysteresis is added to the _value attribute for
589 this event to get the upper threshold for when the event goes back to
590 normal, for rising events the hysteresis is subtracted from the _value
591 attribute. E.g. if in_voltage0_raw_thresh_rising_value is set to 1200
592 and in_voltage0_raw_thresh_rising_hysteresis is set to 50. The event
593 will get activated once in_voltage0_raw goes above 1200 and will become
594 deactived again once the value falls below 1150.
595
539What: /sys/.../events/in_accel_x_raw_roc_rising_value 596What: /sys/.../events/in_accel_x_raw_roc_rising_value
540What: /sys/.../events/in_accel_x_raw_roc_falling_value 597What: /sys/.../events/in_accel_x_raw_roc_falling_value
541What: /sys/.../events/in_accel_y_raw_roc_rising_value 598What: /sys/.../events/in_accel_y_raw_roc_rising_value
@@ -792,3 +849,32 @@ Contact: linux-iio@vger.kernel.org
792Description: 849Description:
793 This attribute is used to read the amount of quadrature error 850 This attribute is used to read the amount of quadrature error
794 present in the device at a given time. 851 present in the device at a given time.
852
853What: /sys/.../iio:deviceX/in_accelX_power_mode
854KernelVersion: 3.11
855Contact: linux-iio@vger.kernel.org
856Description:
857 Specifies the chip power mode.
858 low_noise: reduce noise level from ADC,
859 low_power: enable low current consumption.
860 For a list of available output power modes read
861 in_accel_power_mode_available.
862
863What: /sys/bus/iio/devices/iio:deviceX/store_eeprom
864KernelVersion: 3.4.0
865Contact: linux-iio@vger.kernel.org
866Description:
867 Writing '1' stores the current device configuration into
868 on-chip EEPROM. After power-up or chip reset the device will
869 automatically load the saved configuration.
870
871What: /sys/.../iio:deviceX/in_intensity_red_integration_time
872What: /sys/.../iio:deviceX/in_intensity_green_integration_time
873What: /sys/.../iio:deviceX/in_intensity_blue_integration_time
874What: /sys/.../iio:deviceX/in_intensity_clear_integration_time
875What: /sys/.../iio:deviceX/in_illuminance_integration_time
876KernelVersion: 3.12
877Contact: linux-iio@vger.kernel.org
878Description:
879 This attribute is used to get/set the integration time in
880 seconds.
diff --git a/Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9523 b/Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9523
index 2ce9c3f68eee..a91aeabe7b24 100644
--- a/Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9523
+++ b/Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9523
@@ -18,14 +18,6 @@ Description:
18 Reading returns either '1' or '0'. '1' means that the 18 Reading returns either '1' or '0'. '1' means that the
19 pllY is locked. 19 pllY is locked.
20 20
21What: /sys/bus/iio/devices/iio:deviceX/store_eeprom
22KernelVersion: 3.4.0
23Contact: linux-iio@vger.kernel.org
24Description:
25 Writing '1' stores the current device configuration into
26 on-chip EEPROM. After power-up or chip reset the device will
27 automatically load the saved configuration.
28
29What: /sys/bus/iio/devices/iio:deviceX/sync_dividers 21What: /sys/bus/iio/devices/iio:deviceX/sync_dividers
30KernelVersion: 3.4.0 22KernelVersion: 3.4.0
31Contact: linux-iio@vger.kernel.org 23Contact: linux-iio@vger.kernel.org
diff --git a/Documentation/ABI/testing/sysfs-bus-iio-frequency-adf4350 b/Documentation/ABI/testing/sysfs-bus-iio-frequency-adf4350
index d89aded01c5a..1254457a726e 100644
--- a/Documentation/ABI/testing/sysfs-bus-iio-frequency-adf4350
+++ b/Documentation/ABI/testing/sysfs-bus-iio-frequency-adf4350
@@ -18,4 +18,4 @@ Description:
18 adjust the reference frequency accordingly. 18 adjust the reference frequency accordingly.
19 The value written has no effect until out_altvoltageY_frequency 19 The value written has no effect until out_altvoltageY_frequency
20 is updated. Consider to use out_altvoltageY_powerdown to power 20 is updated. Consider to use out_altvoltageY_powerdown to power
21 down the PLL and it's RFOut buffers during REFin changes. 21 down the PLL and its RFOut buffers during REFin changes.
diff --git a/Documentation/ABI/testing/sysfs-bus-usb b/Documentation/ABI/testing/sysfs-bus-usb
index 9759b8c91332..1430f584b266 100644
--- a/Documentation/ABI/testing/sysfs-bus-usb
+++ b/Documentation/ABI/testing/sysfs-bus-usb
@@ -1,81 +1,3 @@
1What: /sys/bus/usb/devices/.../power/autosuspend
2Date: March 2007
3KernelVersion: 2.6.21
4Contact: Alan Stern <stern@rowland.harvard.edu>
5Description:
6 Each USB device directory will contain a file named
7 power/autosuspend. This file holds the time (in seconds)
8 the device must be idle before it will be autosuspended.
9 0 means the device will be autosuspended as soon as
10 possible. Negative values will prevent the device from
11 being autosuspended at all, and writing a negative value
12 will resume the device if it is already suspended.
13
14 The autosuspend delay for newly-created devices is set to
15 the value of the usbcore.autosuspend module parameter.
16
17What: /sys/bus/usb/devices/.../power/persist
18Date: May 2007
19KernelVersion: 2.6.23
20Contact: Alan Stern <stern@rowland.harvard.edu>
21Description:
22 If CONFIG_USB_PERSIST is set, then each USB device directory
23 will contain a file named power/persist. The file holds a
24 boolean value (0 or 1) indicating whether or not the
25 "USB-Persist" facility is enabled for the device. Since the
26 facility is inherently dangerous, it is disabled by default
27 for all devices except hubs. For more information, see
28 Documentation/usb/persist.txt.
29
30What: /sys/bus/usb/device/.../power/connected_duration
31Date: January 2008
32KernelVersion: 2.6.25
33Contact: Sarah Sharp <sarah.a.sharp@intel.com>
34Description:
35 If CONFIG_PM_RUNTIME is enabled then this file
36 is present. When read, it returns the total time (in msec)
37 that the USB device has been connected to the machine. This
38 file is read-only.
39Users:
40 PowerTOP <power@bughost.org>
41 http://www.lesswatts.org/projects/powertop/
42
43What: /sys/bus/usb/device/.../power/active_duration
44Date: January 2008
45KernelVersion: 2.6.25
46Contact: Sarah Sharp <sarah.a.sharp@intel.com>
47Description:
48 If CONFIG_PM_RUNTIME is enabled then this file
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
51 state. This file is read-only.
52
53 Tools can use this file and the connected_duration file to
54 compute the percentage of time that a device has been active.
55 For example,
56 echo $((100 * `cat active_duration` / `cat connected_duration`))
57 will give an integer percentage. Note that this does not
58 account for counter wrap.
59Users:
60 PowerTOP <power@bughost.org>
61 http://www.lesswatts.org/projects/powertop/
62
63What: /sys/bus/usb/device/<busnum>-<devnum>...:<config num>-<interface num>/supports_autosuspend
64Date: January 2008
65KernelVersion: 2.6.27
66Contact: Sarah Sharp <sarah.a.sharp@intel.com>
67Description:
68 When read, this file returns 1 if the interface driver
69 for this interface supports autosuspend. It also
70 returns 1 if no driver has claimed this interface, as an
71 unclaimed interface will not stop the device from being
72 autosuspended if all other interface drivers are idle.
73 The file returns 0 if autosuspend support has not been
74 added to the driver.
75Users:
76 USB PM tool
77 git://git.moblin.org/users/sarah/usb-pm-tool/
78
79What: /sys/bus/usb/device/.../authorized 1What: /sys/bus/usb/device/.../authorized
80Date: July 2008 2Date: July 2008
81KernelVersion: 2.6.26 3KernelVersion: 2.6.26
@@ -172,17 +94,6 @@ Description:
172 device IDs, exactly like reading from the entry 94 device IDs, exactly like reading from the entry
173 "/sys/bus/usb/drivers/.../new_id" 95 "/sys/bus/usb/drivers/.../new_id"
174 96
175What: /sys/bus/usb/device/.../avoid_reset_quirk
176Date: December 2009
177Contact: Oliver Neukum <oliver@neukum.org>
178Description:
179 Writing 1 to this file tells the kernel that this
180 device will morph into another mode when it is reset.
181 Drivers will not use reset for error handling for
182 such devices.
183Users:
184 usb_modeswitch
185
186What: /sys/bus/usb/devices/.../power/usb2_hardware_lpm 97What: /sys/bus/usb/devices/.../power/usb2_hardware_lpm
187Date: September 2011 98Date: September 2011
188Contact: Andiry Xu <andiry.xu@amd.com> 99Contact: Andiry Xu <andiry.xu@amd.com>
diff --git a/Documentation/ABI/testing/sysfs-class-mic.txt b/Documentation/ABI/testing/sysfs-class-mic.txt
new file mode 100644
index 000000000000..13f48afc534f
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-class-mic.txt
@@ -0,0 +1,157 @@
1What: /sys/class/mic/
2Date: October 2013
3KernelVersion: 3.13
4Contact: Sudeep Dutt <sudeep.dutt@intel.com>
5Description:
6 The mic class directory belongs to Intel MIC devices and
7 provides information per MIC device. An Intel MIC device is a
8 PCIe form factor add-in Coprocessor card based on the Intel Many
9 Integrated Core (MIC) architecture that runs a Linux OS.
10
11What: /sys/class/mic/mic(x)
12Date: October 2013
13KernelVersion: 3.13
14Contact: Sudeep Dutt <sudeep.dutt@intel.com>
15Description:
16 The directories /sys/class/mic/mic0, /sys/class/mic/mic1 etc.,
17 represent MIC devices (0,1,..etc). Each directory has
18 information specific to that MIC device.
19
20What: /sys/class/mic/mic(x)/family
21Date: October 2013
22KernelVersion: 3.13
23Contact: Sudeep Dutt <sudeep.dutt@intel.com>
24Description:
25 Provides information about the Coprocessor family for an Intel
26 MIC device. For example - "x100"
27
28What: /sys/class/mic/mic(x)/stepping
29Date: October 2013
30KernelVersion: 3.13
31Contact: Sudeep Dutt <sudeep.dutt@intel.com>
32Description:
33 Provides information about the silicon stepping for an Intel
34 MIC device. For example - "A0" or "B0"
35
36What: /sys/class/mic/mic(x)/state
37Date: October 2013
38KernelVersion: 3.13
39Contact: Sudeep Dutt <sudeep.dutt@intel.com>
40Description:
41 When read, this entry provides the current state of an Intel
42 MIC device in the context of the card OS. Possible values that
43 will be read are:
44 "offline" - The MIC device is ready to boot the card OS. On
45 reading this entry after an OSPM resume, a "boot" has to be
46 written to this entry if the card was previously shutdown
47 during OSPM suspend.
48 "online" - The MIC device has initiated booting a card OS.
49 "shutting_down" - The card OS is shutting down.
50 "reset_failed" - The MIC device has failed to reset.
51 "suspending" - The MIC device is currently being prepared for
52 suspend. On reading this entry, a "suspend" has to be written
53 to the state sysfs entry to ensure the card is shutdown during
54 OSPM suspend.
55 "suspended" - The MIC device has been suspended.
56
57 When written, this sysfs entry triggers different state change
58 operations depending upon the current state of the card OS.
59 Acceptable values are:
60 "boot" - Boot the card OS image specified by the combination
61 of firmware, ramdisk, cmdline and bootmode
62 sysfs entries.
63 "reset" - Initiates device reset.
64 "shutdown" - Initiates card OS shutdown.
65 "suspend" - Initiates card OS shutdown and also marks the card
66 as suspended.
67
68What: /sys/class/mic/mic(x)/shutdown_status
69Date: October 2013
70KernelVersion: 3.13
71Contact: Sudeep Dutt <sudeep.dutt@intel.com>
72Description:
73 An Intel MIC device runs a Linux OS during its operation. This
74 OS can shutdown because of various reasons. When read, this
75 entry provides the status on why the card OS was shutdown.
76 Possible values are:
77 "nop" - shutdown status is not applicable, when the card OS is
78 "online"
79 "crashed" - Shutdown because of a HW or SW crash.
80 "halted" - Shutdown because of a halt command.
81 "poweroff" - Shutdown because of a poweroff command.
82 "restart" - Shutdown because of a restart command.
83
84What: /sys/class/mic/mic(x)/cmdline
85Date: October 2013
86KernelVersion: 3.13
87Contact: Sudeep Dutt <sudeep.dutt@intel.com>
88Description:
89 An Intel MIC device runs a Linux OS during its operation. Before
90 booting this card OS, it is possible to pass kernel command line
91 options to configure various features in it, similar to
92 self-bootable machines. When read, this entry provides
93 information about the current kernel command line options set to
94 boot the card OS. This entry can be written to change the
95 existing kernel command line options. Typically, the user would
96 want to read the current command line options, append new ones
97 or modify existing ones and then write the whole kernel command
98 line back to this entry.
99
100What: /sys/class/mic/mic(x)/firmware
101Date: October 2013
102KernelVersion: 3.13
103Contact: Sudeep Dutt <sudeep.dutt@intel.com>
104Description:
105 When read, this sysfs entry provides the path name under
106 /lib/firmware/ where the firmware image to be booted on the
107 card can be found. The entry can be written to change the
108 firmware image location under /lib/firmware/.
109
110What: /sys/class/mic/mic(x)/ramdisk
111Date: October 2013
112KernelVersion: 3.13
113Contact: Sudeep Dutt <sudeep.dutt@intel.com>
114Description:
115 When read, this sysfs entry provides the path name under
116 /lib/firmware/ where the ramdisk image to be used during card
117 OS boot can be found. The entry can be written to change
118 the ramdisk image location under /lib/firmware/.
119
120What: /sys/class/mic/mic(x)/bootmode
121Date: October 2013
122KernelVersion: 3.13
123Contact: Sudeep Dutt <sudeep.dutt@intel.com>
124Description:
125 When read, this sysfs entry provides the current bootmode for
126 the card. This sysfs entry can be written with the following
127 valid strings:
128 a) linux - Boot a Linux image.
129 b) elf - Boot an elf image for flash updates.
130
131What: /sys/class/mic/mic(x)/log_buf_addr
132Date: October 2013
133KernelVersion: 3.13
134Contact: Sudeep Dutt <sudeep.dutt@intel.com>
135Description:
136 An Intel MIC device runs a Linux OS during its operation. For
137 debugging purpose and early kernel boot messages, the user can
138 access the card OS log buffer via debugfs. When read, this entry
139 provides the kernel virtual address of the buffer where the card
140 OS log buffer can be read. This entry is written by the host
141 configuration daemon to set the log buffer address. The correct
142 log buffer address to be written can be found in the System.map
143 file of the card OS.
144
145What: /sys/class/mic/mic(x)/log_buf_len
146Date: October 2013
147KernelVersion: 3.13
148Contact: Sudeep Dutt <sudeep.dutt@intel.com>
149Description:
150 An Intel MIC device runs a Linux OS during its operation. For
151 debugging purpose and early kernel boot messages, the user can
152 access the card OS log buffer via debugfs. When read, this entry
153 provides the kernel virtual address where the card OS log buffer
154 length can be read. This entry is written by host configuration
155 daemon to set the log buffer length address. The correct log
156 buffer length address to be written can be found in the
157 System.map file of the card OS.
diff --git a/Documentation/ABI/testing/sysfs-class-mtd b/Documentation/ABI/testing/sysfs-class-mtd
index 3105644b3bfc..bfd119ace6ad 100644
--- a/Documentation/ABI/testing/sysfs-class-mtd
+++ b/Documentation/ABI/testing/sysfs-class-mtd
@@ -128,9 +128,8 @@ KernelVersion: 3.4
128Contact: linux-mtd@lists.infradead.org 128Contact: linux-mtd@lists.infradead.org
129Description: 129Description:
130 Maximum number of bit errors that the device is capable of 130 Maximum number of bit errors that the device is capable of
131 correcting within each region covering an ecc step. This will 131 correcting within each region covering an ECC step (see
132 always be a non-negative integer. Note that some devices will 132 ecc_step_size). This will always be a non-negative integer.
133 have multiple ecc steps within each writesize region.
134 133
135 In the case of devices lacking any ECC capability, it is 0. 134 In the case of devices lacking any ECC capability, it is 0.
136 135
@@ -173,3 +172,15 @@ Description:
173 This is generally applicable only to NAND flash devices with ECC 172 This is generally applicable only to NAND flash devices with ECC
174 capability. It is ignored on devices lacking ECC capability; 173 capability. It is ignored on devices lacking ECC capability;
175 i.e., devices for which ecc_strength is zero. 174 i.e., devices for which ecc_strength is zero.
175
176What: /sys/class/mtd/mtdX/ecc_step_size
177Date: May 2013
178KernelVersion: 3.10
179Contact: linux-mtd@lists.infradead.org
180Description:
181 The size of a single region covered by ECC, known as the ECC
182 step. Devices may have several equally sized ECC steps within
183 each writesize region.
184
185 It will always be a non-negative integer. In the case of
186 devices lacking any ECC capability, it is 0.
diff --git a/Documentation/ABI/testing/sysfs-devices-power b/Documentation/ABI/testing/sysfs-devices-power
index 9d43e7670841..efe449bdf811 100644
--- a/Documentation/ABI/testing/sysfs-devices-power
+++ b/Documentation/ABI/testing/sysfs-devices-power
@@ -1,6 +1,6 @@
1What: /sys/devices/.../power/ 1What: /sys/devices/.../power/
2Date: January 2009 2Date: January 2009
3Contact: Rafael J. Wysocki <rjw@sisk.pl> 3Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
4Description: 4Description:
5 The /sys/devices/.../power directory contains attributes 5 The /sys/devices/.../power directory contains attributes
6 allowing the user space to check and modify some power 6 allowing the user space to check and modify some power
@@ -8,7 +8,7 @@ Description:
8 8
9What: /sys/devices/.../power/wakeup 9What: /sys/devices/.../power/wakeup
10Date: January 2009 10Date: January 2009
11Contact: Rafael J. Wysocki <rjw@sisk.pl> 11Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
12Description: 12Description:
13 The /sys/devices/.../power/wakeup attribute allows the user 13 The /sys/devices/.../power/wakeup attribute allows the user
14 space to check if the device is enabled to wake up the system 14 space to check if the device is enabled to wake up the system
@@ -34,7 +34,7 @@ Description:
34 34
35What: /sys/devices/.../power/control 35What: /sys/devices/.../power/control
36Date: January 2009 36Date: January 2009
37Contact: Rafael J. Wysocki <rjw@sisk.pl> 37Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
38Description: 38Description:
39 The /sys/devices/.../power/control attribute allows the user 39 The /sys/devices/.../power/control attribute allows the user
40 space to control the run-time power management of the device. 40 space to control the run-time power management of the device.
@@ -53,7 +53,7 @@ Description:
53 53
54What: /sys/devices/.../power/async 54What: /sys/devices/.../power/async
55Date: January 2009 55Date: January 2009
56Contact: Rafael J. Wysocki <rjw@sisk.pl> 56Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
57Description: 57Description:
58 The /sys/devices/.../async attribute allows the user space to 58 The /sys/devices/.../async attribute allows the user space to
59 enable or diasble the device's suspend and resume callbacks to 59 enable or diasble the device's suspend and resume callbacks to
@@ -79,7 +79,7 @@ Description:
79 79
80What: /sys/devices/.../power/wakeup_count 80What: /sys/devices/.../power/wakeup_count
81Date: September 2010 81Date: September 2010
82Contact: Rafael J. Wysocki <rjw@sisk.pl> 82Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
83Description: 83Description:
84 The /sys/devices/.../wakeup_count attribute contains the number 84 The /sys/devices/.../wakeup_count attribute contains the number
85 of signaled wakeup events associated with the device. This 85 of signaled wakeup events associated with the device. This
@@ -88,7 +88,7 @@ Description:
88 88
89What: /sys/devices/.../power/wakeup_active_count 89What: /sys/devices/.../power/wakeup_active_count
90Date: September 2010 90Date: September 2010
91Contact: Rafael J. Wysocki <rjw@sisk.pl> 91Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
92Description: 92Description:
93 The /sys/devices/.../wakeup_active_count attribute contains the 93 The /sys/devices/.../wakeup_active_count attribute contains the
94 number of times the processing of wakeup events associated with 94 number of times the processing of wakeup events associated with
@@ -98,7 +98,7 @@ Description:
98 98
99What: /sys/devices/.../power/wakeup_abort_count 99What: /sys/devices/.../power/wakeup_abort_count
100Date: February 2012 100Date: February 2012
101Contact: Rafael J. Wysocki <rjw@sisk.pl> 101Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
102Description: 102Description:
103 The /sys/devices/.../wakeup_abort_count attribute contains the 103 The /sys/devices/.../wakeup_abort_count attribute contains the
104 number of times the processing of a wakeup event associated with 104 number of times the processing of a wakeup event associated with
@@ -109,7 +109,7 @@ Description:
109 109
110What: /sys/devices/.../power/wakeup_expire_count 110What: /sys/devices/.../power/wakeup_expire_count
111Date: February 2012 111Date: February 2012
112Contact: Rafael J. Wysocki <rjw@sisk.pl> 112Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
113Description: 113Description:
114 The /sys/devices/.../wakeup_expire_count attribute contains the 114 The /sys/devices/.../wakeup_expire_count attribute contains the
115 number of times a wakeup event associated with the device has 115 number of times a wakeup event associated with the device has
@@ -119,7 +119,7 @@ Description:
119 119
120What: /sys/devices/.../power/wakeup_active 120What: /sys/devices/.../power/wakeup_active
121Date: September 2010 121Date: September 2010
122Contact: Rafael J. Wysocki <rjw@sisk.pl> 122Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
123Description: 123Description:
124 The /sys/devices/.../wakeup_active attribute contains either 1, 124 The /sys/devices/.../wakeup_active attribute contains either 1,
125 or 0, depending on whether or not a wakeup event associated with 125 or 0, depending on whether or not a wakeup event associated with
@@ -129,7 +129,7 @@ Description:
129 129
130What: /sys/devices/.../power/wakeup_total_time_ms 130What: /sys/devices/.../power/wakeup_total_time_ms
131Date: September 2010 131Date: September 2010
132Contact: Rafael J. Wysocki <rjw@sisk.pl> 132Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
133Description: 133Description:
134 The /sys/devices/.../wakeup_total_time_ms attribute contains 134 The /sys/devices/.../wakeup_total_time_ms attribute contains
135 the total time of processing wakeup events associated with the 135 the total time of processing wakeup events associated with the
@@ -139,7 +139,7 @@ Description:
139 139
140What: /sys/devices/.../power/wakeup_max_time_ms 140What: /sys/devices/.../power/wakeup_max_time_ms
141Date: September 2010 141Date: September 2010
142Contact: Rafael J. Wysocki <rjw@sisk.pl> 142Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
143Description: 143Description:
144 The /sys/devices/.../wakeup_max_time_ms attribute contains 144 The /sys/devices/.../wakeup_max_time_ms attribute contains
145 the maximum time of processing a single wakeup event associated 145 the maximum time of processing a single wakeup event associated
@@ -149,7 +149,7 @@ Description:
149 149
150What: /sys/devices/.../power/wakeup_last_time_ms 150What: /sys/devices/.../power/wakeup_last_time_ms
151Date: September 2010 151Date: September 2010
152Contact: Rafael J. Wysocki <rjw@sisk.pl> 152Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
153Description: 153Description:
154 The /sys/devices/.../wakeup_last_time_ms attribute contains 154 The /sys/devices/.../wakeup_last_time_ms attribute contains
155 the value of the monotonic clock corresponding to the time of 155 the value of the monotonic clock corresponding to the time of
@@ -160,7 +160,7 @@ Description:
160 160
161What: /sys/devices/.../power/wakeup_prevent_sleep_time_ms 161What: /sys/devices/.../power/wakeup_prevent_sleep_time_ms
162Date: February 2012 162Date: February 2012
163Contact: Rafael J. Wysocki <rjw@sisk.pl> 163Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
164Description: 164Description:
165 The /sys/devices/.../wakeup_prevent_sleep_time_ms attribute 165 The /sys/devices/.../wakeup_prevent_sleep_time_ms attribute
166 contains the total time the device has been preventing 166 contains the total time the device has been preventing
@@ -189,7 +189,7 @@ Description:
189 189
190What: /sys/devices/.../power/pm_qos_latency_us 190What: /sys/devices/.../power/pm_qos_latency_us
191Date: March 2012 191Date: March 2012
192Contact: Rafael J. Wysocki <rjw@sisk.pl> 192Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
193Description: 193Description:
194 The /sys/devices/.../power/pm_qos_resume_latency_us attribute 194 The /sys/devices/.../power/pm_qos_resume_latency_us attribute
195 contains the PM QoS resume latency limit for the given device, 195 contains the PM QoS resume latency limit for the given device,
@@ -207,7 +207,7 @@ Description:
207 207
208What: /sys/devices/.../power/pm_qos_no_power_off 208What: /sys/devices/.../power/pm_qos_no_power_off
209Date: September 2012 209Date: September 2012
210Contact: Rafael J. Wysocki <rjw@sisk.pl> 210Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
211Description: 211Description:
212 The /sys/devices/.../power/pm_qos_no_power_off attribute 212 The /sys/devices/.../power/pm_qos_no_power_off attribute
213 is used for manipulating the PM QoS "no power off" flag. If 213 is used for manipulating the PM QoS "no power off" flag. If
@@ -222,7 +222,7 @@ Description:
222 222
223What: /sys/devices/.../power/pm_qos_remote_wakeup 223What: /sys/devices/.../power/pm_qos_remote_wakeup
224Date: September 2012 224Date: September 2012
225Contact: Rafael J. Wysocki <rjw@sisk.pl> 225Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
226Description: 226Description:
227 The /sys/devices/.../power/pm_qos_remote_wakeup attribute 227 The /sys/devices/.../power/pm_qos_remote_wakeup attribute
228 is used for manipulating the PM QoS "remote wakeup required" 228 is used for manipulating the PM QoS "remote wakeup required"
diff --git a/Documentation/ABI/testing/sysfs-driver-sunxi-sid b/Documentation/ABI/testing/sysfs-driver-sunxi-sid
new file mode 100644
index 000000000000..ffb9536f6ecc
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-driver-sunxi-sid
@@ -0,0 +1,22 @@
1What: /sys/devices/*/<our-device>/eeprom
2Date: August 2013
3Contact: Oliver Schinagl <oliver@schinagl.nl>
4Description: read-only access to the SID (Security-ID) on current
5 A-series SoC's from Allwinner. Currently supports A10, A10s, A13
6 and A20 CPU's. The earlier A1x series of SoCs exports 16 bytes,
7 whereas the newer A20 SoC exposes 512 bytes split into sections.
8 Besides the 16 bytes of SID, there's also an SJTAG area,
9 HDMI-HDCP key and some custom keys. Below a quick overview, for
10 details see the user manual:
11 0x000 128 bit root-key (sun[457]i)
12 0x010 128 bit boot-key (sun7i)
13 0x020 64 bit security-jtag-key (sun7i)
14 0x028 16 bit key configuration (sun7i)
15 0x02b 16 bit custom-vendor-key (sun7i)
16 0x02c 320 bit low general key (sun7i)
17 0x040 32 bit read-control access (sun7i)
18 0x064 224 bit low general key (sun7i)
19 0x080 2304 bit HDCP-key (sun7i)
20 0x1a0 768 bit high general key (sun7i)
21Users: any user space application which wants to read the SID on
22 Allwinner's A-series of CPU's.
diff --git a/Documentation/ABI/testing/sysfs-fs-f2fs b/Documentation/ABI/testing/sysfs-fs-f2fs
new file mode 100644
index 000000000000..31942efcaf0e
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-fs-f2fs
@@ -0,0 +1,26 @@
1What: /sys/fs/f2fs/<disk>/gc_max_sleep_time
2Date: July 2013
3Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
4Description:
5 Controls the maximun sleep time for gc_thread. Time
6 is in milliseconds.
7
8What: /sys/fs/f2fs/<disk>/gc_min_sleep_time
9Date: July 2013
10Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
11Description:
12 Controls the minimum sleep time for gc_thread. Time
13 is in milliseconds.
14
15What: /sys/fs/f2fs/<disk>/gc_no_gc_sleep_time
16Date: July 2013
17Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
18Description:
19 Controls the default sleep time for gc_thread. Time
20 is in milliseconds.
21
22What: /sys/fs/f2fs/<disk>/gc_idle
23Date: July 2013
24Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
25Description:
26 Controls the victim selection policy for garbage collection.
diff --git a/Documentation/ABI/testing/sysfs-power b/Documentation/ABI/testing/sysfs-power
index 217772615d02..205a73878441 100644
--- a/Documentation/ABI/testing/sysfs-power
+++ b/Documentation/ABI/testing/sysfs-power
@@ -1,6 +1,6 @@
1What: /sys/power/ 1What: /sys/power/
2Date: August 2006 2Date: August 2006
3Contact: Rafael J. Wysocki <rjw@sisk.pl> 3Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
4Description: 4Description:
5 The /sys/power directory will contain files that will 5 The /sys/power directory will contain files that will
6 provide a unified interface to the power management 6 provide a unified interface to the power management
@@ -8,7 +8,7 @@ Description:
8 8
9What: /sys/power/state 9What: /sys/power/state
10Date: August 2006 10Date: August 2006
11Contact: Rafael J. Wysocki <rjw@sisk.pl> 11Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
12Description: 12Description:
13 The /sys/power/state file controls the system power state. 13 The /sys/power/state file controls the system power state.
14 Reading from this file returns what states are supported, 14 Reading from this file returns what states are supported,
@@ -22,7 +22,7 @@ Description:
22 22
23What: /sys/power/disk 23What: /sys/power/disk
24Date: September 2006 24Date: September 2006
25Contact: Rafael J. Wysocki <rjw@sisk.pl> 25Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
26Description: 26Description:
27 The /sys/power/disk file controls the operating mode of the 27 The /sys/power/disk file controls the operating mode of the
28 suspend-to-disk mechanism. Reading from this file returns 28 suspend-to-disk mechanism. Reading from this file returns
@@ -67,7 +67,7 @@ Description:
67 67
68What: /sys/power/image_size 68What: /sys/power/image_size
69Date: August 2006 69Date: August 2006
70Contact: Rafael J. Wysocki <rjw@sisk.pl> 70Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
71Description: 71Description:
72 The /sys/power/image_size file controls the size of the image 72 The /sys/power/image_size file controls the size of the image
73 created by the suspend-to-disk mechanism. It can be written a 73 created by the suspend-to-disk mechanism. It can be written a
@@ -84,7 +84,7 @@ Description:
84 84
85What: /sys/power/pm_trace 85What: /sys/power/pm_trace
86Date: August 2006 86Date: August 2006
87Contact: Rafael J. Wysocki <rjw@sisk.pl> 87Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
88Description: 88Description:
89 The /sys/power/pm_trace file controls the code which saves the 89 The /sys/power/pm_trace file controls the code which saves the
90 last PM event point in the RTC across reboots, so that you can 90 last PM event point in the RTC across reboots, so that you can
@@ -133,7 +133,7 @@ Description:
133 133
134What: /sys/power/pm_async 134What: /sys/power/pm_async
135Date: January 2009 135Date: January 2009
136Contact: Rafael J. Wysocki <rjw@sisk.pl> 136Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
137Description: 137Description:
138 The /sys/power/pm_async file controls the switch allowing the 138 The /sys/power/pm_async file controls the switch allowing the
139 user space to enable or disable asynchronous suspend and resume 139 user space to enable or disable asynchronous suspend and resume
@@ -146,7 +146,7 @@ Description:
146 146
147What: /sys/power/wakeup_count 147What: /sys/power/wakeup_count
148Date: July 2010 148Date: July 2010
149Contact: Rafael J. Wysocki <rjw@sisk.pl> 149Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
150Description: 150Description:
151 The /sys/power/wakeup_count file allows user space to put the 151 The /sys/power/wakeup_count file allows user space to put the
152 system into a sleep state while taking into account the 152 system into a sleep state while taking into account the
@@ -161,7 +161,7 @@ Description:
161 161
162What: /sys/power/reserved_size 162What: /sys/power/reserved_size
163Date: May 2011 163Date: May 2011
164Contact: Rafael J. Wysocki <rjw@sisk.pl> 164Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
165Description: 165Description:
166 The /sys/power/reserved_size file allows user space to control 166 The /sys/power/reserved_size file allows user space to control
167 the amount of memory reserved for allocations made by device 167 the amount of memory reserved for allocations made by device
@@ -175,7 +175,7 @@ Description:
175 175
176What: /sys/power/autosleep 176What: /sys/power/autosleep
177Date: April 2012 177Date: April 2012
178Contact: Rafael J. Wysocki <rjw@sisk.pl> 178Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
179Description: 179Description:
180 The /sys/power/autosleep file can be written one of the strings 180 The /sys/power/autosleep file can be written one of the strings
181 returned by reads from /sys/power/state. If that happens, a 181 returned by reads from /sys/power/state. If that happens, a
@@ -192,7 +192,7 @@ Description:
192 192
193What: /sys/power/wake_lock 193What: /sys/power/wake_lock
194Date: February 2012 194Date: February 2012
195Contact: Rafael J. Wysocki <rjw@sisk.pl> 195Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
196Description: 196Description:
197 The /sys/power/wake_lock file allows user space to create 197 The /sys/power/wake_lock file allows user space to create
198 wakeup source objects and activate them on demand (if one of 198 wakeup source objects and activate them on demand (if one of
@@ -219,7 +219,7 @@ Description:
219 219
220What: /sys/power/wake_unlock 220What: /sys/power/wake_unlock
221Date: February 2012 221Date: February 2012
222Contact: Rafael J. Wysocki <rjw@sisk.pl> 222Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
223Description: 223Description:
224 The /sys/power/wake_unlock file allows user space to deactivate 224 The /sys/power/wake_unlock file allows user space to deactivate
225 wakeup sources created with the help of /sys/power/wake_lock. 225 wakeup sources created with the help of /sys/power/wake_lock.
diff --git a/Documentation/DocBook/80211.tmpl b/Documentation/DocBook/80211.tmpl
index 49267ea97568..f403ec3c5c9a 100644
--- a/Documentation/DocBook/80211.tmpl
+++ b/Documentation/DocBook/80211.tmpl
@@ -325,6 +325,7 @@
325 <title>functions/definitions</title> 325 <title>functions/definitions</title>
326!Finclude/net/mac80211.h ieee80211_rx_status 326!Finclude/net/mac80211.h ieee80211_rx_status
327!Finclude/net/mac80211.h mac80211_rx_flags 327!Finclude/net/mac80211.h mac80211_rx_flags
328!Finclude/net/mac80211.h mac80211_tx_info_flags
328!Finclude/net/mac80211.h mac80211_tx_control_flags 329!Finclude/net/mac80211.h mac80211_tx_control_flags
329!Finclude/net/mac80211.h mac80211_rate_control_flags 330!Finclude/net/mac80211.h mac80211_rate_control_flags
330!Finclude/net/mac80211.h ieee80211_tx_rate 331!Finclude/net/mac80211.h ieee80211_tx_rate
diff --git a/Documentation/DocBook/device-drivers.tmpl b/Documentation/DocBook/device-drivers.tmpl
index fe397f90a34f..6c9d9d37c83a 100644
--- a/Documentation/DocBook/device-drivers.tmpl
+++ b/Documentation/DocBook/device-drivers.tmpl
@@ -87,7 +87,10 @@ X!Iinclude/linux/kobject.h
87!Ekernel/printk/printk.c 87!Ekernel/printk/printk.c
88!Ekernel/panic.c 88!Ekernel/panic.c
89!Ekernel/sys.c 89!Ekernel/sys.c
90!Ekernel/rcupdate.c 90!Ekernel/rcu/srcu.c
91!Ekernel/rcu/tree.c
92!Ekernel/rcu/tree_plugin.h
93!Ekernel/rcu/update.c
91 </sect1> 94 </sect1>
92 95
93 <sect1><title>Device Resource Management</title> 96 <sect1><title>Device Resource Management</title>
diff --git a/Documentation/DocBook/drm.tmpl b/Documentation/DocBook/drm.tmpl
index 7d1278e7a434..ed1d6d289022 100644
--- a/Documentation/DocBook/drm.tmpl
+++ b/Documentation/DocBook/drm.tmpl
@@ -156,13 +156,6 @@
156 </para></listitem> 156 </para></listitem>
157 </varlistentry> 157 </varlistentry>
158 <varlistentry> 158 <varlistentry>
159 <term>DRIVER_USE_MTRR</term>
160 <listitem><para>
161 Driver uses MTRR interface for mapping memory, the DRM core will
162 manage MTRR resources. Deprecated.
163 </para></listitem>
164 </varlistentry>
165 <varlistentry>
166 <term>DRIVER_PCI_DMA</term> 159 <term>DRIVER_PCI_DMA</term>
167 <listitem><para> 160 <listitem><para>
168 Driver is capable of PCI DMA, mapping of PCI DMA buffers to 161 Driver is capable of PCI DMA, mapping of PCI DMA buffers to
@@ -195,28 +188,6 @@
195 </para></listitem> 188 </para></listitem>
196 </varlistentry> 189 </varlistentry>
197 <varlistentry> 190 <varlistentry>
198 <term>DRIVER_IRQ_VBL</term>
199 <listitem><para>Unused. Deprecated.</para></listitem>
200 </varlistentry>
201 <varlistentry>
202 <term>DRIVER_DMA_QUEUE</term>
203 <listitem><para>
204 Should be set if the driver queues DMA requests and completes them
205 asynchronously. Deprecated.
206 </para></listitem>
207 </varlistentry>
208 <varlistentry>
209 <term>DRIVER_FB_DMA</term>
210 <listitem><para>
211 Driver supports DMA to/from the framebuffer, mapping of frambuffer
212 DMA buffers to userspace will be supported. Deprecated.
213 </para></listitem>
214 </varlistentry>
215 <varlistentry>
216 <term>DRIVER_IRQ_VBL2</term>
217 <listitem><para>Unused. Deprecated.</para></listitem>
218 </varlistentry>
219 <varlistentry>
220 <term>DRIVER_GEM</term> 191 <term>DRIVER_GEM</term>
221 <listitem><para> 192 <listitem><para>
222 Driver use the GEM memory manager. 193 Driver use the GEM memory manager.
@@ -234,6 +205,12 @@
234 Driver implements DRM PRIME buffer sharing. 205 Driver implements DRM PRIME buffer sharing.
235 </para></listitem> 206 </para></listitem>
236 </varlistentry> 207 </varlistentry>
208 <varlistentry>
209 <term>DRIVER_RENDER</term>
210 <listitem><para>
211 Driver supports dedicated render nodes.
212 </para></listitem>
213 </varlistentry>
237 </variablelist> 214 </variablelist>
238 </sect3> 215 </sect3>
239 <sect3> 216 <sect3>
@@ -2212,6 +2189,18 @@ void intel_crt_init(struct drm_device *dev)
2212!Iinclude/drm/drm_rect.h 2189!Iinclude/drm/drm_rect.h
2213!Edrivers/gpu/drm/drm_rect.c 2190!Edrivers/gpu/drm/drm_rect.c
2214 </sect2> 2191 </sect2>
2192 <sect2>
2193 <title>Flip-work Helper Reference</title>
2194!Pinclude/drm/drm_flip_work.h flip utils
2195!Iinclude/drm/drm_flip_work.h
2196!Edrivers/gpu/drm/drm_flip_work.c
2197 </sect2>
2198 <sect2>
2199 <title>VMA Offset Manager</title>
2200!Pdrivers/gpu/drm/drm_vma_manager.c vma offset manager
2201!Edrivers/gpu/drm/drm_vma_manager.c
2202!Iinclude/drm/drm_vma_manager.h
2203 </sect2>
2215 </sect1> 2204 </sect1>
2216 2205
2217 <!-- Internals: kms properties --> 2206 <!-- Internals: kms properties -->
@@ -2422,18 +2411,18 @@ void (*postclose) (struct drm_device *, struct drm_file *);</synopsis>
2422 </abstract> 2411 </abstract>
2423 <para> 2412 <para>
2424 The <methodname>firstopen</methodname> method is called by the DRM core 2413 The <methodname>firstopen</methodname> method is called by the DRM core
2425 when an application opens a device that has no other opened file handle. 2414 for legacy UMS (User Mode Setting) drivers only when an application
2426 Similarly the <methodname>lastclose</methodname> method is called when 2415 opens a device that has no other opened file handle. UMS drivers can
2427 the last application holding a file handle opened on the device closes 2416 implement it to acquire device resources. KMS drivers can't use the
2428 it. Both methods are mostly used for UMS (User Mode Setting) drivers to 2417 method and must acquire resources in the <methodname>load</methodname>
2429 acquire and release device resources which should be done in the 2418 method instead.
2430 <methodname>load</methodname> and <methodname>unload</methodname>
2431 methods for KMS drivers.
2432 </para> 2419 </para>
2433 <para> 2420 <para>
2434 Note that the <methodname>lastclose</methodname> method is also called 2421 Similarly the <methodname>lastclose</methodname> method is called when
2435 at module unload time or, for hot-pluggable devices, when the device is 2422 the last application holding a file handle opened on the device closes
2436 unplugged. The <methodname>firstopen</methodname> and 2423 it, for both UMS and KMS drivers. Additionally, the method is also
2424 called at module unload time or, for hot-pluggable devices, when the
2425 device is unplugged. The <methodname>firstopen</methodname> and
2437 <methodname>lastclose</methodname> calls can thus be unbalanced. 2426 <methodname>lastclose</methodname> calls can thus be unbalanced.
2438 </para> 2427 </para>
2439 <para> 2428 <para>
@@ -2462,7 +2451,12 @@ void (*postclose) (struct drm_device *, struct drm_file *);</synopsis>
2462 <para> 2451 <para>
2463 The <methodname>lastclose</methodname> method should restore CRTC and 2452 The <methodname>lastclose</methodname> method should restore CRTC and
2464 plane properties to default value, so that a subsequent open of the 2453 plane properties to default value, so that a subsequent open of the
2465 device will not inherit state from the previous user. 2454 device will not inherit state from the previous user. It can also be
2455 used to execute delayed power switching state changes, e.g. in
2456 conjunction with the vga-switcheroo infrastructure. Beyond that KMS
2457 drivers should not do any further cleanup. Only legacy UMS drivers might
2458 need to clean up device state so that the vga console or an independent
2459 fbdev driver could take over.
2466 </para> 2460 </para>
2467 </sect2> 2461 </sect2>
2468 <sect2> 2462 <sect2>
@@ -2498,7 +2492,6 @@ void (*postclose) (struct drm_device *, struct drm_file *);</synopsis>
2498 <programlisting> 2492 <programlisting>
2499 .poll = drm_poll, 2493 .poll = drm_poll,
2500 .read = drm_read, 2494 .read = drm_read,
2501 .fasync = drm_fasync,
2502 .llseek = no_llseek, 2495 .llseek = no_llseek,
2503 </programlisting> 2496 </programlisting>
2504 </para> 2497 </para>
@@ -2657,6 +2650,69 @@ int (*resume) (struct drm_device *);</synopsis>
2657 info, since man pages should cover the rest. 2650 info, since man pages should cover the rest.
2658 </para> 2651 </para>
2659 2652
2653 <!-- External: render nodes -->
2654
2655 <sect1>
2656 <title>Render nodes</title>
2657 <para>
2658 DRM core provides multiple character-devices for user-space to use.
2659 Depending on which device is opened, user-space can perform a different
2660 set of operations (mainly ioctls). The primary node is always created
2661 and called <term>card&lt;num&gt;</term>. Additionally, a currently
2662 unused control node, called <term>controlD&lt;num&gt;</term> is also
2663 created. The primary node provides all legacy operations and
2664 historically was the only interface used by userspace. With KMS, the
2665 control node was introduced. However, the planned KMS control interface
2666 has never been written and so the control node stays unused to date.
2667 </para>
2668 <para>
2669 With the increased use of offscreen renderers and GPGPU applications,
2670 clients no longer require running compositors or graphics servers to
2671 make use of a GPU. But the DRM API required unprivileged clients to
2672 authenticate to a DRM-Master prior to getting GPU access. To avoid this
2673 step and to grant clients GPU access without authenticating, render
2674 nodes were introduced. Render nodes solely serve render clients, that
2675 is, no modesetting or privileged ioctls can be issued on render nodes.
2676 Only non-global rendering commands are allowed. If a driver supports
2677 render nodes, it must advertise it via the <term>DRIVER_RENDER</term>
2678 DRM driver capability. If not supported, the primary node must be used
2679 for render clients together with the legacy drmAuth authentication
2680 procedure.
2681 </para>
2682 <para>
2683 If a driver advertises render node support, DRM core will create a
2684 separate render node called <term>renderD&lt;num&gt;</term>. There will
2685 be one render node per device. No ioctls except PRIME-related ioctls
2686 will be allowed on this node. Especially <term>GEM_OPEN</term> will be
2687 explicitly prohibited. Render nodes are designed to avoid the
2688 buffer-leaks, which occur if clients guess the flink names or mmap
2689 offsets on the legacy interface. Additionally to this basic interface,
2690 drivers must mark their driver-dependent render-only ioctls as
2691 <term>DRM_RENDER_ALLOW</term> so render clients can use them. Driver
2692 authors must be careful not to allow any privileged ioctls on render
2693 nodes.
2694 </para>
2695 <para>
2696 With render nodes, user-space can now control access to the render node
2697 via basic file-system access-modes. A running graphics server which
2698 authenticates clients on the privileged primary/legacy node is no longer
2699 required. Instead, a client can open the render node and is immediately
2700 granted GPU access. Communication between clients (or servers) is done
2701 via PRIME. FLINK from render node to legacy node is not supported. New
2702 clients must not use the insecure FLINK interface.
2703 </para>
2704 <para>
2705 Besides dropping all modeset/global ioctls, render nodes also drop the
2706 DRM-Master concept. There is no reason to associate render clients with
2707 a DRM-Master as they are independent of any graphics server. Besides,
2708 they must work without any running master, anyway.
2709 Drivers must be able to run without a master object if they support
2710 render nodes. If, on the other hand, a driver requires shared state
2711 between clients which is visible to user-space and accessible beyond
2712 open-file boundaries, they cannot support render nodes.
2713 </para>
2714 </sect1>
2715
2660 <!-- External: vblank handling --> 2716 <!-- External: vblank handling -->
2661 2717
2662 <sect1> 2718 <sect1>
diff --git a/Documentation/DocBook/filesystems.tmpl b/Documentation/DocBook/filesystems.tmpl
index 25b58efd955d..4f676838da06 100644
--- a/Documentation/DocBook/filesystems.tmpl
+++ b/Documentation/DocBook/filesystems.tmpl
@@ -91,7 +91,6 @@
91 <title>The Filesystem for Exporting Kernel Objects</title> 91 <title>The Filesystem for Exporting Kernel Objects</title>
92!Efs/sysfs/file.c 92!Efs/sysfs/file.c
93!Efs/sysfs/symlink.c 93!Efs/sysfs/symlink.c
94!Efs/sysfs/bin.c
95 </chapter> 94 </chapter>
96 95
97 <chapter id="debugfs"> 96 <chapter id="debugfs">
diff --git a/Documentation/DocBook/genericirq.tmpl b/Documentation/DocBook/genericirq.tmpl
index d16d21b7a3b7..46347f603353 100644
--- a/Documentation/DocBook/genericirq.tmpl
+++ b/Documentation/DocBook/genericirq.tmpl
@@ -87,7 +87,7 @@
87 <chapter id="rationale"> 87 <chapter id="rationale">
88 <title>Rationale</title> 88 <title>Rationale</title>
89 <para> 89 <para>
90 The original implementation of interrupt handling in Linux is using 90 The original implementation of interrupt handling in Linux uses
91 the __do_IRQ() super-handler, which is able to deal with every 91 the __do_IRQ() super-handler, which is able to deal with every
92 type of interrupt logic. 92 type of interrupt logic.
93 </para> 93 </para>
@@ -111,19 +111,19 @@
111 </itemizedlist> 111 </itemizedlist>
112 </para> 112 </para>
113 <para> 113 <para>
114 This split implementation of highlevel IRQ handlers allows us to 114 This split implementation of high-level IRQ handlers allows us to
115 optimize the flow of the interrupt handling for each specific 115 optimize the flow of the interrupt handling for each specific
116 interrupt type. This reduces complexity in that particular codepath 116 interrupt type. This reduces complexity in that particular code path
117 and allows the optimized handling of a given type. 117 and allows the optimized handling of a given type.
118 </para> 118 </para>
119 <para> 119 <para>
120 The original general IRQ implementation used hw_interrupt_type 120 The original general IRQ implementation used hw_interrupt_type
121 structures and their ->ack(), ->end() [etc.] callbacks to 121 structures and their ->ack(), ->end() [etc.] callbacks to
122 differentiate the flow control in the super-handler. This leads to 122 differentiate the flow control in the super-handler. This leads to
123 a mix of flow logic and lowlevel hardware logic, and it also leads 123 a mix of flow logic and low-level hardware logic, and it also leads
124 to unnecessary code duplication: for example in i386, there is a 124 to unnecessary code duplication: for example in i386, there is an
125 ioapic_level_irq and a ioapic_edge_irq irq-type which share many 125 ioapic_level_irq and an ioapic_edge_irq IRQ-type which share many
126 of the lowlevel details but have different flow handling. 126 of the low-level details but have different flow handling.
127 </para> 127 </para>
128 <para> 128 <para>
129 A more natural abstraction is the clean separation of the 129 A more natural abstraction is the clean separation of the
@@ -132,23 +132,23 @@
132 <para> 132 <para>
133 Analysing a couple of architecture's IRQ subsystem implementations 133 Analysing a couple of architecture's IRQ subsystem implementations
134 reveals that most of them can use a generic set of 'irq flow' 134 reveals that most of them can use a generic set of 'irq flow'
135 methods and only need to add the chip level specific code. 135 methods and only need to add the chip-level specific code.
136 The separation is also valuable for (sub)architectures 136 The separation is also valuable for (sub)architectures
137 which need specific quirks in the irq flow itself but not in the 137 which need specific quirks in the IRQ flow itself but not in the
138 chip-details - and thus provides a more transparent IRQ subsystem 138 chip details - and thus provides a more transparent IRQ subsystem
139 design. 139 design.
140 </para> 140 </para>
141 <para> 141 <para>
142 Each interrupt descriptor is assigned its own highlevel flow 142 Each interrupt descriptor is assigned its own high-level flow
143 handler, which is normally one of the generic 143 handler, which is normally one of the generic
144 implementations. (This highlevel flow handler implementation also 144 implementations. (This high-level flow handler implementation also
145 makes it simple to provide demultiplexing handlers which can be 145 makes it simple to provide demultiplexing handlers which can be
146 found in embedded platforms on various architectures.) 146 found in embedded platforms on various architectures.)
147 </para> 147 </para>
148 <para> 148 <para>
149 The separation makes the generic interrupt handling layer more 149 The separation makes the generic interrupt handling layer more
150 flexible and extensible. For example, an (sub)architecture can 150 flexible and extensible. For example, an (sub)architecture can
151 use a generic irq-flow implementation for 'level type' interrupts 151 use a generic IRQ-flow implementation for 'level type' interrupts
152 and add a (sub)architecture specific 'edge type' implementation. 152 and add a (sub)architecture specific 'edge type' implementation.
153 </para> 153 </para>
154 <para> 154 <para>
@@ -172,9 +172,9 @@
172 <para> 172 <para>
173 There are three main levels of abstraction in the interrupt code: 173 There are three main levels of abstraction in the interrupt code:
174 <orderedlist> 174 <orderedlist>
175 <listitem><para>Highlevel driver API</para></listitem> 175 <listitem><para>High-level driver API</para></listitem>
176 <listitem><para>Highlevel IRQ flow handlers</para></listitem> 176 <listitem><para>High-level IRQ flow handlers</para></listitem>
177 <listitem><para>Chiplevel hardware encapsulation</para></listitem> 177 <listitem><para>Chip-level hardware encapsulation</para></listitem>
178 </orderedlist> 178 </orderedlist>
179 </para> 179 </para>
180 <sect1 id="Interrupt_control_flow"> 180 <sect1 id="Interrupt_control_flow">
@@ -189,16 +189,16 @@
189 which are assigned to this interrupt. 189 which are assigned to this interrupt.
190 </para> 190 </para>
191 <para> 191 <para>
192 Whenever an interrupt triggers, the lowlevel arch code calls into 192 Whenever an interrupt triggers, the low-level architecture code calls
193 the generic interrupt code by calling desc->handle_irq(). 193 into the generic interrupt code by calling desc->handle_irq().
194 This highlevel IRQ handling function only uses desc->irq_data.chip 194 This high-level IRQ handling function only uses desc->irq_data.chip
195 primitives referenced by the assigned chip descriptor structure. 195 primitives referenced by the assigned chip descriptor structure.
196 </para> 196 </para>
197 </sect1> 197 </sect1>
198 <sect1 id="Highlevel_Driver_API"> 198 <sect1 id="Highlevel_Driver_API">
199 <title>Highlevel Driver API</title> 199 <title>High-level Driver API</title>
200 <para> 200 <para>
201 The highlevel Driver API consists of following functions: 201 The high-level Driver API consists of following functions:
202 <itemizedlist> 202 <itemizedlist>
203 <listitem><para>request_irq()</para></listitem> 203 <listitem><para>request_irq()</para></listitem>
204 <listitem><para>free_irq()</para></listitem> 204 <listitem><para>free_irq()</para></listitem>
@@ -216,7 +216,7 @@
216 </para> 216 </para>
217 </sect1> 217 </sect1>
218 <sect1 id="Highlevel_IRQ_flow_handlers"> 218 <sect1 id="Highlevel_IRQ_flow_handlers">
219 <title>Highlevel IRQ flow handlers</title> 219 <title>High-level IRQ flow handlers</title>
220 <para> 220 <para>
221 The generic layer provides a set of pre-defined irq-flow methods: 221 The generic layer provides a set of pre-defined irq-flow methods:
222 <itemizedlist> 222 <itemizedlist>
@@ -228,7 +228,7 @@
228 <listitem><para>handle_edge_eoi_irq</para></listitem> 228 <listitem><para>handle_edge_eoi_irq</para></listitem>
229 <listitem><para>handle_bad_irq</para></listitem> 229 <listitem><para>handle_bad_irq</para></listitem>
230 </itemizedlist> 230 </itemizedlist>
231 The interrupt flow handlers (either predefined or architecture 231 The interrupt flow handlers (either pre-defined or architecture
232 specific) are assigned to specific interrupts by the architecture 232 specific) are assigned to specific interrupts by the architecture
233 either during bootup or during device initialization. 233 either during bootup or during device initialization.
234 </para> 234 </para>
@@ -297,7 +297,7 @@ desc->irq_data.chip->irq_unmask();
297 <para> 297 <para>
298 handle_fasteoi_irq provides a generic implementation 298 handle_fasteoi_irq provides a generic implementation
299 for interrupts, which only need an EOI at the end of 299 for interrupts, which only need an EOI at the end of
300 the handler 300 the handler.
301 </para> 301 </para>
302 <para> 302 <para>
303 The following control flow is implemented (simplified excerpt): 303 The following control flow is implemented (simplified excerpt):
@@ -394,7 +394,7 @@ if (desc->irq_data.chip->irq_eoi)
394 The generic functions are intended for 'clean' architectures and chips, 394 The generic functions are intended for 'clean' architectures and chips,
395 which have no platform-specific IRQ handling quirks. If an architecture 395 which have no platform-specific IRQ handling quirks. If an architecture
396 needs to implement quirks on the 'flow' level then it can do so by 396 needs to implement quirks on the 'flow' level then it can do so by
397 overriding the highlevel irq-flow handler. 397 overriding the high-level irq-flow handler.
398 </para> 398 </para>
399 </sect2> 399 </sect2>
400 <sect2 id="Delayed_interrupt_disable"> 400 <sect2 id="Delayed_interrupt_disable">
@@ -419,9 +419,9 @@ if (desc->irq_data.chip->irq_eoi)
419 </sect2> 419 </sect2>
420 </sect1> 420 </sect1>
421 <sect1 id="Chiplevel_hardware_encapsulation"> 421 <sect1 id="Chiplevel_hardware_encapsulation">
422 <title>Chiplevel hardware encapsulation</title> 422 <title>Chip-level hardware encapsulation</title>
423 <para> 423 <para>
424 The chip level hardware descriptor structure irq_chip 424 The chip-level hardware descriptor structure irq_chip
425 contains all the direct chip relevant functions, which 425 contains all the direct chip relevant functions, which
426 can be utilized by the irq flow implementations. 426 can be utilized by the irq flow implementations.
427 <itemizedlist> 427 <itemizedlist>
@@ -429,14 +429,14 @@ if (desc->irq_data.chip->irq_eoi)
429 <listitem><para>irq_mask_ack() - Optional, recommended for performance</para></listitem> 429 <listitem><para>irq_mask_ack() - Optional, recommended for performance</para></listitem>
430 <listitem><para>irq_mask()</para></listitem> 430 <listitem><para>irq_mask()</para></listitem>
431 <listitem><para>irq_unmask()</para></listitem> 431 <listitem><para>irq_unmask()</para></listitem>
432 <listitem><para>irq_eoi() - Optional, required for eoi flow handlers</para></listitem> 432 <listitem><para>irq_eoi() - Optional, required for EOI flow handlers</para></listitem>
433 <listitem><para>irq_retrigger() - Optional</para></listitem> 433 <listitem><para>irq_retrigger() - Optional</para></listitem>
434 <listitem><para>irq_set_type() - Optional</para></listitem> 434 <listitem><para>irq_set_type() - Optional</para></listitem>
435 <listitem><para>irq_set_wake() - Optional</para></listitem> 435 <listitem><para>irq_set_wake() - Optional</para></listitem>
436 </itemizedlist> 436 </itemizedlist>
437 These primitives are strictly intended to mean what they say: ack means 437 These primitives are strictly intended to mean what they say: ack means
438 ACK, masking means masking of an IRQ line, etc. It is up to the flow 438 ACK, masking means masking of an IRQ line, etc. It is up to the flow
439 handler(s) to use these basic units of lowlevel functionality. 439 handler(s) to use these basic units of low-level functionality.
440 </para> 440 </para>
441 </sect1> 441 </sect1>
442 </chapter> 442 </chapter>
@@ -445,7 +445,7 @@ if (desc->irq_data.chip->irq_eoi)
445 <title>__do_IRQ entry point</title> 445 <title>__do_IRQ entry point</title>
446 <para> 446 <para>
447 The original implementation __do_IRQ() was an alternative entry 447 The original implementation __do_IRQ() was an alternative entry
448 point for all types of interrupts. It not longer exists. 448 point for all types of interrupts. It no longer exists.
449 </para> 449 </para>
450 <para> 450 <para>
451 This handler turned out to be not suitable for all 451 This handler turned out to be not suitable for all
@@ -468,11 +468,11 @@ if (desc->irq_data.chip->irq_eoi)
468 <chapter id="genericchip"> 468 <chapter id="genericchip">
469 <title>Generic interrupt chip</title> 469 <title>Generic interrupt chip</title>
470 <para> 470 <para>
471 To avoid copies of identical implementations of irq chips the 471 To avoid copies of identical implementations of IRQ chips the
472 core provides a configurable generic interrupt chip 472 core provides a configurable generic interrupt chip
473 implementation. Developers should check carefuly whether the 473 implementation. Developers should check carefuly whether the
474 generic chip fits their needs before implementing the same 474 generic chip fits their needs before implementing the same
475 functionality slightly different themself. 475 functionality slightly differently themselves.
476 </para> 476 </para>
477!Ekernel/irq/generic-chip.c 477!Ekernel/irq/generic-chip.c
478 </chapter> 478 </chapter>
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml
index c2fc9ec1417e..7a3b49b3cc3b 100644
--- a/Documentation/DocBook/media/v4l/controls.xml
+++ b/Documentation/DocBook/media/v4l/controls.xml
@@ -722,17 +722,22 @@ for more details.</para>
722 </section> 722 </section>
723 723
724 <section id="mpeg-controls"> 724 <section id="mpeg-controls">
725 <title>MPEG Control Reference</title> 725 <title>Codec Control Reference</title>
726 726
727 <para>Below all controls within the MPEG control class are 727 <para>Below all controls within the Codec control class are
728described. First the generic controls, then controls specific for 728described. First the generic controls, then controls specific for
729certain hardware.</para> 729certain hardware.</para>
730 730
731 <para>Note: These controls are applicable to all codecs and
732not just MPEG. The defines are prefixed with V4L2_CID_MPEG/V4L2_MPEG
733as the controls were originally made for MPEG codecs and later
734extended to cover all encoding formats.</para>
735
731 <section> 736 <section>
732 <title>Generic MPEG Controls</title> 737 <title>Generic Codec Controls</title>
733 738
734 <table pgwide="1" frame="none" id="mpeg-control-id"> 739 <table pgwide="1" frame="none" id="mpeg-control-id">
735 <title>MPEG Control IDs</title> 740 <title>Codec Control IDs</title>
736 <tgroup cols="4"> 741 <tgroup cols="4">
737 <colspec colname="c1" colwidth="1*" /> 742 <colspec colname="c1" colwidth="1*" />
738 <colspec colname="c2" colwidth="6*" /> 743 <colspec colname="c2" colwidth="6*" />
@@ -752,7 +757,7 @@ certain hardware.</para>
752 <row> 757 <row>
753 <entry spanname="id"><constant>V4L2_CID_MPEG_CLASS</constant>&nbsp;</entry> 758 <entry spanname="id"><constant>V4L2_CID_MPEG_CLASS</constant>&nbsp;</entry>
754 <entry>class</entry> 759 <entry>class</entry>
755 </row><row><entry spanname="descr">The MPEG class 760 </row><row><entry spanname="descr">The Codec class
756descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a 761descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a
757description of this control class. This description can be used as the 762description of this control class. This description can be used as the
758caption of a Tab page in a GUI, for example.</entry> 763caption of a Tab page in a GUI, for example.</entry>
@@ -3009,6 +3014,159 @@ in by the application. 0 = do not insert, 1 = insert packets.</entry>
3009 </tgroup> 3014 </tgroup>
3010 </table> 3015 </table>
3011 </section> 3016 </section>
3017
3018 <section>
3019 <title>VPX Control Reference</title>
3020
3021 <para>The VPX controls include controls for encoding parameters
3022 of VPx video codec.</para>
3023
3024 <table pgwide="1" frame="none" id="vpx-control-id">
3025 <title>VPX Control IDs</title>
3026
3027 <tgroup cols="4">
3028 <colspec colname="c1" colwidth="1*" />
3029 <colspec colname="c2" colwidth="6*" />
3030 <colspec colname="c3" colwidth="2*" />
3031 <colspec colname="c4" colwidth="6*" />
3032 <spanspec namest="c1" nameend="c2" spanname="id" />
3033 <spanspec namest="c2" nameend="c4" spanname="descr" />
3034 <thead>
3035 <row>
3036 <entry spanname="id" align="left">ID</entry>
3037 <entry align="left">Type</entry>
3038 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
3039 </row>
3040 </thead>
3041 <tbody valign="top">
3042 <row><entry></entry></row>
3043
3044 <row><entry></entry></row>
3045 <row id="v4l2-vpx-num-partitions">
3046 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS</constant></entry>
3047 <entry>enum v4l2_vp8_num_partitions</entry>
3048 </row>
3049 <row><entry spanname="descr">The number of token partitions to use in VP8 encoder.
3050Possible values are:</entry>
3051 </row>
3052 <row>
3053 <entrytbl spanname="descr" cols="2">
3054 <tbody valign="top">
3055 <row>
3056 <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_1_PARTITION</constant></entry>
3057 <entry>1 coefficient partition</entry>
3058 </row>
3059 <row>
3060 <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_2_PARTITIONS</constant></entry>
3061 <entry>2 coefficient partitions</entry>
3062 </row>
3063 <row>
3064 <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_4_PARTITIONS</constant></entry>
3065 <entry>4 coefficient partitions</entry>
3066 </row>
3067 <row>
3068 <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_8_PARTITIONS</constant></entry>
3069 <entry>8 coefficient partitions</entry>
3070 </row>
3071 </tbody>
3072 </entrytbl>
3073 </row>
3074
3075 <row><entry></entry></row>
3076 <row>
3077 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4</constant></entry>
3078 <entry>boolean</entry>
3079 </row>
3080 <row><entry spanname="descr">Setting this prevents intra 4x4 mode in the intra mode decision.</entry>
3081 </row>
3082
3083 <row><entry></entry></row>
3084 <row id="v4l2-vpx-num-ref-frames">
3085 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES</constant></entry>
3086 <entry>enum v4l2_vp8_num_ref_frames</entry>
3087 </row>
3088 <row><entry spanname="descr">The number of reference pictures for encoding P frames.
3089Possible values are:</entry>
3090 </row>
3091 <row>
3092 <entrytbl spanname="descr" cols="2">
3093 <tbody valign="top">
3094 <row>
3095 <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_1_REF_FRAME</constant></entry>
3096 <entry>Last encoded frame will be searched</entry>
3097 </row>
3098 <row>
3099 <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_2_REF_FRAME</constant></entry>
3100 <entry>Two frames will be searched among the last encoded frame, the golden frame
3101and the alternate reference (altref) frame. The encoder implementation will decide which two are chosen.</entry>
3102 </row>
3103 <row>
3104 <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME</constant></entry>
3105 <entry>The last encoded frame, the golden frame and the altref frame will be searched.</entry>
3106 </row>
3107 </tbody>
3108 </entrytbl>
3109 </row>
3110
3111 <row><entry></entry></row>
3112 <row>
3113 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL</constant></entry>
3114 <entry>integer</entry>
3115 </row>
3116 <row><entry spanname="descr">Indicates the loop filter level. The adjustment of the loop
3117filter level is done via a delta value against a baseline loop filter value.</entry>
3118 </row>
3119
3120 <row><entry></entry></row>
3121 <row>
3122 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS</constant></entry>
3123 <entry>integer</entry>
3124 </row>
3125 <row><entry spanname="descr">This parameter affects the loop filter. Anything above
3126zero weakens the deblocking effect on the loop filter.</entry>
3127 </row>
3128
3129 <row><entry></entry></row>
3130 <row>
3131 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD</constant></entry>
3132 <entry>integer</entry>
3133 </row>
3134 <row><entry spanname="descr">Sets the refresh period for the golden frame. The period is defined
3135in number of frames. For a value of 'n', every nth frame starting from the first key frame will be taken as a golden frame.
3136For eg. for encoding sequence of 0, 1, 2, 3, 4, 5, 6, 7 where the golden frame refresh period is set as 4, the frames
31370, 4, 8 etc will be taken as the golden frames as frame 0 is always a key frame.</entry>
3138 </row>
3139
3140 <row><entry></entry></row>
3141 <row id="v4l2-vpx-golden-frame-sel">
3142 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL</constant></entry>
3143 <entry>enum v4l2_vp8_golden_frame_sel</entry>
3144 </row>
3145 <row><entry spanname="descr">Selects the golden frame for encoding.
3146Possible values are:</entry>
3147 </row>
3148 <row>
3149 <entrytbl spanname="descr" cols="2">
3150 <tbody valign="top">
3151 <row>
3152 <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV</constant></entry>
3153 <entry>Use the (n-2)th frame as a golden frame, current frame index being 'n'.</entry>
3154 </row>
3155 <row>
3156 <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD</constant></entry>
3157 <entry>Use the previous specific frame indicated by
3158V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD as a golden frame.</entry>
3159 </row>
3160 </tbody>
3161 </entrytbl>
3162 </row>
3163
3164 <row><entry></entry></row>
3165 </tbody>
3166 </tgroup>
3167 </table>
3168
3169 </section>
3012 </section> 3170 </section>
3013 3171
3014 <section id="camera-controls"> 3172 <section id="camera-controls">
diff --git a/Documentation/DocBook/media/v4l/lirc_device_interface.xml b/Documentation/DocBook/media/v4l/lirc_device_interface.xml
index 8d7eb6bf6312..34cada2ca710 100644
--- a/Documentation/DocBook/media/v4l/lirc_device_interface.xml
+++ b/Documentation/DocBook/media/v4l/lirc_device_interface.xml
@@ -46,7 +46,9 @@ describing an IR signal are read from the chardev.</para>
46values. Pulses and spaces are only marked implicitly by their position. The 46values. Pulses and spaces are only marked implicitly by their position. The
47data must start and end with a pulse, therefore, the data must always include 47data must start and end with a pulse, therefore, the data must always include
48an uneven number of samples. The write function must block until the data has 48an uneven number of samples. The write function must block until the data has
49been transmitted by the hardware.</para> 49been transmitted by the hardware. If more data is provided than the hardware
50can send, the driver returns EINVAL.</para>
51
50</section> 52</section>
51 53
52<section id="lirc_ioctl"> 54<section id="lirc_ioctl">
diff --git a/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml b/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml
new file mode 100644
index 000000000000..c51d5a4cda09
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml
@@ -0,0 +1,171 @@
1 <refentry>
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_NV16M ('NM16'), V4L2_PIX_FMT_NV61M ('NM61')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname id="V4L2-PIX-FMT-NV16M"><constant>V4L2_PIX_FMT_NV16M</constant></refname>
8 <refname id="V4L2-PIX-FMT-NV61M"><constant>V4L2_PIX_FMT_NV61M</constant></refname>
9 <refpurpose>Variation of <constant>V4L2_PIX_FMT_NV16</constant> and <constant>V4L2_PIX_FMT_NV61</constant> with planes
10 non contiguous in memory. </refpurpose>
11 </refnamediv>
12 <refsect1>
13 <title>Description</title>
14
15 <para>This is a multi-planar, two-plane version of the YUV 4:2:0 format.
16The three components are separated into two sub-images or planes.
17<constant>V4L2_PIX_FMT_NV16M</constant> differs from <constant>V4L2_PIX_FMT_NV16
18</constant> in that the two planes are non-contiguous in memory, i.e. the chroma
19plane does not necessarily immediately follows the luma plane.
20The luminance data occupies the first plane. The Y plane has one byte per pixel.
21In the second plane there is chrominance data with alternating chroma samples.
22The CbCr plane is the same width and height, in bytes, as the Y plane.
23Each CbCr pair belongs to four pixels. For example,
24Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to
25Y'<subscript>00</subscript>, Y'<subscript>01</subscript>,
26Y'<subscript>10</subscript>, Y'<subscript>11</subscript>.
27<constant>V4L2_PIX_FMT_NV61M</constant> is the same as <constant>V4L2_PIX_FMT_NV16M</constant>
28except the Cb and Cr bytes are swapped, the CrCb plane starts with a Cr byte.</para>
29
30 <para><constant>V4L2_PIX_FMT_NV16M</constant> and
31<constant>V4L2_PIX_FMT_NV61M</constant> are intended to be used only in drivers
32and applications that support the multi-planar API, described in
33<xref linkend="planar-apis"/>. </para>
34
35 <example>
36 <title><constant>V4L2_PIX_FMT_NV16M</constant> 4 &times; 4 pixel image</title>
37
38 <formalpara>
39 <title>Byte Order.</title>
40 <para>Each cell is one byte.
41 <informaltable frame="none">
42 <tgroup cols="5" align="center">
43 <colspec align="left" colwidth="2*" />
44 <tbody valign="top">
45 <row>
46 <entry>start0&nbsp;+&nbsp;0:</entry>
47 <entry>Y'<subscript>00</subscript></entry>
48 <entry>Y'<subscript>01</subscript></entry>
49 <entry>Y'<subscript>02</subscript></entry>
50 <entry>Y'<subscript>03</subscript></entry>
51 </row>
52 <row>
53 <entry>start0&nbsp;+&nbsp;4:</entry>
54 <entry>Y'<subscript>10</subscript></entry>
55 <entry>Y'<subscript>11</subscript></entry>
56 <entry>Y'<subscript>12</subscript></entry>
57 <entry>Y'<subscript>13</subscript></entry>
58 </row>
59 <row>
60 <entry>start0&nbsp;+&nbsp;8:</entry>
61 <entry>Y'<subscript>20</subscript></entry>
62 <entry>Y'<subscript>21</subscript></entry>
63 <entry>Y'<subscript>22</subscript></entry>
64 <entry>Y'<subscript>23</subscript></entry>
65 </row>
66 <row>
67 <entry>start0&nbsp;+&nbsp;12:</entry>
68 <entry>Y'<subscript>30</subscript></entry>
69 <entry>Y'<subscript>31</subscript></entry>
70 <entry>Y'<subscript>32</subscript></entry>
71 <entry>Y'<subscript>33</subscript></entry>
72 </row>
73 <row>
74 <entry></entry>
75 </row>
76 <row>
77 <entry>start1&nbsp;+&nbsp;0:</entry>
78 <entry>Cb<subscript>00</subscript></entry>
79 <entry>Cr<subscript>00</subscript></entry>
80 <entry>Cb<subscript>02</subscript></entry>
81 <entry>Cr<subscript>02</subscript></entry>
82 </row>
83 <row>
84 <entry>start1&nbsp;+&nbsp;4:</entry>
85 <entry>Cb<subscript>10</subscript></entry>
86 <entry>Cr<subscript>10</subscript></entry>
87 <entry>Cb<subscript>12</subscript></entry>
88 <entry>Cr<subscript>12</subscript></entry>
89 </row>
90 <row>
91 <entry>start1&nbsp;+&nbsp;8:</entry>
92 <entry>Cb<subscript>20</subscript></entry>
93 <entry>Cr<subscript>20</subscript></entry>
94 <entry>Cb<subscript>22</subscript></entry>
95 <entry>Cr<subscript>22</subscript></entry>
96 </row>
97 <row>
98 <entry>start1&nbsp;+&nbsp;12:</entry>
99 <entry>Cb<subscript>30</subscript></entry>
100 <entry>Cr<subscript>30</subscript></entry>
101 <entry>Cb<subscript>32</subscript></entry>
102 <entry>Cr<subscript>32</subscript></entry>
103 </row>
104 </tbody>
105 </tgroup>
106 </informaltable>
107 </para>
108 </formalpara>
109
110 <formalpara>
111 <title>Color Sample Location.</title>
112 <para>
113 <informaltable frame="none">
114 <tgroup cols="7" align="center">
115 <tbody valign="top">
116 <row>
117 <entry></entry>
118 <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
119 <entry>2</entry><entry></entry><entry>3</entry>
120 </row>
121 <row>
122 <entry>0</entry>
123 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
124 <entry>Y</entry><entry></entry><entry>Y</entry>
125 </row>
126 <row>
127 <entry></entry>
128 <entry></entry><entry>C</entry><entry></entry><entry></entry>
129 <entry></entry><entry>C</entry><entry></entry>
130 </row>
131 <row>
132 <entry>1</entry>
133 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
134 <entry>Y</entry><entry></entry><entry>Y</entry>
135 </row>
136 <row>
137 <entry></entry>
138 <entry></entry><entry>C</entry><entry></entry><entry></entry>
139 <entry></entry><entry>C</entry><entry></entry>
140 </row>
141 <row>
142 <entry></entry>
143 </row>
144 <row>
145 <entry>2</entry>
146 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
147 <entry>Y</entry><entry></entry><entry>Y</entry>
148 </row>
149 <row>
150 <entry></entry>
151 <entry></entry><entry>C</entry><entry></entry><entry></entry>
152 <entry></entry><entry>C</entry><entry></entry>
153 </row>
154 <row>
155 <entry>3</entry>
156 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
157 <entry>Y</entry><entry></entry><entry>Y</entry>
158 </row>
159 <row>
160 <entry></entry>
161 <entry></entry><entry>C</entry><entry></entry><entry></entry>
162 <entry></entry><entry>C</entry><entry></entry>
163 </row>
164 </tbody>
165 </tgroup>
166 </informaltable>
167 </para>
168 </formalpara>
169 </example>
170 </refsect1>
171 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml
index 99b8d2ad6e4f..72d72bd67d0a 100644
--- a/Documentation/DocBook/media/v4l/pixfmt.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt.xml
@@ -391,9 +391,9 @@ clamp (double x)
391 else return r; 391 else return r;
392} 392}
393 393
394y1 = (255 / 219.0) * (Y1 - 16); 394y1 = (Y1 - 16) / 219.0;
395pb = (255 / 224.0) * (Cb - 128); 395pb = (Cb - 128) / 224.0;
396pr = (255 / 224.0) * (Cr - 128); 396pr = (Cr - 128) / 224.0;
397 397
398r = 1.0 * y1 + 0 * pb + 1.402 * pr; 398r = 1.0 * y1 + 0 * pb + 1.402 * pr;
399g = 1.0 * y1 - 0.344 * pb - 0.714 * pr; 399g = 1.0 * y1 - 0.344 * pb - 0.714 * pr;
@@ -718,6 +718,7 @@ information.</para>
718 &sub-nv12m; 718 &sub-nv12m;
719 &sub-nv12mt; 719 &sub-nv12mt;
720 &sub-nv16; 720 &sub-nv16;
721 &sub-nv16m;
721 &sub-nv24; 722 &sub-nv24;
722 &sub-m420; 723 &sub-m420;
723 </section> 724 </section>
diff --git a/Documentation/DocBook/media/v4l/subdev-formats.xml b/Documentation/DocBook/media/v4l/subdev-formats.xml
index adc61982df7b..f72c1cc93a9b 100644
--- a/Documentation/DocBook/media/v4l/subdev-formats.xml
+++ b/Documentation/DocBook/media/v4l/subdev-formats.xml
@@ -97,31 +97,39 @@
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="b23" align="center" /> 100 <colspec colnum="4" colname="b31" align="center" />
101 <colspec colnum="5" colname="b22" align="center" /> 101 <colspec colnum="5" colname="b20" align="center" />
102 <colspec colnum="6" colname="b21" align="center" /> 102 <colspec colnum="6" colname="b29" align="center" />
103 <colspec colnum="7" colname="b20" align="center" /> 103 <colspec colnum="7" colname="b28" align="center" />
104 <colspec colnum="8" colname="b19" align="center" /> 104 <colspec colnum="8" colname="b27" align="center" />
105 <colspec colnum="9" colname="b18" align="center" /> 105 <colspec colnum="9" colname="b26" align="center" />
106 <colspec colnum="10" colname="b17" align="center" /> 106 <colspec colnum="10" colname="b25" align="center" />
107 <colspec colnum="11" colname="b16" align="center" /> 107 <colspec colnum="11" colname="b24" align="center" />
108 <colspec colnum="12" colname="b15" align="center" /> 108 <colspec colnum="12" colname="b23" align="center" />
109 <colspec colnum="13" colname="b14" align="center" /> 109 <colspec colnum="13" colname="b22" align="center" />
110 <colspec colnum="14" colname="b13" align="center" /> 110 <colspec colnum="14" colname="b21" align="center" />
111 <colspec colnum="15" colname="b12" align="center" /> 111 <colspec colnum="15" colname="b20" align="center" />
112 <colspec colnum="16" colname="b11" align="center" /> 112 <colspec colnum="16" colname="b19" align="center" />
113 <colspec colnum="17" colname="b10" align="center" /> 113 <colspec colnum="17" colname="b18" align="center" />
114 <colspec colnum="18" colname="b09" align="center" /> 114 <colspec colnum="18" colname="b17" align="center" />
115 <colspec colnum="19" colname="b08" align="center" /> 115 <colspec colnum="19" colname="b16" align="center" />
116 <colspec colnum="20" colname="b07" align="center" /> 116 <colspec colnum="20" colname="b15" align="center" />
117 <colspec colnum="21" colname="b06" align="center" /> 117 <colspec colnum="21" colname="b14" align="center" />
118 <colspec colnum="22" colname="b05" align="center" /> 118 <colspec colnum="22" colname="b13" align="center" />
119 <colspec colnum="23" colname="b04" align="center" /> 119 <colspec colnum="23" colname="b12" align="center" />
120 <colspec colnum="24" colname="b03" align="center" /> 120 <colspec colnum="24" colname="b11" align="center" />
121 <colspec colnum="25" colname="b02" align="center" /> 121 <colspec colnum="25" colname="b10" align="center" />
122 <colspec colnum="26" colname="b01" align="center" /> 122 <colspec colnum="26" colname="b09" align="center" />
123 <colspec colnum="27" colname="b00" align="center" /> 123 <colspec colnum="27" colname="b08" align="center" />
124 <spanspec namest="b23" nameend="b00" spanname="b0" /> 124 <colspec colnum="28" colname="b07" align="center" />
125 <colspec colnum="29" colname="b06" align="center" />
126 <colspec colnum="30" colname="b05" align="center" />
127 <colspec colnum="31" colname="b04" align="center" />
128 <colspec colnum="32" colname="b03" align="center" />
129 <colspec colnum="33" colname="b02" align="center" />
130 <colspec colnum="34" colname="b01" align="center" />
131 <colspec colnum="35" colname="b00" align="center" />
132 <spanspec namest="b31" nameend="b00" spanname="b0" />
125 <thead> 133 <thead>
126 <row> 134 <row>
127 <entry>Identifier</entry> 135 <entry>Identifier</entry>
@@ -133,6 +141,14 @@
133 <entry></entry> 141 <entry></entry>
134 <entry></entry> 142 <entry></entry>
135 <entry>Bit</entry> 143 <entry>Bit</entry>
144 <entry>31</entry>
145 <entry>30</entry>
146 <entry>29</entry>
147 <entry>28</entry>
148 <entry>27</entry>
149 <entry>26</entry>
150 <entry>25</entry>
151 <entry>24</entry>
136 <entry>23</entry> 152 <entry>23</entry>
137 <entry>22</entry> 153 <entry>22</entry>
138 <entry>21</entry> 154 <entry>21</entry>
@@ -164,7 +180,7 @@
164 <entry>V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE</entry> 180 <entry>V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE</entry>
165 <entry>0x1001</entry> 181 <entry>0x1001</entry>
166 <entry></entry> 182 <entry></entry>
167 &dash-ent-16; 183 &dash-ent-24;
168 <entry>0</entry> 184 <entry>0</entry>
169 <entry>0</entry> 185 <entry>0</entry>
170 <entry>0</entry> 186 <entry>0</entry>
@@ -178,7 +194,7 @@
178 <entry></entry> 194 <entry></entry>
179 <entry></entry> 195 <entry></entry>
180 <entry></entry> 196 <entry></entry>
181 &dash-ent-16; 197 &dash-ent-24;
182 <entry>g<subscript>3</subscript></entry> 198 <entry>g<subscript>3</subscript></entry>
183 <entry>g<subscript>2</subscript></entry> 199 <entry>g<subscript>2</subscript></entry>
184 <entry>g<subscript>1</subscript></entry> 200 <entry>g<subscript>1</subscript></entry>
@@ -192,7 +208,7 @@
192 <entry>V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE</entry> 208 <entry>V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE</entry>
193 <entry>0x1002</entry> 209 <entry>0x1002</entry>
194 <entry></entry> 210 <entry></entry>
195 &dash-ent-16; 211 &dash-ent-24;
196 <entry>g<subscript>3</subscript></entry> 212 <entry>g<subscript>3</subscript></entry>
197 <entry>g<subscript>2</subscript></entry> 213 <entry>g<subscript>2</subscript></entry>
198 <entry>g<subscript>1</subscript></entry> 214 <entry>g<subscript>1</subscript></entry>
@@ -206,7 +222,7 @@
206 <entry></entry> 222 <entry></entry>
207 <entry></entry> 223 <entry></entry>
208 <entry></entry> 224 <entry></entry>
209 &dash-ent-16; 225 &dash-ent-24;
210 <entry>0</entry> 226 <entry>0</entry>
211 <entry>0</entry> 227 <entry>0</entry>
212 <entry>0</entry> 228 <entry>0</entry>
@@ -220,7 +236,7 @@
220 <entry>V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE</entry> 236 <entry>V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE</entry>
221 <entry>0x1003</entry> 237 <entry>0x1003</entry>
222 <entry></entry> 238 <entry></entry>
223 &dash-ent-16; 239 &dash-ent-24;
224 <entry>0</entry> 240 <entry>0</entry>
225 <entry>r<subscript>4</subscript></entry> 241 <entry>r<subscript>4</subscript></entry>
226 <entry>r<subscript>3</subscript></entry> 242 <entry>r<subscript>3</subscript></entry>
@@ -234,7 +250,7 @@
234 <entry></entry> 250 <entry></entry>
235 <entry></entry> 251 <entry></entry>
236 <entry></entry> 252 <entry></entry>
237 &dash-ent-16; 253 &dash-ent-24;
238 <entry>g<subscript>2</subscript></entry> 254 <entry>g<subscript>2</subscript></entry>
239 <entry>g<subscript>1</subscript></entry> 255 <entry>g<subscript>1</subscript></entry>
240 <entry>g<subscript>0</subscript></entry> 256 <entry>g<subscript>0</subscript></entry>
@@ -248,7 +264,7 @@
248 <entry>V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE</entry> 264 <entry>V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE</entry>
249 <entry>0x1004</entry> 265 <entry>0x1004</entry>
250 <entry></entry> 266 <entry></entry>
251 &dash-ent-16; 267 &dash-ent-24;
252 <entry>g<subscript>2</subscript></entry> 268 <entry>g<subscript>2</subscript></entry>
253 <entry>g<subscript>1</subscript></entry> 269 <entry>g<subscript>1</subscript></entry>
254 <entry>g<subscript>0</subscript></entry> 270 <entry>g<subscript>0</subscript></entry>
@@ -262,7 +278,7 @@
262 <entry></entry> 278 <entry></entry>
263 <entry></entry> 279 <entry></entry>
264 <entry></entry> 280 <entry></entry>
265 &dash-ent-16; 281 &dash-ent-24;
266 <entry>0</entry> 282 <entry>0</entry>
267 <entry>r<subscript>4</subscript></entry> 283 <entry>r<subscript>4</subscript></entry>
268 <entry>r<subscript>3</subscript></entry> 284 <entry>r<subscript>3</subscript></entry>
@@ -276,7 +292,7 @@
276 <entry>V4L2_MBUS_FMT_BGR565_2X8_BE</entry> 292 <entry>V4L2_MBUS_FMT_BGR565_2X8_BE</entry>
277 <entry>0x1005</entry> 293 <entry>0x1005</entry>
278 <entry></entry> 294 <entry></entry>
279 &dash-ent-16; 295 &dash-ent-24;
280 <entry>b<subscript>4</subscript></entry> 296 <entry>b<subscript>4</subscript></entry>
281 <entry>b<subscript>3</subscript></entry> 297 <entry>b<subscript>3</subscript></entry>
282 <entry>b<subscript>2</subscript></entry> 298 <entry>b<subscript>2</subscript></entry>
@@ -290,7 +306,7 @@
290 <entry></entry> 306 <entry></entry>
291 <entry></entry> 307 <entry></entry>
292 <entry></entry> 308 <entry></entry>
293 &dash-ent-16; 309 &dash-ent-24;
294 <entry>g<subscript>2</subscript></entry> 310 <entry>g<subscript>2</subscript></entry>
295 <entry>g<subscript>1</subscript></entry> 311 <entry>g<subscript>1</subscript></entry>
296 <entry>g<subscript>0</subscript></entry> 312 <entry>g<subscript>0</subscript></entry>
@@ -304,7 +320,7 @@
304 <entry>V4L2_MBUS_FMT_BGR565_2X8_LE</entry> 320 <entry>V4L2_MBUS_FMT_BGR565_2X8_LE</entry>
305 <entry>0x1006</entry> 321 <entry>0x1006</entry>
306 <entry></entry> 322 <entry></entry>
307 &dash-ent-16; 323 &dash-ent-24;
308 <entry>g<subscript>2</subscript></entry> 324 <entry>g<subscript>2</subscript></entry>
309 <entry>g<subscript>1</subscript></entry> 325 <entry>g<subscript>1</subscript></entry>
310 <entry>g<subscript>0</subscript></entry> 326 <entry>g<subscript>0</subscript></entry>
@@ -318,7 +334,7 @@
318 <entry></entry> 334 <entry></entry>
319 <entry></entry> 335 <entry></entry>
320 <entry></entry> 336 <entry></entry>
321 &dash-ent-16; 337 &dash-ent-24;
322 <entry>b<subscript>4</subscript></entry> 338 <entry>b<subscript>4</subscript></entry>
323 <entry>b<subscript>3</subscript></entry> 339 <entry>b<subscript>3</subscript></entry>
324 <entry>b<subscript>2</subscript></entry> 340 <entry>b<subscript>2</subscript></entry>
@@ -332,7 +348,7 @@
332 <entry>V4L2_MBUS_FMT_RGB565_2X8_BE</entry> 348 <entry>V4L2_MBUS_FMT_RGB565_2X8_BE</entry>
333 <entry>0x1007</entry> 349 <entry>0x1007</entry>
334 <entry></entry> 350 <entry></entry>
335 &dash-ent-16; 351 &dash-ent-24;
336 <entry>r<subscript>4</subscript></entry> 352 <entry>r<subscript>4</subscript></entry>
337 <entry>r<subscript>3</subscript></entry> 353 <entry>r<subscript>3</subscript></entry>
338 <entry>r<subscript>2</subscript></entry> 354 <entry>r<subscript>2</subscript></entry>
@@ -346,7 +362,7 @@
346 <entry></entry> 362 <entry></entry>
347 <entry></entry> 363 <entry></entry>
348 <entry></entry> 364 <entry></entry>
349 &dash-ent-16; 365 &dash-ent-24;
350 <entry>g<subscript>2</subscript></entry> 366 <entry>g<subscript>2</subscript></entry>
351 <entry>g<subscript>1</subscript></entry> 367 <entry>g<subscript>1</subscript></entry>
352 <entry>g<subscript>0</subscript></entry> 368 <entry>g<subscript>0</subscript></entry>
@@ -360,7 +376,7 @@
360 <entry>V4L2_MBUS_FMT_RGB565_2X8_LE</entry> 376 <entry>V4L2_MBUS_FMT_RGB565_2X8_LE</entry>
361 <entry>0x1008</entry> 377 <entry>0x1008</entry>
362 <entry></entry> 378 <entry></entry>
363 &dash-ent-16; 379 &dash-ent-24;
364 <entry>g<subscript>2</subscript></entry> 380 <entry>g<subscript>2</subscript></entry>
365 <entry>g<subscript>1</subscript></entry> 381 <entry>g<subscript>1</subscript></entry>
366 <entry>g<subscript>0</subscript></entry> 382 <entry>g<subscript>0</subscript></entry>
@@ -374,7 +390,7 @@
374 <entry></entry> 390 <entry></entry>
375 <entry></entry> 391 <entry></entry>
376 <entry></entry> 392 <entry></entry>
377 &dash-ent-16; 393 &dash-ent-24;
378 <entry>r<subscript>4</subscript></entry> 394 <entry>r<subscript>4</subscript></entry>
379 <entry>r<subscript>3</subscript></entry> 395 <entry>r<subscript>3</subscript></entry>
380 <entry>r<subscript>2</subscript></entry> 396 <entry>r<subscript>2</subscript></entry>
@@ -388,12 +404,7 @@
388 <entry>V4L2_MBUS_FMT_RGB666_1X18</entry> 404 <entry>V4L2_MBUS_FMT_RGB666_1X18</entry>
389 <entry>0x1009</entry> 405 <entry>0x1009</entry>
390 <entry></entry> 406 <entry></entry>
391 <entry>-</entry> 407 &dash-ent-14;
392 <entry>-</entry>
393 <entry>-</entry>
394 <entry>-</entry>
395 <entry>-</entry>
396 <entry>-</entry>
397 <entry>r<subscript>5</subscript></entry> 408 <entry>r<subscript>5</subscript></entry>
398 <entry>r<subscript>4</subscript></entry> 409 <entry>r<subscript>4</subscript></entry>
399 <entry>r<subscript>3</subscript></entry> 410 <entry>r<subscript>3</subscript></entry>
@@ -417,6 +428,7 @@
417 <entry>V4L2_MBUS_FMT_RGB888_1X24</entry> 428 <entry>V4L2_MBUS_FMT_RGB888_1X24</entry>
418 <entry>0x100a</entry> 429 <entry>0x100a</entry>
419 <entry></entry> 430 <entry></entry>
431 &dash-ent-8;
420 <entry>r<subscript>7</subscript></entry> 432 <entry>r<subscript>7</subscript></entry>
421 <entry>r<subscript>6</subscript></entry> 433 <entry>r<subscript>6</subscript></entry>
422 <entry>r<subscript>5</subscript></entry> 434 <entry>r<subscript>5</subscript></entry>
@@ -446,9 +458,7 @@
446 <entry>V4L2_MBUS_FMT_RGB888_2X12_BE</entry> 458 <entry>V4L2_MBUS_FMT_RGB888_2X12_BE</entry>
447 <entry>0x100b</entry> 459 <entry>0x100b</entry>
448 <entry></entry> 460 <entry></entry>
449 &dash-ent-10; 461 &dash-ent-20;
450 <entry>-</entry>
451 <entry>-</entry>
452 <entry>r<subscript>7</subscript></entry> 462 <entry>r<subscript>7</subscript></entry>
453 <entry>r<subscript>6</subscript></entry> 463 <entry>r<subscript>6</subscript></entry>
454 <entry>r<subscript>5</subscript></entry> 464 <entry>r<subscript>5</subscript></entry>
@@ -466,9 +476,7 @@
466 <entry></entry> 476 <entry></entry>
467 <entry></entry> 477 <entry></entry>
468 <entry></entry> 478 <entry></entry>
469 &dash-ent-10; 479 &dash-ent-20;
470 <entry>-</entry>
471 <entry>-</entry>
472 <entry>g<subscript>3</subscript></entry> 480 <entry>g<subscript>3</subscript></entry>
473 <entry>g<subscript>2</subscript></entry> 481 <entry>g<subscript>2</subscript></entry>
474 <entry>g<subscript>1</subscript></entry> 482 <entry>g<subscript>1</subscript></entry>
@@ -486,9 +494,7 @@
486 <entry>V4L2_MBUS_FMT_RGB888_2X12_LE</entry> 494 <entry>V4L2_MBUS_FMT_RGB888_2X12_LE</entry>
487 <entry>0x100c</entry> 495 <entry>0x100c</entry>
488 <entry></entry> 496 <entry></entry>
489 &dash-ent-10; 497 &dash-ent-20;
490 <entry>-</entry>
491 <entry>-</entry>
492 <entry>g<subscript>3</subscript></entry> 498 <entry>g<subscript>3</subscript></entry>
493 <entry>g<subscript>2</subscript></entry> 499 <entry>g<subscript>2</subscript></entry>
494 <entry>g<subscript>1</subscript></entry> 500 <entry>g<subscript>1</subscript></entry>
@@ -506,9 +512,7 @@
506 <entry></entry> 512 <entry></entry>
507 <entry></entry> 513 <entry></entry>
508 <entry></entry> 514 <entry></entry>
509 &dash-ent-10; 515 &dash-ent-20;
510 <entry>-</entry>
511 <entry>-</entry>
512 <entry>r<subscript>7</subscript></entry> 516 <entry>r<subscript>7</subscript></entry>
513 <entry>r<subscript>6</subscript></entry> 517 <entry>r<subscript>6</subscript></entry>
514 <entry>r<subscript>5</subscript></entry> 518 <entry>r<subscript>5</subscript></entry>
@@ -522,6 +526,43 @@
522 <entry>g<subscript>5</subscript></entry> 526 <entry>g<subscript>5</subscript></entry>
523 <entry>g<subscript>4</subscript></entry> 527 <entry>g<subscript>4</subscript></entry>
524 </row> 528 </row>
529 <row id="V4L2-MBUS-FMT-ARGB888-1X32">
530 <entry>V4L2_MBUS_FMT_ARGB888_1X32</entry>
531 <entry>0x100d</entry>
532 <entry></entry>
533 <entry>a<subscript>7</subscript></entry>
534 <entry>a<subscript>6</subscript></entry>
535 <entry>a<subscript>5</subscript></entry>
536 <entry>a<subscript>4</subscript></entry>
537 <entry>a<subscript>3</subscript></entry>
538 <entry>a<subscript>2</subscript></entry>
539 <entry>a<subscript>1</subscript></entry>
540 <entry>a<subscript>0</subscript></entry>
541 <entry>r<subscript>7</subscript></entry>
542 <entry>r<subscript>6</subscript></entry>
543 <entry>r<subscript>5</subscript></entry>
544 <entry>r<subscript>4</subscript></entry>
545 <entry>r<subscript>3</subscript></entry>
546 <entry>r<subscript>2</subscript></entry>
547 <entry>r<subscript>1</subscript></entry>
548 <entry>r<subscript>0</subscript></entry>
549 <entry>g<subscript>7</subscript></entry>
550 <entry>g<subscript>6</subscript></entry>
551 <entry>g<subscript>5</subscript></entry>
552 <entry>g<subscript>4</subscript></entry>
553 <entry>g<subscript>3</subscript></entry>
554 <entry>g<subscript>2</subscript></entry>
555 <entry>g<subscript>1</subscript></entry>
556 <entry>g<subscript>0</subscript></entry>
557 <entry>b<subscript>7</subscript></entry>
558 <entry>b<subscript>6</subscript></entry>
559 <entry>b<subscript>5</subscript></entry>
560 <entry>b<subscript>4</subscript></entry>
561 <entry>b<subscript>3</subscript></entry>
562 <entry>b<subscript>2</subscript></entry>
563 <entry>b<subscript>1</subscript></entry>
564 <entry>b<subscript>0</subscript></entry>
565 </row>
525 </tbody> 566 </tbody>
526 </tgroup> 567 </tgroup>
527 </table> 568 </table>
@@ -1149,6 +1190,7 @@
1149 <listitem><para>y<subscript>x</subscript> for luma component bit number x</para></listitem> 1190 <listitem><para>y<subscript>x</subscript> for luma component bit number x</para></listitem>
1150 <listitem><para>u<subscript>x</subscript> for blue chroma component bit number x</para></listitem> 1191 <listitem><para>u<subscript>x</subscript> for blue chroma component bit number x</para></listitem>
1151 <listitem><para>v<subscript>x</subscript> for red chroma component bit number x</para></listitem> 1192 <listitem><para>v<subscript>x</subscript> for red chroma component bit number x</para></listitem>
1193 <listitem><para>a<subscript>x</subscript> for alpha component bit number x</para></listitem>
1152 <listitem><para>- for non-available bits (for positions higher than the bus width)</para></listitem> 1194 <listitem><para>- for non-available bits (for positions higher than the bus width)</para></listitem>
1153 <listitem><para>d for dummy bits</para></listitem> 1195 <listitem><para>d for dummy bits</para></listitem>
1154 </itemizedlist> 1196 </itemizedlist>
@@ -1159,37 +1201,39 @@
1159 <colspec colname="id" align="left" /> 1201 <colspec colname="id" align="left" />
1160 <colspec colname="code" align="center"/> 1202 <colspec colname="code" align="center"/>
1161 <colspec colname="bit" /> 1203 <colspec colname="bit" />
1162 <colspec colnum="4" colname="b29" align="center" /> 1204 <colspec colnum="4" colname="b31" align="center" />
1163 <colspec colnum="5" colname="b28" align="center" /> 1205 <colspec colnum="5" colname="b20" align="center" />
1164 <colspec colnum="6" colname="b27" align="center" /> 1206 <colspec colnum="6" colname="b29" align="center" />
1165 <colspec colnum="7" colname="b26" align="center" /> 1207 <colspec colnum="7" colname="b28" align="center" />
1166 <colspec colnum="8" colname="b25" align="center" /> 1208 <colspec colnum="8" colname="b27" align="center" />
1167 <colspec colnum="9" colname="b24" align="center" /> 1209 <colspec colnum="9" colname="b26" align="center" />
1168 <colspec colnum="10" colname="b23" align="center" /> 1210 <colspec colnum="10" colname="b25" align="center" />
1169 <colspec colnum="11" colname="b22" align="center" /> 1211 <colspec colnum="11" colname="b24" align="center" />
1170 <colspec colnum="12" colname="b21" align="center" /> 1212 <colspec colnum="12" colname="b23" align="center" />
1171 <colspec colnum="13" colname="b20" align="center" /> 1213 <colspec colnum="13" colname="b22" align="center" />
1172 <colspec colnum="14" colname="b19" align="center" /> 1214 <colspec colnum="14" colname="b21" align="center" />
1173 <colspec colnum="15" colname="b18" align="center" /> 1215 <colspec colnum="15" colname="b20" align="center" />
1174 <colspec colnum="16" colname="b17" align="center" /> 1216 <colspec colnum="16" colname="b19" align="center" />
1175 <colspec colnum="17" colname="b16" align="center" /> 1217 <colspec colnum="17" colname="b18" align="center" />
1176 <colspec colnum="18" colname="b15" align="center" /> 1218 <colspec colnum="18" colname="b17" align="center" />
1177 <colspec colnum="19" colname="b14" align="center" /> 1219 <colspec colnum="19" colname="b16" align="center" />
1178 <colspec colnum="20" colname="b13" align="center" /> 1220 <colspec colnum="20" colname="b15" align="center" />
1179 <colspec colnum="21" colname="b12" align="center" /> 1221 <colspec colnum="21" colname="b14" align="center" />
1180 <colspec colnum="22" colname="b11" align="center" /> 1222 <colspec colnum="22" colname="b13" align="center" />
1181 <colspec colnum="23" colname="b10" align="center" /> 1223 <colspec colnum="23" colname="b12" align="center" />
1182 <colspec colnum="24" colname="b09" align="center" /> 1224 <colspec colnum="24" colname="b11" align="center" />
1183 <colspec colnum="25" colname="b08" align="center" /> 1225 <colspec colnum="25" colname="b10" align="center" />
1184 <colspec colnum="26" colname="b07" align="center" /> 1226 <colspec colnum="26" colname="b09" align="center" />
1185 <colspec colnum="27" colname="b06" align="center" /> 1227 <colspec colnum="27" colname="b08" align="center" />
1186 <colspec colnum="28" colname="b05" align="center" /> 1228 <colspec colnum="28" colname="b07" align="center" />
1187 <colspec colnum="29" colname="b04" align="center" /> 1229 <colspec colnum="29" colname="b06" align="center" />
1188 <colspec colnum="30" colname="b03" align="center" /> 1230 <colspec colnum="30" colname="b05" align="center" />
1189 <colspec colnum="31" colname="b02" align="center" /> 1231 <colspec colnum="31" colname="b04" align="center" />
1190 <colspec colnum="32" colname="b01" align="center" /> 1232 <colspec colnum="32" colname="b03" align="center" />
1191 <colspec colnum="33" colname="b00" align="center" /> 1233 <colspec colnum="33" colname="b02" align="center" />
1192 <spanspec namest="b29" nameend="b00" spanname="b0" /> 1234 <colspec colnum="34" colname="b01" align="center" />
1235 <colspec colnum="35" colname="b00" align="center" />
1236 <spanspec namest="b31" nameend="b00" spanname="b0" />
1193 <thead> 1237 <thead>
1194 <row> 1238 <row>
1195 <entry>Identifier</entry> 1239 <entry>Identifier</entry>
@@ -1201,6 +1245,8 @@
1201 <entry></entry> 1245 <entry></entry>
1202 <entry></entry> 1246 <entry></entry>
1203 <entry>Bit</entry> 1247 <entry>Bit</entry>
1248 <entry>31</entry>
1249 <entry>30</entry>
1204 <entry>29</entry> 1250 <entry>29</entry>
1205 <entry>28</entry> 1251 <entry>28</entry>
1206 <entry>27</entry> 1252 <entry>27</entry>
@@ -1238,10 +1284,7 @@
1238 <entry>V4L2_MBUS_FMT_Y8_1X8</entry> 1284 <entry>V4L2_MBUS_FMT_Y8_1X8</entry>
1239 <entry>0x2001</entry> 1285 <entry>0x2001</entry>
1240 <entry></entry> 1286 <entry></entry>
1241 &dash-ent-10; 1287 &dash-ent-24;
1242 &dash-ent-10;
1243 <entry>-</entry>
1244 <entry>-</entry>
1245 <entry>y<subscript>7</subscript></entry> 1288 <entry>y<subscript>7</subscript></entry>
1246 <entry>y<subscript>6</subscript></entry> 1289 <entry>y<subscript>6</subscript></entry>
1247 <entry>y<subscript>5</subscript></entry> 1290 <entry>y<subscript>5</subscript></entry>
@@ -1255,18 +1298,7 @@
1255 <entry>V4L2_MBUS_FMT_UV8_1X8</entry> 1298 <entry>V4L2_MBUS_FMT_UV8_1X8</entry>
1256 <entry>0x2015</entry> 1299 <entry>0x2015</entry>
1257 <entry></entry> 1300 <entry></entry>
1258 <entry>-</entry> 1301 &dash-ent-24;
1259 <entry>-</entry>
1260 <entry>-</entry>
1261 <entry>-</entry>
1262 <entry>-</entry>
1263 <entry>-</entry>
1264 <entry>-</entry>
1265 <entry>-</entry>
1266 <entry>-</entry>
1267 <entry>-</entry>
1268 <entry>-</entry>
1269 <entry>-</entry>
1270 <entry>u<subscript>7</subscript></entry> 1302 <entry>u<subscript>7</subscript></entry>
1271 <entry>u<subscript>6</subscript></entry> 1303 <entry>u<subscript>6</subscript></entry>
1272 <entry>u<subscript>5</subscript></entry> 1304 <entry>u<subscript>5</subscript></entry>
@@ -1280,18 +1312,7 @@
1280 <entry></entry> 1312 <entry></entry>
1281 <entry></entry> 1313 <entry></entry>
1282 <entry></entry> 1314 <entry></entry>
1283 <entry>-</entry> 1315 &dash-ent-24;
1284 <entry>-</entry>
1285 <entry>-</entry>
1286 <entry>-</entry>
1287 <entry>-</entry>
1288 <entry>-</entry>
1289 <entry>-</entry>
1290 <entry>-</entry>
1291 <entry>-</entry>
1292 <entry>-</entry>
1293 <entry>-</entry>
1294 <entry>-</entry>
1295 <entry>v<subscript>7</subscript></entry> 1316 <entry>v<subscript>7</subscript></entry>
1296 <entry>v<subscript>6</subscript></entry> 1317 <entry>v<subscript>6</subscript></entry>
1297 <entry>v<subscript>5</subscript></entry> 1318 <entry>v<subscript>5</subscript></entry>
@@ -1305,10 +1326,7 @@
1305 <entry>V4L2_MBUS_FMT_UYVY8_1_5X8</entry> 1326 <entry>V4L2_MBUS_FMT_UYVY8_1_5X8</entry>
1306 <entry>0x2002</entry> 1327 <entry>0x2002</entry>
1307 <entry></entry> 1328 <entry></entry>
1308 &dash-ent-10; 1329 &dash-ent-24;
1309 &dash-ent-10;
1310 <entry>-</entry>
1311 <entry>-</entry>
1312 <entry>u<subscript>7</subscript></entry> 1330 <entry>u<subscript>7</subscript></entry>
1313 <entry>u<subscript>6</subscript></entry> 1331 <entry>u<subscript>6</subscript></entry>
1314 <entry>u<subscript>5</subscript></entry> 1332 <entry>u<subscript>5</subscript></entry>
@@ -1322,10 +1340,7 @@
1322 <entry></entry> 1340 <entry></entry>
1323 <entry></entry> 1341 <entry></entry>
1324 <entry></entry> 1342 <entry></entry>
1325 &dash-ent-10; 1343 &dash-ent-24;
1326 &dash-ent-10;
1327 <entry>-</entry>
1328 <entry>-</entry>
1329 <entry>y<subscript>7</subscript></entry> 1344 <entry>y<subscript>7</subscript></entry>
1330 <entry>y<subscript>6</subscript></entry> 1345 <entry>y<subscript>6</subscript></entry>
1331 <entry>y<subscript>5</subscript></entry> 1346 <entry>y<subscript>5</subscript></entry>
@@ -1339,10 +1354,7 @@
1339 <entry></entry> 1354 <entry></entry>
1340 <entry></entry> 1355 <entry></entry>
1341 <entry></entry> 1356 <entry></entry>
1342 &dash-ent-10; 1357 &dash-ent-24;
1343 &dash-ent-10;
1344 <entry>-</entry>
1345 <entry>-</entry>
1346 <entry>y<subscript>7</subscript></entry> 1358 <entry>y<subscript>7</subscript></entry>
1347 <entry>y<subscript>6</subscript></entry> 1359 <entry>y<subscript>6</subscript></entry>
1348 <entry>y<subscript>5</subscript></entry> 1360 <entry>y<subscript>5</subscript></entry>
@@ -1356,10 +1368,7 @@
1356 <entry></entry> 1368 <entry></entry>
1357 <entry></entry> 1369 <entry></entry>
1358 <entry></entry> 1370 <entry></entry>
1359 &dash-ent-10; 1371 &dash-ent-24;
1360 &dash-ent-10;
1361 <entry>-</entry>
1362 <entry>-</entry>
1363 <entry>v<subscript>7</subscript></entry> 1372 <entry>v<subscript>7</subscript></entry>
1364 <entry>v<subscript>6</subscript></entry> 1373 <entry>v<subscript>6</subscript></entry>
1365 <entry>v<subscript>5</subscript></entry> 1374 <entry>v<subscript>5</subscript></entry>
@@ -1373,10 +1382,7 @@
1373 <entry></entry> 1382 <entry></entry>
1374 <entry></entry> 1383 <entry></entry>
1375 <entry></entry> 1384 <entry></entry>
1376 &dash-ent-10; 1385 &dash-ent-24;
1377 &dash-ent-10;
1378 <entry>-</entry>
1379 <entry>-</entry>
1380 <entry>y<subscript>7</subscript></entry> 1386 <entry>y<subscript>7</subscript></entry>
1381 <entry>y<subscript>6</subscript></entry> 1387 <entry>y<subscript>6</subscript></entry>
1382 <entry>y<subscript>5</subscript></entry> 1388 <entry>y<subscript>5</subscript></entry>
@@ -1390,10 +1396,7 @@
1390 <entry></entry> 1396 <entry></entry>
1391 <entry></entry> 1397 <entry></entry>
1392 <entry></entry> 1398 <entry></entry>
1393 &dash-ent-10; 1399 &dash-ent-24;
1394 &dash-ent-10;
1395 <entry>-</entry>
1396 <entry>-</entry>
1397 <entry>y<subscript>7</subscript></entry> 1400 <entry>y<subscript>7</subscript></entry>
1398 <entry>y<subscript>6</subscript></entry> 1401 <entry>y<subscript>6</subscript></entry>
1399 <entry>y<subscript>5</subscript></entry> 1402 <entry>y<subscript>5</subscript></entry>
@@ -1407,10 +1410,7 @@
1407 <entry>V4L2_MBUS_FMT_VYUY8_1_5X8</entry> 1410 <entry>V4L2_MBUS_FMT_VYUY8_1_5X8</entry>
1408 <entry>0x2003</entry> 1411 <entry>0x2003</entry>
1409 <entry></entry> 1412 <entry></entry>
1410 &dash-ent-10; 1413 &dash-ent-24;
1411 &dash-ent-10;
1412 <entry>-</entry>
1413 <entry>-</entry>
1414 <entry>v<subscript>7</subscript></entry> 1414 <entry>v<subscript>7</subscript></entry>
1415 <entry>v<subscript>6</subscript></entry> 1415 <entry>v<subscript>6</subscript></entry>
1416 <entry>v<subscript>5</subscript></entry> 1416 <entry>v<subscript>5</subscript></entry>
@@ -1424,10 +1424,7 @@
1424 <entry></entry> 1424 <entry></entry>
1425 <entry></entry> 1425 <entry></entry>
1426 <entry></entry> 1426 <entry></entry>
1427 &dash-ent-10; 1427 &dash-ent-24;
1428 &dash-ent-10;
1429 <entry>-</entry>
1430 <entry>-</entry>
1431 <entry>y<subscript>7</subscript></entry> 1428 <entry>y<subscript>7</subscript></entry>
1432 <entry>y<subscript>6</subscript></entry> 1429 <entry>y<subscript>6</subscript></entry>
1433 <entry>y<subscript>5</subscript></entry> 1430 <entry>y<subscript>5</subscript></entry>
@@ -1441,10 +1438,7 @@
1441 <entry></entry> 1438 <entry></entry>
1442 <entry></entry> 1439 <entry></entry>
1443 <entry></entry> 1440 <entry></entry>
1444 &dash-ent-10; 1441 &dash-ent-24;
1445 &dash-ent-10;
1446 <entry>-</entry>
1447 <entry>-</entry>
1448 <entry>y<subscript>7</subscript></entry> 1442 <entry>y<subscript>7</subscript></entry>
1449 <entry>y<subscript>6</subscript></entry> 1443 <entry>y<subscript>6</subscript></entry>
1450 <entry>y<subscript>5</subscript></entry> 1444 <entry>y<subscript>5</subscript></entry>
@@ -1458,10 +1452,7 @@
1458 <entry></entry> 1452 <entry></entry>
1459 <entry></entry> 1453 <entry></entry>
1460 <entry></entry> 1454 <entry></entry>
1461 &dash-ent-10; 1455 &dash-ent-24;
1462 &dash-ent-10;
1463 <entry>-</entry>
1464 <entry>-</entry>
1465 <entry>u<subscript>7</subscript></entry> 1456 <entry>u<subscript>7</subscript></entry>
1466 <entry>u<subscript>6</subscript></entry> 1457 <entry>u<subscript>6</subscript></entry>
1467 <entry>u<subscript>5</subscript></entry> 1458 <entry>u<subscript>5</subscript></entry>
@@ -1475,10 +1466,7 @@
1475 <entry></entry> 1466 <entry></entry>
1476 <entry></entry> 1467 <entry></entry>
1477 <entry></entry> 1468 <entry></entry>
1478 &dash-ent-10; 1469 &dash-ent-24;
1479 &dash-ent-10;
1480 <entry>-</entry>
1481 <entry>-</entry>
1482 <entry>y<subscript>7</subscript></entry> 1470 <entry>y<subscript>7</subscript></entry>
1483 <entry>y<subscript>6</subscript></entry> 1471 <entry>y<subscript>6</subscript></entry>
1484 <entry>y<subscript>5</subscript></entry> 1472 <entry>y<subscript>5</subscript></entry>
@@ -1492,10 +1480,7 @@
1492 <entry></entry> 1480 <entry></entry>
1493 <entry></entry> 1481 <entry></entry>
1494 <entry></entry> 1482 <entry></entry>
1495 &dash-ent-10; 1483 &dash-ent-24;
1496 &dash-ent-10;
1497 <entry>-</entry>
1498 <entry>-</entry>
1499 <entry>y<subscript>7</subscript></entry> 1484 <entry>y<subscript>7</subscript></entry>
1500 <entry>y<subscript>6</subscript></entry> 1485 <entry>y<subscript>6</subscript></entry>
1501 <entry>y<subscript>5</subscript></entry> 1486 <entry>y<subscript>5</subscript></entry>
@@ -1509,10 +1494,7 @@
1509 <entry>V4L2_MBUS_FMT_YUYV8_1_5X8</entry> 1494 <entry>V4L2_MBUS_FMT_YUYV8_1_5X8</entry>
1510 <entry>0x2004</entry> 1495 <entry>0x2004</entry>
1511 <entry></entry> 1496 <entry></entry>
1512 &dash-ent-10; 1497 &dash-ent-24;
1513 &dash-ent-10;
1514 <entry>-</entry>
1515 <entry>-</entry>
1516 <entry>y<subscript>7</subscript></entry> 1498 <entry>y<subscript>7</subscript></entry>
1517 <entry>y<subscript>6</subscript></entry> 1499 <entry>y<subscript>6</subscript></entry>
1518 <entry>y<subscript>5</subscript></entry> 1500 <entry>y<subscript>5</subscript></entry>
@@ -1526,10 +1508,7 @@
1526 <entry></entry> 1508 <entry></entry>
1527 <entry></entry> 1509 <entry></entry>
1528 <entry></entry> 1510 <entry></entry>
1529 &dash-ent-10; 1511 &dash-ent-24;
1530 &dash-ent-10;
1531 <entry>-</entry>
1532 <entry>-</entry>
1533 <entry>y<subscript>7</subscript></entry> 1512 <entry>y<subscript>7</subscript></entry>
1534 <entry>y<subscript>6</subscript></entry> 1513 <entry>y<subscript>6</subscript></entry>
1535 <entry>y<subscript>5</subscript></entry> 1514 <entry>y<subscript>5</subscript></entry>
@@ -1543,10 +1522,7 @@
1543 <entry></entry> 1522 <entry></entry>
1544 <entry></entry> 1523 <entry></entry>
1545 <entry></entry> 1524 <entry></entry>
1546 &dash-ent-10; 1525 &dash-ent-24;
1547 &dash-ent-10;
1548 <entry>-</entry>
1549 <entry>-</entry>
1550 <entry>u<subscript>7</subscript></entry> 1526 <entry>u<subscript>7</subscript></entry>
1551 <entry>u<subscript>6</subscript></entry> 1527 <entry>u<subscript>6</subscript></entry>
1552 <entry>u<subscript>5</subscript></entry> 1528 <entry>u<subscript>5</subscript></entry>
@@ -1560,10 +1536,7 @@
1560 <entry></entry> 1536 <entry></entry>
1561 <entry></entry> 1537 <entry></entry>
1562 <entry></entry> 1538 <entry></entry>
1563 &dash-ent-10; 1539 &dash-ent-24;
1564 &dash-ent-10;
1565 <entry>-</entry>
1566 <entry>-</entry>
1567 <entry>y<subscript>7</subscript></entry> 1540 <entry>y<subscript>7</subscript></entry>
1568 <entry>y<subscript>6</subscript></entry> 1541 <entry>y<subscript>6</subscript></entry>
1569 <entry>y<subscript>5</subscript></entry> 1542 <entry>y<subscript>5</subscript></entry>
@@ -1577,10 +1550,7 @@
1577 <entry></entry> 1550 <entry></entry>
1578 <entry></entry> 1551 <entry></entry>
1579 <entry></entry> 1552 <entry></entry>
1580 &dash-ent-10; 1553 &dash-ent-24;
1581 &dash-ent-10;
1582 <entry>-</entry>
1583 <entry>-</entry>
1584 <entry>y<subscript>7</subscript></entry> 1554 <entry>y<subscript>7</subscript></entry>
1585 <entry>y<subscript>6</subscript></entry> 1555 <entry>y<subscript>6</subscript></entry>
1586 <entry>y<subscript>5</subscript></entry> 1556 <entry>y<subscript>5</subscript></entry>
@@ -1594,10 +1564,7 @@
1594 <entry></entry> 1564 <entry></entry>
1595 <entry></entry> 1565 <entry></entry>
1596 <entry></entry> 1566 <entry></entry>
1597 &dash-ent-10; 1567 &dash-ent-24;
1598 &dash-ent-10;
1599 <entry>-</entry>
1600 <entry>-</entry>
1601 <entry>v<subscript>7</subscript></entry> 1568 <entry>v<subscript>7</subscript></entry>
1602 <entry>v<subscript>6</subscript></entry> 1569 <entry>v<subscript>6</subscript></entry>
1603 <entry>v<subscript>5</subscript></entry> 1570 <entry>v<subscript>5</subscript></entry>
@@ -1611,10 +1578,7 @@
1611 <entry>V4L2_MBUS_FMT_YVYU8_1_5X8</entry> 1578 <entry>V4L2_MBUS_FMT_YVYU8_1_5X8</entry>
1612 <entry>0x2005</entry> 1579 <entry>0x2005</entry>
1613 <entry></entry> 1580 <entry></entry>
1614 &dash-ent-10; 1581 &dash-ent-24;
1615 &dash-ent-10;
1616 <entry>-</entry>
1617 <entry>-</entry>
1618 <entry>y<subscript>7</subscript></entry> 1582 <entry>y<subscript>7</subscript></entry>
1619 <entry>y<subscript>6</subscript></entry> 1583 <entry>y<subscript>6</subscript></entry>
1620 <entry>y<subscript>5</subscript></entry> 1584 <entry>y<subscript>5</subscript></entry>
@@ -1628,10 +1592,7 @@
1628 <entry></entry> 1592 <entry></entry>
1629 <entry></entry> 1593 <entry></entry>
1630 <entry></entry> 1594 <entry></entry>
1631 &dash-ent-10; 1595 &dash-ent-24;
1632 &dash-ent-10;
1633 <entry>-</entry>
1634 <entry>-</entry>
1635 <entry>y<subscript>7</subscript></entry> 1596 <entry>y<subscript>7</subscript></entry>
1636 <entry>y<subscript>6</subscript></entry> 1597 <entry>y<subscript>6</subscript></entry>
1637 <entry>y<subscript>5</subscript></entry> 1598 <entry>y<subscript>5</subscript></entry>
@@ -1645,10 +1606,7 @@
1645 <entry></entry> 1606 <entry></entry>
1646 <entry></entry> 1607 <entry></entry>
1647 <entry></entry> 1608 <entry></entry>
1648 &dash-ent-10; 1609 &dash-ent-24;
1649 &dash-ent-10;
1650 <entry>-</entry>
1651 <entry>-</entry>
1652 <entry>v<subscript>7</subscript></entry> 1610 <entry>v<subscript>7</subscript></entry>
1653 <entry>v<subscript>6</subscript></entry> 1611 <entry>v<subscript>6</subscript></entry>
1654 <entry>v<subscript>5</subscript></entry> 1612 <entry>v<subscript>5</subscript></entry>
@@ -1662,10 +1620,7 @@
1662 <entry></entry> 1620 <entry></entry>
1663 <entry></entry> 1621 <entry></entry>
1664 <entry></entry> 1622 <entry></entry>
1665 &dash-ent-10; 1623 &dash-ent-24;
1666 &dash-ent-10;
1667 <entry>-</entry>
1668 <entry>-</entry>
1669 <entry>y<subscript>7</subscript></entry> 1624 <entry>y<subscript>7</subscript></entry>
1670 <entry>y<subscript>6</subscript></entry> 1625 <entry>y<subscript>6</subscript></entry>
1671 <entry>y<subscript>5</subscript></entry> 1626 <entry>y<subscript>5</subscript></entry>
@@ -1679,10 +1634,7 @@
1679 <entry></entry> 1634 <entry></entry>
1680 <entry></entry> 1635 <entry></entry>
1681 <entry></entry> 1636 <entry></entry>
1682 &dash-ent-10; 1637 &dash-ent-24;
1683 &dash-ent-10;
1684 <entry>-</entry>
1685 <entry>-</entry>
1686 <entry>y<subscript>7</subscript></entry> 1638 <entry>y<subscript>7</subscript></entry>
1687 <entry>y<subscript>6</subscript></entry> 1639 <entry>y<subscript>6</subscript></entry>
1688 <entry>y<subscript>5</subscript></entry> 1640 <entry>y<subscript>5</subscript></entry>
@@ -1696,10 +1648,7 @@
1696 <entry></entry> 1648 <entry></entry>
1697 <entry></entry> 1649 <entry></entry>
1698 <entry></entry> 1650 <entry></entry>
1699 &dash-ent-10; 1651 &dash-ent-24;
1700 &dash-ent-10;
1701 <entry>-</entry>
1702 <entry>-</entry>
1703 <entry>u<subscript>7</subscript></entry> 1652 <entry>u<subscript>7</subscript></entry>
1704 <entry>u<subscript>6</subscript></entry> 1653 <entry>u<subscript>6</subscript></entry>
1705 <entry>u<subscript>5</subscript></entry> 1654 <entry>u<subscript>5</subscript></entry>
@@ -1713,10 +1662,7 @@
1713 <entry>V4L2_MBUS_FMT_UYVY8_2X8</entry> 1662 <entry>V4L2_MBUS_FMT_UYVY8_2X8</entry>
1714 <entry>0x2006</entry> 1663 <entry>0x2006</entry>
1715 <entry></entry> 1664 <entry></entry>
1716 &dash-ent-10; 1665 &dash-ent-24;
1717 &dash-ent-10;
1718 <entry>-</entry>
1719 <entry>-</entry>
1720 <entry>u<subscript>7</subscript></entry> 1666 <entry>u<subscript>7</subscript></entry>
1721 <entry>u<subscript>6</subscript></entry> 1667 <entry>u<subscript>6</subscript></entry>
1722 <entry>u<subscript>5</subscript></entry> 1668 <entry>u<subscript>5</subscript></entry>
@@ -1730,10 +1676,7 @@
1730 <entry></entry> 1676 <entry></entry>
1731 <entry></entry> 1677 <entry></entry>
1732 <entry></entry> 1678 <entry></entry>
1733 &dash-ent-10; 1679 &dash-ent-24;
1734 &dash-ent-10;
1735 <entry>-</entry>
1736 <entry>-</entry>
1737 <entry>y<subscript>7</subscript></entry> 1680 <entry>y<subscript>7</subscript></entry>
1738 <entry>y<subscript>6</subscript></entry> 1681 <entry>y<subscript>6</subscript></entry>
1739 <entry>y<subscript>5</subscript></entry> 1682 <entry>y<subscript>5</subscript></entry>
@@ -1747,10 +1690,7 @@
1747 <entry></entry> 1690 <entry></entry>
1748 <entry></entry> 1691 <entry></entry>
1749 <entry></entry> 1692 <entry></entry>
1750 &dash-ent-10; 1693 &dash-ent-24;
1751 &dash-ent-10;
1752 <entry>-</entry>
1753 <entry>-</entry>
1754 <entry>v<subscript>7</subscript></entry> 1694 <entry>v<subscript>7</subscript></entry>
1755 <entry>v<subscript>6</subscript></entry> 1695 <entry>v<subscript>6</subscript></entry>
1756 <entry>v<subscript>5</subscript></entry> 1696 <entry>v<subscript>5</subscript></entry>
@@ -1764,10 +1704,7 @@
1764 <entry></entry> 1704 <entry></entry>
1765 <entry></entry> 1705 <entry></entry>
1766 <entry></entry> 1706 <entry></entry>
1767 &dash-ent-10; 1707 &dash-ent-24;
1768 &dash-ent-10;
1769 <entry>-</entry>
1770 <entry>-</entry>
1771 <entry>y<subscript>7</subscript></entry> 1708 <entry>y<subscript>7</subscript></entry>
1772 <entry>y<subscript>6</subscript></entry> 1709 <entry>y<subscript>6</subscript></entry>
1773 <entry>y<subscript>5</subscript></entry> 1710 <entry>y<subscript>5</subscript></entry>
@@ -1781,10 +1718,7 @@
1781 <entry>V4L2_MBUS_FMT_VYUY8_2X8</entry> 1718 <entry>V4L2_MBUS_FMT_VYUY8_2X8</entry>
1782 <entry>0x2007</entry> 1719 <entry>0x2007</entry>
1783 <entry></entry> 1720 <entry></entry>
1784 &dash-ent-10; 1721 &dash-ent-24;
1785 &dash-ent-10;
1786 <entry>-</entry>
1787 <entry>-</entry>
1788 <entry>v<subscript>7</subscript></entry> 1722 <entry>v<subscript>7</subscript></entry>
1789 <entry>v<subscript>6</subscript></entry> 1723 <entry>v<subscript>6</subscript></entry>
1790 <entry>v<subscript>5</subscript></entry> 1724 <entry>v<subscript>5</subscript></entry>
@@ -1798,10 +1732,7 @@
1798 <entry></entry> 1732 <entry></entry>
1799 <entry></entry> 1733 <entry></entry>
1800 <entry></entry> 1734 <entry></entry>
1801 &dash-ent-10; 1735 &dash-ent-24;
1802 &dash-ent-10;
1803 <entry>-</entry>
1804 <entry>-</entry>
1805 <entry>y<subscript>7</subscript></entry> 1736 <entry>y<subscript>7</subscript></entry>
1806 <entry>y<subscript>6</subscript></entry> 1737 <entry>y<subscript>6</subscript></entry>
1807 <entry>y<subscript>5</subscript></entry> 1738 <entry>y<subscript>5</subscript></entry>
@@ -1815,10 +1746,7 @@
1815 <entry></entry> 1746 <entry></entry>
1816 <entry></entry> 1747 <entry></entry>
1817 <entry></entry> 1748 <entry></entry>
1818 &dash-ent-10; 1749 &dash-ent-24;
1819 &dash-ent-10;
1820 <entry>-</entry>
1821 <entry>-</entry>
1822 <entry>u<subscript>7</subscript></entry> 1750 <entry>u<subscript>7</subscript></entry>
1823 <entry>u<subscript>6</subscript></entry> 1751 <entry>u<subscript>6</subscript></entry>
1824 <entry>u<subscript>5</subscript></entry> 1752 <entry>u<subscript>5</subscript></entry>
@@ -1832,10 +1760,7 @@
1832 <entry></entry> 1760 <entry></entry>
1833 <entry></entry> 1761 <entry></entry>
1834 <entry></entry> 1762 <entry></entry>
1835 &dash-ent-10; 1763 &dash-ent-24;
1836 &dash-ent-10;
1837 <entry>-</entry>
1838 <entry>-</entry>
1839 <entry>y<subscript>7</subscript></entry> 1764 <entry>y<subscript>7</subscript></entry>
1840 <entry>y<subscript>6</subscript></entry> 1765 <entry>y<subscript>6</subscript></entry>
1841 <entry>y<subscript>5</subscript></entry> 1766 <entry>y<subscript>5</subscript></entry>
@@ -1849,10 +1774,7 @@
1849 <entry>V4L2_MBUS_FMT_YUYV8_2X8</entry> 1774 <entry>V4L2_MBUS_FMT_YUYV8_2X8</entry>
1850 <entry>0x2008</entry> 1775 <entry>0x2008</entry>
1851 <entry></entry> 1776 <entry></entry>
1852 &dash-ent-10; 1777 &dash-ent-24;
1853 &dash-ent-10;
1854 <entry>-</entry>
1855 <entry>-</entry>
1856 <entry>y<subscript>7</subscript></entry> 1778 <entry>y<subscript>7</subscript></entry>
1857 <entry>y<subscript>6</subscript></entry> 1779 <entry>y<subscript>6</subscript></entry>
1858 <entry>y<subscript>5</subscript></entry> 1780 <entry>y<subscript>5</subscript></entry>
@@ -1866,10 +1788,7 @@
1866 <entry></entry> 1788 <entry></entry>
1867 <entry></entry> 1789 <entry></entry>
1868 <entry></entry> 1790 <entry></entry>
1869 &dash-ent-10; 1791 &dash-ent-24;
1870 &dash-ent-10;
1871 <entry>-</entry>
1872 <entry>-</entry>
1873 <entry>u<subscript>7</subscript></entry> 1792 <entry>u<subscript>7</subscript></entry>
1874 <entry>u<subscript>6</subscript></entry> 1793 <entry>u<subscript>6</subscript></entry>
1875 <entry>u<subscript>5</subscript></entry> 1794 <entry>u<subscript>5</subscript></entry>
@@ -1883,10 +1802,7 @@
1883 <entry></entry> 1802 <entry></entry>
1884 <entry></entry> 1803 <entry></entry>
1885 <entry></entry> 1804 <entry></entry>
1886 &dash-ent-10; 1805 &dash-ent-24;
1887 &dash-ent-10;
1888 <entry>-</entry>
1889 <entry>-</entry>
1890 <entry>y<subscript>7</subscript></entry> 1806 <entry>y<subscript>7</subscript></entry>
1891 <entry>y<subscript>6</subscript></entry> 1807 <entry>y<subscript>6</subscript></entry>
1892 <entry>y<subscript>5</subscript></entry> 1808 <entry>y<subscript>5</subscript></entry>
@@ -1900,10 +1816,7 @@
1900 <entry></entry> 1816 <entry></entry>
1901 <entry></entry> 1817 <entry></entry>
1902 <entry></entry> 1818 <entry></entry>
1903 &dash-ent-10; 1819 &dash-ent-24;
1904 &dash-ent-10;
1905 <entry>-</entry>
1906 <entry>-</entry>
1907 <entry>v<subscript>7</subscript></entry> 1820 <entry>v<subscript>7</subscript></entry>
1908 <entry>v<subscript>6</subscript></entry> 1821 <entry>v<subscript>6</subscript></entry>
1909 <entry>v<subscript>5</subscript></entry> 1822 <entry>v<subscript>5</subscript></entry>
@@ -1917,10 +1830,7 @@
1917 <entry>V4L2_MBUS_FMT_YVYU8_2X8</entry> 1830 <entry>V4L2_MBUS_FMT_YVYU8_2X8</entry>
1918 <entry>0x2009</entry> 1831 <entry>0x2009</entry>
1919 <entry></entry> 1832 <entry></entry>
1920 &dash-ent-10; 1833 &dash-ent-24;
1921 &dash-ent-10;
1922 <entry>-</entry>
1923 <entry>-</entry>
1924 <entry>y<subscript>7</subscript></entry> 1834 <entry>y<subscript>7</subscript></entry>
1925 <entry>y<subscript>6</subscript></entry> 1835 <entry>y<subscript>6</subscript></entry>
1926 <entry>y<subscript>5</subscript></entry> 1836 <entry>y<subscript>5</subscript></entry>
@@ -1934,10 +1844,7 @@
1934 <entry></entry> 1844 <entry></entry>
1935 <entry></entry> 1845 <entry></entry>
1936 <entry></entry> 1846 <entry></entry>
1937 &dash-ent-10; 1847 &dash-ent-24;
1938 &dash-ent-10;
1939 <entry>-</entry>
1940 <entry>-</entry>
1941 <entry>v<subscript>7</subscript></entry> 1848 <entry>v<subscript>7</subscript></entry>
1942 <entry>v<subscript>6</subscript></entry> 1849 <entry>v<subscript>6</subscript></entry>
1943 <entry>v<subscript>5</subscript></entry> 1850 <entry>v<subscript>5</subscript></entry>
@@ -1951,10 +1858,7 @@
1951 <entry></entry> 1858 <entry></entry>
1952 <entry></entry> 1859 <entry></entry>
1953 <entry></entry> 1860 <entry></entry>
1954 &dash-ent-10; 1861 &dash-ent-24;
1955 &dash-ent-10;
1956 <entry>-</entry>
1957 <entry>-</entry>
1958 <entry>y<subscript>7</subscript></entry> 1862 <entry>y<subscript>7</subscript></entry>
1959 <entry>y<subscript>6</subscript></entry> 1863 <entry>y<subscript>6</subscript></entry>
1960 <entry>y<subscript>5</subscript></entry> 1864 <entry>y<subscript>5</subscript></entry>
@@ -1968,10 +1872,7 @@
1968 <entry></entry> 1872 <entry></entry>
1969 <entry></entry> 1873 <entry></entry>
1970 <entry></entry> 1874 <entry></entry>
1971 &dash-ent-10; 1875 &dash-ent-24;
1972 &dash-ent-10;
1973 <entry>-</entry>
1974 <entry>-</entry>
1975 <entry>u<subscript>7</subscript></entry> 1876 <entry>u<subscript>7</subscript></entry>
1976 <entry>u<subscript>6</subscript></entry> 1877 <entry>u<subscript>6</subscript></entry>
1977 <entry>u<subscript>5</subscript></entry> 1878 <entry>u<subscript>5</subscript></entry>
@@ -1985,8 +1886,7 @@
1985 <entry>V4L2_MBUS_FMT_Y10_1X10</entry> 1886 <entry>V4L2_MBUS_FMT_Y10_1X10</entry>
1986 <entry>0x200a</entry> 1887 <entry>0x200a</entry>
1987 <entry></entry> 1888 <entry></entry>
1988 &dash-ent-10; 1889 &dash-ent-22;
1989 &dash-ent-10;
1990 <entry>y<subscript>9</subscript></entry> 1890 <entry>y<subscript>9</subscript></entry>
1991 <entry>y<subscript>8</subscript></entry> 1891 <entry>y<subscript>8</subscript></entry>
1992 <entry>y<subscript>7</subscript></entry> 1892 <entry>y<subscript>7</subscript></entry>
@@ -2002,8 +1902,7 @@
2002 <entry>V4L2_MBUS_FMT_YUYV10_2X10</entry> 1902 <entry>V4L2_MBUS_FMT_YUYV10_2X10</entry>
2003 <entry>0x200b</entry> 1903 <entry>0x200b</entry>
2004 <entry></entry> 1904 <entry></entry>
2005 &dash-ent-10; 1905 &dash-ent-22;
2006 &dash-ent-10;
2007 <entry>y<subscript>9</subscript></entry> 1906 <entry>y<subscript>9</subscript></entry>
2008 <entry>y<subscript>8</subscript></entry> 1907 <entry>y<subscript>8</subscript></entry>
2009 <entry>y<subscript>7</subscript></entry> 1908 <entry>y<subscript>7</subscript></entry>
@@ -2019,8 +1918,7 @@
2019 <entry></entry> 1918 <entry></entry>
2020 <entry></entry> 1919 <entry></entry>
2021 <entry></entry> 1920 <entry></entry>
2022 &dash-ent-10; 1921 &dash-ent-22;
2023 &dash-ent-10;
2024 <entry>u<subscript>9</subscript></entry> 1922 <entry>u<subscript>9</subscript></entry>
2025 <entry>u<subscript>8</subscript></entry> 1923 <entry>u<subscript>8</subscript></entry>
2026 <entry>u<subscript>7</subscript></entry> 1924 <entry>u<subscript>7</subscript></entry>
@@ -2036,8 +1934,7 @@
2036 <entry></entry> 1934 <entry></entry>
2037 <entry></entry> 1935 <entry></entry>
2038 <entry></entry> 1936 <entry></entry>
2039 &dash-ent-10; 1937 &dash-ent-22;
2040 &dash-ent-10;
2041 <entry>y<subscript>9</subscript></entry> 1938 <entry>y<subscript>9</subscript></entry>
2042 <entry>y<subscript>8</subscript></entry> 1939 <entry>y<subscript>8</subscript></entry>
2043 <entry>y<subscript>7</subscript></entry> 1940 <entry>y<subscript>7</subscript></entry>
@@ -2053,8 +1950,7 @@
2053 <entry></entry> 1950 <entry></entry>
2054 <entry></entry> 1951 <entry></entry>
2055 <entry></entry> 1952 <entry></entry>
2056 &dash-ent-10; 1953 &dash-ent-22;
2057 &dash-ent-10;
2058 <entry>v<subscript>9</subscript></entry> 1954 <entry>v<subscript>9</subscript></entry>
2059 <entry>v<subscript>8</subscript></entry> 1955 <entry>v<subscript>8</subscript></entry>
2060 <entry>v<subscript>7</subscript></entry> 1956 <entry>v<subscript>7</subscript></entry>
@@ -2070,8 +1966,7 @@
2070 <entry>V4L2_MBUS_FMT_YVYU10_2X10</entry> 1966 <entry>V4L2_MBUS_FMT_YVYU10_2X10</entry>
2071 <entry>0x200c</entry> 1967 <entry>0x200c</entry>
2072 <entry></entry> 1968 <entry></entry>
2073 &dash-ent-10; 1969 &dash-ent-22;
2074 &dash-ent-10;
2075 <entry>y<subscript>9</subscript></entry> 1970 <entry>y<subscript>9</subscript></entry>
2076 <entry>y<subscript>8</subscript></entry> 1971 <entry>y<subscript>8</subscript></entry>
2077 <entry>y<subscript>7</subscript></entry> 1972 <entry>y<subscript>7</subscript></entry>
@@ -2087,8 +1982,7 @@
2087 <entry></entry> 1982 <entry></entry>
2088 <entry></entry> 1983 <entry></entry>
2089 <entry></entry> 1984 <entry></entry>
2090 &dash-ent-10; 1985 &dash-ent-22;
2091 &dash-ent-10;
2092 <entry>v<subscript>9</subscript></entry> 1986 <entry>v<subscript>9</subscript></entry>
2093 <entry>v<subscript>8</subscript></entry> 1987 <entry>v<subscript>8</subscript></entry>
2094 <entry>v<subscript>7</subscript></entry> 1988 <entry>v<subscript>7</subscript></entry>
@@ -2104,8 +1998,7 @@
2104 <entry></entry> 1998 <entry></entry>
2105 <entry></entry> 1999 <entry></entry>
2106 <entry></entry> 2000 <entry></entry>
2107 &dash-ent-10; 2001 &dash-ent-22;
2108 &dash-ent-10;
2109 <entry>y<subscript>9</subscript></entry> 2002 <entry>y<subscript>9</subscript></entry>
2110 <entry>y<subscript>8</subscript></entry> 2003 <entry>y<subscript>8</subscript></entry>
2111 <entry>y<subscript>7</subscript></entry> 2004 <entry>y<subscript>7</subscript></entry>
@@ -2121,8 +2014,7 @@
2121 <entry></entry> 2014 <entry></entry>
2122 <entry></entry> 2015 <entry></entry>
2123 <entry></entry> 2016 <entry></entry>
2124 &dash-ent-10; 2017 &dash-ent-22;
2125 &dash-ent-10;
2126 <entry>u<subscript>9</subscript></entry> 2018 <entry>u<subscript>9</subscript></entry>
2127 <entry>u<subscript>8</subscript></entry> 2019 <entry>u<subscript>8</subscript></entry>
2128 <entry>u<subscript>7</subscript></entry> 2020 <entry>u<subscript>7</subscript></entry>
@@ -2138,15 +2030,7 @@
2138 <entry>V4L2_MBUS_FMT_Y12_1X12</entry> 2030 <entry>V4L2_MBUS_FMT_Y12_1X12</entry>
2139 <entry>0x2013</entry> 2031 <entry>0x2013</entry>
2140 <entry></entry> 2032 <entry></entry>
2141 &dash-ent-10; 2033 &dash-ent-20;
2142 <entry>-</entry>
2143 <entry>-</entry>
2144 <entry>-</entry>
2145 <entry>-</entry>
2146 <entry>-</entry>
2147 <entry>-</entry>
2148 <entry>-</entry>
2149 <entry>-</entry>
2150 <entry>y<subscript>11</subscript></entry> 2034 <entry>y<subscript>11</subscript></entry>
2151 <entry>y<subscript>10</subscript></entry> 2035 <entry>y<subscript>10</subscript></entry>
2152 <entry>y<subscript>9</subscript></entry> 2036 <entry>y<subscript>9</subscript></entry>
@@ -2164,11 +2048,7 @@
2164 <entry>V4L2_MBUS_FMT_UYVY8_1X16</entry> 2048 <entry>V4L2_MBUS_FMT_UYVY8_1X16</entry>
2165 <entry>0x200f</entry> 2049 <entry>0x200f</entry>
2166 <entry></entry> 2050 <entry></entry>
2167 &dash-ent-10; 2051 &dash-ent-16;
2168 <entry>-</entry>
2169 <entry>-</entry>
2170 <entry>-</entry>
2171 <entry>-</entry>
2172 <entry>u<subscript>7</subscript></entry> 2052 <entry>u<subscript>7</subscript></entry>
2173 <entry>u<subscript>6</subscript></entry> 2053 <entry>u<subscript>6</subscript></entry>
2174 <entry>u<subscript>5</subscript></entry> 2054 <entry>u<subscript>5</subscript></entry>
@@ -2190,11 +2070,7 @@
2190 <entry></entry> 2070 <entry></entry>
2191 <entry></entry> 2071 <entry></entry>
2192 <entry></entry> 2072 <entry></entry>
2193 &dash-ent-10; 2073 &dash-ent-16;
2194 <entry>-</entry>
2195 <entry>-</entry>
2196 <entry>-</entry>
2197 <entry>-</entry>
2198 <entry>v<subscript>7</subscript></entry> 2074 <entry>v<subscript>7</subscript></entry>
2199 <entry>v<subscript>6</subscript></entry> 2075 <entry>v<subscript>6</subscript></entry>
2200 <entry>v<subscript>5</subscript></entry> 2076 <entry>v<subscript>5</subscript></entry>
@@ -2216,11 +2092,7 @@
2216 <entry>V4L2_MBUS_FMT_VYUY8_1X16</entry> 2092 <entry>V4L2_MBUS_FMT_VYUY8_1X16</entry>
2217 <entry>0x2010</entry> 2093 <entry>0x2010</entry>
2218 <entry></entry> 2094 <entry></entry>
2219 &dash-ent-10; 2095 &dash-ent-16;
2220 <entry>-</entry>
2221 <entry>-</entry>
2222 <entry>-</entry>
2223 <entry>-</entry>
2224 <entry>v<subscript>7</subscript></entry> 2096 <entry>v<subscript>7</subscript></entry>
2225 <entry>v<subscript>6</subscript></entry> 2097 <entry>v<subscript>6</subscript></entry>
2226 <entry>v<subscript>5</subscript></entry> 2098 <entry>v<subscript>5</subscript></entry>
@@ -2242,11 +2114,7 @@
2242 <entry></entry> 2114 <entry></entry>
2243 <entry></entry> 2115 <entry></entry>
2244 <entry></entry> 2116 <entry></entry>
2245 &dash-ent-10; 2117 &dash-ent-16;
2246 <entry>-</entry>
2247 <entry>-</entry>
2248 <entry>-</entry>
2249 <entry>-</entry>
2250 <entry>u<subscript>7</subscript></entry> 2118 <entry>u<subscript>7</subscript></entry>
2251 <entry>u<subscript>6</subscript></entry> 2119 <entry>u<subscript>6</subscript></entry>
2252 <entry>u<subscript>5</subscript></entry> 2120 <entry>u<subscript>5</subscript></entry>
@@ -2268,11 +2136,7 @@
2268 <entry>V4L2_MBUS_FMT_YUYV8_1X16</entry> 2136 <entry>V4L2_MBUS_FMT_YUYV8_1X16</entry>
2269 <entry>0x2011</entry> 2137 <entry>0x2011</entry>
2270 <entry></entry> 2138 <entry></entry>
2271 &dash-ent-10; 2139 &dash-ent-16;
2272 <entry>-</entry>
2273 <entry>-</entry>
2274 <entry>-</entry>
2275 <entry>-</entry>
2276 <entry>y<subscript>7</subscript></entry> 2140 <entry>y<subscript>7</subscript></entry>
2277 <entry>y<subscript>6</subscript></entry> 2141 <entry>y<subscript>6</subscript></entry>
2278 <entry>y<subscript>5</subscript></entry> 2142 <entry>y<subscript>5</subscript></entry>
@@ -2294,11 +2158,7 @@
2294 <entry></entry> 2158 <entry></entry>
2295 <entry></entry> 2159 <entry></entry>
2296 <entry></entry> 2160 <entry></entry>
2297 &dash-ent-10; 2161 &dash-ent-16;
2298 <entry>-</entry>
2299 <entry>-</entry>
2300 <entry>-</entry>
2301 <entry>-</entry>
2302 <entry>y<subscript>7</subscript></entry> 2162 <entry>y<subscript>7</subscript></entry>
2303 <entry>y<subscript>6</subscript></entry> 2163 <entry>y<subscript>6</subscript></entry>
2304 <entry>y<subscript>5</subscript></entry> 2164 <entry>y<subscript>5</subscript></entry>
@@ -2320,11 +2180,7 @@
2320 <entry>V4L2_MBUS_FMT_YVYU8_1X16</entry> 2180 <entry>V4L2_MBUS_FMT_YVYU8_1X16</entry>
2321 <entry>0x2012</entry> 2181 <entry>0x2012</entry>
2322 <entry></entry> 2182 <entry></entry>
2323 &dash-ent-10; 2183 &dash-ent-16;
2324 <entry>-</entry>
2325 <entry>-</entry>
2326 <entry>-</entry>
2327 <entry>-</entry>
2328 <entry>y<subscript>7</subscript></entry> 2184 <entry>y<subscript>7</subscript></entry>
2329 <entry>y<subscript>6</subscript></entry> 2185 <entry>y<subscript>6</subscript></entry>
2330 <entry>y<subscript>5</subscript></entry> 2186 <entry>y<subscript>5</subscript></entry>
@@ -2346,11 +2202,7 @@
2346 <entry></entry> 2202 <entry></entry>
2347 <entry></entry> 2203 <entry></entry>
2348 <entry></entry> 2204 <entry></entry>
2349 &dash-ent-10; 2205 &dash-ent-16;
2350 <entry>-</entry>
2351 <entry>-</entry>
2352 <entry>-</entry>
2353 <entry>-</entry>
2354 <entry>y<subscript>7</subscript></entry> 2206 <entry>y<subscript>7</subscript></entry>
2355 <entry>y<subscript>6</subscript></entry> 2207 <entry>y<subscript>6</subscript></entry>
2356 <entry>y<subscript>5</subscript></entry> 2208 <entry>y<subscript>5</subscript></entry>
@@ -2372,10 +2224,7 @@
2372 <entry>V4L2_MBUS_FMT_YDYUYDYV8_1X16</entry> 2224 <entry>V4L2_MBUS_FMT_YDYUYDYV8_1X16</entry>
2373 <entry>0x2014</entry> 2225 <entry>0x2014</entry>
2374 <entry></entry> 2226 <entry></entry>
2375 <entry>-</entry> 2227 &dash-ent-16;
2376 <entry>-</entry>
2377 <entry>-</entry>
2378 <entry>-</entry>
2379 <entry>y<subscript>7</subscript></entry> 2228 <entry>y<subscript>7</subscript></entry>
2380 <entry>y<subscript>6</subscript></entry> 2229 <entry>y<subscript>6</subscript></entry>
2381 <entry>y<subscript>5</subscript></entry> 2230 <entry>y<subscript>5</subscript></entry>
@@ -2397,10 +2246,7 @@
2397 <entry></entry> 2246 <entry></entry>
2398 <entry></entry> 2247 <entry></entry>
2399 <entry></entry> 2248 <entry></entry>
2400 <entry>-</entry> 2249 &dash-ent-16;
2401 <entry>-</entry>
2402 <entry>-</entry>
2403 <entry>-</entry>
2404 <entry>y<subscript>7</subscript></entry> 2250 <entry>y<subscript>7</subscript></entry>
2405 <entry>y<subscript>6</subscript></entry> 2251 <entry>y<subscript>6</subscript></entry>
2406 <entry>y<subscript>5</subscript></entry> 2252 <entry>y<subscript>5</subscript></entry>
@@ -2422,10 +2268,7 @@
2422 <entry></entry> 2268 <entry></entry>
2423 <entry></entry> 2269 <entry></entry>
2424 <entry></entry> 2270 <entry></entry>
2425 <entry>-</entry> 2271 &dash-ent-16;
2426 <entry>-</entry>
2427 <entry>-</entry>
2428 <entry>-</entry>
2429 <entry>y<subscript>7</subscript></entry> 2272 <entry>y<subscript>7</subscript></entry>
2430 <entry>y<subscript>6</subscript></entry> 2273 <entry>y<subscript>6</subscript></entry>
2431 <entry>y<subscript>5</subscript></entry> 2274 <entry>y<subscript>5</subscript></entry>
@@ -2447,10 +2290,7 @@
2447 <entry></entry> 2290 <entry></entry>
2448 <entry></entry> 2291 <entry></entry>
2449 <entry></entry> 2292 <entry></entry>
2450 <entry>-</entry> 2293 &dash-ent-16;
2451 <entry>-</entry>
2452 <entry>-</entry>
2453 <entry>-</entry>
2454 <entry>y<subscript>7</subscript></entry> 2294 <entry>y<subscript>7</subscript></entry>
2455 <entry>y<subscript>6</subscript></entry> 2295 <entry>y<subscript>6</subscript></entry>
2456 <entry>y<subscript>5</subscript></entry> 2296 <entry>y<subscript>5</subscript></entry>
@@ -2472,7 +2312,7 @@
2472 <entry>V4L2_MBUS_FMT_YUYV10_1X20</entry> 2312 <entry>V4L2_MBUS_FMT_YUYV10_1X20</entry>
2473 <entry>0x200d</entry> 2313 <entry>0x200d</entry>
2474 <entry></entry> 2314 <entry></entry>
2475 &dash-ent-10; 2315 &dash-ent-12;
2476 <entry>y<subscript>9</subscript></entry> 2316 <entry>y<subscript>9</subscript></entry>
2477 <entry>y<subscript>8</subscript></entry> 2317 <entry>y<subscript>8</subscript></entry>
2478 <entry>y<subscript>7</subscript></entry> 2318 <entry>y<subscript>7</subscript></entry>
@@ -2498,7 +2338,7 @@
2498 <entry></entry> 2338 <entry></entry>
2499 <entry></entry> 2339 <entry></entry>
2500 <entry></entry> 2340 <entry></entry>
2501 &dash-ent-10; 2341 &dash-ent-12;
2502 <entry>y<subscript>9</subscript></entry> 2342 <entry>y<subscript>9</subscript></entry>
2503 <entry>y<subscript>8</subscript></entry> 2343 <entry>y<subscript>8</subscript></entry>
2504 <entry>y<subscript>7</subscript></entry> 2344 <entry>y<subscript>7</subscript></entry>
@@ -2524,7 +2364,7 @@
2524 <entry>V4L2_MBUS_FMT_YVYU10_1X20</entry> 2364 <entry>V4L2_MBUS_FMT_YVYU10_1X20</entry>
2525 <entry>0x200e</entry> 2365 <entry>0x200e</entry>
2526 <entry></entry> 2366 <entry></entry>
2527 &dash-ent-10; 2367 &dash-ent-12;
2528 <entry>y<subscript>9</subscript></entry> 2368 <entry>y<subscript>9</subscript></entry>
2529 <entry>y<subscript>8</subscript></entry> 2369 <entry>y<subscript>8</subscript></entry>
2530 <entry>y<subscript>7</subscript></entry> 2370 <entry>y<subscript>7</subscript></entry>
@@ -2550,7 +2390,7 @@
2550 <entry></entry> 2390 <entry></entry>
2551 <entry></entry> 2391 <entry></entry>
2552 <entry></entry> 2392 <entry></entry>
2553 &dash-ent-10; 2393 &dash-ent-12;
2554 <entry>y<subscript>9</subscript></entry> 2394 <entry>y<subscript>9</subscript></entry>
2555 <entry>y<subscript>8</subscript></entry> 2395 <entry>y<subscript>8</subscript></entry>
2556 <entry>y<subscript>7</subscript></entry> 2396 <entry>y<subscript>7</subscript></entry>
@@ -2574,8 +2414,10 @@
2574 </row> 2414 </row>
2575 <row id="V4L2-MBUS-FMT-YUV10-1X30"> 2415 <row id="V4L2-MBUS-FMT-YUV10-1X30">
2576 <entry>V4L2_MBUS_FMT_YUV10_1X30</entry> 2416 <entry>V4L2_MBUS_FMT_YUV10_1X30</entry>
2577 <entry>0x2014</entry> 2417 <entry>0x2016</entry>
2578 <entry></entry> 2418 <entry></entry>
2419 <entry>-</entry>
2420 <entry>-</entry>
2579 <entry>y<subscript>9</subscript></entry> 2421 <entry>y<subscript>9</subscript></entry>
2580 <entry>y<subscript>8</subscript></entry> 2422 <entry>y<subscript>8</subscript></entry>
2581 <entry>y<subscript>7</subscript></entry> 2423 <entry>y<subscript>7</subscript></entry>
@@ -2607,6 +2449,43 @@
2607 <entry>v<subscript>1</subscript></entry> 2449 <entry>v<subscript>1</subscript></entry>
2608 <entry>v<subscript>0</subscript></entry> 2450 <entry>v<subscript>0</subscript></entry>
2609 </row> 2451 </row>
2452 <row id="V4L2-MBUS-FMT-AYUV8-1X32">
2453 <entry>V4L2_MBUS_FMT_AYUV8_1X32</entry>
2454 <entry>0x2017</entry>
2455 <entry></entry>
2456 <entry>a<subscript>7</subscript></entry>
2457 <entry>a<subscript>6</subscript></entry>
2458 <entry>a<subscript>5</subscript></entry>
2459 <entry>a<subscript>4</subscript></entry>
2460 <entry>a<subscript>3</subscript></entry>
2461 <entry>a<subscript>2</subscript></entry>
2462 <entry>a<subscript>1</subscript></entry>
2463 <entry>a<subscript>0</subscript></entry>
2464 <entry>y<subscript>7</subscript></entry>
2465 <entry>y<subscript>6</subscript></entry>
2466 <entry>y<subscript>5</subscript></entry>
2467 <entry>y<subscript>4</subscript></entry>
2468 <entry>y<subscript>3</subscript></entry>
2469 <entry>y<subscript>2</subscript></entry>
2470 <entry>y<subscript>1</subscript></entry>
2471 <entry>y<subscript>0</subscript></entry>
2472 <entry>u<subscript>7</subscript></entry>
2473 <entry>u<subscript>6</subscript></entry>
2474 <entry>u<subscript>5</subscript></entry>
2475 <entry>u<subscript>4</subscript></entry>
2476 <entry>u<subscript>3</subscript></entry>
2477 <entry>u<subscript>2</subscript></entry>
2478 <entry>u<subscript>1</subscript></entry>
2479 <entry>u<subscript>0</subscript></entry>
2480 <entry>v<subscript>7</subscript></entry>
2481 <entry>v<subscript>6</subscript></entry>
2482 <entry>v<subscript>5</subscript></entry>
2483 <entry>v<subscript>4</subscript></entry>
2484 <entry>v<subscript>3</subscript></entry>
2485 <entry>v<subscript>2</subscript></entry>
2486 <entry>v<subscript>1</subscript></entry>
2487 <entry>v<subscript>0</subscript></entry>
2488 </row>
2610 </tbody> 2489 </tbody>
2611 </tgroup> 2490 </tgroup>
2612 </table> 2491 </table>
diff --git a/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml b/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml
index cd9943672434..9b700a5f4df7 100644
--- a/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml
@@ -62,18 +62,29 @@ addition to the <constant>VIDIOC_REQBUFS</constant> ioctl, when a tighter
62control over buffers is required. This ioctl can be called multiple times to 62control over buffers is required. This ioctl can be called multiple times to
63create buffers of different sizes.</para> 63create buffers of different sizes.</para>
64 64
65 <para>To allocate device buffers applications initialize relevant fields of 65 <para>To allocate the device buffers applications must initialize the
66the <structname>v4l2_create_buffers</structname> structure. They set the 66relevant fields of the <structname>v4l2_create_buffers</structname> structure.
67<structfield>type</structfield> field in the 67The <structfield>count</structfield> field must be set to the number of
68&v4l2-format; structure, embedded in this 68requested buffers, the <structfield>memory</structfield> field specifies the
69structure, to the respective stream or buffer type. 69requested I/O method and the <structfield>reserved</structfield> array must be
70<structfield>count</structfield> must be set to the number of required buffers. 70zeroed.</para>
71<structfield>memory</structfield> specifies the required I/O method. The 71
72<structfield>format</structfield> field shall typically be filled in using 72 <para>The <structfield>format</structfield> field specifies the image format
73either the <constant>VIDIOC_TRY_FMT</constant> or 73that the buffers must be able to handle. The application has to fill in this
74<constant>VIDIOC_G_FMT</constant> ioctl(). Additionally, applications can adjust 74&v4l2-format;. Usually this will be done using the
75<structfield>sizeimage</structfield> fields to fit their specific needs. The 75<constant>VIDIOC_TRY_FMT</constant> or <constant>VIDIOC_G_FMT</constant> ioctl()
76<structfield>reserved</structfield> array must be zeroed.</para> 76to ensure that the requested format is supported by the driver. Unsupported
77formats will result in an error.</para>
78
79 <para>The buffers created by this ioctl will have as minimum size the size
80defined by the <structfield>format.pix.sizeimage</structfield> field. If the
81<structfield>format.pix.sizeimage</structfield> field is less than the minimum
82required for the given format, then <structfield>sizeimage</structfield> will be
83increased by the driver to that minimum to allocate the buffers. If it is
84larger, then the value will be used as-is. The same applies to the
85<structfield>sizeimage</structfield> field of the
86<structname>v4l2_plane_pix_format</structname> structure in the case of
87multiplanar formats.</para>
77 88
78 <para>When the ioctl is called with a pointer to this structure the driver 89 <para>When the ioctl is called with a pointer to this structure the driver
79will attempt to allocate up to the requested number of buffers and store the 90will attempt to allocate up to the requested number of buffers and store the
@@ -144,9 +155,9 @@ mapped</link> I/O.</para>
144 <varlistentry> 155 <varlistentry>
145 <term><errorcode>EINVAL</errorcode></term> 156 <term><errorcode>EINVAL</errorcode></term>
146 <listitem> 157 <listitem>
147 <para>The buffer type (<structfield>type</structfield> field) or the 158 <para>The buffer type (<structfield>format.type</structfield> field),
148requested I/O method (<structfield>memory</structfield>) is not 159requested I/O method (<structfield>memory</structfield>) or format
149supported.</para> 160(<structfield>format</structfield> field) is not valid.</para>
150 </listitem> 161 </listitem>
151 </varlistentry> 162 </varlistentry>
152 </variablelist> 163 </variablelist>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
index 72369707bd77..c4336577ff06 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
@@ -156,19 +156,19 @@ bit 0 (V4L2_DV_VSYNC_POS_POL) is for vertical sync polarity and bit 1 (V4L2_DV_H
156 <entry>__u32</entry> 156 <entry>__u32</entry>
157 <entry><structfield>il_vfrontporch</structfield></entry> 157 <entry><structfield>il_vfrontporch</structfield></entry>
158 <entry>Vertical front porch in lines for the even field (aka field 2) of 158 <entry>Vertical front porch in lines for the even field (aka field 2) of
159 interlaced field formats.</entry> 159 interlaced field formats. Must be 0 for progressive formats.</entry>
160 </row> 160 </row>
161 <row> 161 <row>
162 <entry>__u32</entry> 162 <entry>__u32</entry>
163 <entry><structfield>il_vsync</structfield></entry> 163 <entry><structfield>il_vsync</structfield></entry>
164 <entry>Vertical sync length in lines for the even field (aka field 2) of 164 <entry>Vertical sync length in lines for the even field (aka field 2) of
165 interlaced field formats.</entry> 165 interlaced field formats. Must be 0 for progressive formats.</entry>
166 </row> 166 </row>
167 <row> 167 <row>
168 <entry>__u32</entry> 168 <entry>__u32</entry>
169 <entry><structfield>il_vbackporch</structfield></entry> 169 <entry><structfield>il_vbackporch</structfield></entry>
170 <entry>Vertical back porch in lines for the even field (aka field 2) of 170 <entry>Vertical back porch in lines for the even field (aka field 2) of
171 interlaced field formats.</entry> 171 interlaced field formats. Must be 0 for progressive formats.</entry>
172 </row> 172 </row>
173 <row> 173 <row>
174 <entry>__u32</entry> 174 <entry>__u32</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml b/Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml
index 48748499c097..098ff483802e 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml
@@ -92,8 +92,8 @@ to add them.</para>
92 <entry>int</entry> 92 <entry>int</entry>
93 <entry><structfield>quality</structfield></entry> 93 <entry><structfield>quality</structfield></entry>
94 <entry>Deprecated. If <link linkend="jpeg-quality-control"><constant> 94 <entry>Deprecated. If <link linkend="jpeg-quality-control"><constant>
95 V4L2_CID_JPEG_IMAGE_QUALITY</constant></link> control is exposed by 95 V4L2_CID_JPEG_COMPRESSION_QUALITY</constant></link> control is exposed
96 a driver applications should use it instead and ignore this field. 96 by a driver applications should use it instead and ignore this field.
97 </entry> 97 </entry>
98 </row> 98 </row>
99 <row> 99 <row>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-parm.xml b/Documentation/DocBook/media/v4l/vidioc-g-parm.xml
index 9058224d1bbf..f4e28e7d4751 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-parm.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-parm.xml
@@ -132,7 +132,7 @@ devices.</para>
132 <row> 132 <row>
133 <entry>&v4l2-fract;</entry> 133 <entry>&v4l2-fract;</entry>
134 <entry><structfield>timeperframe</structfield></entry> 134 <entry><structfield>timeperframe</structfield></entry>
135 <entry><para>This is is the desired period between 135 <entry><para>This is the desired period between
136successive frames captured by the driver, in seconds. The 136successive frames captured by the driver, in seconds. The
137field is intended to skip frames on the driver side, saving I/O 137field is intended to skip frames on the driver side, saving I/O
138bandwidth.</para><para>Applications store here the desired frame 138bandwidth.</para><para>Applications store here the desired frame
@@ -193,7 +193,7 @@ applications must set the array to zero.</entry>
193 <row> 193 <row>
194 <entry>&v4l2-fract;</entry> 194 <entry>&v4l2-fract;</entry>
195 <entry><structfield>timeperframe</structfield></entry> 195 <entry><structfield>timeperframe</structfield></entry>
196 <entry>This is is the desired period between 196 <entry>This is the desired period between
197successive frames output by the driver, in seconds.</entry> 197successive frames output by the driver, in seconds.</entry>
198 </row> 198 </row>
199 <row> 199 <row>
diff --git a/Documentation/DocBook/media_api.tmpl b/Documentation/DocBook/media_api.tmpl
index 9c92bb879b6d..4c8d282545a2 100644
--- a/Documentation/DocBook/media_api.tmpl
+++ b/Documentation/DocBook/media_api.tmpl
@@ -22,8 +22,14 @@
22 22
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-8 "<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-10 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
27<!ENTITY dash-ent-12 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
28<!ENTITY dash-ent-14 "<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<!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>"> 29<!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>">
30<!ENTITY dash-ent-20 "<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><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
31<!ENTITY dash-ent-22 "<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><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
32<!ENTITY dash-ent-24 "<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><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
27]> 33]>
28 34
29<book id="media_api"> 35<book id="media_api">
diff --git a/Documentation/DocBook/mtdnand.tmpl b/Documentation/DocBook/mtdnand.tmpl
index fe122d6e686f..a248f42a121e 100644
--- a/Documentation/DocBook/mtdnand.tmpl
+++ b/Documentation/DocBook/mtdnand.tmpl
@@ -1224,8 +1224,6 @@ in this page</entry>
1224#define NAND_BBT_CREATE 0x00000200 1224#define NAND_BBT_CREATE 0x00000200
1225/* Search good / bad pattern through all pages of a block */ 1225/* Search good / bad pattern through all pages of a block */
1226#define NAND_BBT_SCANALLPAGES 0x00000400 1226#define NAND_BBT_SCANALLPAGES 0x00000400
1227/* Scan block empty during good / bad block scan */
1228#define NAND_BBT_SCANEMPTY 0x00000800
1229/* Write bbt if neccecary */ 1227/* Write bbt if neccecary */
1230#define NAND_BBT_WRITE 0x00001000 1228#define NAND_BBT_WRITE 0x00001000
1231/* Read and write back block contents when writing bbt */ 1229/* Read and write back block contents when writing bbt */
diff --git a/Documentation/IRQ-affinity.txt b/Documentation/IRQ-affinity.txt
index 7890fae18529..01a675175a36 100644
--- a/Documentation/IRQ-affinity.txt
+++ b/Documentation/IRQ-affinity.txt
@@ -57,8 +57,8 @@ i.e counters for the CPU0-3 did not change.
57 57
58Here is an example of limiting that same irq (44) to cpus 1024 to 1031: 58Here is an example of limiting that same irq (44) to cpus 1024 to 1031:
59 59
60[root@moon 44]# echo 1024-1031 > smp_affinity 60[root@moon 44]# echo 1024-1031 > smp_affinity_list
61[root@moon 44]# cat smp_affinity 61[root@moon 44]# cat smp_affinity_list
621024-1031 621024-1031
63 63
64Note that to do this with a bitmask would require 32 bitmasks of zero 64Note that to do this with a bitmask would require 32 bitmasks of zero
diff --git a/Documentation/RCU/RTFP.txt b/Documentation/RCU/RTFP.txt
index 7f40c72a9c51..273e654d7d08 100644
--- a/Documentation/RCU/RTFP.txt
+++ b/Documentation/RCU/RTFP.txt
@@ -39,7 +39,7 @@ in read-mostly situations. This algorithm does take pains to avoid
39write-side contention and parallelize the other write-side overheads by 39write-side contention and parallelize the other write-side overheads by
40providing a fine-grained locking design, however, it would be interesting 40providing a fine-grained locking design, however, it would be interesting
41to see how much of the performance advantage reported in 1990 remains 41to see how much of the performance advantage reported in 1990 remains
42in 2004. 42today.
43 43
44At about this same time, Adams [Adams91] described ``chaotic relaxation'', 44At about this same time, Adams [Adams91] described ``chaotic relaxation'',
45where the normal barriers between successive iterations of convergent 45where the normal barriers between successive iterations of convergent
@@ -86,9 +86,9 @@ DYNIX/ptx kernel. The corresponding conference paper appeared in 1998
86[McKenney98]. 86[McKenney98].
87 87
88In 1999, the Tornado and K42 groups described their "generations" 88In 1999, the Tornado and K42 groups described their "generations"
89mechanism, which quite similar to RCU [Gamsa99]. These operating systems 89mechanism, which is quite similar to RCU [Gamsa99]. These operating
90made pervasive use of RCU in place of "existence locks", which greatly 90systems made pervasive use of RCU in place of "existence locks", which
91simplifies locking hierarchies. 91greatly simplifies locking hierarchies and helps avoid deadlocks.
92 92
932001 saw the first RCU presentation involving Linux [McKenney01a] 932001 saw the first RCU presentation involving Linux [McKenney01a]
94at OLS. The resulting abundance of RCU patches was presented the 94at OLS. The resulting abundance of RCU patches was presented the
@@ -106,8 +106,11 @@ these techniques still impose significant read-side overhead in the
106form of memory barriers. Researchers at Sun worked along similar lines 106form of memory barriers. Researchers at Sun worked along similar lines
107in the same timeframe [HerlihyLM02]. These techniques can be thought 107in the same timeframe [HerlihyLM02]. These techniques can be thought
108of as inside-out reference counts, where the count is represented by the 108of as inside-out reference counts, where the count is represented by the
109number of hazard pointers referencing a given data structure (rather than 109number of hazard pointers referencing a given data structure rather than
110the more conventional counter field within the data structure itself). 110the more conventional counter field within the data structure itself.
111The key advantage of inside-out reference counts is that they can be
112stored in immortal variables, thus allowing races between access and
113deletion to be avoided.
111 114
112By the same token, RCU can be thought of as a "bulk reference count", 115By the same token, RCU can be thought of as a "bulk reference count",
113where some form of reference counter covers all reference by a given CPU 116where some form of reference counter covers all reference by a given CPU
@@ -179,7 +182,25 @@ tree using software transactional memory to protect concurrent updates
179(strange, but true!) [PhilHoward2011RCUTMRBTree], yet another variant of 182(strange, but true!) [PhilHoward2011RCUTMRBTree], yet another variant of
180RCU-protected resizeable hash tables [Triplett:2011:RPHash], the 3.0 RCU 183RCU-protected resizeable hash tables [Triplett:2011:RPHash], the 3.0 RCU
181trainwreck [PaulEMcKenney2011RCU3.0trainwreck], and Neil Brown's "Meet the 184trainwreck [PaulEMcKenney2011RCU3.0trainwreck], and Neil Brown's "Meet the
182Lockers" LWN article [NeilBrown2011MeetTheLockers]. 185Lockers" LWN article [NeilBrown2011MeetTheLockers]. Some academic
186work looked at debugging uses of RCU [Seyster:2011:RFA:2075416.2075425].
187
188In 2012, Josh Triplett received his Ph.D. with his dissertation
189covering RCU-protected resizable hash tables and the relationship
190between memory barriers and read-side traversal order: If the updater
191is making changes in the opposite direction from the read-side traveral
192order, the updater need only execute a memory-barrier instruction,
193but if in the same direction, the updater needs to wait for a grace
194period between the individual updates [JoshTriplettPhD]. Also in 2012,
195after seventeen years of attempts, an RCU paper made it into a top-flight
196academic journal, IEEE Transactions on Parallel and Distributed Systems
197[MathieuDesnoyers2012URCU]. A group of researchers in Spain applied
198user-level RCU to crowd simulation [GuillermoVigueras2012RCUCrowd], and
199another group of researchers in Europe produced a formal description of
200RCU based on separation logic [AlexeyGotsman2012VerifyGraceExtended],
201which was published in the 2013 European Symposium on Programming
202[AlexeyGotsman2013ESOPRCU].
203
183 204
184 205
185Bibtex Entries 206Bibtex Entries
@@ -193,13 +214,12 @@ Bibtex Entries
193,volume="5" 214,volume="5"
194,number="3" 215,number="3"
195,pages="354-382" 216,pages="354-382"
196,note="Available:
197\url{http://portal.acm.org/citation.cfm?id=320619&dl=GUIDE,}
198[Viewed December 3, 2007]"
199,annotation={ 217,annotation={
200 Use garbage collector to clean up data after everyone is done with it. 218 Use garbage collector to clean up data after everyone is done with it.
201 . 219 .
202 Oldest use of something vaguely resembling RCU that I have found. 220 Oldest use of something vaguely resembling RCU that I have found.
221 http://portal.acm.org/citation.cfm?id=320619&dl=GUIDE,
222 [Viewed December 3, 2007]
203} 223}
204} 224}
205 225
@@ -309,7 +329,7 @@ for Programming Languages and Operating Systems}"
309,doi = {http://doi.acm.org/10.1145/42392.42399} 329,doi = {http://doi.acm.org/10.1145/42392.42399}
310,publisher = {ACM} 330,publisher = {ACM}
311,address = {New York, NY, USA} 331,address = {New York, NY, USA}
312,annotation= { 332,annotation={
313 At the top of page 307: "Conflicts with deposits and withdrawals 333 At the top of page 307: "Conflicts with deposits and withdrawals
314 are necessary if the reported total is to be up to date. They 334 are necessary if the reported total is to be up to date. They
315 could be avoided by having total return a sum that is slightly 335 could be avoided by having total return a sum that is slightly
@@ -346,8 +366,9 @@ for Programming Languages and Operating Systems}"
346} 366}
347} 367}
348 368
349@Book{Adams91 369# Was Adams91, see also syncrefs.bib.
350,Author="Gregory R. Adams" 370@Book{Andrews91textbook
371,Author="Gregory R. Andrews"
351,title="Concurrent Programming, Principles, and Practices" 372,title="Concurrent Programming, Principles, and Practices"
352,Publisher="Benjamin Cummins" 373,Publisher="Benjamin Cummins"
353,Year="1991" 374,Year="1991"
@@ -398,39 +419,39 @@ for Programming Languages and Operating Systems}"
398} 419}
399} 420}
400 421
401@conference{Pu95a, 422@conference{Pu95a
402Author = "Calton Pu and Tito Autrey and Andrew Black and Charles Consel and 423,Author = "Calton Pu and Tito Autrey and Andrew Black and Charles Consel and
403Crispin Cowan and Jon Inouye and Lakshmi Kethana and Jonathan Walpole and 424Crispin Cowan and Jon Inouye and Lakshmi Kethana and Jonathan Walpole and
404Ke Zhang", 425Ke Zhang"
405Title = "Optimistic Incremental Specialization: Streamlining a Commercial 426,Title = "Optimistic Incremental Specialization: Streamlining a Commercial
406Operating System", 427,Operating System"
407Booktitle = "15\textsuperscript{th} ACM Symposium on 428,Booktitle = "15\textsuperscript{th} ACM Symposium on
408Operating Systems Principles (SOSP'95)", 429,Operating Systems Principles (SOSP'95)"
409address = "Copper Mountain, CO", 430,address = "Copper Mountain, CO"
410month="December", 431,month="December"
411year="1995", 432,year="1995"
412pages="314-321", 433,pages="314-321"
413annotation=" 434,annotation={
414 Uses a replugger, but with a flag to signal when people are 435 Uses a replugger, but with a flag to signal when people are
415 using the resource at hand. Only one reader at a time. 436 using the resource at hand. Only one reader at a time.
416" 437}
417} 438}
418 439
419@conference{Cowan96a, 440@conference{Cowan96a
420Author = "Crispin Cowan and Tito Autrey and Charles Krasic and 441,Author = "Crispin Cowan and Tito Autrey and Charles Krasic and
421Calton Pu and Jonathan Walpole", 442,Calton Pu and Jonathan Walpole"
422Title = "Fast Concurrent Dynamic Linking for an Adaptive Operating System", 443,Title = "Fast Concurrent Dynamic Linking for an Adaptive Operating System"
423Booktitle = "International Conference on Configurable Distributed Systems 444,Booktitle = "International Conference on Configurable Distributed Systems
424(ICCDS'96)", 445(ICCDS'96)"
425address = "Annapolis, MD", 446,address = "Annapolis, MD"
426month="May", 447,month="May"
427year="1996", 448,year="1996"
428pages="108", 449,pages="108"
429isbn="0-8186-7395-8", 450,isbn="0-8186-7395-8"
430annotation=" 451,annotation={
431 Uses a replugger, but with a counter to signal when people are 452 Uses a replugger, but with a counter to signal when people are
432 using the resource at hand. Allows multiple readers. 453 using the resource at hand. Allows multiple readers.
433" 454}
434} 455}
435 456
436@techreport{Slingwine95 457@techreport{Slingwine95
@@ -493,14 +514,13 @@ Problems"
493,Year="1998" 514,Year="1998"
494,pages="509-518" 515,pages="509-518"
495,Address="Las Vegas, NV" 516,Address="Las Vegas, NV"
496,note="Available:
497\url{http://www.rdrop.com/users/paulmck/RCU/rclockpdcsproof.pdf}
498[Viewed December 3, 2007]"
499,annotation={ 517,annotation={
500 Describes and analyzes RCU mechanism in DYNIX/ptx. Describes 518 Describes and analyzes RCU mechanism in DYNIX/ptx. Describes
501 application to linked list update and log-buffer flushing. 519 application to linked list update and log-buffer flushing.
502 Defines 'quiescent state'. Includes both measured and analytic 520 Defines 'quiescent state'. Includes both measured and analytic
503 evaluation. 521 evaluation.
522 http://www.rdrop.com/users/paulmck/RCU/rclockpdcsproof.pdf
523 [Viewed December 3, 2007]
504} 524}
505} 525}
506 526
@@ -514,13 +534,12 @@ Operating System Design and Implementation}"
514,Year="1999" 534,Year="1999"
515,pages="87-100" 535,pages="87-100"
516,Address="New Orleans, LA" 536,Address="New Orleans, LA"
517,note="Available:
518\url{http://www.usenix.org/events/osdi99/full_papers/gamsa/gamsa.pdf}
519[Viewed August 30, 2006]"
520,annotation={ 537,annotation={
521 Use of RCU-like facility in K42/Tornado. Another independent 538 Use of RCU-like facility in K42/Tornado. Another independent
522 invention of RCU. 539 invention of RCU.
523 See especially pages 7-9 (Section 5). 540 See especially pages 7-9 (Section 5).
541 http://www.usenix.org/events/osdi99/full_papers/gamsa/gamsa.pdf
542 [Viewed August 30, 2006]
524} 543}
525} 544}
526 545
@@ -611,9 +630,9 @@ Orran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni"
611,note="Available: 630,note="Available:
612\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=100259266316456&w=2} 631\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=100259266316456&w=2}
613[Viewed June 23, 2004]" 632[Viewed June 23, 2004]"
614,annotation=" 633,annotation={
615 Memory-barrier and Alpha thread. 100 messages, not too bad... 634 Memory-barrier and Alpha thread. 100 messages, not too bad...
616" 635}
617} 636}
618 637
619@unpublished{Spraul01 638@unpublished{Spraul01
@@ -624,10 +643,10 @@ Orran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni"
624,note="Available: 643,note="Available:
625\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=100264675012867&w=2} 644\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=100264675012867&w=2}
626[Viewed June 23, 2004]" 645[Viewed June 23, 2004]"
627,annotation=" 646,annotation={
628 Suggested burying memory barriers in Linux's list-manipulation 647 Suggested burying memory barriers in Linux's list-manipulation
629 primitives. 648 primitives.
630" 649}
631} 650}
632 651
633@unpublished{LinusTorvalds2001a 652@unpublished{LinusTorvalds2001a
@@ -638,6 +657,8 @@ Orran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni"
638,note="Available: 657,note="Available:
639\url{http://lkml.org/lkml/2001/10/13/105} 658\url{http://lkml.org/lkml/2001/10/13/105}
640[Viewed August 21, 2004]" 659[Viewed August 21, 2004]"
660,annotation={
661}
641} 662}
642 663
643@unpublished{Blanchard02a 664@unpublished{Blanchard02a
@@ -657,10 +678,10 @@ Orran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni"
657,Month="June" 678,Month="June"
658,Year="2002" 679,Year="2002"
659,pages="289-300" 680,pages="289-300"
660,annotation=" 681,annotation={
661 Measured scalability of Linux 2.4 kernel's directory-entry cache 682 Measured scalability of Linux 2.4 kernel's directory-entry cache
662 (dcache), and measured some scalability enhancements. 683 (dcache), and measured some scalability enhancements.
663" 684}
664} 685}
665 686
666@Conference{McKenney02a 687@Conference{McKenney02a
@@ -674,10 +695,10 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell"
674,note="Available: 695,note="Available:
675\url{http://www.linux.org.uk/~ajh/ols2002_proceedings.pdf.gz} 696\url{http://www.linux.org.uk/~ajh/ols2002_proceedings.pdf.gz}
676[Viewed June 23, 2004]" 697[Viewed June 23, 2004]"
677,annotation=" 698,annotation={
678 Presented and compared a number of RCU implementations for the 699 Presented and compared a number of RCU implementations for the
679 Linux kernel. 700 Linux kernel.
680" 701}
681} 702}
682 703
683@unpublished{Sarma02a 704@unpublished{Sarma02a
@@ -688,9 +709,9 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell"
688,note="Available: 709,note="Available:
689\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=102645767914212&w=2} 710\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=102645767914212&w=2}
690[Viewed June 23, 2004]" 711[Viewed June 23, 2004]"
691,annotation=" 712,annotation={
692 Compare fastwalk and RCU for dcache. RCU won. 713 Compare fastwalk and RCU for dcache. RCU won.
693" 714}
694} 715}
695 716
696@unpublished{Barbieri02 717@unpublished{Barbieri02
@@ -701,9 +722,9 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell"
701,note="Available: 722,note="Available:
702\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=103082050621241&w=2} 723\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=103082050621241&w=2}
703[Viewed: June 23, 2004]" 724[Viewed: June 23, 2004]"
704,annotation=" 725,annotation={
705 Suggested RCU for vfs\_shared\_cred. 726 Suggested RCU for vfs\_shared\_cred.
706" 727}
707} 728}
708 729
709@unpublished{Dickins02a 730@unpublished{Dickins02a
@@ -722,10 +743,10 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell"
722,note="Available: 743,note="Available:
723\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=103462075416638&w=2} 744\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=103462075416638&w=2}
724[Viewed June 23, 2004]" 745[Viewed June 23, 2004]"
725,annotation=" 746,annotation={
726 Performance of dcache RCU on kernbench for 16x NUMA-Q and 1x, 747 Performance of dcache RCU on kernbench for 16x NUMA-Q and 1x,
727 2x, and 4x systems. RCU does no harm, and helps on 16x. 748 2x, and 4x systems. RCU does no harm, and helps on 16x.
728" 749}
729} 750}
730 751
731@unpublished{LinusTorvalds2003a 752@unpublished{LinusTorvalds2003a
@@ -736,14 +757,14 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell"
736,note="Available: 757,note="Available:
737\url{http://lkml.org/lkml/2003/3/9/205} 758\url{http://lkml.org/lkml/2003/3/9/205}
738[Viewed March 13, 2006]" 759[Viewed March 13, 2006]"
739,annotation=" 760,annotation={
740 Linus suggests replacing brlock with RCU and/or seqlocks: 761 Linus suggests replacing brlock with RCU and/or seqlocks:
741 . 762 .
742 'It's entirely possible that the current user could be replaced 763 'It's entirely possible that the current user could be replaced
743 by RCU and/or seqlocks, and we could get rid of brlocks entirely.' 764 by RCU and/or seqlocks, and we could get rid of brlocks entirely.'
744 . 765 .
745 Steve Hemminger responds by replacing them with RCU. 766 Steve Hemminger responds by replacing them with RCU.
746" 767}
747} 768}
748 769
749@article{Appavoo03a 770@article{Appavoo03a
@@ -758,9 +779,9 @@ B. Rosenburg and M. Stumm and J. Xenidis"
758,volume="42" 779,volume="42"
759,number="1" 780,number="1"
760,pages="60-76" 781,pages="60-76"
761,annotation=" 782,annotation={
762 Use of RCU to enable hot-swapping for autonomic behavior in K42. 783 Use of RCU to enable hot-swapping for autonomic behavior in K42.
763" 784}
764} 785}
765 786
766@unpublished{Seigh03 787@unpublished{Seigh03
@@ -769,9 +790,9 @@ B. Rosenburg and M. Stumm and J. Xenidis"
769,Year="2003" 790,Year="2003"
770,Month="March" 791,Month="March"
771,note="email correspondence" 792,note="email correspondence"
772,annotation=" 793,annotation={
773 Described the relationship of the VM/XA passive serialization to RCU. 794 Described the relationship of the VM/XA passive serialization to RCU.
774" 795}
775} 796}
776 797
777@Conference{Arcangeli03 798@Conference{Arcangeli03
@@ -785,14 +806,12 @@ Dipankar Sarma"
785,year="2003" 806,year="2003"
786,month="June" 807,month="June"
787,pages="297-310" 808,pages="297-310"
788,note="Available: 809,annotation={
789\url{http://www.rdrop.com/users/paulmck/RCU/rcu.FREENIX.2003.06.14.pdf}
790[Viewed November 21, 2007]"
791,annotation="
792 Compared updated RCU implementations for the Linux kernel, and 810 Compared updated RCU implementations for the Linux kernel, and
793 described System V IPC use of RCU, including order-of-magnitude 811 described System V IPC use of RCU, including order-of-magnitude
794 performance improvements. 812 performance improvements.
795" 813 http://www.rdrop.com/users/paulmck/RCU/rcu.FREENIX.2003.06.14.pdf
814}
796} 815}
797 816
798@Conference{Soules03a 817@Conference{Soules03a
@@ -820,10 +839,10 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis"
820,note="Available: 839,note="Available:
821\url{http://www.linuxjournal.com/article/6993} 840\url{http://www.linuxjournal.com/article/6993}
822[Viewed November 14, 2007]" 841[Viewed November 14, 2007]"
823,annotation=" 842,annotation={
824 Reader-friendly intro to RCU, with the infamous old-man-and-brat 843 Reader-friendly intro to RCU, with the infamous old-man-and-brat
825 cartoon. 844 cartoon.
826" 845}
827} 846}
828 847
829@unpublished{Sarma03a 848@unpublished{Sarma03a
@@ -832,7 +851,9 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis"
832,month="December" 851,month="December"
833,year="2003" 852,year="2003"
834,note="Message ID: 20031222180114.GA2248@in.ibm.com" 853,note="Message ID: 20031222180114.GA2248@in.ibm.com"
835,annotation="dipankar/ct.2004.03.27/RCUll.2003.12.22.patch" 854,annotation={
855 dipankar/ct.2004.03.27/RCUll.2003.12.22.patch
856}
836} 857}
837 858
838@techreport{Friedberg03a 859@techreport{Friedberg03a
@@ -844,11 +865,11 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis"
844,number="US Patent 6,662,184" 865,number="US Patent 6,662,184"
845,month="December" 866,month="December"
846,pages="112" 867,pages="112"
847,annotation=" 868,annotation={
848 Applies RCU to a wildcard-search Patricia tree in order to permit 869 Applies RCU to a wildcard-search Patricia tree in order to permit
849 synchronization-free lookup. RCU is used to retain removed nodes 870 synchronization-free lookup. RCU is used to retain removed nodes
850 for a grace period before freeing them. 871 for a grace period before freeing them.
851" 872}
852} 873}
853 874
854@article{McKenney04a 875@article{McKenney04a
@@ -860,12 +881,11 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis"
860,volume="1" 881,volume="1"
861,number="118" 882,number="118"
862,pages="38-46" 883,pages="38-46"
863,note="Available: 884,annotation={
864\url{http://www.linuxjournal.com/node/7124}
865[Viewed December 26, 2010]"
866,annotation="
867 Reader friendly intro to dcache and RCU. 885 Reader friendly intro to dcache and RCU.
868" 886 http://www.linuxjournal.com/node/7124
887 [Viewed December 26, 2010]
888}
869} 889}
870 890
871@Conference{McKenney04b 891@Conference{McKenney04b
@@ -879,10 +899,10 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis"
879\url{http://www.linux.org.au/conf/2004/abstracts.html#90} 899\url{http://www.linux.org.au/conf/2004/abstracts.html#90}
880\url{http://www.rdrop.com/users/paulmck/RCU/lockperf.2004.01.17a.pdf} 900\url{http://www.rdrop.com/users/paulmck/RCU/lockperf.2004.01.17a.pdf}
881[Viewed June 23, 2004]" 901[Viewed June 23, 2004]"
882,annotation=" 902,annotation={
883 Compares performance of RCU to that of other locking primitives 903 Compares performance of RCU to that of other locking primitives
884 over a number of CPUs (x86, Opteron, Itanium, and PPC). 904 over a number of CPUs (x86, Opteron, Itanium, and PPC).
885" 905}
886} 906}
887 907
888@unpublished{Sarma04a 908@unpublished{Sarma04a
@@ -891,7 +911,9 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis"
891,month="March" 911,month="March"
892,year="2004" 912,year="2004"
893,note="\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108003746402892&w=2}" 913,note="\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108003746402892&w=2}"
894,annotation="Head of thread: dipankar/2004.03.23/rcu-low-lat.1.patch" 914,annotation={
915 Head of thread: dipankar/2004.03.23/rcu-low-lat.1.patch
916}
895} 917}
896 918
897@unpublished{Sarma04b 919@unpublished{Sarma04b
@@ -900,7 +922,9 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis"
900,month="March" 922,month="March"
901,year="2004" 923,year="2004"
902,note="\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108016474829546&w=2}" 924,note="\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108016474829546&w=2}"
903,annotation="dipankar/rcuth.2004.03.24/rcu-throttle.patch" 925,annotation={
926 dipankar/rcuth.2004.03.24/rcu-throttle.patch
927}
904} 928}
905 929
906@unpublished{Spraul04a 930@unpublished{Spraul04a
@@ -911,9 +935,9 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis"
911,note="Available: 935,note="Available:
912\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108546407726602&w=2} 936\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108546407726602&w=2}
913[Viewed June 23, 2004]" 937[Viewed June 23, 2004]"
914,annotation=" 938,annotation={
915 Hierarchical-bitmap patch for RCU infrastructure. 939 Hierarchical-bitmap patch for RCU infrastructure.
916" 940}
917} 941}
918 942
919@unpublished{Steiner04a 943@unpublished{Steiner04a
@@ -950,10 +974,12 @@ Realtime Applications"
950,year="2004" 974,year="2004"
951,month="June" 975,month="June"
952,pages="182-191" 976,pages="182-191"
953,annotation=" 977,annotation={
954 Describes and compares a number of modifications to the Linux RCU 978 Describes and compares a number of modifications to the Linux RCU
955 implementation that make it friendly to realtime applications. 979 implementation that make it friendly to realtime applications.
956" 980 https://www.usenix.org/conference/2004-usenix-annual-technical-conference/making-rcu-safe-deep-sub-millisecond-response
981 [Viewed July 26, 2012]
982}
957} 983}
958 984
959@phdthesis{PaulEdwardMcKenneyPhD 985@phdthesis{PaulEdwardMcKenneyPhD
@@ -964,14 +990,13 @@ in Operating System Kernels"
964,school="OGI School of Science and Engineering at 990,school="OGI School of Science and Engineering at
965Oregon Health and Sciences University" 991Oregon Health and Sciences University"
966,year="2004" 992,year="2004"
967,note="Available: 993,annotation={
968\url{http://www.rdrop.com/users/paulmck/RCU/RCUdissertation.2004.07.14e1.pdf}
969[Viewed October 15, 2004]"
970,annotation="
971 Describes RCU implementations and presents design patterns 994 Describes RCU implementations and presents design patterns
972 corresponding to common uses of RCU in several operating-system 995 corresponding to common uses of RCU in several operating-system
973 kernels. 996 kernels.
974" 997 http://www.rdrop.com/users/paulmck/RCU/RCUdissertation.2004.07.14e1.pdf
998 [Viewed October 15, 2004]
999}
975} 1000}
976 1001
977@unpublished{PaulEMcKenney2004rcu:dereference 1002@unpublished{PaulEMcKenney2004rcu:dereference
@@ -982,9 +1007,9 @@ Oregon Health and Sciences University"
982,note="Available: 1007,note="Available:
983\url{http://lkml.org/lkml/2004/8/6/237} 1008\url{http://lkml.org/lkml/2004/8/6/237}
984[Viewed June 8, 2010]" 1009[Viewed June 8, 2010]"
985,annotation=" 1010,annotation={
986 Introduce rcu_dereference(). 1011 Introduce rcu_dereference().
987" 1012}
988} 1013}
989 1014
990@unpublished{JimHouston04a 1015@unpublished{JimHouston04a
@@ -995,11 +1020,11 @@ Oregon Health and Sciences University"
995,note="Available: 1020,note="Available:
996\url{http://lkml.org/lkml/2004/8/30/87} 1021\url{http://lkml.org/lkml/2004/8/30/87}
997[Viewed February 17, 2005]" 1022[Viewed February 17, 2005]"
998,annotation=" 1023,annotation={
999 Uses active code in rcu_read_lock() and rcu_read_unlock() to 1024 Uses active code in rcu_read_lock() and rcu_read_unlock() to
1000 make RCU happen, allowing RCU to function on CPUs that do not 1025 make RCU happen, allowing RCU to function on CPUs that do not
1001 receive a scheduling-clock interrupt. 1026 receive a scheduling-clock interrupt.
1002" 1027}
1003} 1028}
1004 1029
1005@unpublished{TomHart04a 1030@unpublished{TomHart04a
@@ -1010,9 +1035,9 @@ Oregon Health and Sciences University"
1010,note="Available: 1035,note="Available:
1011\url{http://www.cs.toronto.edu/~tomhart/masters_thesis.html} 1036\url{http://www.cs.toronto.edu/~tomhart/masters_thesis.html}
1012[Viewed October 15, 2004]" 1037[Viewed October 15, 2004]"
1013,annotation=" 1038,annotation={
1014 Proposes comparing RCU to lock-free methods for the Linux kernel. 1039 Proposes comparing RCU to lock-free methods for the Linux kernel.
1015" 1040}
1016} 1041}
1017 1042
1018@unpublished{Vaddagiri04a 1043@unpublished{Vaddagiri04a
@@ -1023,9 +1048,9 @@ Oregon Health and Sciences University"
1023,note="Available: 1048,note="Available:
1024\url{http://marc.theaimsgroup.com/?t=109395731700004&r=1&w=2} 1049\url{http://marc.theaimsgroup.com/?t=109395731700004&r=1&w=2}
1025[Viewed October 18, 2004]" 1050[Viewed October 18, 2004]"
1026,annotation=" 1051,annotation={
1027 Srivatsa's RCU patch for tcp_ehash lookup. 1052 Srivatsa's RCU patch for tcp_ehash lookup.
1028" 1053}
1029} 1054}
1030 1055
1031@unpublished{Thirumalai04a 1056@unpublished{Thirumalai04a
@@ -1036,9 +1061,9 @@ Oregon Health and Sciences University"
1036,note="Available: 1061,note="Available:
1037\url{http://marc.theaimsgroup.com/?t=109144217400003&r=1&w=2} 1062\url{http://marc.theaimsgroup.com/?t=109144217400003&r=1&w=2}
1038[Viewed October 18, 2004]" 1063[Viewed October 18, 2004]"
1039,annotation=" 1064,annotation={
1040 Ravikiran's lockfree FD patch. 1065 Ravikiran's lockfree FD patch.
1041" 1066}
1042} 1067}
1043 1068
1044@unpublished{Thirumalai04b 1069@unpublished{Thirumalai04b
@@ -1049,9 +1074,9 @@ Oregon Health and Sciences University"
1049,note="Available: 1074,note="Available:
1050\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=109152521410459&w=2} 1075\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=109152521410459&w=2}
1051[Viewed October 18, 2004]" 1076[Viewed October 18, 2004]"
1052,annotation=" 1077,annotation={
1053 Ravikiran's lockfree FD patch. 1078 Ravikiran's lockfree FD patch.
1054" 1079}
1055} 1080}
1056 1081
1057@unpublished{PaulEMcKenney2004rcu:assign:pointer 1082@unpublished{PaulEMcKenney2004rcu:assign:pointer
@@ -1062,9 +1087,9 @@ Oregon Health and Sciences University"
1062,note="Available: 1087,note="Available:
1063\url{http://lkml.org/lkml/2004/10/23/241} 1088\url{http://lkml.org/lkml/2004/10/23/241}
1064[Viewed June 8, 2010]" 1089[Viewed June 8, 2010]"
1065,annotation=" 1090,annotation={
1066 Introduce rcu_assign_pointer(). 1091 Introduce rcu_assign_pointer().
1067" 1092}
1068} 1093}
1069 1094
1070@unpublished{JamesMorris04a 1095@unpublished{JamesMorris04a
@@ -1073,12 +1098,12 @@ Oregon Health and Sciences University"
1073,day="15" 1098,day="15"
1074,month="November" 1099,month="November"
1075,year="2004" 1100,year="2004"
1076,note="Available: 1101,note="\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=110054979416004&w=2}"
1077\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=110054979416004&w=2} 1102,annotation={
1078[Viewed December 10, 2004]"
1079,annotation="
1080 James Morris posts Kaigai Kohei's patch to LKML. 1103 James Morris posts Kaigai Kohei's patch to LKML.
1081" 1104 [Viewed December 10, 2004]
1105 Kaigai's patch is at https://lkml.org/lkml/2004/9/27/52
1106}
1082} 1107}
1083 1108
1084@unpublished{JamesMorris04b 1109@unpublished{JamesMorris04b
@@ -1089,9 +1114,9 @@ Oregon Health and Sciences University"
1089,note="Available: 1114,note="Available:
1090\url{http://www.livejournal.com/users/james_morris/2153.html} 1115\url{http://www.livejournal.com/users/james_morris/2153.html}
1091[Viewed December 10, 2004]" 1116[Viewed December 10, 2004]"
1092,annotation=" 1117,annotation={
1093 RCU helps SELinux performance. ;-) Made LWN. 1118 RCU helps SELinux performance. ;-) Made LWN.
1094" 1119}
1095} 1120}
1096 1121
1097@unpublished{PaulMcKenney2005RCUSemantics 1122@unpublished{PaulMcKenney2005RCUSemantics
@@ -1103,9 +1128,9 @@ Oregon Health and Sciences University"
1103,note="Available: 1128,note="Available:
1104\url{http://www.rdrop.com/users/paulmck/RCU/rcu-semantics.2005.01.30a.pdf} 1129\url{http://www.rdrop.com/users/paulmck/RCU/rcu-semantics.2005.01.30a.pdf}
1105[Viewed December 6, 2009]" 1130[Viewed December 6, 2009]"
1106,annotation=" 1131,annotation={
1107 Early derivation of RCU semantics. 1132 Early derivation of RCU semantics.
1108" 1133}
1109} 1134}
1110 1135
1111@unpublished{PaulMcKenney2005e 1136@unpublished{PaulMcKenney2005e
@@ -1117,10 +1142,10 @@ Oregon Health and Sciences University"
1117,note="Available: 1142,note="Available:
1118\url{http://lkml.org/lkml/2005/3/17/199} 1143\url{http://lkml.org/lkml/2005/3/17/199}
1119[Viewed September 5, 2005]" 1144[Viewed September 5, 2005]"
1120,annotation=" 1145,annotation={
1121 First posting showing how RCU can be safely adapted for 1146 First posting showing how RCU can be safely adapted for
1122 preemptable RCU read side critical sections. 1147 preemptable RCU read side critical sections.
1123" 1148}
1124} 1149}
1125 1150
1126@unpublished{EsbenNeilsen2005a 1151@unpublished{EsbenNeilsen2005a
@@ -1132,12 +1157,12 @@ Oregon Health and Sciences University"
1132,note="Available: 1157,note="Available:
1133\url{http://lkml.org/lkml/2005/3/18/122} 1158\url{http://lkml.org/lkml/2005/3/18/122}
1134[Viewed March 30, 2006]" 1159[Viewed March 30, 2006]"
1135,annotation=" 1160,annotation={
1136 Esben Neilsen suggests read-side suppression of grace-period 1161 Esben Neilsen suggests read-side suppression of grace-period
1137 processing for crude-but-workable realtime RCU. The downside 1162 processing for crude-but-workable realtime RCU. The downside
1138 is indefinite grace periods...But this is OK for experimentation 1163 is indefinite grace periods... But this is OK for experimentation
1139 and testing. 1164 and testing.
1140" 1165}
1141} 1166}
1142 1167
1143@unpublished{TomHart05a 1168@unpublished{TomHart05a
@@ -1149,10 +1174,10 @@ Data Structures"
1149,note="Available: 1174,note="Available:
1150\url{ftp://ftp.cs.toronto.edu/csrg-technical-reports/515/} 1175\url{ftp://ftp.cs.toronto.edu/csrg-technical-reports/515/}
1151[Viewed March 4, 2005]" 1176[Viewed March 4, 2005]"
1152,annotation=" 1177,annotation={
1153 Comparison of RCU, QBSR, and EBSR. RCU wins for read-mostly 1178 Comparison of RCU, QBSR, and EBSR. RCU wins for read-mostly
1154 workloads. ;-) 1179 workloads. ;-)
1155" 1180}
1156} 1181}
1157 1182
1158@unpublished{JonCorbet2005DeprecateSyncKernel 1183@unpublished{JonCorbet2005DeprecateSyncKernel
@@ -1164,10 +1189,10 @@ Data Structures"
1164,note="Available: 1189,note="Available:
1165\url{http://lwn.net/Articles/134484/} 1190\url{http://lwn.net/Articles/134484/}
1166[Viewed May 3, 2005]" 1191[Viewed May 3, 2005]"
1167,annotation=" 1192,annotation={
1168 Jon Corbet describes deprecation of synchronize_kernel() 1193 Jon Corbet describes deprecation of synchronize_kernel()
1169 in favor of synchronize_rcu() and synchronize_sched(). 1194 in favor of synchronize_rcu() and synchronize_sched().
1170" 1195}
1171} 1196}
1172 1197
1173@unpublished{PaulMcKenney05a 1198@unpublished{PaulMcKenney05a
@@ -1178,10 +1203,10 @@ Data Structures"
1178,note="Available: 1203,note="Available:
1179\url{http://lkml.org/lkml/2005/5/9/185} 1204\url{http://lkml.org/lkml/2005/5/9/185}
1180[Viewed May 13, 2005]" 1205[Viewed May 13, 2005]"
1181,annotation=" 1206,annotation={
1182 First publication of working lock-based deferred free patches 1207 First publication of working lock-based deferred free patches
1183 for the CONFIG_PREEMPT_RT environment. 1208 for the CONFIG_PREEMPT_RT environment.
1184" 1209}
1185} 1210}
1186 1211
1187@conference{PaulMcKenney05b 1212@conference{PaulMcKenney05b
@@ -1194,10 +1219,10 @@ Data Structures"
1194,note="Available: 1219,note="Available:
1195\url{http://www.rdrop.com/users/paulmck/RCU/realtimeRCU.2005.04.23a.pdf} 1220\url{http://www.rdrop.com/users/paulmck/RCU/realtimeRCU.2005.04.23a.pdf}
1196[Viewed May 13, 2005]" 1221[Viewed May 13, 2005]"
1197,annotation=" 1222,annotation={
1198 Realtime turns into making RCU yet more realtime friendly. 1223 Realtime turns into making RCU yet more realtime friendly.
1199 http://lca2005.linux.org.au/Papers/Paul%20McKenney/Towards%20Hard%20Realtime%20Response%20from%20the%20Linux%20Kernel/LKS.2005.04.22a.pdf 1224 http://lca2005.linux.org.au/Papers/Paul%20McKenney/Towards%20Hard%20Realtime%20Response%20from%20the%20Linux%20Kernel/LKS.2005.04.22a.pdf
1200" 1225}
1201} 1226}
1202 1227
1203@unpublished{PaulEMcKenneyHomePage 1228@unpublished{PaulEMcKenneyHomePage
@@ -1208,9 +1233,9 @@ Data Structures"
1208,note="Available: 1233,note="Available:
1209\url{http://www.rdrop.com/users/paulmck/} 1234\url{http://www.rdrop.com/users/paulmck/}
1210[Viewed May 25, 2005]" 1235[Viewed May 25, 2005]"
1211,annotation=" 1236,annotation={
1212 Paul McKenney's home page. 1237 Paul McKenney's home page.
1213" 1238}
1214} 1239}
1215 1240
1216@unpublished{PaulEMcKenneyRCUPage 1241@unpublished{PaulEMcKenneyRCUPage
@@ -1221,9 +1246,9 @@ Data Structures"
1221,note="Available: 1246,note="Available:
1222\url{http://www.rdrop.com/users/paulmck/RCU} 1247\url{http://www.rdrop.com/users/paulmck/RCU}
1223[Viewed May 25, 2005]" 1248[Viewed May 25, 2005]"
1224,annotation=" 1249,annotation={
1225 Paul McKenney's RCU page. 1250 Paul McKenney's RCU page.
1226" 1251}
1227} 1252}
1228 1253
1229@unpublished{JosephSeigh2005a 1254@unpublished{JosephSeigh2005a
@@ -1232,10 +1257,10 @@ Data Structures"
1232,month="July" 1257,month="July"
1233,year="2005" 1258,year="2005"
1234,note="Personal communication" 1259,note="Personal communication"
1235,annotation=" 1260,annotation={
1236 Joe Seigh announcing his atomic-ptr-plus project. 1261 Joe Seigh announcing his atomic-ptr-plus project.
1237 http://sourceforge.net/projects/atomic-ptr-plus/ 1262 http://sourceforge.net/projects/atomic-ptr-plus/
1238" 1263}
1239} 1264}
1240 1265
1241@unpublished{JosephSeigh2005b 1266@unpublished{JosephSeigh2005b
@@ -1247,9 +1272,9 @@ Data Structures"
1247,note="Available: 1272,note="Available:
1248\url{http://sourceforge.net/projects/atomic-ptr-plus/} 1273\url{http://sourceforge.net/projects/atomic-ptr-plus/}
1249[Viewed August 8, 2005]" 1274[Viewed August 8, 2005]"
1250,annotation=" 1275,annotation={
1251 Joe Seigh's atomic-ptr-plus project. 1276 Joe Seigh's atomic-ptr-plus project.
1252" 1277}
1253} 1278}
1254 1279
1255@unpublished{PaulMcKenney2005c 1280@unpublished{PaulMcKenney2005c
@@ -1261,9 +1286,9 @@ Data Structures"
1261,note="Available: 1286,note="Available:
1262\url{http://lkml.org/lkml/2005/8/1/155} 1287\url{http://lkml.org/lkml/2005/8/1/155}
1263[Viewed March 14, 2006]" 1288[Viewed March 14, 2006]"
1264,annotation=" 1289,annotation={
1265 First operating counter-based realtime RCU patch posted to LKML. 1290 First operating counter-based realtime RCU patch posted to LKML.
1266" 1291}
1267} 1292}
1268 1293
1269@unpublished{PaulMcKenney2005d 1294@unpublished{PaulMcKenney2005d
@@ -1275,11 +1300,11 @@ Data Structures"
1275,note="Available: 1300,note="Available:
1276\url{http://lkml.org/lkml/2005/8/8/108} 1301\url{http://lkml.org/lkml/2005/8/8/108}
1277[Viewed March 14, 2006]" 1302[Viewed March 14, 2006]"
1278,annotation=" 1303,annotation={
1279 First operating counter-based realtime RCU patch posted to LKML, 1304 First operating counter-based realtime RCU patch posted to LKML,
1280 but fixed so that various unusual combinations of configuration 1305 but fixed so that various unusual combinations of configuration
1281 parameters all function properly. 1306 parameters all function properly.
1282" 1307}
1283} 1308}
1284 1309
1285@unpublished{PaulMcKenney2005rcutorture 1310@unpublished{PaulMcKenney2005rcutorture
@@ -1291,9 +1316,25 @@ Data Structures"
1291,note="Available: 1316,note="Available:
1292\url{http://lkml.org/lkml/2005/10/1/70} 1317\url{http://lkml.org/lkml/2005/10/1/70}
1293[Viewed March 14, 2006]" 1318[Viewed March 14, 2006]"
1294,annotation=" 1319,annotation={
1295 First rcutorture patch. 1320 First rcutorture patch.
1296" 1321}
1322}
1323
1324@unpublished{DavidSMiller2006HashedLocking
1325,Author="David S. Miller"
1326,Title="Re: [{PATCH}, {RFC}] {RCU} : {OOM} avoidance and lower latency"
1327,month="January"
1328,day="6"
1329,year="2006"
1330,note="Available:
1331\url{https://lkml.org/lkml/2006/1/7/22}
1332[Viewed February 29, 2012]"
1333,annotation={
1334 David Miller's view on hashed arrays of locks: used to really
1335 like it, but time he saw an opportunity for this technique,
1336 something else always proved superior. Partitioning or RCU. ;-)
1337}
1297} 1338}
1298 1339
1299@conference{ThomasEHart2006a 1340@conference{ThomasEHart2006a
@@ -1309,10 +1350,10 @@ Distributed Processing Symposium"
1309,note="Available: 1350,note="Available:
1310\url{http://www.rdrop.com/users/paulmck/RCU/hart_ipdps06.pdf} 1351\url{http://www.rdrop.com/users/paulmck/RCU/hart_ipdps06.pdf}
1311[Viewed April 28, 2008]" 1352[Viewed April 28, 2008]"
1312,annotation=" 1353,annotation={
1313 Compares QSBR, HPBR, EBR, and lock-free reference counting. 1354 Compares QSBR, HPBR, EBR, and lock-free reference counting.
1314 http://www.cs.toronto.edu/~tomhart/perflab/ipdps06.tgz 1355 http://www.cs.toronto.edu/~tomhart/perflab/ipdps06.tgz
1315" 1356}
1316} 1357}
1317 1358
1318@unpublished{NickPiggin2006radixtree 1359@unpublished{NickPiggin2006radixtree
@@ -1324,9 +1365,9 @@ Distributed Processing Symposium"
1324,note="Available: 1365,note="Available:
1325\url{http://lkml.org/lkml/2006/6/20/238} 1366\url{http://lkml.org/lkml/2006/6/20/238}
1326[Viewed March 25, 2008]" 1367[Viewed March 25, 2008]"
1327,annotation=" 1368,annotation={
1328 RCU-protected radix tree. 1369 RCU-protected radix tree.
1329" 1370}
1330} 1371}
1331 1372
1332@Conference{PaulEMcKenney2006b 1373@Conference{PaulEMcKenney2006b
@@ -1341,9 +1382,9 @@ Suparna Bhattacharya"
1341\url{http://www.linuxsymposium.org/2006/view_abstract.php?content_key=184} 1382\url{http://www.linuxsymposium.org/2006/view_abstract.php?content_key=184}
1342\url{http://www.rdrop.com/users/paulmck/RCU/OLSrtRCU.2006.08.11a.pdf} 1383\url{http://www.rdrop.com/users/paulmck/RCU/OLSrtRCU.2006.08.11a.pdf}
1343[Viewed January 1, 2007]" 1384[Viewed January 1, 2007]"
1344,annotation=" 1385,annotation={
1345 Described how to improve the -rt implementation of realtime RCU. 1386 Described how to improve the -rt implementation of realtime RCU.
1346" 1387}
1347} 1388}
1348 1389
1349@unpublished{WikipediaRCU 1390@unpublished{WikipediaRCU
@@ -1354,12 +1395,11 @@ Canis Rufus and Zoicon5 and Anome and Hal Eisen"
1354,month="July" 1395,month="July"
1355,day="8" 1396,day="8"
1356,year="2006" 1397,year="2006"
1357,note="Available: 1398,note="\url{http://en.wikipedia.org/wiki/Read-copy-update}"
1358\url{http://en.wikipedia.org/wiki/Read-copy-update} 1399,annotation={
1359[Viewed August 21, 2006]"
1360,annotation="
1361 Wikipedia RCU page as of July 8 2006. 1400 Wikipedia RCU page as of July 8 2006.
1362" 1401 [Viewed August 21, 2006]
1402}
1363} 1403}
1364 1404
1365@Conference{NickPiggin2006LocklessPageCache 1405@Conference{NickPiggin2006LocklessPageCache
@@ -1372,9 +1412,9 @@ Canis Rufus and Zoicon5 and Anome and Hal Eisen"
1372,note="Available: 1412,note="Available:
1373\url{http://www.linuxsymposium.org/2006/view_abstract.php?content_key=184} 1413\url{http://www.linuxsymposium.org/2006/view_abstract.php?content_key=184}
1374[Viewed January 11, 2009]" 1414[Viewed January 11, 2009]"
1375,annotation=" 1415,annotation={
1376 Uses RCU-protected radix tree for a lockless page cache. 1416 Uses RCU-protected radix tree for a lockless page cache.
1377" 1417}
1378} 1418}
1379 1419
1380@unpublished{PaulEMcKenney2006c 1420@unpublished{PaulEMcKenney2006c
@@ -1388,9 +1428,9 @@ Canis Rufus and Zoicon5 and Anome and Hal Eisen"
1388Revised: 1428Revised:
1389\url{http://www.rdrop.com/users/paulmck/RCU/srcu.2007.01.14a.pdf} 1429\url{http://www.rdrop.com/users/paulmck/RCU/srcu.2007.01.14a.pdf}
1390[Viewed August 21, 2006]" 1430[Viewed August 21, 2006]"
1391,annotation=" 1431,annotation={
1392 LWN article introducing SRCU. 1432 LWN article introducing SRCU.
1393" 1433}
1394} 1434}
1395 1435
1396@unpublished{RobertOlsson2006a 1436@unpublished{RobertOlsson2006a
@@ -1399,12 +1439,11 @@ Revised:
1399,month="August" 1439,month="August"
1400,day="18" 1440,day="18"
1401,year="2006" 1441,year="2006"
1402,note="Available: 1442,note="\url{http://www.nada.kth.se/~snilsson/publications/TRASH/trash.pdf}"
1403\url{http://www.nada.kth.se/~snilsson/publications/TRASH/trash.pdf} 1443,annotation={
1404[Viewed March 4, 2011]"
1405,annotation="
1406 RCU-protected dynamic trie-hash combination. 1444 RCU-protected dynamic trie-hash combination.
1407" 1445 [Viewed March 4, 2011]
1446}
1408} 1447}
1409 1448
1410@unpublished{ChristophHellwig2006RCU2SRCU 1449@unpublished{ChristophHellwig2006RCU2SRCU
@@ -1426,10 +1465,10 @@ Revised:
1426,note="Available: 1465,note="Available:
1427\url{http://www.rdrop.com/users/paulmck/RCU/linuxusage.html} 1466\url{http://www.rdrop.com/users/paulmck/RCU/linuxusage.html}
1428[Viewed January 14, 2007]" 1467[Viewed January 14, 2007]"
1429,annotation=" 1468,annotation={
1430 Paul McKenney's RCU page showing graphs plotting Linux-kernel 1469 Paul McKenney's RCU page showing graphs plotting Linux-kernel
1431 usage of RCU. 1470 usage of RCU.
1432" 1471}
1433} 1472}
1434 1473
1435@unpublished{PaulEMcKenneyRCUusageRawDataPage 1474@unpublished{PaulEMcKenneyRCUusageRawDataPage
@@ -1440,10 +1479,10 @@ Revised:
1440,note="Available: 1479,note="Available:
1441\url{http://www.rdrop.com/users/paulmck/RCU/linuxusage/rculocktab.html} 1480\url{http://www.rdrop.com/users/paulmck/RCU/linuxusage/rculocktab.html}
1442[Viewed January 14, 2007]" 1481[Viewed January 14, 2007]"
1443,annotation=" 1482,annotation={
1444 Paul McKenney's RCU page showing Linux usage of RCU in tabular 1483 Paul McKenney's RCU page showing Linux usage of RCU in tabular
1445 form, with links to corresponding cscope databases. 1484 form, with links to corresponding cscope databases.
1446" 1485}
1447} 1486}
1448 1487
1449@unpublished{GauthamShenoy2006RCUrwlock 1488@unpublished{GauthamShenoy2006RCUrwlock
@@ -1455,13 +1494,13 @@ Revised:
1455,note="Available: 1494,note="Available:
1456\url{http://lkml.org/lkml/2006/10/26/73} 1495\url{http://lkml.org/lkml/2006/10/26/73}
1457[Viewed January 26, 2009]" 1496[Viewed January 26, 2009]"
1458,annotation=" 1497,annotation={
1459 RCU-based reader-writer lock that allows readers to proceed with 1498 RCU-based reader-writer lock that allows readers to proceed with
1460 no memory barriers or atomic instruction in absence of writers. 1499 no memory barriers or atomic instruction in absence of writers.
1461 If writer do show up, readers must of course wait as required by 1500 If writer do show up, readers must of course wait as required by
1462 the semantics of reader-writer locking. This is a recursive 1501 the semantics of reader-writer locking. This is a recursive
1463 lock. 1502 lock.
1464" 1503}
1465} 1504}
1466 1505
1467@unpublished{JensAxboe2006SlowSRCU 1506@unpublished{JensAxboe2006SlowSRCU
@@ -1474,11 +1513,11 @@ Revised:
1474,note="Available: 1513,note="Available:
1475\url{http://lkml.org/lkml/2006/11/17/56} 1514\url{http://lkml.org/lkml/2006/11/17/56}
1476[Viewed May 28, 2007]" 1515[Viewed May 28, 2007]"
1477,annotation=" 1516,annotation={
1478 SRCU's grace periods are too slow for Jens, even after a 1517 SRCU's grace periods are too slow for Jens, even after a
1479 factor-of-three speedup. 1518 factor-of-three speedup.
1480 Sped-up version of SRCU at http://lkml.org/lkml/2006/11/17/359. 1519 Sped-up version of SRCU at http://lkml.org/lkml/2006/11/17/359.
1481" 1520}
1482} 1521}
1483 1522
1484@unpublished{OlegNesterov2006QRCU 1523@unpublished{OlegNesterov2006QRCU
@@ -1491,10 +1530,10 @@ Revised:
1491,note="Available: 1530,note="Available:
1492\url{http://lkml.org/lkml/2006/11/19/69} 1531\url{http://lkml.org/lkml/2006/11/19/69}
1493[Viewed May 28, 2007]" 1532[Viewed May 28, 2007]"
1494,annotation=" 1533,annotation={
1495 First cut of QRCU. Expanded/corrected versions followed. 1534 First cut of QRCU. Expanded/corrected versions followed.
1496 Used to be OlegNesterov2007QRCU, now time-corrected. 1535 Used to be OlegNesterov2007QRCU, now time-corrected.
1497" 1536}
1498} 1537}
1499 1538
1500@unpublished{OlegNesterov2006aQRCU 1539@unpublished{OlegNesterov2006aQRCU
@@ -1506,10 +1545,10 @@ Revised:
1506,note="Available: 1545,note="Available:
1507\url{http://lkml.org/lkml/2006/11/29/330} 1546\url{http://lkml.org/lkml/2006/11/29/330}
1508[Viewed November 26, 2008]" 1547[Viewed November 26, 2008]"
1509,annotation=" 1548,annotation={
1510 Expanded/corrected version of QRCU. 1549 Expanded/corrected version of QRCU.
1511 Used to be OlegNesterov2007aQRCU, now time-corrected. 1550 Used to be OlegNesterov2007aQRCU, now time-corrected.
1512" 1551}
1513} 1552}
1514 1553
1515@unpublished{EvgeniyPolyakov2006RCUslowdown 1554@unpublished{EvgeniyPolyakov2006RCUslowdown
@@ -1521,10 +1560,10 @@ Revised:
1521,note="Available: 1560,note="Available:
1522\url{http://www.ioremap.net/node/41} 1561\url{http://www.ioremap.net/node/41}
1523[Viewed October 28, 2008]" 1562[Viewed October 28, 2008]"
1524,annotation=" 1563,annotation={
1525 Using RCU as a pure delay leads to a 2.5x slowdown in skbs in 1564 Using RCU as a pure delay leads to a 2.5x slowdown in skbs in
1526 the Linux kernel. 1565 the Linux kernel.
1527" 1566}
1528} 1567}
1529 1568
1530@inproceedings{ChrisMatthews2006ClusteredObjectsRCU 1569@inproceedings{ChrisMatthews2006ClusteredObjectsRCU
@@ -1541,7 +1580,8 @@ Revised:
1541,annotation={ 1580,annotation={
1542 Uses K42's RCU-like functionality to manage clustered-object 1581 Uses K42's RCU-like functionality to manage clustered-object
1543 lifetimes. 1582 lifetimes.
1544}} 1583}
1584}
1545 1585
1546@article{DilmaDaSilva2006K42 1586@article{DilmaDaSilva2006K42
1547,author = {Silva, Dilma Da and Krieger, Orran and Wisniewski, Robert W. and Waterland, Amos and Tam, David and Baumann, Andrew} 1587,author = {Silva, Dilma Da and Krieger, Orran and Wisniewski, Robert W. and Waterland, Amos and Tam, David and Baumann, Andrew}
@@ -1557,7 +1597,8 @@ Revised:
1557,address = {New York, NY, USA} 1597,address = {New York, NY, USA}
1558,annotation={ 1598,annotation={
1559 Describes relationship of K42 generations to RCU. 1599 Describes relationship of K42 generations to RCU.
1560}} 1600}
1601}
1561 1602
1562# CoreyMinyard2007list_splice_rcu 1603# CoreyMinyard2007list_splice_rcu
1563@unpublished{CoreyMinyard2007list:splice:rcu 1604@unpublished{CoreyMinyard2007list:splice:rcu
@@ -1569,9 +1610,9 @@ Revised:
1569,note="Available: 1610,note="Available:
1570\url{http://lkml.org/lkml/2007/1/3/112} 1611\url{http://lkml.org/lkml/2007/1/3/112}
1571[Viewed May 28, 2007]" 1612[Viewed May 28, 2007]"
1572,annotation=" 1613,annotation={
1573 Patch for list_splice_rcu(). 1614 Patch for list_splice_rcu().
1574" 1615}
1575} 1616}
1576 1617
1577@unpublished{PaulEMcKenney2007rcubarrier 1618@unpublished{PaulEMcKenney2007rcubarrier
@@ -1583,9 +1624,9 @@ Revised:
1583,note="Available: 1624,note="Available:
1584\url{http://lwn.net/Articles/217484/} 1625\url{http://lwn.net/Articles/217484/}
1585[Viewed November 22, 2007]" 1626[Viewed November 22, 2007]"
1586,annotation=" 1627,annotation={
1587 LWN article introducing the rcu_barrier() primitive. 1628 LWN article introducing the rcu_barrier() primitive.
1588" 1629}
1589} 1630}
1590 1631
1591@unpublished{PeterZijlstra2007SyncBarrier 1632@unpublished{PeterZijlstra2007SyncBarrier
@@ -1597,10 +1638,10 @@ Revised:
1597,note="Available: 1638,note="Available:
1598\url{http://lkml.org/lkml/2007/1/28/34} 1639\url{http://lkml.org/lkml/2007/1/28/34}
1599[Viewed March 27, 2008]" 1640[Viewed March 27, 2008]"
1600,annotation=" 1641,annotation={
1601 RCU-like implementation for frequent updaters and rare readers(!). 1642 RCU-like implementation for frequent updaters and rare readers(!).
1602 Subsumed into QRCU. Maybe... 1643 Subsumed into QRCU. Maybe...
1603" 1644}
1604} 1645}
1605 1646
1606@unpublished{PaulEMcKenney2007BoostRCU 1647@unpublished{PaulEMcKenney2007BoostRCU
@@ -1609,14 +1650,13 @@ Revised:
1609,month="February" 1650,month="February"
1610,day="5" 1651,day="5"
1611,year="2007" 1652,year="2007"
1612,note="Available: 1653,note="\url{http://lwn.net/Articles/220677/}"
1613\url{http://lwn.net/Articles/220677/} 1654,annotation={
1614Revised:
1615\url{http://www.rdrop.com/users/paulmck/RCU/RCUbooststate.2007.04.16a.pdf}
1616[Viewed September 7, 2007]"
1617,annotation="
1618 LWN article introducing RCU priority boosting. 1655 LWN article introducing RCU priority boosting.
1619" 1656 Revised:
1657 http://www.rdrop.com/users/paulmck/RCU/RCUbooststate.2007.04.16a.pdf
1658 [Viewed September 7, 2007]
1659}
1620} 1660}
1621 1661
1622@unpublished{PaulMcKenney2007QRCUpatch 1662@unpublished{PaulMcKenney2007QRCUpatch
@@ -1628,9 +1668,9 @@ Revised:
1628,note="Available: 1668,note="Available:
1629\url{http://lkml.org/lkml/2007/2/25/18} 1669\url{http://lkml.org/lkml/2007/2/25/18}
1630[Viewed March 27, 2008]" 1670[Viewed March 27, 2008]"
1631,annotation=" 1671,annotation={
1632 Patch for QRCU supplying lock-free fast path. 1672 Patch for QRCU supplying lock-free fast path.
1633" 1673}
1634} 1674}
1635 1675
1636@article{JonathanAppavoo2007K42RCU 1676@article{JonathanAppavoo2007K42RCU
@@ -1647,7 +1687,8 @@ Revised:
1647,address = {New York, NY, USA} 1687,address = {New York, NY, USA}
1648,annotation={ 1688,annotation={
1649 Role of RCU in K42. 1689 Role of RCU in K42.
1650}} 1690}
1691}
1651 1692
1652@conference{RobertOlsson2007Trash 1693@conference{RobertOlsson2007Trash
1653,Author="Robert Olsson and Stefan Nilsson" 1694,Author="Robert Olsson and Stefan Nilsson"
@@ -1658,9 +1699,9 @@ Revised:
1658,note="Available: 1699,note="Available:
1659\url{http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4281239} 1700\url{http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4281239}
1660[Viewed October 1, 2010]" 1701[Viewed October 1, 2010]"
1661,annotation=" 1702,annotation={
1662 RCU-protected dynamic trie-hash combination. 1703 RCU-protected dynamic trie-hash combination.
1663" 1704}
1664} 1705}
1665 1706
1666@conference{PeterZijlstra2007ConcurrentPagecacheRCU 1707@conference{PeterZijlstra2007ConcurrentPagecacheRCU
@@ -1673,10 +1714,10 @@ Revised:
1673,note="Available: 1714,note="Available:
1674\url{http://ols.108.redhat.com/2007/Reprints/zijlstra-Reprint.pdf} 1715\url{http://ols.108.redhat.com/2007/Reprints/zijlstra-Reprint.pdf}
1675[Viewed April 14, 2008]" 1716[Viewed April 14, 2008]"
1676,annotation=" 1717,annotation={
1677 Page-cache modifications permitting RCU readers and concurrent 1718 Page-cache modifications permitting RCU readers and concurrent
1678 updates. 1719 updates.
1679" 1720}
1680} 1721}
1681 1722
1682@unpublished{PaulEMcKenney2007whatisRCU 1723@unpublished{PaulEMcKenney2007whatisRCU
@@ -1701,11 +1742,11 @@ Revised:
1701,note="Available: 1742,note="Available:
1702\url{http://lwn.net/Articles/243851/} 1743\url{http://lwn.net/Articles/243851/}
1703[Viewed September 8, 2007]" 1744[Viewed September 8, 2007]"
1704,annotation=" 1745,annotation={
1705 LWN article describing Promela and spin, and also using Oleg 1746 LWN article describing Promela and spin, and also using Oleg
1706 Nesterov's QRCU as an example (with Paul McKenney's fastpath). 1747 Nesterov's QRCU as an example (with Paul McKenney's fastpath).
1707 Merged patch at: http://lkml.org/lkml/2007/2/25/18 1748 Merged patch at: http://lkml.org/lkml/2007/2/25/18
1708" 1749}
1709} 1750}
1710 1751
1711@unpublished{PaulEMcKenney2007WG21DDOatomics 1752@unpublished{PaulEMcKenney2007WG21DDOatomics
@@ -1714,12 +1755,12 @@ Revised:
1714,month="August" 1755,month="August"
1715,day="3" 1756,day="3"
1716,year="2007" 1757,year="2007"
1717,note="Preprint: 1758,note="Available:
1718\url{http://open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm} 1759\url{http://open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm}
1719[Viewed December 7, 2009]" 1760[Viewed December 7, 2009]"
1720,annotation=" 1761,annotation={
1721 RCU for C++, parts 1 and 2. 1762 RCU for C++, parts 1 and 2.
1722" 1763}
1723} 1764}
1724 1765
1725@unpublished{PaulEMcKenney2007WG21DDOannotation 1766@unpublished{PaulEMcKenney2007WG21DDOannotation
@@ -1728,12 +1769,12 @@ Revised:
1728,month="September" 1769,month="September"
1729,day="18" 1770,day="18"
1730,year="2008" 1771,year="2008"
1731,note="Preprint: 1772,note="Available:
1732\url{http://open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2782.htm} 1773\url{http://open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2782.htm}
1733[Viewed December 7, 2009]" 1774[Viewed December 7, 2009]"
1734,annotation=" 1775,annotation={
1735 RCU for C++, part 2, updated many times. 1776 RCU for C++, part 2, updated many times.
1736" 1777}
1737} 1778}
1738 1779
1739@unpublished{PaulEMcKenney2007PreemptibleRCUPatch 1780@unpublished{PaulEMcKenney2007PreemptibleRCUPatch
@@ -1745,10 +1786,10 @@ Revised:
1745,note="Available: 1786,note="Available:
1746\url{http://lkml.org/lkml/2007/9/10/213} 1787\url{http://lkml.org/lkml/2007/9/10/213}
1747[Viewed October 25, 2007]" 1788[Viewed October 25, 2007]"
1748,annotation=" 1789,annotation={
1749 Final patch for preemptable RCU to -rt. (Later patches were 1790 Final patch for preemptable RCU to -rt. (Later patches were
1750 to mainline, eventually incorporated.) 1791 to mainline, eventually incorporated.)
1751" 1792}
1752} 1793}
1753 1794
1754@unpublished{PaulEMcKenney2007PreemptibleRCU 1795@unpublished{PaulEMcKenney2007PreemptibleRCU
@@ -1760,9 +1801,9 @@ Revised:
1760,note="Available: 1801,note="Available:
1761\url{http://lwn.net/Articles/253651/} 1802\url{http://lwn.net/Articles/253651/}
1762[Viewed October 25, 2007]" 1803[Viewed October 25, 2007]"
1763,annotation=" 1804,annotation={
1764 LWN article describing the design of preemptible RCU. 1805 LWN article describing the design of preemptible RCU.
1765" 1806}
1766} 1807}
1767 1808
1768@article{ThomasEHart2007a 1809@article{ThomasEHart2007a
@@ -1783,6 +1824,7 @@ Revised:
1783} 1824}
1784} 1825}
1785 1826
1827# MathieuDesnoyers2007call_rcu_schedNeeded
1786@unpublished{MathieuDesnoyers2007call:rcu:schedNeeded 1828@unpublished{MathieuDesnoyers2007call:rcu:schedNeeded
1787,Author="Mathieu Desnoyers" 1829,Author="Mathieu Desnoyers"
1788,Title="Re: [patch 1/2] {Linux} Kernel Markers - Support Multiple Probes" 1830,Title="Re: [patch 1/2] {Linux} Kernel Markers - Support Multiple Probes"
@@ -1792,9 +1834,9 @@ Revised:
1792,note="Available: 1834,note="Available:
1793\url{http://lkml.org/lkml/2007/12/20/244} 1835\url{http://lkml.org/lkml/2007/12/20/244}
1794[Viewed March 27, 2008]" 1836[Viewed March 27, 2008]"
1795,annotation=" 1837,annotation={
1796 Request for call_rcu_sched() and rcu_barrier_sched(). 1838 Request for call_rcu_sched() and rcu_barrier_sched().
1797" 1839}
1798} 1840}
1799 1841
1800 1842
@@ -1815,11 +1857,11 @@ Revised:
1815,note="Available: 1857,note="Available:
1816\url{http://lwn.net/Articles/262464/} 1858\url{http://lwn.net/Articles/262464/}
1817[Viewed December 27, 2007]" 1859[Viewed December 27, 2007]"
1818,annotation=" 1860,annotation={
1819 Lays out the three basic components of RCU: (1) publish-subscribe, 1861 Lays out the three basic components of RCU: (1) publish-subscribe,
1820 (2) wait for pre-existing readers to complete, and (2) maintain 1862 (2) wait for pre-existing readers to complete, and (2) maintain
1821 multiple versions. 1863 multiple versions.
1822" 1864}
1823} 1865}
1824 1866
1825@unpublished{PaulEMcKenney2008WhatIsRCUUsage 1867@unpublished{PaulEMcKenney2008WhatIsRCUUsage
@@ -1831,7 +1873,7 @@ Revised:
1831,note="Available: 1873,note="Available:
1832\url{http://lwn.net/Articles/263130/} 1874\url{http://lwn.net/Articles/263130/}
1833[Viewed January 4, 2008]" 1875[Viewed January 4, 2008]"
1834,annotation=" 1876,annotation={
1835 Lays out six uses of RCU: 1877 Lays out six uses of RCU:
1836 1. RCU is a Reader-Writer Lock Replacement 1878 1. RCU is a Reader-Writer Lock Replacement
1837 2. RCU is a Restricted Reference-Counting Mechanism 1879 2. RCU is a Restricted Reference-Counting Mechanism
@@ -1839,7 +1881,7 @@ Revised:
1839 4. RCU is a Poor Man's Garbage Collector 1881 4. RCU is a Poor Man's Garbage Collector
1840 5. RCU is a Way of Providing Existence Guarantees 1882 5. RCU is a Way of Providing Existence Guarantees
1841 6. RCU is a Way of Waiting for Things to Finish 1883 6. RCU is a Way of Waiting for Things to Finish
1842" 1884}
1843} 1885}
1844 1886
1845@unpublished{PaulEMcKenney2008WhatIsRCUAPI 1887@unpublished{PaulEMcKenney2008WhatIsRCUAPI
@@ -1851,10 +1893,10 @@ Revised:
1851,note="Available: 1893,note="Available:
1852\url{http://lwn.net/Articles/264090/} 1894\url{http://lwn.net/Articles/264090/}
1853[Viewed January 10, 2008]" 1895[Viewed January 10, 2008]"
1854,annotation=" 1896,annotation={
1855 Gives an overview of the Linux-kernel RCU API and a brief annotated RCU 1897 Gives an overview of the Linux-kernel RCU API and a brief annotated RCU
1856 bibliography. 1898 bibliography.
1857" 1899}
1858} 1900}
1859 1901
1860# 1902#
@@ -1872,10 +1914,10 @@ Revised:
1872,note="Available: 1914,note="Available:
1873\url{http://lkml.org/lkml/2008/1/29/208} 1915\url{http://lkml.org/lkml/2008/1/29/208}
1874[Viewed March 27, 2008]" 1916[Viewed March 27, 2008]"
1875,annotation=" 1917,annotation={
1876 Patch that prevents preemptible RCU from unnecessarily waking 1918 Patch that prevents preemptible RCU from unnecessarily waking
1877 up dynticks-idle CPUs. 1919 up dynticks-idle CPUs.
1878" 1920}
1879} 1921}
1880 1922
1881@unpublished{PaulEMcKenney2008LKMLDependencyOrdering 1923@unpublished{PaulEMcKenney2008LKMLDependencyOrdering
@@ -1887,9 +1929,9 @@ Revised:
1887,note="Available: 1929,note="Available:
1888\url{http://lkml.org/lkml/2008/2/2/255} 1930\url{http://lkml.org/lkml/2008/2/2/255}
1889[Viewed October 18, 2008]" 1931[Viewed October 18, 2008]"
1890,annotation=" 1932,annotation={
1891 Explanation of compilers violating dependency ordering. 1933 Explanation of compilers violating dependency ordering.
1892" 1934}
1893} 1935}
1894 1936
1895@Conference{PaulEMcKenney2008Beijing 1937@Conference{PaulEMcKenney2008Beijing
@@ -1916,24 +1958,26 @@ lot of {Linux} into your technology!!!"
1916,note="Available: 1958,note="Available:
1917\url{http://lwn.net/Articles/279077/} 1959\url{http://lwn.net/Articles/279077/}
1918[Viewed April 24, 2008]" 1960[Viewed April 24, 2008]"
1919,annotation=" 1961,annotation={
1920 Describes use of Promela and Spin to validate (and fix!) the 1962 Describes use of Promela and Spin to validate (and fix!) the
1921 dynticks/RCU interface. 1963 dynticks/RCU interface.
1922" 1964}
1923} 1965}
1924 1966
1925@article{DinakarGuniguntala2008IBMSysJ 1967@article{DinakarGuniguntala2008IBMSysJ
1926,author="D. Guniguntala and P. E. McKenney and J. Triplett and J. Walpole" 1968,author="D. Guniguntala and P. E. McKenney and J. Triplett and J. Walpole"
1927,title="The read-copy-update mechanism for supporting real-time applications on shared-memory multiprocessor systems with {Linux}" 1969,title="The read-copy-update mechanism for supporting real-time applications on shared-memory multiprocessor systems with {Linux}"
1928,Year="2008" 1970,Year="2008"
1929,Month="April-June" 1971,Month="May"
1930,journal="IBM Systems Journal" 1972,journal="IBM Systems Journal"
1931,volume="47" 1973,volume="47"
1932,number="2" 1974,number="2"
1933,pages="221-236" 1975,pages="221-236"
1934,annotation=" 1976,annotation={
1935 RCU, realtime RCU, sleepable RCU, performance. 1977 RCU, realtime RCU, sleepable RCU, performance.
1936" 1978 http://www.research.ibm.com/journal/sj/472/guniguntala.pdf
1979 [Viewed April 24, 2008]
1980}
1937} 1981}
1938 1982
1939@unpublished{LaiJiangshan2008NewClassicAlgorithm 1983@unpublished{LaiJiangshan2008NewClassicAlgorithm
@@ -1945,11 +1989,11 @@ lot of {Linux} into your technology!!!"
1945,note="Available: 1989,note="Available:
1946\url{http://lkml.org/lkml/2008/6/2/539} 1990\url{http://lkml.org/lkml/2008/6/2/539}
1947[Viewed December 10, 2008]" 1991[Viewed December 10, 2008]"
1948,annotation=" 1992,annotation={
1949 Updated RCU classic algorithm. Introduced multi-tailed list 1993 Updated RCU classic algorithm. Introduced multi-tailed list
1950 for RCU callbacks and also pulling common code into 1994 for RCU callbacks and also pulling common code into
1951 __call_rcu(). 1995 __call_rcu().
1952" 1996}
1953} 1997}
1954 1998
1955@article{PaulEMcKenney2008RCUOSR 1999@article{PaulEMcKenney2008RCUOSR
@@ -1966,6 +2010,7 @@ lot of {Linux} into your technology!!!"
1966,address="New York, NY, USA" 2010,address="New York, NY, USA"
1967,annotation={ 2011,annotation={
1968 Linux changed RCU to a far greater degree than RCU has changed Linux. 2012 Linux changed RCU to a far greater degree than RCU has changed Linux.
2013 http://portal.acm.org/citation.cfm?doid=1400097.1400099
1969} 2014}
1970} 2015}
1971 2016
@@ -1978,10 +2023,10 @@ lot of {Linux} into your technology!!!"
1978,note="Available: 2023,note="Available:
1979\url{http://lkml.org/lkml/2008/8/21/336} 2024\url{http://lkml.org/lkml/2008/8/21/336}
1980[Viewed December 8, 2008]" 2025[Viewed December 8, 2008]"
1981,annotation=" 2026,annotation={
1982 State-based RCU. One key thing that this patch does is to 2027 State-based RCU. One key thing that this patch does is to
1983 separate the dynticks handling of NMIs and IRQs. 2028 separate the dynticks handling of NMIs and IRQs.
1984" 2029}
1985} 2030}
1986 2031
1987@unpublished{ManfredSpraul2008dyntickIRQNMI 2032@unpublished{ManfredSpraul2008dyntickIRQNMI
@@ -1993,12 +2038,13 @@ lot of {Linux} into your technology!!!"
1993,note="Available: 2038,note="Available:
1994\url{http://lkml.org/lkml/2008/9/6/86} 2039\url{http://lkml.org/lkml/2008/9/6/86}
1995[Viewed December 8, 2008]" 2040[Viewed December 8, 2008]"
1996,annotation=" 2041,annotation={
1997 Manfred notes a fix required to my attempt to separate irq 2042 Manfred notes a fix required to my attempt to separate irq
1998 and NMI processing for hierarchical RCU's dynticks interface. 2043 and NMI processing for hierarchical RCU's dynticks interface.
1999" 2044}
2000} 2045}
2001 2046
2047# Was PaulEMcKenney2011cyclicRCU
2002@techreport{PaulEMcKenney2008cyclicRCU 2048@techreport{PaulEMcKenney2008cyclicRCU
2003,author="Paul E. McKenney" 2049,author="Paul E. McKenney"
2004,title="Efficient Support of Consistent Cyclic Search With Read-Copy Update" 2050,title="Efficient Support of Consistent Cyclic Search With Read-Copy Update"
@@ -2008,11 +2054,11 @@ lot of {Linux} into your technology!!!"
2008,number="US Patent 7,426,511" 2054,number="US Patent 7,426,511"
2009,month="September" 2055,month="September"
2010,pages="23" 2056,pages="23"
2011,annotation=" 2057,annotation={
2012 Maintains an additional level of indirection to allow 2058 Maintains an additional level of indirection to allow
2013 readers to confine themselves to the desired snapshot of the 2059 readers to confine themselves to the desired snapshot of the
2014 data structure. Only permits one update at a time. 2060 data structure. Only permits one update at a time.
2015" 2061}
2016} 2062}
2017 2063
2018@unpublished{PaulEMcKenney2008HierarchicalRCU 2064@unpublished{PaulEMcKenney2008HierarchicalRCU
@@ -2021,13 +2067,12 @@ lot of {Linux} into your technology!!!"
2021,month="November" 2067,month="November"
2022,day="3" 2068,day="3"
2023,year="2008" 2069,year="2008"
2024,note="Available: 2070,note="\url{http://lwn.net/Articles/305782/}"
2025\url{http://lwn.net/Articles/305782/} 2071,annotation={
2026[Viewed November 6, 2008]"
2027,annotation="
2028 RCU with combining-tree-based grace-period detection, 2072 RCU with combining-tree-based grace-period detection,
2029 permitting it to handle thousands of CPUs. 2073 permitting it to handle thousands of CPUs.
2030" 2074 [Viewed November 6, 2008]
2075}
2031} 2076}
2032 2077
2033@unpublished{PaulEMcKenney2009BloatwatchRCU 2078@unpublished{PaulEMcKenney2009BloatwatchRCU
@@ -2039,10 +2084,10 @@ lot of {Linux} into your technology!!!"
2039,note="Available: 2084,note="Available:
2040\url{http://lkml.org/lkml/2009/1/14/449} 2085\url{http://lkml.org/lkml/2009/1/14/449}
2041[Viewed January 15, 2009]" 2086[Viewed January 15, 2009]"
2042,annotation=" 2087,annotation={
2043 Small-footprint implementation of RCU for uniprocessor 2088 Small-footprint implementation of RCU for uniprocessor
2044 embedded applications -- and also for exposition purposes. 2089 embedded applications -- and also for exposition purposes.
2045" 2090}
2046} 2091}
2047 2092
2048@conference{PaulEMcKenney2009MaliciousURCU 2093@conference{PaulEMcKenney2009MaliciousURCU
@@ -2055,9 +2100,9 @@ lot of {Linux} into your technology!!!"
2055,note="Available: 2100,note="Available:
2056\url{http://www.rdrop.com/users/paulmck/RCU/urcutorture.2009.01.22a.pdf} 2101\url{http://www.rdrop.com/users/paulmck/RCU/urcutorture.2009.01.22a.pdf}
2057[Viewed February 2, 2009]" 2102[Viewed February 2, 2009]"
2058,annotation=" 2103,annotation={
2059 Realtime RCU and torture-testing RCU uses. 2104 Realtime RCU and torture-testing RCU uses.
2060" 2105}
2061} 2106}
2062 2107
2063@unpublished{MathieuDesnoyers2009URCU 2108@unpublished{MathieuDesnoyers2009URCU
@@ -2066,16 +2111,14 @@ lot of {Linux} into your technology!!!"
2066,month="February" 2111,month="February"
2067,day="5" 2112,day="5"
2068,year="2009" 2113,year="2009"
2069,note="Available: 2114,note="\url{http://lttng.org/urcu}"
2070\url{http://lkml.org/lkml/2009/2/5/572} 2115,annotation={
2071\url{http://lttng.org/urcu}
2072[Viewed February 20, 2009]"
2073,annotation="
2074 Mathieu Desnoyers's user-space RCU implementation. 2116 Mathieu Desnoyers's user-space RCU implementation.
2075 git://lttng.org/userspace-rcu.git 2117 git://lttng.org/userspace-rcu.git
2076 http://lttng.org/cgi-bin/gitweb.cgi?p=userspace-rcu.git 2118 http://lttng.org/cgi-bin/gitweb.cgi?p=userspace-rcu.git
2077 http://lttng.org/urcu 2119 http://lttng.org/urcu
2078" 2120 http://lkml.org/lkml/2009/2/5/572
2121}
2079} 2122}
2080 2123
2081@unpublished{PaulEMcKenney2009LWNBloatWatchRCU 2124@unpublished{PaulEMcKenney2009LWNBloatWatchRCU
@@ -2087,9 +2130,24 @@ lot of {Linux} into your technology!!!"
2087,note="Available: 2130,note="Available:
2088\url{http://lwn.net/Articles/323929/} 2131\url{http://lwn.net/Articles/323929/}
2089[Viewed March 20, 2009]" 2132[Viewed March 20, 2009]"
2090,annotation=" 2133,annotation={
2091 Uniprocessor assumptions allow simplified RCU implementation. 2134 Uniprocessor assumptions allow simplified RCU implementation.
2092" 2135}
2136}
2137
2138@unpublished{EvgeniyPolyakov2009EllipticsNetwork
2139,Author="Evgeniy Polyakov"
2140,Title="The Elliptics Network"
2141,month="April"
2142,day="17"
2143,year="2009"
2144,note="Available:
2145\url{http://www.ioremap.net/projects/elliptics}
2146[Viewed April 30, 2009]"
2147,annotation={
2148 Distributed hash table with transactions, using elliptic
2149 hash functions to distribute data.
2150}
2093} 2151}
2094 2152
2095@unpublished{PaulEMcKenney2009expeditedRCU 2153@unpublished{PaulEMcKenney2009expeditedRCU
@@ -2101,9 +2159,9 @@ lot of {Linux} into your technology!!!"
2101,note="Available: 2159,note="Available:
2102\url{http://lkml.org/lkml/2009/6/25/306} 2160\url{http://lkml.org/lkml/2009/6/25/306}
2103[Viewed August 16, 2009]" 2161[Viewed August 16, 2009]"
2104,annotation=" 2162,annotation={
2105 First posting of expedited RCU to be accepted into -tip. 2163 First posting of expedited RCU to be accepted into -tip.
2106" 2164}
2107} 2165}
2108 2166
2109@unpublished{PaulEMcKenney2009fastRTRCU 2167@unpublished{PaulEMcKenney2009fastRTRCU
@@ -2115,21 +2173,21 @@ lot of {Linux} into your technology!!!"
2115,note="Available: 2173,note="Available:
2116\url{http://lkml.org/lkml/2009/7/23/294} 2174\url{http://lkml.org/lkml/2009/7/23/294}
2117[Viewed August 15, 2009]" 2175[Viewed August 15, 2009]"
2118,annotation=" 2176,annotation={
2119 First posting of simple and fast preemptable RCU. 2177 First posting of simple and fast preemptable RCU.
2120" 2178}
2121} 2179}
2122 2180
2123@InProceedings{JoshTriplett2009RPHash 2181@unpublished{JoshTriplett2009RPHash
2124,Author="Josh Triplett" 2182,Author="Josh Triplett"
2125,Title="Scalable concurrent hash tables via relativistic programming" 2183,Title="Scalable concurrent hash tables via relativistic programming"
2126,month="September" 2184,month="September"
2127,year="2009" 2185,year="2009"
2128,booktitle="Linux Plumbers Conference 2009" 2186,note="Linux Plumbers Conference presentation"
2129,annotation=" 2187,annotation={
2130 RP fun with hash tables. 2188 RP fun with hash tables.
2131 See also JoshTriplett2010RPHash 2189 Superseded by JoshTriplett2010RPHash
2132" 2190}
2133} 2191}
2134 2192
2135@phdthesis{MathieuDesnoyersPhD 2193@phdthesis{MathieuDesnoyersPhD
@@ -2154,9 +2212,9 @@ lot of {Linux} into your technology!!!"
2154,note="Available: 2212,note="Available:
2155\url{http://wiki.cs.pdx.edu/rp/} 2213\url{http://wiki.cs.pdx.edu/rp/}
2156[Viewed December 9, 2009]" 2214[Viewed December 9, 2009]"
2157,annotation=" 2215,annotation={
2158 Main Relativistic Programming Wiki. 2216 Main Relativistic Programming Wiki.
2159" 2217}
2160} 2218}
2161 2219
2162@conference{PaulEMcKenney2009DeterministicRCU 2220@conference{PaulEMcKenney2009DeterministicRCU
@@ -2180,9 +2238,9 @@ lot of {Linux} into your technology!!!"
2180,note="Available: 2238,note="Available:
2181\url{http://paulmck.livejournal.com/14639.html} 2239\url{http://paulmck.livejournal.com/14639.html}
2182[Viewed June 4, 2010]" 2240[Viewed June 4, 2010]"
2183,annotation=" 2241,annotation={
2184 Day-one bug in Tree RCU that took forever to track down. 2242 Day-one bug in Tree RCU that took forever to track down.
2185" 2243}
2186} 2244}
2187 2245
2188@unpublished{MathieuDesnoyers2009defer:rcu 2246@unpublished{MathieuDesnoyers2009defer:rcu
@@ -2193,10 +2251,10 @@ lot of {Linux} into your technology!!!"
2193,note="Available: 2251,note="Available:
2194\url{http://lkml.org/lkml/2009/10/18/129} 2252\url{http://lkml.org/lkml/2009/10/18/129}
2195[Viewed December 29, 2009]" 2253[Viewed December 29, 2009]"
2196,annotation=" 2254,annotation={
2197 Mathieu proposed defer_rcu() with fixed-size per-thread pool 2255 Mathieu proposed defer_rcu() with fixed-size per-thread pool
2198 of RCU callbacks. 2256 of RCU callbacks.
2199" 2257}
2200} 2258}
2201 2259
2202@unpublished{MathieuDesnoyers2009VerifPrePub 2260@unpublished{MathieuDesnoyers2009VerifPrePub
@@ -2205,10 +2263,10 @@ lot of {Linux} into your technology!!!"
2205,month="December" 2263,month="December"
2206,year="2009" 2264,year="2009"
2207,note="Submitted to IEEE TPDS" 2265,note="Submitted to IEEE TPDS"
2208,annotation=" 2266,annotation={
2209 OOMem model for Mathieu's user-level RCU mechanical proof of 2267 OOMem model for Mathieu's user-level RCU mechanical proof of
2210 correctness. 2268 correctness.
2211" 2269}
2212} 2270}
2213 2271
2214@unpublished{MathieuDesnoyers2009URCUPrePub 2272@unpublished{MathieuDesnoyers2009URCUPrePub
@@ -2216,15 +2274,15 @@ lot of {Linux} into your technology!!!"
2216,Title="User-Level Implementations of Read-Copy Update" 2274,Title="User-Level Implementations of Read-Copy Update"
2217,month="December" 2275,month="December"
2218,year="2010" 2276,year="2010"
2219,url=\url{http://www.computer.org/csdl/trans/td/2012/02/ttd2012020375-abs.html} 2277,url={\url{http://www.computer.org/csdl/trans/td/2012/02/ttd2012020375-abs.html}}
2220,annotation=" 2278,annotation={
2221 RCU overview, desiderata, semi-formal semantics, user-level RCU 2279 RCU overview, desiderata, semi-formal semantics, user-level RCU
2222 usage scenarios, three classes of RCU implementation, wait-free 2280 usage scenarios, three classes of RCU implementation, wait-free
2223 RCU updates, RCU grace-period batching, update overhead, 2281 RCU updates, RCU grace-period batching, update overhead,
2224 http://www.rdrop.com/users/paulmck/RCU/urcu-main-accepted.2011.08.30a.pdf 2282 http://www.rdrop.com/users/paulmck/RCU/urcu-main-accepted.2011.08.30a.pdf
2225 http://www.rdrop.com/users/paulmck/RCU/urcu-supp-accepted.2011.08.30a.pdf 2283 http://www.rdrop.com/users/paulmck/RCU/urcu-supp-accepted.2011.08.30a.pdf
2226 Superseded by MathieuDesnoyers2012URCU. 2284 Superseded by MathieuDesnoyers2012URCU.
2227" 2285}
2228} 2286}
2229 2287
2230@inproceedings{HariKannan2009DynamicAnalysisRCU 2288@inproceedings{HariKannan2009DynamicAnalysisRCU
@@ -2240,7 +2298,8 @@ lot of {Linux} into your technology!!!"
2240,address = {New York, NY, USA} 2298,address = {New York, NY, USA}
2241,annotation={ 2299,annotation={
2242 Uses RCU to protect metadata used in dynamic analysis. 2300 Uses RCU to protect metadata used in dynamic analysis.
2243}} 2301}
2302}
2244 2303
2245@conference{PaulEMcKenney2010SimpleOptRCU 2304@conference{PaulEMcKenney2010SimpleOptRCU
2246,Author="Paul E. McKenney" 2305,Author="Paul E. McKenney"
@@ -2252,10 +2311,10 @@ lot of {Linux} into your technology!!!"
2252,note="Available: 2311,note="Available:
2253\url{http://www.rdrop.com/users/paulmck/RCU/SimplicityThruOptimization.2010.01.21f.pdf} 2312\url{http://www.rdrop.com/users/paulmck/RCU/SimplicityThruOptimization.2010.01.21f.pdf}
2254[Viewed October 10, 2010]" 2313[Viewed October 10, 2010]"
2255,annotation=" 2314,annotation={
2256 TREE_PREEMPT_RCU optimizations greatly simplified the old 2315 TREE_PREEMPT_RCU optimizations greatly simplified the old
2257 PREEMPT_RCU implementation. 2316 PREEMPT_RCU implementation.
2258" 2317}
2259} 2318}
2260 2319
2261@unpublished{PaulEMcKenney2010LockdepRCU 2320@unpublished{PaulEMcKenney2010LockdepRCU
@@ -2264,12 +2323,11 @@ lot of {Linux} into your technology!!!"
2264,month="February" 2323,month="February"
2265,year="2010" 2324,year="2010"
2266,day="1" 2325,day="1"
2267,note="Available: 2326,note="\url{https://lwn.net/Articles/371986/}"
2268\url{https://lwn.net/Articles/371986/} 2327,annotation={
2269[Viewed June 4, 2010]"
2270,annotation="
2271 CONFIG_PROVE_RCU, or at least an early version. 2328 CONFIG_PROVE_RCU, or at least an early version.
2272" 2329 [Viewed June 4, 2010]
2330}
2273} 2331}
2274 2332
2275@unpublished{AviKivity2010KVM2RCU 2333@unpublished{AviKivity2010KVM2RCU
@@ -2280,10 +2338,10 @@ lot of {Linux} into your technology!!!"
2280,note="Available: 2338,note="Available:
2281\url{http://www.mail-archive.com/kvm@vger.kernel.org/msg28640.html} 2339\url{http://www.mail-archive.com/kvm@vger.kernel.org/msg28640.html}
2282[Viewed March 20, 2010]" 2340[Viewed March 20, 2010]"
2283,annotation=" 2341,annotation={
2284 Use of RCU permits KVM to increase the size of guest OSes from 2342 Use of RCU permits KVM to increase the size of guest OSes from
2285 16 CPUs to 64 CPUs. 2343 16 CPUs to 64 CPUs.
2286" 2344}
2287} 2345}
2288 2346
2289@unpublished{HerbertXu2010RCUResizeHash 2347@unpublished{HerbertXu2010RCUResizeHash
@@ -2297,7 +2355,19 @@ lot of {Linux} into your technology!!!"
2297,annotation={ 2355,annotation={
2298 Use a pair of list_head structures to support RCU-protected 2356 Use a pair of list_head structures to support RCU-protected
2299 resizable hash tables. 2357 resizable hash tables.
2300}} 2358}
2359}
2360
2361@mastersthesis{AbhinavDuggal2010Masters
2362,author="Abhinav Duggal"
2363,title="Stopping Data Races Using Redflag"
2364,school="Stony Brook University"
2365,year="2010"
2366,annotation={
2367 Data-race detector incorporating RCU.
2368 http://www.filesystems.org/docs/abhinav-thesis/abhinav_thesis.pdf
2369}
2370}
2301 2371
2302@article{JoshTriplett2010RPHash 2372@article{JoshTriplett2010RPHash
2303,author="Josh Triplett and Paul E. McKenney and Jonathan Walpole" 2373,author="Josh Triplett and Paul E. McKenney and Jonathan Walpole"
@@ -2310,7 +2380,8 @@ lot of {Linux} into your technology!!!"
2310,annotation={ 2380,annotation={
2311 RP fun with hash tables. 2381 RP fun with hash tables.
2312 http://portal.acm.org/citation.cfm?id=1842733.1842750 2382 http://portal.acm.org/citation.cfm?id=1842733.1842750
2313}} 2383}
2384}
2314 2385
2315@unpublished{PaulEMcKenney2010RCUAPI 2386@unpublished{PaulEMcKenney2010RCUAPI
2316,Author="Paul E. McKenney" 2387,Author="Paul E. McKenney"
@@ -2318,12 +2389,11 @@ lot of {Linux} into your technology!!!"
2318,month="December" 2389,month="December"
2319,day="8" 2390,day="8"
2320,year="2010" 2391,year="2010"
2321,note="Available: 2392,note="\url{http://lwn.net/Articles/418853/}"
2322\url{http://lwn.net/Articles/418853/} 2393,annotation={
2323[Viewed December 8, 2010]"
2324,annotation="
2325 Includes updated software-engineering features. 2394 Includes updated software-engineering features.
2326" 2395 [Viewed December 8, 2010]
2396}
2327} 2397}
2328 2398
2329@mastersthesis{AndrejPodzimek2010masters 2399@mastersthesis{AndrejPodzimek2010masters
@@ -2338,7 +2408,8 @@ lot of {Linux} into your technology!!!"
2338 Reviews RCU implementations and creates a few for OpenSolaris. 2408 Reviews RCU implementations and creates a few for OpenSolaris.
2339 Drives quiescent-state detection from RCU read-side primitives, 2409 Drives quiescent-state detection from RCU read-side primitives,
2340 in a manner roughly similar to that of Jim Houston. 2410 in a manner roughly similar to that of Jim Houston.
2341}} 2411}
2412}
2342 2413
2343@unpublished{LinusTorvalds2011Linux2:6:38:rc1:NPigginVFS 2414@unpublished{LinusTorvalds2011Linux2:6:38:rc1:NPigginVFS
2344,Author="Linus Torvalds" 2415,Author="Linus Torvalds"
@@ -2358,7 +2429,8 @@ lot of {Linux} into your technology!!!"
2358 of the most expensive parts of path component lookup, which was the 2429 of the most expensive parts of path component lookup, which was the
2359 d_lock on every component lookup. So I'm seeing improvements of 30-50% 2430 d_lock on every component lookup. So I'm seeing improvements of 30-50%
2360 on some seriously pathname-lookup intensive loads." 2431 on some seriously pathname-lookup intensive loads."
2361}} 2432}
2433}
2362 2434
2363@techreport{JoshTriplett2011RPScalableCorrectOrdering 2435@techreport{JoshTriplett2011RPScalableCorrectOrdering
2364,author = {Josh Triplett and Philip W. Howard and Paul E. McKenney and Jonathan Walpole} 2436,author = {Josh Triplett and Philip W. Howard and Paul E. McKenney and Jonathan Walpole}
@@ -2392,12 +2464,12 @@ lot of {Linux} into your technology!!!"
2392,number="US Patent 7,953,778" 2464,number="US Patent 7,953,778"
2393,month="May" 2465,month="May"
2394,pages="34" 2466,pages="34"
2395,annotation=" 2467,annotation={
2396 Maintains an array of generation numbers to track in-flight 2468 Maintains an array of generation numbers to track in-flight
2397 updates and keeps an additional level of indirection to allow 2469 updates and keeps an additional level of indirection to allow
2398 readers to confine themselves to the desired snapshot of the 2470 readers to confine themselves to the desired snapshot of the
2399 data structure. 2471 data structure.
2400" 2472}
2401} 2473}
2402 2474
2403@inproceedings{Triplett:2011:RPHash 2475@inproceedings{Triplett:2011:RPHash
@@ -2408,7 +2480,7 @@ lot of {Linux} into your technology!!!"
2408,year = {2011} 2480,year = {2011}
2409,pages = {145--158} 2481,pages = {145--158}
2410,numpages = {14} 2482,numpages = {14}
2411,url={http://www.usenix.org/event/atc11/tech/final_files/atc11_proceedings.pdf} 2483,url={http://www.usenix.org/event/atc11/tech/final_files/Triplett.pdf}
2412,publisher = {The USENIX Association} 2484,publisher = {The USENIX Association}
2413,address = {Portland, OR USA} 2485,address = {Portland, OR USA}
2414} 2486}
@@ -2419,27 +2491,58 @@ lot of {Linux} into your technology!!!"
2419,month="July" 2491,month="July"
2420,day="27" 2492,day="27"
2421,year="2011" 2493,year="2011"
2422,note="Available: 2494,note="\url{http://lwn.net/Articles/453002/}"
2423\url{http://lwn.net/Articles/453002/} 2495,annotation={
2424[Viewed July 27, 2011]"
2425,annotation="
2426 Analysis of the RCU trainwreck in Linux kernel 3.0. 2496 Analysis of the RCU trainwreck in Linux kernel 3.0.
2427" 2497 [Viewed July 27, 2011]
2498}
2428} 2499}
2429 2500
2430@unpublished{NeilBrown2011MeetTheLockers 2501@unpublished{NeilBrown2011MeetTheLockers
2431,Author="Neil Brown" 2502,Author="Neil Brown"
2432,Title="Meet the Lockers" 2503,Title="Meet the {Lockers}"
2433,month="August" 2504,month="August"
2434,day="3" 2505,day="3"
2435,year="2011" 2506,year="2011"
2436,note="Available: 2507,note="Available:
2437\url{http://lwn.net/Articles/453685/} 2508\url{http://lwn.net/Articles/453685/}
2438[Viewed September 2, 2011]" 2509[Viewed September 2, 2011]"
2439,annotation=" 2510,annotation={
2440 The Locker family as an analogy for locking, reference counting, 2511 The Locker family as an analogy for locking, reference counting,
2441 RCU, and seqlock. 2512 RCU, and seqlock.
2442" 2513}
2514}
2515
2516@inproceedings{Seyster:2011:RFA:2075416.2075425
2517,author = {Seyster, Justin and Radhakrishnan, Prabakar and Katoch, Samriti and Duggal, Abhinav and Stoller, Scott D. and Zadok, Erez}
2518,title = {Redflag: a framework for analysis of Kernel-level concurrency}
2519,booktitle = {Proceedings of the 11th international conference on Algorithms and architectures for parallel processing - Volume Part I}
2520,series = {ICA3PP'11}
2521,year = {2011}
2522,isbn = {978-3-642-24649-4}
2523,location = {Melbourne, Australia}
2524,pages = {66--79}
2525,numpages = {14}
2526,url = {http://dl.acm.org/citation.cfm?id=2075416.2075425}
2527,acmid = {2075425}
2528,publisher = {Springer-Verlag}
2529,address = {Berlin, Heidelberg}
2530}
2531
2532@phdthesis{JoshTriplettPhD
2533,author="Josh Triplett"
2534,title="Relativistic Causal Ordering: A Memory Model for Scalable Concurrent Data Structures"
2535,school="Portland State University"
2536,year="2012"
2537,annotation={
2538 RCU-protected hash tables, barriers vs. read-side traversal order.
2539 .
2540 If the updater is making changes in the opposite direction from
2541 the read-side traveral order, the updater need only execute a
2542 memory-barrier instruction, but if in the same direction, the
2543 updater needs to wait for a grace period between the individual
2544 updates.
2545}
2443} 2546}
2444 2547
2445@article{MathieuDesnoyers2012URCU 2548@article{MathieuDesnoyers2012URCU
@@ -2459,5 +2562,150 @@ lot of {Linux} into your technology!!!"
2459 RCU updates, RCU grace-period batching, update overhead, 2562 RCU updates, RCU grace-period batching, update overhead,
2460 http://www.rdrop.com/users/paulmck/RCU/urcu-main-accepted.2011.08.30a.pdf 2563 http://www.rdrop.com/users/paulmck/RCU/urcu-main-accepted.2011.08.30a.pdf
2461 http://www.rdrop.com/users/paulmck/RCU/urcu-supp-accepted.2011.08.30a.pdf 2564 http://www.rdrop.com/users/paulmck/RCU/urcu-supp-accepted.2011.08.30a.pdf
2565 http://www.computer.org/cms/Computer.org/dl/trans/td/2012/02/extras/ttd2012020375s.pdf
2566}
2567}
2568
2569@inproceedings{AustinClements2012RCULinux:mmapsem
2570,author = {Austin Clements and Frans Kaashoek and Nickolai Zeldovich}
2571,title = {Scalable Address Spaces Using {RCU} Balanced Trees}
2572,booktitle = {Architectural Support for Programming Languages and Operating Systems (ASPLOS 2012)}
2573,month = {March}
2574,year = {2012}
2575,pages = {199--210}
2576,numpages = {12}
2577,publisher = {ACM}
2578,address = {London, UK}
2579,url="http://people.csail.mit.edu/nickolai/papers/clements-bonsai.pdf"
2580}
2581
2582@unpublished{PaulEMcKenney2012ELCbattery
2583,Author="Paul E. McKenney"
2584,Title="Making {RCU} Safe For Battery-Powered Devices"
2585,month="February"
2586,day="15"
2587,year="2012"
2588,note="Available:
2589\url{http://www.rdrop.com/users/paulmck/RCU/RCUdynticks.2012.02.15b.pdf}
2590[Viewed March 1, 2012]"
2591,annotation={
2592 RCU_FAST_NO_HZ, round 2.
2593}
2594}
2595
2596@article{GuillermoVigueras2012RCUCrowd
2597,author = {Vigueras, Guillermo and Ordu\~{n}a, Juan M. and Lozano, Miguel}
2598,day = {25}
2599,doi = {10.1007/s11227-012-0766-x}
2600,issn = {0920-8542}
2601,journal = {The Journal of Supercomputing}
2602,keywords = {linux, simulation}
2603,month = apr
2604,posted-at = {2012-05-03 09:12:04}
2605,priority = {2}
2606,title = {{A Read-Copy Update based parallel server for distributed crowd simulations}}
2607,url = {http://dx.doi.org/10.1007/s11227-012-0766-x}
2608,year = {2012}
2609}
2610
2611
2612@unpublished{JonCorbet2012ACCESS:ONCE
2613,Author="Jon Corbet"
2614,Title="{ACCESS\_ONCE()}"
2615,month="August"
2616,day="1"
2617,year="2012"
2618,note="\url{http://lwn.net/Articles/508991/}"
2619,annotation={
2620 A couple of simple specific compiler optimizations that motivate
2621 ACCESS_ONCE().
2622}
2623}
2624
2625@unpublished{AlexeyGotsman2012VerifyGraceExtended
2626,Author="Alexey Gotsman and Noam Rinetzky and Hongseok Yang"
2627,Title="Verifying Highly Concurrent Algorithms with Grace (extended version)"
2628,month="July"
2629,day="10"
2630,year="2012"
2631,note="\url{http://software.imdea.org/~gotsman/papers/recycling-esop13-ext.pdf}"
2632,annotation={
2633 Separation-logic formulation of RCU uses.
2634}
2635}
2636
2637@unpublished{PaulMcKenney2012RCUUsage
2638,Author="Paul E. McKenney and Silas Boyd-Wickizer and Jonathan Walpole"
2639,Title="{RCU} Usage In the Linux Kernel: One Decade Later"
2640,month="September"
2641,day="17"
2642,year="2012"
2643,url=http://rdrop.com/users/paulmck/techreports/survey.2012.09.17a.pdf
2644,note="Technical report paulmck.2012.09.17"
2645,annotation={
2646 Overview of the first variant of no-CBs CPUs for RCU.
2647}
2648}
2649
2650@unpublished{JonCorbet2012NOCB
2651,Author="Jon Corbet"
2652,Title="Relocating RCU callbacks"
2653,month="October"
2654,day="31"
2655,year="2012"
2656,note="\url{http://lwn.net/Articles/522262/}"
2657,annotation={
2658 Overview of the first variant of no-CBs CPUs for RCU.
2659}
2660}
2661
2662@phdthesis{JustinSeyster2012PhD
2663,author="Justin Seyster"
2664,title="Runtime Verification of Kernel-Level Concurrency Using Compiler-Based Instrumentation"
2665,school="Stony Brook University"
2666,year="2012"
2667,annotation={
2668 Looking for data races, including those involving RCU.
2669 Proposal:
2670 http://www.fsl.cs.sunysb.edu/docs/jseyster-proposal/redflag.pdf
2671 Dissertation:
2672 http://www.fsl.cs.sunysb.edu/docs/jseyster-dissertation/redflag.pdf
2673}
2674}
2675
2676@unpublished{PaulEMcKenney2013RCUUsage
2677,Author="Paul E. McKenney and Silas Boyd-Wickizer and Jonathan Walpole"
2678,Title="{RCU} Usage in the {Linux} Kernel: One Decade Later"
2679,month="February"
2680,day="24"
2681,year="2013"
2682,note="\url{http://rdrop.com/users/paulmck/techreports/RCUUsage.2013.02.24a.pdf}"
2683,annotation={
2684 Usage of RCU within the Linux kernel.
2685}
2686}
2687
2688@inproceedings{AlexeyGotsman2013ESOPRCU
2689,author = {Alexey Gotsman and Noam Rinetzky and Hongseok Yang}
2690,title = {Verifying concurrent memory reclamation algorithms with grace}
2691,booktitle = {ESOP'13: European Symposium on Programming}
2692,year = {2013}
2693,pages = {249--269}
2694,publisher = {Springer}
2695,address = {Rome, Italy}
2696,annotation={
2697 http://software.imdea.org/~gotsman/papers/recycling-esop13.pdf
2698}
2699}
2700
2701@unpublished{PaulEMcKenney2013NoTinyPreempt
2702,Author="Paul E. McKenney"
2703,Title="Simplifying RCU"
2704,month="March"
2705,day="6"
2706,year="2013"
2707,note="\url{http://lwn.net/Articles/541037/}"
2708,annotation={
2709 Getting rid of TINY_PREEMPT_RCU.
2462} 2710}
2463} 2711}
diff --git a/Documentation/RCU/checklist.txt b/Documentation/RCU/checklist.txt
index 7703ec73a9bb..91266193b8f4 100644
--- a/Documentation/RCU/checklist.txt
+++ b/Documentation/RCU/checklist.txt
@@ -202,8 +202,8 @@ over a rather long period of time, but improvements are always welcome!
202 updater uses call_rcu_sched() or synchronize_sched(), then 202 updater uses call_rcu_sched() or synchronize_sched(), then
203 the corresponding readers must disable preemption, possibly 203 the corresponding readers must disable preemption, possibly
204 by calling rcu_read_lock_sched() and rcu_read_unlock_sched(). 204 by calling rcu_read_lock_sched() and rcu_read_unlock_sched().
205 If the updater uses synchronize_srcu() or call_srcu(), 205 If the updater uses synchronize_srcu() or call_srcu(), then
206 the the corresponding readers must use srcu_read_lock() and 206 the corresponding readers must use srcu_read_lock() and
207 srcu_read_unlock(), and with the same srcu_struct. The rules for 207 srcu_read_unlock(), and with the same srcu_struct. The rules for
208 the expedited primitives are the same as for their non-expedited 208 the expedited primitives are the same as for their non-expedited
209 counterparts. Mixing things up will result in confusion and 209 counterparts. Mixing things up will result in confusion and
diff --git a/Documentation/RCU/rcubarrier.txt b/Documentation/RCU/rcubarrier.txt
index 2e319d1b9ef2..b10cfe711e68 100644
--- a/Documentation/RCU/rcubarrier.txt
+++ b/Documentation/RCU/rcubarrier.txt
@@ -70,10 +70,14 @@ in realtime kernels in order to avoid excessive scheduling latencies.
70 70
71rcu_barrier() 71rcu_barrier()
72 72
73We instead need the rcu_barrier() primitive. This primitive is similar 73We instead need the rcu_barrier() primitive. Rather than waiting for
74to synchronize_rcu(), but instead of waiting solely for a grace 74a grace period to elapse, rcu_barrier() waits for all outstanding RCU
75period to elapse, it also waits for all outstanding RCU callbacks to 75callbacks to complete. Please note that rcu_barrier() does -not- imply
76complete. Pseudo-code using rcu_barrier() is as follows: 76synchronize_rcu(), in particular, if there are no RCU callbacks queued
77anywhere, rcu_barrier() is within its rights to return immediately,
78without waiting for a grace period to elapse.
79
80Pseudo-code using rcu_barrier() is as follows:
77 81
78 1. Prevent any new RCU callbacks from being posted. 82 1. Prevent any new RCU callbacks from being posted.
79 2. Execute rcu_barrier(). 83 2. Execute rcu_barrier().
diff --git a/Documentation/RCU/stallwarn.txt b/Documentation/RCU/stallwarn.txt
index 8e9359de1d28..6f3a0057548e 100644
--- a/Documentation/RCU/stallwarn.txt
+++ b/Documentation/RCU/stallwarn.txt
@@ -12,12 +12,12 @@ CONFIG_RCU_CPU_STALL_TIMEOUT
12 This kernel configuration parameter defines the period of time 12 This kernel configuration parameter defines the period of time
13 that RCU will wait from the beginning of a grace period until it 13 that RCU will wait from the beginning of a grace period until it
14 issues an RCU CPU stall warning. This time period is normally 14 issues an RCU CPU stall warning. This time period is normally
15 sixty seconds. 15 21 seconds.
16 16
17 This configuration parameter may be changed at runtime via the 17 This configuration parameter may be changed at runtime via the
18 /sys/module/rcutree/parameters/rcu_cpu_stall_timeout, however 18 /sys/module/rcutree/parameters/rcu_cpu_stall_timeout, however
19 this parameter is checked only at the beginning of a cycle. 19 this parameter is checked only at the beginning of a cycle.
20 So if you are 30 seconds into a 70-second stall, setting this 20 So if you are 10 seconds into a 40-second stall, setting this
21 sysfs parameter to (say) five will shorten the timeout for the 21 sysfs parameter to (say) five will shorten the timeout for the
22 -next- stall, or the following warning for the current stall 22 -next- stall, or the following warning for the current stall
23 (assuming the stall lasts long enough). It will not affect the 23 (assuming the stall lasts long enough). It will not affect the
@@ -32,7 +32,7 @@ CONFIG_RCU_CPU_STALL_VERBOSE
32 also dump the stacks of any tasks that are blocking the current 32 also dump the stacks of any tasks that are blocking the current
33 RCU-preempt grace period. 33 RCU-preempt grace period.
34 34
35RCU_CPU_STALL_INFO 35CONFIG_RCU_CPU_STALL_INFO
36 36
37 This kernel configuration parameter causes the stall warning to 37 This kernel configuration parameter causes the stall warning to
38 print out additional per-CPU diagnostic information, including 38 print out additional per-CPU diagnostic information, including
@@ -43,7 +43,8 @@ RCU_STALL_DELAY_DELTA
43 Although the lockdep facility is extremely useful, it does add 43 Although the lockdep facility is extremely useful, it does add
44 some overhead. Therefore, under CONFIG_PROVE_RCU, the 44 some overhead. Therefore, under CONFIG_PROVE_RCU, the
45 RCU_STALL_DELAY_DELTA macro allows five extra seconds before 45 RCU_STALL_DELAY_DELTA macro allows five extra seconds before
46 giving an RCU CPU stall warning message. 46 giving an RCU CPU stall warning message. (This is a cpp
47 macro, not a kernel configuration parameter.)
47 48
48RCU_STALL_RAT_DELAY 49RCU_STALL_RAT_DELAY
49 50
@@ -52,7 +53,8 @@ RCU_STALL_RAT_DELAY
52 However, if the offending CPU does not detect its own stall in 53 However, if the offending CPU does not detect its own stall in
53 the number of jiffies specified by RCU_STALL_RAT_DELAY, then 54 the number of jiffies specified by RCU_STALL_RAT_DELAY, then
54 some other CPU will complain. This delay is normally set to 55 some other CPU will complain. This delay is normally set to
55 two jiffies. 56 two jiffies. (This is a cpp macro, not a kernel configuration
57 parameter.)
56 58
57When a CPU detects that it is stalling, it will print a message similar 59When a CPU detects that it is stalling, it will print a message similar
58to the following: 60to the following:
@@ -86,7 +88,12 @@ printing, there will be a spurious stall-warning message:
86 88
87INFO: rcu_bh_state detected stalls on CPUs/tasks: { } (detected by 4, 2502 jiffies) 89INFO: rcu_bh_state detected stalls on CPUs/tasks: { } (detected by 4, 2502 jiffies)
88 90
89This is rare, but does happen from time to time in real life. 91This is rare, but does happen from time to time in real life. It is also
92possible for a zero-jiffy stall to be flagged in this case, depending
93on how the stall warning and the grace-period initialization happen to
94interact. Please note that it is not possible to entirely eliminate this
95sort of false positive without resorting to things like stop_machine(),
96which is overkill for this sort of problem.
90 97
91If the CONFIG_RCU_CPU_STALL_INFO kernel configuration parameter is set, 98If the CONFIG_RCU_CPU_STALL_INFO kernel configuration parameter is set,
92more information is printed with the stall-warning message, for example: 99more information is printed with the stall-warning message, for example:
@@ -216,4 +223,5 @@ that portion of the stack which remains the same from trace to trace.
216If you can reliably trigger the stall, ftrace can be quite helpful. 223If you can reliably trigger the stall, ftrace can be quite helpful.
217 224
218RCU bugs can often be debugged with the help of CONFIG_RCU_TRACE 225RCU bugs can often be debugged with the help of CONFIG_RCU_TRACE
219and with RCU's event tracing. 226and with RCU's event tracing. For information on RCU's event tracing,
227see include/trace/events/rcu.h.
diff --git a/Documentation/RCU/torture.txt b/Documentation/RCU/torture.txt
index d8a502387397..dac02a6219b1 100644
--- a/Documentation/RCU/torture.txt
+++ b/Documentation/RCU/torture.txt
@@ -42,6 +42,16 @@ fqs_holdoff Holdoff time (in microseconds) between consecutive calls
42fqs_stutter Wait time (in seconds) between consecutive bursts 42fqs_stutter Wait time (in seconds) between consecutive bursts
43 of calls to force_quiescent_state(). 43 of calls to force_quiescent_state().
44 44
45gp_normal Make the fake writers use normal synchronous grace-period
46 primitives.
47
48gp_exp Make the fake writers use expedited synchronous grace-period
49 primitives. If both gp_normal and gp_exp are set, or
50 if neither gp_normal nor gp_exp are set, then randomly
51 choose the primitive so that about 50% are normal and
52 50% expedited. By default, neither are set, which
53 gives best overall test coverage.
54
45irqreader Says to invoke RCU readers from irq level. This is currently 55irqreader Says to invoke RCU readers from irq level. This is currently
46 done via timers. Defaults to "1" for variants of RCU that 56 done via timers. Defaults to "1" for variants of RCU that
47 permit this. (Or, more accurately, variants of RCU that do 57 permit this. (Or, more accurately, variants of RCU that do
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index 6e97e73d87b5..26b1e31d5a13 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -109,6 +109,16 @@ probably didn't even receive earlier versions of the patch.
109If the patch fixes a logged bug entry, refer to that bug entry by 109If the patch fixes a logged bug entry, refer to that bug entry by
110number and URL. 110number and URL.
111 111
112If you want to refer to a specific commit, don't just refer to the
113SHA-1 ID of the commit. Please also include the oneline summary of
114the commit, to make it easier for reviewers to know what it is about.
115Example:
116
117 Commit e21d2170f36602ae2708 ("video: remove unnecessary
118 platform_set_drvdata()") removed the unnecessary
119 platform_set_drvdata(), but left the variable "dev" unused,
120 delete it.
121
112 122
1133) Separate your changes. 1233) Separate your changes.
114 124
diff --git a/Documentation/acpi/dsdt-override.txt b/Documentation/acpi/dsdt-override.txt
index febbb1ba4d23..784841caa6e6 100644
--- a/Documentation/acpi/dsdt-override.txt
+++ b/Documentation/acpi/dsdt-override.txt
@@ -4,4 +4,4 @@ CONFIG_ACPI_CUSTOM_DSDT builds the image into the kernel.
4 4
5When to use this method is described in detail on the 5When to use this method is described in detail on the
6Linux/ACPI home page: 6Linux/ACPI home page:
7http://www.lesswatts.org/projects/acpi/overridingDSDT.php 7https://01.org/linux-acpi/documentation/overriding-dsdt
diff --git a/Documentation/acpi/enumeration.txt b/Documentation/acpi/enumeration.txt
index d9be7a97dff3..b994bcb32b92 100644
--- a/Documentation/acpi/enumeration.txt
+++ b/Documentation/acpi/enumeration.txt
@@ -207,7 +207,7 @@ passing those. One idea is to return this in _DSM method like:
207 Return (Local0) 207 Return (Local0)
208 } 208 }
209 209
210Then the at25 SPI driver can get this configation by calling _DSM on its 210Then the at25 SPI driver can get this configuration by calling _DSM on its
211ACPI handle like: 211ACPI handle like:
212 212
213 struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL }; 213 struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL };
@@ -228,19 +228,9 @@ ACPI handle like:
228I2C serial bus support 228I2C serial bus support
229~~~~~~~~~~~~~~~~~~~~~~ 229~~~~~~~~~~~~~~~~~~~~~~
230The slaves behind I2C bus controller only need to add the ACPI IDs like 230The slaves behind I2C bus controller only need to add the ACPI IDs like
231with the platform and SPI drivers. However the I2C bus controller driver 231with the platform and SPI drivers. The I2C core automatically enumerates
232needs to call acpi_i2c_register_devices() after it has added the adapter. 232any slave devices behind the controller device once the adapter is
233 233registered.
234An I2C bus (controller) driver does:
235
236 ...
237 ret = i2c_add_numbered_adapter(adapter);
238 if (ret)
239 /* handle error */
240
241 of_i2c_register_devices(adapter);
242 /* Enumerate the slave devices behind this bus via ACPI */
243 acpi_i2c_register_devices(adapter);
244 234
245Below is an example of how to add ACPI support to the existing mpu3050 235Below is an example of how to add ACPI support to the existing mpu3050
246input driver: 236input driver:
@@ -305,10 +295,6 @@ These GPIO numbers are controller relative and path "\\_SB.PCI0.GPI0"
305specifies the path to the controller. In order to use these GPIOs in Linux 295specifies the path to the controller. In order to use these GPIOs in Linux
306we need to translate them to the Linux GPIO numbers. 296we need to translate them to the Linux GPIO numbers.
307 297
308The driver can do this by including <linux/acpi_gpio.h> and then calling
309acpi_get_gpio(path, gpio). This will return the Linux GPIO number or
310negative errno if there was no translation found.
311
312In a simple case of just getting the Linux GPIO number from device 298In a simple case of just getting the Linux GPIO number from device
313resources one can use acpi_get_gpio_by_index() helper function. It takes 299resources one can use acpi_get_gpio_by_index() helper function. It takes
314pointer to the device and index of the GpioIo/GpioInt descriptor in the 300pointer to the device and index of the GpioIo/GpioInt descriptor in the
@@ -332,3 +318,25 @@ suitable to the gpiolib before passing them.
332 318
333In case of GpioInt resource an additional call to gpio_to_irq() must be 319In case of GpioInt resource an additional call to gpio_to_irq() must be
334done before calling request_irq(). 320done before calling request_irq().
321
322Note that the above API is ACPI specific and not recommended for drivers
323that need to support non-ACPI systems. The recommended way is to use
324the descriptor based GPIO interfaces. The above example looks like this
325when converted to the GPIO desc:
326
327 #include <linux/gpio/consumer.h>
328 ...
329
330 struct gpio_desc *irq_desc, *power_desc;
331
332 irq_desc = gpiod_get_index(dev, NULL, 1);
333 if (IS_ERR(irq_desc))
334 /* handle error */
335
336 power_desc = gpiod_get_index(dev, NULL, 0);
337 if (IS_ERR(power_desc))
338 /* handle error */
339
340 /* Now we can use the GPIO descriptors */
341
342See also Documentation/gpio.txt.
diff --git a/Documentation/aoe/udev.txt b/Documentation/aoe/udev.txt
index 8686e789542e..1f06daf03f5b 100644
--- a/Documentation/aoe/udev.txt
+++ b/Documentation/aoe/udev.txt
@@ -23,4 +23,4 @@ SUBSYSTEM=="aoe", KERNEL=="revalidate", NAME="etherd/%k", GROUP="disk", MODE="02
23SUBSYSTEM=="aoe", KERNEL=="flush", NAME="etherd/%k", GROUP="disk", MODE="0220" 23SUBSYSTEM=="aoe", KERNEL=="flush", NAME="etherd/%k", GROUP="disk", MODE="0220"
24 24
25# aoe block devices 25# aoe block devices
26KERNEL=="etherd*", NAME="%k", GROUP="disk" 26KERNEL=="etherd*", GROUP="disk"
diff --git a/Documentation/arm/Booting b/Documentation/arm/Booting
index 0c1f475fdf36..371814a36719 100644
--- a/Documentation/arm/Booting
+++ b/Documentation/arm/Booting
@@ -18,7 +18,8 @@ following:
182. Initialise one serial port. 182. Initialise one serial port.
193. Detect the machine type. 193. Detect the machine type.
204. Setup the kernel tagged list. 204. Setup the kernel tagged list.
215. Call the kernel image. 215. Load initramfs.
226. Call the kernel image.
22 23
23 24
241. Setup and initialise RAM 251. Setup and initialise RAM
@@ -120,12 +121,27 @@ tagged list.
120The boot loader must pass at a minimum the size and location of the 121The boot loader must pass at a minimum the size and location of the
121system memory, and the root filesystem location. The dtb must be 122system memory, and the root filesystem location. The dtb must be
122placed in a region of memory where the kernel decompressor will not 123placed in a region of memory where the kernel decompressor will not
123overwrite it. The recommended placement is in the first 16KiB of RAM 124overwrite it, whilst remaining within the region which will be covered
124with the caveat that it may not be located at physical address 0 since 125by the kernel's low-memory mapping.
125the kernel interprets a value of 0 in r2 to mean neither a tagged list
126nor a dtb were passed.
127 126
1285. Calling the kernel image 127A safe location is just above the 128MiB boundary from start of RAM.
128
1295. Load initramfs.
130------------------
131
132Existing boot loaders: OPTIONAL
133New boot loaders: OPTIONAL
134
135If an initramfs is in use then, as with the dtb, it must be placed in
136a region of memory where the kernel decompressor will not overwrite it
137while also with the region which will be covered by the kernel's
138low-memory mapping.
139
140A safe location is just above the device tree blob which itself will
141be loaded just above the 128MiB boundary from the start of RAM as
142recommended above.
143
1446. Calling the kernel image
129--------------------------- 145---------------------------
130 146
131Existing boot loaders: MANDATORY 147Existing boot loaders: MANDATORY
@@ -136,11 +152,17 @@ is stored in flash, and is linked correctly to be run from flash,
136then it is legal for the boot loader to call the zImage in flash 152then it is legal for the boot loader to call the zImage in flash
137directly. 153directly.
138 154
139The zImage may also be placed in system RAM (at any location) and 155The zImage may also be placed in system RAM and called there. The
140called there. Note that the kernel uses 16K of RAM below the image 156kernel should be placed in the first 128MiB of RAM. It is recommended
141to store page tables. The recommended placement is 32KiB into RAM. 157that it is loaded above 32MiB in order to avoid the need to relocate
158prior to decompression, which will make the boot process slightly
159faster.
160
161When booting a raw (non-zImage) kernel the constraints are tighter.
162In this case the kernel must be loaded at an offset into system equal
163to TEXT_OFFSET - PAGE_OFFSET.
142 164
143In either case, the following conditions must be met: 165In any case, the following conditions must be met:
144 166
145- Quiesce all DMA capable devices so that memory does not get 167- Quiesce all DMA capable devices so that memory does not get
146 corrupted by bogus network packets or disk data. This will save 168 corrupted by bogus network packets or disk data. This will save
diff --git a/Documentation/arm/Marvell/README b/Documentation/arm/Marvell/README
index 8f08a86e03b7..da0151db9964 100644
--- a/Documentation/arm/Marvell/README
+++ b/Documentation/arm/Marvell/README
@@ -88,6 +88,7 @@ EBU Armada family
88 MV78230 88 MV78230
89 MV78260 89 MV78260
90 MV78460 90 MV78460
91 NOTE: not to be confused with the non-SMP 78xx0 SoCs
91 92
92 Product Brief: http://www.marvell.com/embedded-processors/armada-xp/assets/Marvell-ArmadaXP-SoC-product%20brief.pdf 93 Product Brief: http://www.marvell.com/embedded-processors/armada-xp/assets/Marvell-ArmadaXP-SoC-product%20brief.pdf
93 No public datasheet available. 94 No public datasheet available.
diff --git a/Documentation/arm/OMAP/omap_pm b/Documentation/arm/OMAP/omap_pm
index 9012bb039094..4ae915a9f899 100644
--- a/Documentation/arm/OMAP/omap_pm
+++ b/Documentation/arm/OMAP/omap_pm
@@ -78,7 +78,7 @@ to NULL. Drivers should use the following idiom:
78The most common usage of these functions will probably be to specify 78The most common usage of these functions will probably be to specify
79the maximum time from when an interrupt occurs, to when the device 79the maximum time from when an interrupt occurs, to when the device
80becomes accessible. To accomplish this, driver writers should use the 80becomes accessible. To accomplish this, driver writers should use the
81set_max_mpu_wakeup_lat() function to to constrain the MPU wakeup 81set_max_mpu_wakeup_lat() function to constrain the MPU wakeup
82latency, and the set_max_dev_wakeup_lat() function to constrain the 82latency, and the set_max_dev_wakeup_lat() function to constrain the
83device wakeup latency (from clk_enable() to accessibility). For 83device wakeup latency (from clk_enable() to accessibility). For
84example, 84example,
diff --git a/Documentation/arm/kernel_mode_neon.txt b/Documentation/arm/kernel_mode_neon.txt
new file mode 100644
index 000000000000..525452726d31
--- /dev/null
+++ b/Documentation/arm/kernel_mode_neon.txt
@@ -0,0 +1,121 @@
1Kernel mode NEON
2================
3
4TL;DR summary
5-------------
6* Use only NEON instructions, or VFP instructions that don't rely on support
7 code
8* Isolate your NEON code in a separate compilation unit, and compile it with
9 '-mfpu=neon -mfloat-abi=softfp'
10* Put kernel_neon_begin() and kernel_neon_end() calls around the calls into your
11 NEON code
12* Don't sleep in your NEON code, and be aware that it will be executed with
13 preemption disabled
14
15
16Introduction
17------------
18It is possible to use NEON instructions (and in some cases, VFP instructions) in
19code that runs in kernel mode. However, for performance reasons, the NEON/VFP
20register file is not preserved and restored at every context switch or taken
21exception like the normal register file is, so some manual intervention is
22required. Furthermore, special care is required for code that may sleep [i.e.,
23may call schedule()], as NEON or VFP instructions will be executed in a
24non-preemptible section for reasons outlined below.
25
26
27Lazy preserve and restore
28-------------------------
29The NEON/VFP register file is managed using lazy preserve (on UP systems) and
30lazy restore (on both SMP and UP systems). This means that the register file is
31kept 'live', and is only preserved and restored when multiple tasks are
32contending for the NEON/VFP unit (or, in the SMP case, when a task migrates to
33another core). Lazy restore is implemented by disabling the NEON/VFP unit after
34every context switch, resulting in a trap when subsequently a NEON/VFP
35instruction is issued, allowing the kernel to step in and perform the restore if
36necessary.
37
38Any use of the NEON/VFP unit in kernel mode should not interfere with this, so
39it is required to do an 'eager' preserve of the NEON/VFP register file, and
40enable the NEON/VFP unit explicitly so no exceptions are generated on first
41subsequent use. This is handled by the function kernel_neon_begin(), which
42should be called before any kernel mode NEON or VFP instructions are issued.
43Likewise, the NEON/VFP unit should be disabled again after use to make sure user
44mode will hit the lazy restore trap upon next use. This is handled by the
45function kernel_neon_end().
46
47
48Interruptions in kernel mode
49----------------------------
50For reasons of performance and simplicity, it was decided that there shall be no
51preserve/restore mechanism for the kernel mode NEON/VFP register contents. This
52implies that interruptions of a kernel mode NEON section can only be allowed if
53they are guaranteed not to touch the NEON/VFP registers. For this reason, the
54following rules and restrictions apply in the kernel:
55* NEON/VFP code is not allowed in interrupt context;
56* NEON/VFP code is not allowed to sleep;
57* NEON/VFP code is executed with preemption disabled.
58
59If latency is a concern, it is possible to put back to back calls to
60kernel_neon_end() and kernel_neon_begin() in places in your code where none of
61the NEON registers are live. (Additional calls to kernel_neon_begin() should be
62reasonably cheap if no context switch occurred in the meantime)
63
64
65VFP and support code
66--------------------
67Earlier versions of VFP (prior to version 3) rely on software support for things
68like IEEE-754 compliant underflow handling etc. When the VFP unit needs such
69software assistance, it signals the kernel by raising an undefined instruction
70exception. The kernel responds by inspecting the VFP control registers and the
71current instruction and arguments, and emulates the instruction in software.
72
73Such software assistance is currently not implemented for VFP instructions
74executed in kernel mode. If such a condition is encountered, the kernel will
75fail and generate an OOPS.
76
77
78Separating NEON code from ordinary code
79---------------------------------------
80The compiler is not aware of the special significance of kernel_neon_begin() and
81kernel_neon_end(), i.e., that it is only allowed to issue NEON/VFP instructions
82between calls to these respective functions. Furthermore, GCC may generate NEON
83instructions of its own at -O3 level if -mfpu=neon is selected, and even if the
84kernel is currently compiled at -O2, future changes may result in NEON/VFP
85instructions appearing in unexpected places if no special care is taken.
86
87Therefore, the recommended and only supported way of using NEON/VFP in the
88kernel is by adhering to the following rules:
89* isolate the NEON code in a separate compilation unit and compile it with
90 '-mfpu=neon -mfloat-abi=softfp';
91* issue the calls to kernel_neon_begin(), kernel_neon_end() as well as the calls
92 into the unit containing the NEON code from a compilation unit which is *not*
93 built with the GCC flag '-mfpu=neon' set.
94
95As the kernel is compiled with '-msoft-float', the above will guarantee that
96both NEON and VFP instructions will only ever appear in designated compilation
97units at any optimization level.
98
99
100NEON assembler
101--------------
102NEON assembler is supported with no additional caveats as long as the rules
103above are followed.
104
105
106NEON code generated by GCC
107--------------------------
108The GCC option -ftree-vectorize (implied by -O3) tries to exploit implicit
109parallelism, and generates NEON code from ordinary C source code. This is fully
110supported as long as the rules above are followed.
111
112
113NEON intrinsics
114---------------
115NEON intrinsics are also supported. However, as code using NEON intrinsics
116relies on the GCC header <arm_neon.h>, (which #includes <stdint.h>), you should
117observe the following in addition to the rules above:
118* Compile the unit containing the NEON intrinsics with '-ffreestanding' so GCC
119 uses its builtin version of <stdint.h> (this is a C99 header which the kernel
120 does not supply);
121* Include <arm_neon.h> last, or at least after <linux/types.h>
diff --git a/Documentation/arm/sunxi/README b/Documentation/arm/sunxi/README
index e3f93fb9224e..7945238453ed 100644
--- a/Documentation/arm/sunxi/README
+++ b/Documentation/arm/sunxi/README
@@ -10,6 +10,10 @@ SunXi family
10 Linux kernel mach directory: arch/arm/mach-sunxi 10 Linux kernel mach directory: arch/arm/mach-sunxi
11 11
12 Flavors: 12 Flavors:
13 * ARM926 based SoCs
14 - Allwinner F20 (sun3i)
15 + Not Supported
16
13 * ARM Cortex-A8 based SoCs 17 * ARM Cortex-A8 based SoCs
14 - Allwinner A10 (sun4i) 18 - Allwinner A10 (sun4i)
15 + Datasheet 19 + Datasheet
@@ -25,4 +29,24 @@ SunXi family
25 + Datasheet 29 + Datasheet
26 http://dl.linux-sunxi.org/A13/A13%20Datasheet%20-%20v1.12%20%282012-03-29%29.pdf 30 http://dl.linux-sunxi.org/A13/A13%20Datasheet%20-%20v1.12%20%282012-03-29%29.pdf
27 + User Manual 31 + User Manual
28 http://dl.linux-sunxi.org/A13/A13%20User%20Manual%20-%20v1.2%20%282013-08-08%29.pdf 32 http://dl.linux-sunxi.org/A13/A13%20User%20Manual%20-%20v1.2%20%282013-01-08%29.pdf
33
34 * Dual ARM Cortex-A7 based SoCs
35 - Allwinner A20 (sun7i)
36 + User Manual
37 http://dl.linux-sunxi.org/A20/A20%20User%20Manual%202013-03-22.pdf
38
39 - Allwinner A23
40 + Not Supported
41
42 * Quad ARM Cortex-A7 based SoCs
43 - Allwinner A31 (sun6i)
44 + Datasheet
45 http://dl.linux-sunxi.org/A31/A31%20Datasheet%20-%20v1.00%20(2012-12-24).pdf
46
47 - Allwinner A31s (sun6i)
48 + Not Supported
49
50 * Quad ARM Cortex-A15, Quad ARM Cortex-A7 based SoCs
51 - Allwinner A80
52 + Not Supported \ No newline at end of file
diff --git a/Documentation/arm64/booting.txt b/Documentation/arm64/booting.txt
index 9c4d388daddc..a9691cc48fe3 100644
--- a/Documentation/arm64/booting.txt
+++ b/Documentation/arm64/booting.txt
@@ -45,9 +45,9 @@ sees fit.)
45 45
46Requirement: MANDATORY 46Requirement: MANDATORY
47 47
48The device tree blob (dtb) must be no bigger than 2 megabytes in size 48The device tree blob (dtb) must be placed on an 8-byte boundary within
49and placed at a 2-megabyte boundary within the first 512 megabytes from 49the first 512 megabytes from the start of the kernel image and must not
50the start of the kernel image. This is to allow the kernel to map the 50cross a 2-megabyte boundary. This is to allow the kernel to map the
51blob using a single section mapping in the initial page tables. 51blob using a single section mapping in the initial page tables.
52 52
53 53
@@ -68,13 +68,23 @@ Image target is available instead.
68 68
69Requirement: MANDATORY 69Requirement: MANDATORY
70 70
71The decompressed kernel image contains a 32-byte header as follows: 71The decompressed kernel image contains a 64-byte header as follows:
72 72
73 u32 magic = 0x14000008; /* branch to stext, little-endian */ 73 u32 code0; /* Executable code */
74 u32 res0 = 0; /* reserved */ 74 u32 code1; /* Executable code */
75 u64 text_offset; /* Image load offset */ 75 u64 text_offset; /* Image load offset */
76 u64 res0 = 0; /* reserved */
76 u64 res1 = 0; /* reserved */ 77 u64 res1 = 0; /* reserved */
77 u64 res2 = 0; /* reserved */ 78 u64 res2 = 0; /* reserved */
79 u64 res3 = 0; /* reserved */
80 u64 res4 = 0; /* reserved */
81 u32 magic = 0x644d5241; /* Magic number, little endian, "ARM\x64" */
82 u32 res5 = 0; /* reserved */
83
84
85Header notes:
86
87- code0/code1 are responsible for branching to stext.
78 88
79The image must be placed at the specified offset (currently 0x80000) 89The image must be placed at the specified offset (currently 0x80000)
80from the start of the system RAM and called there. The start of the 90from the start of the system RAM and called there. The start of the
@@ -105,9 +115,10 @@ Before jumping into the kernel, the following conditions must be met:
105 External caches (if present) must be configured and disabled. 115 External caches (if present) must be configured and disabled.
106 116
107- Architected timers 117- Architected timers
108 CNTFRQ must be programmed with the timer frequency. 118 CNTFRQ must be programmed with the timer frequency and CNTVOFF must
109 If entering the kernel at EL1, CNTHCTL_EL2 must have EL1PCTEN (bit 0) 119 be programmed with a consistent value on all CPUs. If entering the
110 set where available. 120 kernel at EL1, CNTHCTL_EL2 must have EL1PCTEN (bit 0) set where
121 available.
111 122
112- Coherency 123- Coherency
113 All CPUs to be booted by the kernel must be part of the same coherency 124 All CPUs to be booted by the kernel must be part of the same coherency
@@ -120,30 +131,46 @@ Before jumping into the kernel, the following conditions must be met:
120 the kernel image will be entered must be initialised by software at a 131 the kernel image will be entered must be initialised by software at a
121 higher exception level to prevent execution in an UNKNOWN state. 132 higher exception level to prevent execution in an UNKNOWN state.
122 133
134The requirements described above for CPU mode, caches, MMUs, architected
135timers, coherency and system registers apply to all CPUs. All CPUs must
136enter the kernel in the same exception level.
137
123The boot loader is expected to enter the kernel on each CPU in the 138The boot loader is expected to enter the kernel on each CPU in the
124following manner: 139following manner:
125 140
126- The primary CPU must jump directly to the first instruction of the 141- The primary CPU must jump directly to the first instruction of the
127 kernel image. The device tree blob passed by this CPU must contain 142 kernel image. The device tree blob passed by this CPU must contain
128 for each CPU node: 143 an 'enable-method' property for each cpu node. The supported
129 144 enable-methods are described below.
130 1. An 'enable-method' property. Currently, the only supported value
131 for this field is the string "spin-table".
132
133 2. A 'cpu-release-addr' property identifying a 64-bit,
134 zero-initialised memory location.
135 145
136 It is expected that the bootloader will generate these device tree 146 It is expected that the bootloader will generate these device tree
137 properties and insert them into the blob prior to kernel entry. 147 properties and insert them into the blob prior to kernel entry.
138 148
139- Any secondary CPUs must spin outside of the kernel in a reserved area 149- CPUs with a "spin-table" enable-method must have a 'cpu-release-addr'
140 of memory (communicated to the kernel by a /memreserve/ region in the 150 property in their cpu node. This property identifies a
151 naturally-aligned 64-bit zero-initalised memory location.
152
153 These CPUs should spin outside of the kernel in a reserved area of
154 memory (communicated to the kernel by a /memreserve/ region in the
141 device tree) polling their cpu-release-addr location, which must be 155 device tree) polling their cpu-release-addr location, which must be
142 contained in the reserved region. A wfe instruction may be inserted 156 contained in the reserved region. A wfe instruction may be inserted
143 to reduce the overhead of the busy-loop and a sev will be issued by 157 to reduce the overhead of the busy-loop and a sev will be issued by
144 the primary CPU. When a read of the location pointed to by the 158 the primary CPU. When a read of the location pointed to by the
145 cpu-release-addr returns a non-zero value, the CPU must jump directly 159 cpu-release-addr returns a non-zero value, the CPU must jump to this
146 to this value. 160 value. The value will be written as a single 64-bit little-endian
161 value, so CPUs must convert the read value to their native endianness
162 before jumping to it.
163
164- CPUs with a "psci" enable method should remain outside of
165 the kernel (i.e. outside of the regions of memory described to the
166 kernel in the memory node, or in a reserved area of memory described
167 to the kernel by a /memreserve/ region in the device tree). The
168 kernel will issue CPU_ON calls as described in ARM document number ARM
169 DEN 0022A ("Power State Coordination Interface System Software on ARM
170 processors") to bring CPUs into the kernel.
171
172 The device tree should contain a 'psci' node, as described in
173 Documentation/devicetree/bindings/arm/psci.txt.
147 174
148- Secondary CPU general-purpose register settings 175- Secondary CPU general-purpose register settings
149 x0 = 0 (reserved for future use) 176 x0 = 0 (reserved for future use)
diff --git a/Documentation/arm64/memory.txt b/Documentation/arm64/memory.txt
index 78a377124ef0..5e054bfe4dde 100644
--- a/Documentation/arm64/memory.txt
+++ b/Documentation/arm64/memory.txt
@@ -21,7 +21,7 @@ The swapper_pgd_dir address is written to TTBR1 and never written to
21TTBR0. 21TTBR0.
22 22
23 23
24AArch64 Linux memory layout: 24AArch64 Linux memory layout with 4KB pages:
25 25
26Start End Size Use 26Start End Size Use
27----------------------------------------------------------------------- 27-----------------------------------------------------------------------
@@ -39,13 +39,38 @@ ffffffbffbc00000 ffffffbffbdfffff 2MB earlyprintk device
39 39
40ffffffbffbe00000 ffffffbffbe0ffff 64KB PCI I/O space 40ffffffbffbe00000 ffffffbffbe0ffff 64KB PCI I/O space
41 41
42ffffffbbffff0000 ffffffbcffffffff ~2MB [guard] 42ffffffbffbe10000 ffffffbcffffffff ~2MB [guard]
43 43
44ffffffbffc000000 ffffffbfffffffff 64MB modules 44ffffffbffc000000 ffffffbfffffffff 64MB modules
45 45
46ffffffc000000000 ffffffffffffffff 256GB kernel logical memory map 46ffffffc000000000 ffffffffffffffff 256GB kernel logical memory map
47 47
48 48
49AArch64 Linux memory layout with 64KB pages:
50
51Start End Size Use
52-----------------------------------------------------------------------
530000000000000000 000003ffffffffff 4TB user
54
55fffffc0000000000 fffffdfbfffeffff ~2TB vmalloc
56
57fffffdfbffff0000 fffffdfbffffffff 64KB [guard page]
58
59fffffdfc00000000 fffffdfdffffffff 8GB vmemmap
60
61fffffdfe00000000 fffffdfffbbfffff ~8GB [guard, future vmmemap]
62
63fffffdfffbc00000 fffffdfffbdfffff 2MB earlyprintk device
64
65fffffdfffbe00000 fffffdfffbe0ffff 64KB PCI I/O space
66
67fffffdfffbe10000 fffffdfffbffffff ~2MB [guard]
68
69fffffdfffc000000 fffffdffffffffff 64MB modules
70
71fffffe0000000000 ffffffffffffffff 2TB kernel logical memory map
72
73
49Translation table lookup with 4KB pages: 74Translation table lookup with 4KB pages:
50 75
51+--------+--------+--------+--------+--------+--------+--------+--------+ 76+--------+--------+--------+--------+--------+--------+--------+--------+
diff --git a/Documentation/arm64/tagged-pointers.txt b/Documentation/arm64/tagged-pointers.txt
new file mode 100644
index 000000000000..d9995f1f51b3
--- /dev/null
+++ b/Documentation/arm64/tagged-pointers.txt
@@ -0,0 +1,34 @@
1 Tagged virtual addresses in AArch64 Linux
2 =========================================
3
4Author: Will Deacon <will.deacon@arm.com>
5Date : 12 June 2013
6
7This document briefly describes the provision of tagged virtual
8addresses in the AArch64 translation system and their potential uses
9in AArch64 Linux.
10
11The kernel configures the translation tables so that translations made
12via TTBR0 (i.e. userspace mappings) have the top byte (bits 63:56) of
13the virtual address ignored by the translation hardware. This frees up
14this byte for application use, with the following caveats:
15
16 (1) The kernel requires that all user addresses passed to EL1
17 are tagged with tag 0x00. This means that any syscall
18 parameters containing user virtual addresses *must* have
19 their top byte cleared before trapping to the kernel.
20
21 (2) Non-zero tags are not preserved when delivering signals.
22 This means that signal handlers in applications making use
23 of tags cannot rely on the tag information for user virtual
24 addresses being maintained for fields inside siginfo_t.
25 One exception to this rule is for signals raised in response
26 to watchpoint debug exceptions, where the tag information
27 will be preserved.
28
29 (3) Special care should be taken when using tagged pointers,
30 since it is likely that C compilers will not hazard two
31 virtual addresses differing only in the upper byte.
32
33The architecture prevents the use of a tagged PC, so the upper byte will
34be set to a sign-extension of bit 55 on exception return.
diff --git a/Documentation/block/00-INDEX b/Documentation/block/00-INDEX
index d18ecd827c40..929d9904f74b 100644
--- a/Documentation/block/00-INDEX
+++ b/Documentation/block/00-INDEX
@@ -6,6 +6,8 @@ capability.txt
6 - Generic Block Device Capability (/sys/block/<device>/capability) 6 - Generic Block Device Capability (/sys/block/<device>/capability)
7cfq-iosched.txt 7cfq-iosched.txt
8 - CFQ IO scheduler tunables 8 - CFQ IO scheduler tunables
9cmdline-partition.txt
10 - how to specify block device partitions on kernel command line
9data-integrity.txt 11data-integrity.txt
10 - Block data integrity 12 - Block data integrity
11deadline-iosched.txt 13deadline-iosched.txt
diff --git a/Documentation/block/cfq-iosched.txt b/Documentation/block/cfq-iosched.txt
index 9887f0414c16..f3bc72945cbd 100644
--- a/Documentation/block/cfq-iosched.txt
+++ b/Documentation/block/cfq-iosched.txt
@@ -69,7 +69,7 @@ one, this value should be decreased relative to fifo_expire_async.
69group_idle 69group_idle
70----------- 70-----------
71This parameter forces idling at the CFQ group level instead of CFQ 71This parameter forces idling at the CFQ group level instead of CFQ
72queue level. This was introduced after after a bottleneck was observed 72queue level. This was introduced after a bottleneck was observed
73in higher end storage due to idle on sequential queue and allow dispatch 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 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 75slice_idle=0 and group_idle=8, so that idling does not happen on individual
diff --git a/Documentation/block/cmdline-partition.txt b/Documentation/block/cmdline-partition.txt
new file mode 100644
index 000000000000..525b9f6d7fb4
--- /dev/null
+++ b/Documentation/block/cmdline-partition.txt
@@ -0,0 +1,39 @@
1Embedded device command line partition parsing
2=====================================================================
3
4Support for reading the block device partition table from the command line.
5It is typically used for fixed block (eMMC) embedded devices.
6It has no MBR, so saves storage space. Bootloader can be easily accessed
7by absolute address of data on the block device.
8Users can easily change the partition.
9
10The format for the command line is just like mtdparts:
11
12blkdevparts=<blkdev-def>[;<blkdev-def>]
13 <blkdev-def> := <blkdev-id>:<partdef>[,<partdef>]
14 <partdef> := <size>[@<offset>](part-name)
15
16<blkdev-id>
17 block device disk name, embedded device used fixed block device,
18 it's disk name also fixed. such as: mmcblk0, mmcblk1, mmcblk0boot0.
19
20<size>
21 partition size, in bytes, such as: 512, 1m, 1G.
22
23<offset>
24 partition start address, in bytes.
25
26(part-name)
27 partition name, kernel send uevent with "PARTNAME". application can create
28 a link to block device partition with the name "PARTNAME".
29 user space application can access partition by partition name.
30
31Example:
32 eMMC disk name is "mmcblk0" and "mmcblk0boot0"
33
34 bootargs:
35 'blkdevparts=mmcblk0:1G(data0),1G(data1),-;mmcblk0boot0:1m(boot),-(kernel)'
36
37 dmesg:
38 mmcblk0: p1(data0) p2(data1) p3()
39 mmcblk0boot0: p1(boot) p2(kernel)
diff --git a/Documentation/cachetlb.txt b/Documentation/cachetlb.txt
index 9b728dc17535..d79b008e4a32 100644
--- a/Documentation/cachetlb.txt
+++ b/Documentation/cachetlb.txt
@@ -57,7 +57,7 @@ changes occur:
57 interface must make sure that any previous page table 57 interface must make sure that any previous page table
58 modifications for the address space 'vma->vm_mm' in the range 58 modifications for the address space 'vma->vm_mm' in the range
59 'start' to 'end-1' will be visible to the cpu. That is, after 59 'start' to 'end-1' will be visible to the cpu. That is, after
60 running, here will be no entries in the TLB for 'mm' for 60 running, there will be no entries in the TLB for 'mm' for
61 virtual addresses in the range 'start' to 'end-1'. 61 virtual addresses in the range 'start' to 'end-1'.
62 62
63 The "vma" is the backing store being used for the region. 63 The "vma" is the backing store being used for the region.
@@ -375,8 +375,8 @@ maps this page at its virtual address.
375 375
376 void flush_icache_page(struct vm_area_struct *vma, struct page *page) 376 void flush_icache_page(struct vm_area_struct *vma, struct page *page)
377 All the functionality of flush_icache_page can be implemented in 377 All the functionality of flush_icache_page can be implemented in
378 flush_dcache_page and update_mmu_cache. In 2.7 the hope is to 378 flush_dcache_page and update_mmu_cache. In the future, the hope
379 remove this interface completely. 379 is to remove this interface completely.
380 380
381The final category of APIs is for I/O to deliberately aliased address 381The final category of APIs is for I/O to deliberately aliased address
382ranges inside the kernel. Such aliases are set up by use of the 382ranges inside the kernel. Such aliases are set up by use of the
diff --git a/Documentation/cgroups/memory.txt b/Documentation/cgroups/memory.txt
index 2a3330696372..8af4ad121828 100644
--- a/Documentation/cgroups/memory.txt
+++ b/Documentation/cgroups/memory.txt
@@ -490,6 +490,8 @@ pgpgin - # of charging events to the memory cgroup. The charging
490pgpgout - # of uncharging events to the memory cgroup. The uncharging 490pgpgout - # of uncharging events to the memory cgroup. The uncharging
491 event happens each time a page is unaccounted from the cgroup. 491 event happens each time a page is unaccounted from the cgroup.
492swap - # of bytes of swap usage 492swap - # of bytes of swap usage
493writeback - # of bytes of file/anon cache that are queued for syncing to
494 disk.
493inactive_anon - # of bytes of anonymous and swap cache memory on inactive 495inactive_anon - # of bytes of anonymous and swap cache memory on inactive
494 LRU list. 496 LRU list.
495active_anon - # of bytes of anonymous and swap cache memory on active 497active_anon - # of bytes of anonymous and swap cache memory on active
diff --git a/Documentation/clk.txt b/Documentation/clk.txt
index 6f68ba0d1e01..3aeb5c440442 100644
--- a/Documentation/clk.txt
+++ b/Documentation/clk.txt
@@ -70,6 +70,10 @@ the operations defined in clk.h:
70 unsigned long parent_rate); 70 unsigned long parent_rate);
71 long (*round_rate)(struct clk_hw *hw, unsigned long, 71 long (*round_rate)(struct clk_hw *hw, unsigned long,
72 unsigned long *); 72 unsigned long *);
73 long (*determine_rate)(struct clk_hw *hw,
74 unsigned long rate,
75 unsigned long *best_parent_rate,
76 struct clk **best_parent_clk);
73 int (*set_parent)(struct clk_hw *hw, u8 index); 77 int (*set_parent)(struct clk_hw *hw, u8 index);
74 u8 (*get_parent)(struct clk_hw *hw); 78 u8 (*get_parent)(struct clk_hw *hw);
75 int (*set_rate)(struct clk_hw *hw, unsigned long); 79 int (*set_rate)(struct clk_hw *hw, unsigned long);
@@ -179,26 +183,28 @@ mandatory, a cell marked as "n" implies that either including that
179callback is invalid or otherwise unnecessary. Empty cells are either 183callback is invalid or otherwise unnecessary. Empty cells are either
180optional or must be evaluated on a case-by-case basis. 184optional or must be evaluated on a case-by-case basis.
181 185
182 clock hardware characteristics 186 clock hardware characteristics
183 ----------------------------------------------------------- 187 -----------------------------------------------------------
184 | gate | change rate | single parent | multiplexer | root | 188 | gate | change rate | single parent | multiplexer | root |
185 |------|-------------|---------------|-------------|------| 189 |------|-------------|---------------|-------------|------|
186.prepare | | | | | | 190.prepare | | | | | |
187.unprepare | | | | | | 191.unprepare | | | | | |
188 | | | | | | 192 | | | | | |
189.enable | y | | | | | 193.enable | y | | | | |
190.disable | y | | | | | 194.disable | y | | | | |
191.is_enabled | y | | | | | 195.is_enabled | y | | | | |
192 | | | | | | 196 | | | | | |
193.recalc_rate | | y | | | | 197.recalc_rate | | y | | | |
194.round_rate | | y | | | | 198.round_rate | | y [1] | | | |
195.set_rate | | y | | | | 199.determine_rate | | y [1] | | | |
196 | | | | | | 200.set_rate | | y | | | |
197.set_parent | | | n | y | n | 201 | | | | | |
198.get_parent | | | n | y | n | 202.set_parent | | | n | y | n |
199 | | | | | | 203.get_parent | | | n | y | n |
200.init | | | | | | 204 | | | | | |
201 ----------------------------------------------------------- 205.init | | | | | |
206 -----------------------------------------------------------
207[1] either one of round_rate or determine_rate is required.
202 208
203Finally, register your clock at run-time with a hardware-specific 209Finally, register your clock at run-time with a hardware-specific
204registration function. This function simply populates struct clk_foo's 210registration function. This function simply populates struct clk_foo's
diff --git a/Documentation/connector/ucon.c b/Documentation/connector/ucon.c
index 4848db8c71ff..8a4da64e02a8 100644
--- a/Documentation/connector/ucon.c
+++ b/Documentation/connector/ucon.c
@@ -71,7 +71,7 @@ static int netlink_send(int s, struct cn_msg *msg)
71 nlh->nlmsg_seq = seq++; 71 nlh->nlmsg_seq = seq++;
72 nlh->nlmsg_pid = getpid(); 72 nlh->nlmsg_pid = getpid();
73 nlh->nlmsg_type = NLMSG_DONE; 73 nlh->nlmsg_type = NLMSG_DONE;
74 nlh->nlmsg_len = NLMSG_LENGTH(size - sizeof(*nlh)); 74 nlh->nlmsg_len = size;
75 nlh->nlmsg_flags = 0; 75 nlh->nlmsg_flags = 0;
76 76
77 m = NLMSG_DATA(nlh); 77 m = NLMSG_DATA(nlh);
diff --git a/Documentation/cpu-freq/cpu-drivers.txt b/Documentation/cpu-freq/cpu-drivers.txt
index 19fa98e07bf7..40282e617913 100644
--- a/Documentation/cpu-freq/cpu-drivers.txt
+++ b/Documentation/cpu-freq/cpu-drivers.txt
@@ -50,8 +50,6 @@ What shall this struct cpufreq_driver contain?
50 50
51cpufreq_driver.name - The name of this driver. 51cpufreq_driver.name - The name of this driver.
52 52
53cpufreq_driver.owner - THIS_MODULE;
54
55cpufreq_driver.init - A pointer to the per-CPU initialization 53cpufreq_driver.init - A pointer to the per-CPU initialization
56 function. 54 function.
57 55
diff --git a/Documentation/cputopology.txt b/Documentation/cputopology.txt
index 902d3151f527..0aad6deb2d96 100644
--- a/Documentation/cputopology.txt
+++ b/Documentation/cputopology.txt
@@ -22,7 +22,7 @@ to /proc/cpuinfo.
22 22
234) /sys/devices/system/cpu/cpuX/topology/thread_siblings: 234) /sys/devices/system/cpu/cpuX/topology/thread_siblings:
24 24
25 internel kernel map of cpuX's hardware threads within the same 25 internal kernel map of cpuX's hardware threads within the same
26 core as cpuX 26 core as cpuX
27 27
285) /sys/devices/system/cpu/cpuX/topology/core_siblings: 285) /sys/devices/system/cpu/cpuX/topology/core_siblings:
diff --git a/Documentation/development-process/2.Process b/Documentation/development-process/2.Process
index 4823577c6509..2e0617936e8f 100644
--- a/Documentation/development-process/2.Process
+++ b/Documentation/development-process/2.Process
@@ -276,7 +276,7 @@ mainline get there via -mm.
276The current -mm patch is available in the "mmotm" (-mm of the moment) 276The current -mm patch is available in the "mmotm" (-mm of the moment)
277directory at: 277directory at:
278 278
279 http://userweb.kernel.org/~akpm/mmotm/ 279 http://www.ozlabs.org/~akpm/mmotm/
280 280
281Use of the MMOTM tree is likely to be a frustrating experience, though; 281Use of the MMOTM tree is likely to be a frustrating experience, though;
282there is a definite chance that it will not even compile. 282there is a definite chance that it will not even compile.
@@ -287,7 +287,7 @@ the mainline is expected to look like after the next merge window closes.
287Linux-next trees are announced on the linux-kernel and linux-next mailing 287Linux-next trees are announced on the linux-kernel and linux-next mailing
288lists when they are assembled; they can be downloaded from: 288lists when they are assembled; they can be downloaded from:
289 289
290 http://www.kernel.org/pub/linux/kernel/people/sfr/linux-next/ 290 http://www.kernel.org/pub/linux/kernel/next/
291 291
292Some information about linux-next has been gathered at: 292Some information about linux-next has been gathered at:
293 293
diff --git a/Documentation/device-mapper/cache.txt b/Documentation/device-mapper/cache.txt
index e8cdf7241b66..33d45ee0b737 100644
--- a/Documentation/device-mapper/cache.txt
+++ b/Documentation/device-mapper/cache.txt
@@ -50,14 +50,16 @@ other parameters detailed later):
50 which are dirty, and extra hints for use by the policy object. 50 which are dirty, and extra hints for use by the policy object.
51 This information could be put on the cache device, but having it 51 This information could be put on the cache device, but having it
52 separate allows the volume manager to configure it differently, 52 separate allows the volume manager to configure it differently,
53 e.g. as a mirror for extra robustness. 53 e.g. as a mirror for extra robustness. This metadata device may only
54 be used by a single cache device.
54 55
55Fixed block size 56Fixed block size
56---------------- 57----------------
57 58
58The origin is divided up into blocks of a fixed size. This block size 59The origin is divided up into blocks of a fixed size. This block size
59is configurable when you first create the cache. Typically we've been 60is configurable when you first create the cache. Typically we've been
60using block sizes of 256k - 1024k. 61using block sizes of 256KB - 1024KB. The block size must be between 64
62(32KB) and 2097152 (1GB) and a multiple of 64 (32KB).
61 63
62Having a fixed block size simplifies the target a lot. But it is 64Having a fixed block size simplifies the target a lot. But it is
63something of a compromise. For instance, a small part of a block may be 65something of a compromise. For instance, a small part of a block may be
diff --git a/Documentation/device-mapper/statistics.txt b/Documentation/device-mapper/statistics.txt
new file mode 100644
index 000000000000..2a1673adc200
--- /dev/null
+++ b/Documentation/device-mapper/statistics.txt
@@ -0,0 +1,186 @@
1DM statistics
2=============
3
4Device Mapper supports the collection of I/O statistics on user-defined
5regions of a DM device. If no regions are defined no statistics are
6collected so there isn't any performance impact. Only bio-based DM
7devices are currently supported.
8
9Each user-defined region specifies a starting sector, length and step.
10Individual statistics will be collected for each step-sized area within
11the range specified.
12
13The I/O statistics counters for each step-sized area of a region are
14in the same format as /sys/block/*/stat or /proc/diskstats (see:
15Documentation/iostats.txt). But two extra counters (12 and 13) are
16provided: total time spent reading and writing in milliseconds. All
17these counters may be accessed by sending the @stats_print message to
18the appropriate DM device via dmsetup.
19
20Each region has a corresponding unique identifier, which we call a
21region_id, that is assigned when the region is created. The region_id
22must be supplied when querying statistics about the region, deleting the
23region, etc. Unique region_ids enable multiple userspace programs to
24request and process statistics for the same DM device without stepping
25on each other's data.
26
27The creation of DM statistics will allocate memory via kmalloc or
28fallback to using vmalloc space. At most, 1/4 of the overall system
29memory may be allocated by DM statistics. The admin can see how much
30memory is used by reading
31/sys/module/dm_mod/parameters/stats_current_allocated_bytes
32
33Messages
34========
35
36 @stats_create <range> <step> [<program_id> [<aux_data>]]
37
38 Create a new region and return the region_id.
39
40 <range>
41 "-" - whole device
42 "<start_sector>+<length>" - a range of <length> 512-byte sectors
43 starting with <start_sector>.
44
45 <step>
46 "<area_size>" - the range is subdivided into areas each containing
47 <area_size> sectors.
48 "/<number_of_areas>" - the range is subdivided into the specified
49 number of areas.
50
51 <program_id>
52 An optional parameter. A name that uniquely identifies
53 the userspace owner of the range. This groups ranges together
54 so that userspace programs can identify the ranges they
55 created and ignore those created by others.
56 The kernel returns this string back in the output of
57 @stats_list message, but it doesn't use it for anything else.
58
59 <aux_data>
60 An optional parameter. A word that provides auxiliary data
61 that is useful to the client program that created the range.
62 The kernel returns this string back in the output of
63 @stats_list message, but it doesn't use this value for anything.
64
65 @stats_delete <region_id>
66
67 Delete the region with the specified id.
68
69 <region_id>
70 region_id returned from @stats_create
71
72 @stats_clear <region_id>
73
74 Clear all the counters except the in-flight i/o counters.
75
76 <region_id>
77 region_id returned from @stats_create
78
79 @stats_list [<program_id>]
80
81 List all regions registered with @stats_create.
82
83 <program_id>
84 An optional parameter.
85 If this parameter is specified, only matching regions
86 are returned.
87 If it is not specified, all regions are returned.
88
89 Output format:
90 <region_id>: <start_sector>+<length> <step> <program_id> <aux_data>
91
92 @stats_print <region_id> [<starting_line> <number_of_lines>]
93
94 Print counters for each step-sized area of a region.
95
96 <region_id>
97 region_id returned from @stats_create
98
99 <starting_line>
100 The index of the starting line in the output.
101 If omitted, all lines are returned.
102
103 <number_of_lines>
104 The number of lines to include in the output.
105 If omitted, all lines are returned.
106
107 Output format for each step-sized area of a region:
108
109 <start_sector>+<length> counters
110
111 The first 11 counters have the same meaning as
112 /sys/block/*/stat or /proc/diskstats.
113
114 Please refer to Documentation/iostats.txt for details.
115
116 1. the number of reads completed
117 2. the number of reads merged
118 3. the number of sectors read
119 4. the number of milliseconds spent reading
120 5. the number of writes completed
121 6. the number of writes merged
122 7. the number of sectors written
123 8. the number of milliseconds spent writing
124 9. the number of I/Os currently in progress
125 10. the number of milliseconds spent doing I/Os
126 11. the weighted number of milliseconds spent doing I/Os
127
128 Additional counters:
129 12. the total time spent reading in milliseconds
130 13. the total time spent writing in milliseconds
131
132 @stats_print_clear <region_id> [<starting_line> <number_of_lines>]
133
134 Atomically print and then clear all the counters except the
135 in-flight i/o counters. Useful when the client consuming the
136 statistics does not want to lose any statistics (those updated
137 between printing and clearing).
138
139 <region_id>
140 region_id returned from @stats_create
141
142 <starting_line>
143 The index of the starting line in the output.
144 If omitted, all lines are printed and then cleared.
145
146 <number_of_lines>
147 The number of lines to process.
148 If omitted, all lines are printed and then cleared.
149
150 @stats_set_aux <region_id> <aux_data>
151
152 Store auxiliary data aux_data for the specified region.
153
154 <region_id>
155 region_id returned from @stats_create
156
157 <aux_data>
158 The string that identifies data which is useful to the client
159 program that created the range. The kernel returns this
160 string back in the output of @stats_list message, but it
161 doesn't use this value for anything.
162
163Examples
164========
165
166Subdivide the DM device 'vol' into 100 pieces and start collecting
167statistics on them:
168
169 dmsetup message vol 0 @stats_create - /100
170
171Set the auxillary data string to "foo bar baz" (the escape for each
172space must also be escaped, otherwise the shell will consume them):
173
174 dmsetup message vol 0 @stats_set_aux 0 foo\\ bar\\ baz
175
176List the statistics:
177
178 dmsetup message vol 0 @stats_list
179
180Print the statistics:
181
182 dmsetup message vol 0 @stats_print 0
183
184Delete the statistics:
185
186 dmsetup message vol 0 @stats_delete 0
diff --git a/Documentation/device-mapper/thin-provisioning.txt b/Documentation/device-mapper/thin-provisioning.txt
index 30b8b83bd333..50c44cf79b0e 100644
--- a/Documentation/device-mapper/thin-provisioning.txt
+++ b/Documentation/device-mapper/thin-provisioning.txt
@@ -99,13 +99,14 @@ Using an existing pool device
99 $data_block_size $low_water_mark" 99 $data_block_size $low_water_mark"
100 100
101$data_block_size gives the smallest unit of disk space that can be 101$data_block_size gives the smallest unit of disk space that can be
102allocated at a time expressed in units of 512-byte sectors. People 102allocated at a time expressed in units of 512-byte sectors.
103primarily interested in thin provisioning may want to use a value such 103$data_block_size must be between 128 (64KB) and 2097152 (1GB) and a
104as 1024 (512KB). People doing lots of snapshotting may want a smaller value 104multiple of 128 (64KB). $data_block_size cannot be changed after the
105such as 128 (64KB). If you are not zeroing newly-allocated data, 105thin-pool is created. People primarily interested in thin provisioning
106a larger $data_block_size in the region of 256000 (128MB) is suggested. 106may want to use a value such as 1024 (512KB). People doing lots of
107$data_block_size must be the same for the lifetime of the 107snapshotting may want a smaller value such as 128 (64KB). If you are
108metadata device. 108not zeroing newly-allocated data, a larger $data_block_size in the
109region of 256000 (128MB) is suggested.
109 110
110$low_water_mark is expressed in blocks of size $data_block_size. If 111$low_water_mark is expressed in blocks of size $data_block_size. If
111free space on the data device drops below this level then a dm event 112free space on the data device drops below this level then a dm event
diff --git a/Documentation/devices.txt b/Documentation/devices.txt
index 23721d3be3e6..80b72419ffd8 100644
--- a/Documentation/devices.txt
+++ b/Documentation/devices.txt
@@ -414,6 +414,7 @@ Your cooperation is appreciated.
414 200 = /dev/net/tun TAP/TUN network device 414 200 = /dev/net/tun TAP/TUN network device
415 201 = /dev/button/gulpb Transmeta GULP-B buttons 415 201 = /dev/button/gulpb Transmeta GULP-B buttons
416 202 = /dev/emd/ctl Enhanced Metadisk RAID (EMD) control 416 202 = /dev/emd/ctl Enhanced Metadisk RAID (EMD) control
417 203 = /dev/cuse Cuse (character device in user-space)
417 204 = /dev/video/em8300 EM8300 DVD decoder control 418 204 = /dev/video/em8300 EM8300 DVD decoder control
418 205 = /dev/video/em8300_mv EM8300 DVD decoder video 419 205 = /dev/video/em8300_mv EM8300 DVD decoder video
419 206 = /dev/video/em8300_ma EM8300 DVD decoder audio 420 206 = /dev/video/em8300_ma EM8300 DVD decoder audio
diff --git a/Documentation/devicetree/bindings/arm/arch_timer.txt b/Documentation/devicetree/bindings/arm/arch_timer.txt
index 20746e5abe6f..06fc7602593a 100644
--- a/Documentation/devicetree/bindings/arm/arch_timer.txt
+++ b/Documentation/devicetree/bindings/arm/arch_timer.txt
@@ -1,10 +1,14 @@
1* ARM architected timer 1* ARM architected timer
2 2
3ARM cores may have a per-core architected timer, which provides per-cpu timers. 3ARM cores may have a per-core architected timer, which provides per-cpu timers,
4or a memory mapped architected timer, which provides up to 8 frames with a
5physical and optional virtual timer per frame.
4 6
5The timer is attached to a GIC to deliver its per-processor interrupts. 7The per-core architected timer is attached to a GIC to deliver its
8per-processor interrupts via PPIs. The memory mapped timer is attached to a GIC
9to deliver its interrupts via SPIs.
6 10
7** Timer node properties: 11** CP15 Timer node properties:
8 12
9- compatible : Should at least contain one of 13- compatible : Should at least contain one of
10 "arm,armv7-timer" 14 "arm,armv7-timer"
@@ -26,3 +30,52 @@ Example:
26 <1 10 0xf08>; 30 <1 10 0xf08>;
27 clock-frequency = <100000000>; 31 clock-frequency = <100000000>;
28 }; 32 };
33
34** Memory mapped timer node properties:
35
36- compatible : Should at least contain "arm,armv7-timer-mem".
37
38- clock-frequency : The frequency of the main counter, in Hz. Optional.
39
40- reg : The control frame base address.
41
42Note that #address-cells, #size-cells, and ranges shall be present to ensure
43the CPU can address a frame's registers.
44
45A timer node has up to 8 frame sub-nodes, each with the following properties:
46
47- frame-number: 0 to 7.
48
49- interrupts : Interrupt list for physical and virtual timers in that order.
50 The virtual timer interrupt is optional.
51
52- reg : The first and second view base addresses in that order. The second view
53 base address is optional.
54
55- status : "disabled" indicates the frame is not available for use. Optional.
56
57Example:
58
59 timer@f0000000 {
60 compatible = "arm,armv7-timer-mem";
61 #address-cells = <1>;
62 #size-cells = <1>;
63 ranges;
64 reg = <0xf0000000 0x1000>;
65 clock-frequency = <50000000>;
66
67 frame@f0001000 {
68 frame-number = <0>
69 interrupts = <0 13 0x8>,
70 <0 14 0x8>;
71 reg = <0xf0001000 0x1000>,
72 <0xf0002000 0x1000>;
73 };
74
75 frame@f0003000 {
76 frame-number = <1>
77 interrupts = <0 15 0x8>;
78 reg = <0xf0003000 0x1000>;
79 status = "disabled";
80 };
81 };
diff --git a/Documentation/devicetree/bindings/arm/arm-boards b/Documentation/devicetree/bindings/arm/arm-boards
index db5858e32d3f..5fac246a9530 100644
--- a/Documentation/devicetree/bindings/arm/arm-boards
+++ b/Documentation/devicetree/bindings/arm/arm-boards
@@ -9,9 +9,53 @@ Required properties (in root node):
9 9
10FPGA type interrupt controllers, see the versatile-fpga-irq binding doc. 10FPGA type interrupt controllers, see the versatile-fpga-irq binding doc.
11 11
12In the root node the Integrator/CP must have a /cpcon node pointing 12Required nodes:
13to the CP control registers, and the Integrator/AP must have a 13
14/syscon node pointing to the Integrator/AP system controller. 14- core-module: the root node to the Integrator platforms must have
15 a core-module with regs and the compatible string
16 "arm,core-module-integrator"
17
18 Required properties for the core module:
19 - regs: the location and size of the core module registers, one
20 range of 0x200 bytes.
21
22- syscon: the root node of the Integrator platforms must have a
23 system controller node pointong to the control registers,
24 with the compatible string
25 "arm,integrator-ap-syscon"
26 "arm,integrator-cp-syscon"
27 respectively.
28
29 Required properties for the system controller:
30 - regs: the location and size of the system controller registers,
31 one range of 0x100 bytes.
32
33 Required properties for the AP system controller:
34 - interrupts: the AP syscon node must include the logical module
35 interrupts, stated in order of module instance <module 0>,
36 <module 1>, <module 2> ... for the CP system controller this
37 is not required not of any use.
38
39/dts-v1/;
40/include/ "integrator.dtsi"
41
42/ {
43 model = "ARM Integrator/AP";
44 compatible = "arm,integrator-ap";
45
46 core-module@10000000 {
47 compatible = "arm,core-module-integrator";
48 reg = <0x10000000 0x200>;
49 };
50
51 syscon {
52 compatible = "arm,integrator-ap-syscon";
53 reg = <0x11000000 0x100>;
54 interrupt-parent = <&pic>;
55 /* These are the logic module IRQs */
56 interrupts = <9>, <10>, <11>, <12>;
57 };
58};
15 59
16 60
17ARM Versatile Application and Platform Baseboards 61ARM Versatile Application and Platform Baseboards
diff --git a/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt b/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt
index 61df564c0d23..d74091a8a3bf 100644
--- a/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt
+++ b/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt
@@ -4,6 +4,8 @@ Marvell Armada 370 and Armada XP Interrupt Controller
4Required properties: 4Required properties:
5- compatible: Should be "marvell,mpic" 5- compatible: Should be "marvell,mpic"
6- interrupt-controller: Identifies the node as an interrupt controller. 6- interrupt-controller: Identifies the node as an interrupt controller.
7- msi-controller: Identifies the node as an PCI Message Signaled
8 Interrupt controller.
7- #interrupt-cells: The number of cells to define the interrupts. Should be 1. 9- #interrupt-cells: The number of cells to define the interrupts. Should be 1.
8 The cell is the IRQ number 10 The cell is the IRQ number
9 11
@@ -24,6 +26,7 @@ Example:
24 #address-cells = <1>; 26 #address-cells = <1>;
25 #size-cells = <1>; 27 #size-cells = <1>;
26 interrupt-controller; 28 interrupt-controller;
29 msi-controller;
27 reg = <0xd0020a00 0x1d0>, 30 reg = <0xd0020a00 0x1d0>,
28 <0xd0021070 0x58>; 31 <0xd0021070 0x58>;
29 }; 32 };
diff --git a/Documentation/devicetree/bindings/arm/atmel-adc.txt b/Documentation/devicetree/bindings/arm/atmel-adc.txt
index 16769d9cedd6..d1061469f63d 100644
--- a/Documentation/devicetree/bindings/arm/atmel-adc.txt
+++ b/Documentation/devicetree/bindings/arm/atmel-adc.txt
@@ -1,18 +1,14 @@
1* AT91's Analog to Digital Converter (ADC) 1* AT91's Analog to Digital Converter (ADC)
2 2
3Required properties: 3Required properties:
4 - compatible: Should be "atmel,at91sam9260-adc" 4 - compatible: Should be "atmel,<chip>-adc"
5 <chip> can be "at91sam9260", "at91sam9g45" or "at91sam9x5"
5 - reg: Should contain ADC registers location and length 6 - reg: Should contain ADC registers location and length
6 - interrupts: Should contain the IRQ line for the ADC 7 - interrupts: Should contain the IRQ line for the ADC
7 - atmel,adc-channel-base: Offset of the first channel data register
8 - atmel,adc-channels-used: Bitmask of the channels muxed and enable for this 8 - atmel,adc-channels-used: Bitmask of the channels muxed and enable for this
9 device 9 device
10 - atmel,adc-drdy-mask: Mask of the DRDY interruption in the ADC
11 - atmel,adc-num-channels: Number of channels available in the ADC
12 - atmel,adc-startup-time: Startup Time of the ADC in microseconds as 10 - atmel,adc-startup-time: Startup Time of the ADC in microseconds as
13 defined in the datasheet 11 defined in the datasheet
14 - atmel,adc-status-register: Offset of the Interrupt Status Register
15 - atmel,adc-trigger-register: Offset of the Trigger Register
16 - atmel,adc-vref: Reference voltage in millivolts for the conversions 12 - 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 13 - atmel,adc-res: List of resolution in bits supported by the ADC. List size
18 must be two at least. 14 must be two at least.
@@ -27,6 +23,13 @@ Optional properties:
27 resolution will be used. 23 resolution will be used.
28 - atmel,adc-sleep-mode: Boolean to enable sleep mode when no conversion 24 - atmel,adc-sleep-mode: Boolean to enable sleep mode when no conversion
29 - atmel,adc-sample-hold-time: Sample and Hold Time in microseconds 25 - atmel,adc-sample-hold-time: Sample and Hold Time in microseconds
26 - atmel,adc-ts-wires: Number of touch screen wires. Should be 4 or 5. If this
27 value is set, then adc driver will enable touch screen
28 support.
29 NOTE: when adc touch screen enabled, the adc hardware trigger will be
30 disabled. Since touch screen will occupied the trigger register.
31 - atmel,adc-ts-pressure-threshold: a pressure threshold for touchscreen. It
32 make touch detect more precision.
30 33
31Optional trigger Nodes: 34Optional trigger Nodes:
32 - Required properties: 35 - Required properties:
diff --git a/Documentation/devicetree/bindings/arm/bcm/bcm11351.txt b/Documentation/devicetree/bindings/arm/bcm/bcm11351.txt
index fb7b5cd2652f..0ff6560e6094 100644
--- a/Documentation/devicetree/bindings/arm/bcm/bcm11351.txt
+++ b/Documentation/devicetree/bindings/arm/bcm/bcm11351.txt
@@ -6,4 +6,5 @@ bcm11351, bcm28145, bcm28155 SoCs) shall have the following properties:
6 6
7Required root node property: 7Required root node property:
8 8
9compatible = "bcm,bcm11351"; 9compatible = "brcm,bcm11351";
10DEPRECATED: compatible = "bcm,bcm11351";
diff --git a/Documentation/devicetree/bindings/arm/bcm/bcm,kona-timer.txt b/Documentation/devicetree/bindings/arm/bcm/kona-timer.txt
index 59fa6e68d4f6..17d88b233d1b 100644
--- a/Documentation/devicetree/bindings/arm/bcm/bcm,kona-timer.txt
+++ b/Documentation/devicetree/bindings/arm/bcm/kona-timer.txt
@@ -4,14 +4,15 @@ This timer is used in the following Broadcom SoCs:
4 BCM11130, BCM11140, BCM11351, BCM28145, BCM28155 4 BCM11130, BCM11140, BCM11351, BCM28145, BCM28155
5 5
6Required properties: 6Required properties:
7- compatible : "bcm,kona-timer" 7- compatible : "brcm,kona-timer"
8- DEPRECATED: compatible : "bcm,kona-timer"
8- reg : Register range for the timer 9- reg : Register range for the timer
9- interrupts : interrupt for the timer 10- interrupts : interrupt for the timer
10- clock-frequency: frequency that the clock operates 11- clock-frequency: frequency that the clock operates
11 12
12Example: 13Example:
13 timer@35006000 { 14 timer@35006000 {
14 compatible = "bcm,kona-timer"; 15 compatible = "brcm,kona-timer";
15 reg = <0x35006000 0x1000>; 16 reg = <0x35006000 0x1000>;
16 interrupts = <0x0 7 0x4>; 17 interrupts = <0x0 7 0x4>;
17 clock-frequency = <32768>; 18 clock-frequency = <32768>;
diff --git a/Documentation/devicetree/bindings/arm/bcm/kona-wdt.txt b/Documentation/devicetree/bindings/arm/bcm/kona-wdt.txt
new file mode 100644
index 000000000000..2b86a00e351d
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/bcm/kona-wdt.txt
@@ -0,0 +1,15 @@
1Broadcom Kona Family Watchdog Timer
2-----------------------------------
3
4This watchdog timer is used in the following Broadcom SoCs:
5 BCM11130, BCM11140, BCM11351, BCM28145, BCM28155
6
7Required properties:
8 - compatible = "brcm,bcm11351-wdt", "brcm,kona-wdt";
9 - reg: memory address & range
10
11Example:
12 watchdog@35002f40 {
13 compatible = "brcm,bcm11351-wdt", "brcm,kona-wdt";
14 reg = <0x35002f40 0x6c>;
15 };
diff --git a/Documentation/devicetree/bindings/arm/cci.txt b/Documentation/devicetree/bindings/arm/cci.txt
index 92d36e2aa877..f28d82bbbc56 100644
--- a/Documentation/devicetree/bindings/arm/cci.txt
+++ b/Documentation/devicetree/bindings/arm/cci.txt
@@ -36,14 +36,18 @@ specific to ARM.
36 36
37 - reg 37 - reg
38 Usage: required 38 Usage: required
39 Value type: <prop-encoded-array> 39 Value type: Integer cells. A register entry, expressed as a pair
40 of cells, containing base and size.
40 Definition: A standard property. Specifies base physical 41 Definition: A standard property. Specifies base physical
41 address of CCI control registers common to all 42 address of CCI control registers common to all
42 interfaces. 43 interfaces.
43 44
44 - ranges: 45 - ranges:
45 Usage: required 46 Usage: required
46 Value type: <prop-encoded-array> 47 Value type: Integer cells. An array of range entries, expressed
48 as a tuple of cells, containing child address,
49 parent address and the size of the region in the
50 child address space.
47 Definition: A standard property. Follow rules in the ePAPR for 51 Definition: A standard property. Follow rules in the ePAPR for
48 hierarchical bus addressing. CCI interfaces 52 hierarchical bus addressing. CCI interfaces
49 addresses refer to the parent node addressing 53 addresses refer to the parent node addressing
@@ -74,11 +78,49 @@ specific to ARM.
74 78
75 - reg: 79 - reg:
76 Usage: required 80 Usage: required
77 Value type: <prop-encoded-array> 81 Value type: Integer cells. A register entry, expressed
82 as a pair of cells, containing base and
83 size.
78 Definition: the base address and size of the 84 Definition: the base address and size of the
79 corresponding interface programming 85 corresponding interface programming
80 registers. 86 registers.
81 87
88 - CCI PMU node
89
90 Parent node must be CCI interconnect node.
91
92 A CCI pmu node must contain the following properties:
93
94 - compatible
95 Usage: required
96 Value type: <string>
97 Definition: must be "arm,cci-400-pmu"
98
99 - reg:
100 Usage: required
101 Value type: Integer cells. A register entry, expressed
102 as a pair of cells, containing base and
103 size.
104 Definition: the base address and size of the
105 corresponding interface programming
106 registers.
107
108 - interrupts:
109 Usage: required
110 Value type: Integer cells. Array of interrupt specifier
111 entries, as defined in
112 ../interrupt-controller/interrupts.txt.
113 Definition: list of counter overflow interrupts, one per
114 counter. The interrupts must be specified
115 starting with the cycle counter overflow
116 interrupt, followed by counter0 overflow
117 interrupt, counter1 overflow interrupt,...
118 ,counterN overflow interrupt.
119
120 The CCI PMU has an interrupt signal for each
121 counter. The number of interrupts must be
122 equal to the number of counters.
123
82* CCI interconnect bus masters 124* CCI interconnect bus masters
83 125
84 Description: masters in the device tree connected to a CCI port 126 Description: masters in the device tree connected to a CCI port
@@ -144,7 +186,7 @@ Example:
144 #address-cells = <1>; 186 #address-cells = <1>;
145 #size-cells = <1>; 187 #size-cells = <1>;
146 reg = <0x0 0x2c090000 0 0x1000>; 188 reg = <0x0 0x2c090000 0 0x1000>;
147 ranges = <0x0 0x0 0x2c090000 0x6000>; 189 ranges = <0x0 0x0 0x2c090000 0x10000>;
148 190
149 cci_control0: slave-if@1000 { 191 cci_control0: slave-if@1000 {
150 compatible = "arm,cci-400-ctrl-if"; 192 compatible = "arm,cci-400-ctrl-if";
@@ -163,6 +205,16 @@ Example:
163 interface-type = "ace"; 205 interface-type = "ace";
164 reg = <0x5000 0x1000>; 206 reg = <0x5000 0x1000>;
165 }; 207 };
208
209 pmu@9000 {
210 compatible = "arm,cci-400-pmu";
211 reg = <0x9000 0x5000>;
212 interrupts = <0 101 4>,
213 <0 102 4>,
214 <0 103 4>,
215 <0 104 4>,
216 <0 105 4>;
217 };
166 }; 218 };
167 219
168This CCI node corresponds to a CCI component whose control registers sits 220This CCI node corresponds to a CCI component whose control registers sits
diff --git a/Documentation/devicetree/bindings/arm/cpus.txt b/Documentation/devicetree/bindings/arm/cpus.txt
index f32494dbfe19..91304353eea4 100644
--- a/Documentation/devicetree/bindings/arm/cpus.txt
+++ b/Documentation/devicetree/bindings/arm/cpus.txt
@@ -1,77 +1,384 @@
1* ARM CPUs binding description 1=================
2ARM CPUs bindings
3=================
2 4
3The device tree allows to describe the layout of CPUs in a system through 5The device tree allows to describe the layout of CPUs in a system through
4the "cpus" node, which in turn contains a number of subnodes (ie "cpu") 6the "cpus" node, which in turn contains a number of subnodes (ie "cpu")
5defining properties for every cpu. 7defining properties for every cpu.
6 8
7Bindings for CPU nodes follow the ePAPR standard, available from: 9Bindings for CPU nodes follow the ePAPR v1.1 standard, available from:
8 10
9http://devicetree.org 11https://www.power.org/documentation/epapr-version-1-1/
10 12
11For the ARM architecture every CPU node must contain the following properties: 13with updates for 32-bit and 64-bit ARM systems provided in this document.
12 14
13- device_type: must be "cpu" 15================================
14- reg: property matching the CPU MPIDR[23:0] register bits 16Convention used in this document
15 reg[31:24] bits must be set to 0 17================================
16- compatible: should be one of: 18
17 "arm,arm1020" 19This document follows the conventions described in the ePAPR v1.1, with
18 "arm,arm1020e" 20the addition:
19 "arm,arm1022" 21
20 "arm,arm1026" 22- square brackets define bitfields, eg reg[7:0] value of the bitfield in
21 "arm,arm720" 23 the reg property contained in bits 7 down to 0
22 "arm,arm740" 24
23 "arm,arm7tdmi" 25=====================================
24 "arm,arm920" 26cpus and cpu node bindings definition
25 "arm,arm922" 27=====================================
26 "arm,arm925" 28
27 "arm,arm926" 29The ARM architecture, in accordance with the ePAPR, requires the cpus and cpu
28 "arm,arm940" 30nodes to be present and contain the properties described below.
29 "arm,arm946" 31
30 "arm,arm9tdmi" 32- cpus node
31 "arm,cortex-a5" 33
32 "arm,cortex-a7" 34 Description: Container of cpu nodes
33 "arm,cortex-a8" 35
34 "arm,cortex-a9" 36 The node name must be "cpus".
35 "arm,cortex-a15" 37
36 "arm,arm1136" 38 A cpus node must define the following properties:
37 "arm,arm1156" 39
38 "arm,arm1176" 40 - #address-cells
39 "arm,arm11mpcore" 41 Usage: required
40 "faraday,fa526" 42 Value type: <u32>
41 "intel,sa110" 43
42 "intel,sa1100" 44 Definition depends on ARM architecture version and
43 "marvell,feroceon" 45 configuration:
44 "marvell,mohawk" 46
45 "marvell,xsc3" 47 # On uniprocessor ARM architectures previous to v7
46 "marvell,xscale" 48 value must be 1, to enable a simple enumeration
47 49 scheme for processors that do not have a HW CPU
48Example: 50 identification register.
51 # On 32-bit ARM 11 MPcore, ARM v7 or later systems
52 value must be 1, that corresponds to CPUID/MPIDR
53 registers sizes.
54 # On ARM v8 64-bit systems value should be set to 2,
55 that corresponds to the MPIDR_EL1 register size.
56 If MPIDR_EL1[63:32] value is equal to 0 on all CPUs
57 in the system, #address-cells can be set to 1, since
58 MPIDR_EL1[63:32] bits are not used for CPUs
59 identification.
60 - #size-cells
61 Usage: required
62 Value type: <u32>
63 Definition: must be set to 0
64
65- cpu node
66
67 Description: Describes a CPU in an ARM based system
68
69 PROPERTIES
70
71 - device_type
72 Usage: required
73 Value type: <string>
74 Definition: must be "cpu"
75 - reg
76 Usage and definition depend on ARM architecture version and
77 configuration:
78
79 # On uniprocessor ARM architectures previous to v7
80 this property is required and must be set to 0.
81
82 # On ARM 11 MPcore based systems this property is
83 required and matches the CPUID[11:0] register bits.
84
85 Bits [11:0] in the reg cell must be set to
86 bits [11:0] in CPU ID register.
87
88 All other bits in the reg cell must be set to 0.
89
90 # On 32-bit ARM v7 or later systems this property is
91 required and matches the CPU MPIDR[23:0] register
92 bits.
93
94 Bits [23:0] in the reg cell must be set to
95 bits [23:0] in MPIDR.
96
97 All other bits in the reg cell must be set to 0.
98
99 # On ARM v8 64-bit systems this property is required
100 and matches the MPIDR_EL1 register affinity bits.
101
102 * If cpus node's #address-cells property is set to 2
103
104 The first reg cell bits [7:0] must be set to
105 bits [39:32] of MPIDR_EL1.
106
107 The second reg cell bits [23:0] must be set to
108 bits [23:0] of MPIDR_EL1.
109
110 * If cpus node's #address-cells property is set to 1
111
112 The reg cell bits [23:0] must be set to bits [23:0]
113 of MPIDR_EL1.
114
115 All other bits in the reg cells must be set to 0.
116
117 - compatible:
118 Usage: required
119 Value type: <string>
120 Definition: should be one of:
121 "arm,arm710t"
122 "arm,arm720t"
123 "arm,arm740t"
124 "arm,arm7ej-s"
125 "arm,arm7tdmi"
126 "arm,arm7tdmi-s"
127 "arm,arm9es"
128 "arm,arm9ej-s"
129 "arm,arm920t"
130 "arm,arm922t"
131 "arm,arm925"
132 "arm,arm926e-s"
133 "arm,arm926ej-s"
134 "arm,arm940t"
135 "arm,arm946e-s"
136 "arm,arm966e-s"
137 "arm,arm968e-s"
138 "arm,arm9tdmi"
139 "arm,arm1020e"
140 "arm,arm1020t"
141 "arm,arm1022e"
142 "arm,arm1026ej-s"
143 "arm,arm1136j-s"
144 "arm,arm1136jf-s"
145 "arm,arm1156t2-s"
146 "arm,arm1156t2f-s"
147 "arm,arm1176jzf"
148 "arm,arm1176jz-s"
149 "arm,arm1176jzf-s"
150 "arm,arm11mpcore"
151 "arm,cortex-a5"
152 "arm,cortex-a7"
153 "arm,cortex-a8"
154 "arm,cortex-a9"
155 "arm,cortex-a15"
156 "arm,cortex-a53"
157 "arm,cortex-a57"
158 "arm,cortex-m0"
159 "arm,cortex-m0+"
160 "arm,cortex-m1"
161 "arm,cortex-m3"
162 "arm,cortex-m4"
163 "arm,cortex-r4"
164 "arm,cortex-r5"
165 "arm,cortex-r7"
166 "faraday,fa526"
167 "intel,sa110"
168 "intel,sa1100"
169 "marvell,feroceon"
170 "marvell,mohawk"
171 "marvell,pj4a"
172 "marvell,pj4b"
173 "marvell,sheeva-v5"
174 "qcom,krait"
175 "qcom,scorpion"
176 - enable-method
177 Value type: <stringlist>
178 Usage and definition depend on ARM architecture version.
179 # On ARM v8 64-bit this property is required and must
180 be one of:
181 "spin-table"
182 "psci"
183 # On ARM 32-bit systems this property is optional.
184
185 - cpu-release-addr
186 Usage: required for systems that have an "enable-method"
187 property value of "spin-table".
188 Value type: <prop-encoded-array>
189 Definition:
190 # On ARM v8 64-bit systems must be a two cell
191 property identifying a 64-bit zero-initialised
192 memory location.
193
194Example 1 (dual-cluster big.LITTLE system 32-bit):
49 195
50 cpus { 196 cpus {
51 #size-cells = <0>; 197 #size-cells = <0>;
52 #address-cells = <1>; 198 #address-cells = <1>;
53 199
54 CPU0: cpu@0 { 200 cpu@0 {
55 device_type = "cpu"; 201 device_type = "cpu";
56 compatible = "arm,cortex-a15"; 202 compatible = "arm,cortex-a15";
57 reg = <0x0>; 203 reg = <0x0>;
58 }; 204 };
59 205
60 CPU1: cpu@1 { 206 cpu@1 {
61 device_type = "cpu"; 207 device_type = "cpu";
62 compatible = "arm,cortex-a15"; 208 compatible = "arm,cortex-a15";
63 reg = <0x1>; 209 reg = <0x1>;
64 }; 210 };
65 211
66 CPU2: cpu@100 { 212 cpu@100 {
67 device_type = "cpu"; 213 device_type = "cpu";
68 compatible = "arm,cortex-a7"; 214 compatible = "arm,cortex-a7";
69 reg = <0x100>; 215 reg = <0x100>;
70 }; 216 };
71 217
72 CPU3: cpu@101 { 218 cpu@101 {
73 device_type = "cpu"; 219 device_type = "cpu";
74 compatible = "arm,cortex-a7"; 220 compatible = "arm,cortex-a7";
75 reg = <0x101>; 221 reg = <0x101>;
76 }; 222 };
77 }; 223 };
224
225Example 2 (Cortex-A8 uniprocessor 32-bit system):
226
227 cpus {
228 #size-cells = <0>;
229 #address-cells = <1>;
230
231 cpu@0 {
232 device_type = "cpu";
233 compatible = "arm,cortex-a8";
234 reg = <0x0>;
235 };
236 };
237
238Example 3 (ARM 926EJ-S uniprocessor 32-bit system):
239
240 cpus {
241 #size-cells = <0>;
242 #address-cells = <1>;
243
244 cpu@0 {
245 device_type = "cpu";
246 compatible = "arm,arm926ej-s";
247 reg = <0x0>;
248 };
249 };
250
251Example 4 (ARM Cortex-A57 64-bit system):
252
253cpus {
254 #size-cells = <0>;
255 #address-cells = <2>;
256
257 cpu@0 {
258 device_type = "cpu";
259 compatible = "arm,cortex-a57";
260 reg = <0x0 0x0>;
261 enable-method = "spin-table";
262 cpu-release-addr = <0 0x20000000>;
263 };
264
265 cpu@1 {
266 device_type = "cpu";
267 compatible = "arm,cortex-a57";
268 reg = <0x0 0x1>;
269 enable-method = "spin-table";
270 cpu-release-addr = <0 0x20000000>;
271 };
272
273 cpu@100 {
274 device_type = "cpu";
275 compatible = "arm,cortex-a57";
276 reg = <0x0 0x100>;
277 enable-method = "spin-table";
278 cpu-release-addr = <0 0x20000000>;
279 };
280
281 cpu@101 {
282 device_type = "cpu";
283 compatible = "arm,cortex-a57";
284 reg = <0x0 0x101>;
285 enable-method = "spin-table";
286 cpu-release-addr = <0 0x20000000>;
287 };
288
289 cpu@10000 {
290 device_type = "cpu";
291 compatible = "arm,cortex-a57";
292 reg = <0x0 0x10000>;
293 enable-method = "spin-table";
294 cpu-release-addr = <0 0x20000000>;
295 };
296
297 cpu@10001 {
298 device_type = "cpu";
299 compatible = "arm,cortex-a57";
300 reg = <0x0 0x10001>;
301 enable-method = "spin-table";
302 cpu-release-addr = <0 0x20000000>;
303 };
304
305 cpu@10100 {
306 device_type = "cpu";
307 compatible = "arm,cortex-a57";
308 reg = <0x0 0x10100>;
309 enable-method = "spin-table";
310 cpu-release-addr = <0 0x20000000>;
311 };
312
313 cpu@10101 {
314 device_type = "cpu";
315 compatible = "arm,cortex-a57";
316 reg = <0x0 0x10101>;
317 enable-method = "spin-table";
318 cpu-release-addr = <0 0x20000000>;
319 };
320
321 cpu@100000000 {
322 device_type = "cpu";
323 compatible = "arm,cortex-a57";
324 reg = <0x1 0x0>;
325 enable-method = "spin-table";
326 cpu-release-addr = <0 0x20000000>;
327 };
328
329 cpu@100000001 {
330 device_type = "cpu";
331 compatible = "arm,cortex-a57";
332 reg = <0x1 0x1>;
333 enable-method = "spin-table";
334 cpu-release-addr = <0 0x20000000>;
335 };
336
337 cpu@100000100 {
338 device_type = "cpu";
339 compatible = "arm,cortex-a57";
340 reg = <0x1 0x100>;
341 enable-method = "spin-table";
342 cpu-release-addr = <0 0x20000000>;
343 };
344
345 cpu@100000101 {
346 device_type = "cpu";
347 compatible = "arm,cortex-a57";
348 reg = <0x1 0x101>;
349 enable-method = "spin-table";
350 cpu-release-addr = <0 0x20000000>;
351 };
352
353 cpu@100010000 {
354 device_type = "cpu";
355 compatible = "arm,cortex-a57";
356 reg = <0x1 0x10000>;
357 enable-method = "spin-table";
358 cpu-release-addr = <0 0x20000000>;
359 };
360
361 cpu@100010001 {
362 device_type = "cpu";
363 compatible = "arm,cortex-a57";
364 reg = <0x1 0x10001>;
365 enable-method = "spin-table";
366 cpu-release-addr = <0 0x20000000>;
367 };
368
369 cpu@100010100 {
370 device_type = "cpu";
371 compatible = "arm,cortex-a57";
372 reg = <0x1 0x10100>;
373 enable-method = "spin-table";
374 cpu-release-addr = <0 0x20000000>;
375 };
376
377 cpu@100010101 {
378 device_type = "cpu";
379 compatible = "arm,cortex-a57";
380 reg = <0x1 0x10101>;
381 enable-method = "spin-table";
382 cpu-release-addr = <0 0x20000000>;
383 };
384};
diff --git a/Documentation/devicetree/bindings/arm/l2cc.txt b/Documentation/devicetree/bindings/arm/l2cc.txt
index 69ddf9fad2dc..c0c7626fd0ff 100644
--- a/Documentation/devicetree/bindings/arm/l2cc.txt
+++ b/Documentation/devicetree/bindings/arm/l2cc.txt
@@ -16,9 +16,11 @@ Required properties:
16 performs the same operation). 16 performs the same operation).
17 "marvell,"aurora-outer-cache: Marvell Controller designed to be 17 "marvell,"aurora-outer-cache: Marvell Controller designed to be
18 compatible with the ARM one with outer cache mode. 18 compatible with the ARM one with outer cache mode.
19 "bcm,bcm11351-a2-pl310-cache": For Broadcom bcm11351 chipset where an 19 "brcm,bcm11351-a2-pl310-cache": For Broadcom bcm11351 chipset where an
20 offset needs to be added to the address before passing down to the L2 20 offset needs to be added to the address before passing down to the L2
21 cache controller 21 cache controller
22 "bcm,bcm11351-a2-pl310-cache": DEPRECATED by
23 "brcm,bcm11351-a2-pl310-cache"
22- cache-unified : Specifies the cache is a unified cache. 24- cache-unified : Specifies the cache is a unified cache.
23- cache-level : Should be set to 2 for a level 2 cache. 25- cache-level : Should be set to 2 for a level 2 cache.
24- reg : Physical base address and size of cache controller's memory mapped 26- reg : Physical base address and size of cache controller's memory mapped
diff --git a/Documentation/devicetree/bindings/arm/omap/omap.txt b/Documentation/devicetree/bindings/arm/omap/omap.txt
index 6d498c758b45..808c1543b0f8 100644
--- a/Documentation/devicetree/bindings/arm/omap/omap.txt
+++ b/Documentation/devicetree/bindings/arm/omap/omap.txt
@@ -21,7 +21,8 @@ Required properties:
21Optional properties: 21Optional properties:
22- ti,no_idle_on_suspend: When present, it prevents the PM to idle the module 22- ti,no_idle_on_suspend: When present, it prevents the PM to idle the module
23 during suspend. 23 during suspend.
24 24- ti,no-reset-on-init: When present, the module should not be reset at init
25- ti,no-idle-on-init: When present, the module should not be idled at init
25 26
26Example: 27Example:
27 28
@@ -59,3 +60,6 @@ Boards:
59 60
60- AM43x EPOS EVM 61- AM43x EPOS EVM
61 compatible = "ti,am43x-epos-evm", "ti,am4372", "ti,am43" 62 compatible = "ti,am43x-epos-evm", "ti,am4372", "ti,am43"
63
64- DRA7 EVM: Software Developement Board for DRA7XX
65 compatible = "ti,dra7-evm", "ti,dra7"
diff --git a/Documentation/devicetree/bindings/arm/ste-u300.txt b/Documentation/devicetree/bindings/arm/ste-u300.txt
index 69b5ab0b5f4b..d11d80006a19 100644
--- a/Documentation/devicetree/bindings/arm/ste-u300.txt
+++ b/Documentation/devicetree/bindings/arm/ste-u300.txt
@@ -22,7 +22,7 @@ This contains the board-specific information.
22- compatible: must be "stericsson,s365". 22- compatible: must be "stericsson,s365".
23- vana15-supply: the regulator supplying the 1.5V to drive the 23- vana15-supply: the regulator supplying the 1.5V to drive the
24 board. 24 board.
25- syscon: a pointer to the syscon node so we can acccess the 25- syscon: a pointer to the syscon node so we can access the
26 syscon registers to set the board as self-powered. 26 syscon registers to set the board as self-powered.
27 27
28Example: 28Example:
diff --git a/Documentation/devicetree/bindings/arm/topology.txt b/Documentation/devicetree/bindings/arm/topology.txt
new file mode 100644
index 000000000000..4aa20e7a424e
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/topology.txt
@@ -0,0 +1,474 @@
1===========================================
2ARM topology binding description
3===========================================
4
5===========================================
61 - Introduction
7===========================================
8
9In an ARM system, the hierarchy of CPUs is defined through three entities that
10are used to describe the layout of physical CPUs in the system:
11
12- cluster
13- core
14- thread
15
16The cpu nodes (bindings defined in [1]) represent the devices that
17correspond to physical CPUs and are to be mapped to the hierarchy levels.
18
19The bottom hierarchy level sits at core or thread level depending on whether
20symmetric multi-threading (SMT) is supported or not.
21
22For instance in a system where CPUs support SMT, "cpu" nodes represent all
23threads existing in the system and map to the hierarchy level "thread" above.
24In systems where SMT is not supported "cpu" nodes represent all cores present
25in the system and map to the hierarchy level "core" above.
26
27ARM topology bindings allow one to associate cpu nodes with hierarchical groups
28corresponding to the system hierarchy; syntactically they are defined as device
29tree nodes.
30
31The remainder of this document provides the topology bindings for ARM, based
32on the ePAPR standard, available from:
33
34http://www.power.org/documentation/epapr-version-1-1/
35
36If not stated otherwise, whenever a reference to a cpu node phandle is made its
37value must point to a cpu node compliant with the cpu node bindings as
38documented in [1].
39A topology description containing phandles to cpu nodes that are not compliant
40with bindings standardized in [1] is therefore considered invalid.
41
42===========================================
432 - cpu-map node
44===========================================
45
46The ARM CPU topology is defined within the cpu-map node, which is a direct
47child of the cpus node and provides a container where the actual topology
48nodes are listed.
49
50- cpu-map node
51
52 Usage: Optional - On ARM SMP systems provide CPUs topology to the OS.
53 ARM uniprocessor systems do not require a topology
54 description and therefore should not define a
55 cpu-map node.
56
57 Description: The cpu-map node is just a container node where its
58 subnodes describe the CPU topology.
59
60 Node name must be "cpu-map".
61
62 The cpu-map node's parent node must be the cpus node.
63
64 The cpu-map node's child nodes can be:
65
66 - one or more cluster nodes
67
68 Any other configuration is considered invalid.
69
70The cpu-map node can only contain three types of child nodes:
71
72- cluster node
73- core node
74- thread node
75
76whose bindings are described in paragraph 3.
77
78The nodes describing the CPU topology (cluster/core/thread) can only be
79defined within the cpu-map node.
80Any other configuration is consider invalid and therefore must be ignored.
81
82===========================================
832.1 - cpu-map child nodes naming convention
84===========================================
85
86cpu-map child nodes must follow a naming convention where the node name
87must be "clusterN", "coreN", "threadN" depending on the node type (ie
88cluster/core/thread) (where N = {0, 1, ...} is the node number; nodes which
89are siblings within a single common parent node must be given a unique and
90sequential N value, starting from 0).
91cpu-map child nodes which do not share a common parent node can have the same
92name (ie same number N as other cpu-map child nodes at different device tree
93levels) since name uniqueness will be guaranteed by the device tree hierarchy.
94
95===========================================
963 - cluster/core/thread node bindings
97===========================================
98
99Bindings for cluster/cpu/thread nodes are defined as follows:
100
101- cluster node
102
103 Description: must be declared within a cpu-map node, one node
104 per cluster. A system can contain several layers of
105 clustering and cluster nodes can be contained in parent
106 cluster nodes.
107
108 The cluster node name must be "clusterN" as described in 2.1 above.
109 A cluster node can not be a leaf node.
110
111 A cluster node's child nodes must be:
112
113 - one or more cluster nodes; or
114 - one or more core nodes
115
116 Any other configuration is considered invalid.
117
118- core node
119
120 Description: must be declared in a cluster node, one node per core in
121 the cluster. If the system does not support SMT, core
122 nodes are leaf nodes, otherwise they become containers of
123 thread nodes.
124
125 The core node name must be "coreN" as described in 2.1 above.
126
127 A core node must be a leaf node if SMT is not supported.
128
129 Properties for core nodes that are leaf nodes:
130
131 - cpu
132 Usage: required
133 Value type: <phandle>
134 Definition: a phandle to the cpu node that corresponds to the
135 core node.
136
137 If a core node is not a leaf node (CPUs supporting SMT) a core node's
138 child nodes can be:
139
140 - one or more thread nodes
141
142 Any other configuration is considered invalid.
143
144- thread node
145
146 Description: must be declared in a core node, one node per thread
147 in the core if the system supports SMT. Thread nodes are
148 always leaf nodes in the device tree.
149
150 The thread node name must be "threadN" as described in 2.1 above.
151
152 A thread node must be a leaf node.
153
154 A thread node must contain the following property:
155
156 - cpu
157 Usage: required
158 Value type: <phandle>
159 Definition: a phandle to the cpu node that corresponds to
160 the thread node.
161
162===========================================
1634 - Example dts
164===========================================
165
166Example 1 (ARM 64-bit, 16-cpu system, two clusters of clusters):
167
168cpus {
169 #size-cells = <0>;
170 #address-cells = <2>;
171
172 cpu-map {
173 cluster0 {
174 cluster0 {
175 core0 {
176 thread0 {
177 cpu = <&CPU0>;
178 };
179 thread1 {
180 cpu = <&CPU1>;
181 };
182 };
183
184 core1 {
185 thread0 {
186 cpu = <&CPU2>;
187 };
188 thread1 {
189 cpu = <&CPU3>;
190 };
191 };
192 };
193
194 cluster1 {
195 core0 {
196 thread0 {
197 cpu = <&CPU4>;
198 };
199 thread1 {
200 cpu = <&CPU5>;
201 };
202 };
203
204 core1 {
205 thread0 {
206 cpu = <&CPU6>;
207 };
208 thread1 {
209 cpu = <&CPU7>;
210 };
211 };
212 };
213 };
214
215 cluster1 {
216 cluster0 {
217 core0 {
218 thread0 {
219 cpu = <&CPU8>;
220 };
221 thread1 {
222 cpu = <&CPU9>;
223 };
224 };
225 core1 {
226 thread0 {
227 cpu = <&CPU10>;
228 };
229 thread1 {
230 cpu = <&CPU11>;
231 };
232 };
233 };
234
235 cluster1 {
236 core0 {
237 thread0 {
238 cpu = <&CPU12>;
239 };
240 thread1 {
241 cpu = <&CPU13>;
242 };
243 };
244 core1 {
245 thread0 {
246 cpu = <&CPU14>;
247 };
248 thread1 {
249 cpu = <&CPU15>;
250 };
251 };
252 };
253 };
254 };
255
256 CPU0: cpu@0 {
257 device_type = "cpu";
258 compatible = "arm,cortex-a57";
259 reg = <0x0 0x0>;
260 enable-method = "spin-table";
261 cpu-release-addr = <0 0x20000000>;
262 };
263
264 CPU1: cpu@1 {
265 device_type = "cpu";
266 compatible = "arm,cortex-a57";
267 reg = <0x0 0x1>;
268 enable-method = "spin-table";
269 cpu-release-addr = <0 0x20000000>;
270 };
271
272 CPU2: cpu@100 {
273 device_type = "cpu";
274 compatible = "arm,cortex-a57";
275 reg = <0x0 0x100>;
276 enable-method = "spin-table";
277 cpu-release-addr = <0 0x20000000>;
278 };
279
280 CPU3: cpu@101 {
281 device_type = "cpu";
282 compatible = "arm,cortex-a57";
283 reg = <0x0 0x101>;
284 enable-method = "spin-table";
285 cpu-release-addr = <0 0x20000000>;
286 };
287
288 CPU4: cpu@10000 {
289 device_type = "cpu";
290 compatible = "arm,cortex-a57";
291 reg = <0x0 0x10000>;
292 enable-method = "spin-table";
293 cpu-release-addr = <0 0x20000000>;
294 };
295
296 CPU5: cpu@10001 {
297 device_type = "cpu";
298 compatible = "arm,cortex-a57";
299 reg = <0x0 0x10001>;
300 enable-method = "spin-table";
301 cpu-release-addr = <0 0x20000000>;
302 };
303
304 CPU6: cpu@10100 {
305 device_type = "cpu";
306 compatible = "arm,cortex-a57";
307 reg = <0x0 0x10100>;
308 enable-method = "spin-table";
309 cpu-release-addr = <0 0x20000000>;
310 };
311
312 CPU7: cpu@10101 {
313 device_type = "cpu";
314 compatible = "arm,cortex-a57";
315 reg = <0x0 0x10101>;
316 enable-method = "spin-table";
317 cpu-release-addr = <0 0x20000000>;
318 };
319
320 CPU8: cpu@100000000 {
321 device_type = "cpu";
322 compatible = "arm,cortex-a57";
323 reg = <0x1 0x0>;
324 enable-method = "spin-table";
325 cpu-release-addr = <0 0x20000000>;
326 };
327
328 CPU9: cpu@100000001 {
329 device_type = "cpu";
330 compatible = "arm,cortex-a57";
331 reg = <0x1 0x1>;
332 enable-method = "spin-table";
333 cpu-release-addr = <0 0x20000000>;
334 };
335
336 CPU10: cpu@100000100 {
337 device_type = "cpu";
338 compatible = "arm,cortex-a57";
339 reg = <0x1 0x100>;
340 enable-method = "spin-table";
341 cpu-release-addr = <0 0x20000000>;
342 };
343
344 CPU11: cpu@100000101 {
345 device_type = "cpu";
346 compatible = "arm,cortex-a57";
347 reg = <0x1 0x101>;
348 enable-method = "spin-table";
349 cpu-release-addr = <0 0x20000000>;
350 };
351
352 CPU12: cpu@100010000 {
353 device_type = "cpu";
354 compatible = "arm,cortex-a57";
355 reg = <0x1 0x10000>;
356 enable-method = "spin-table";
357 cpu-release-addr = <0 0x20000000>;
358 };
359
360 CPU13: cpu@100010001 {
361 device_type = "cpu";
362 compatible = "arm,cortex-a57";
363 reg = <0x1 0x10001>;
364 enable-method = "spin-table";
365 cpu-release-addr = <0 0x20000000>;
366 };
367
368 CPU14: cpu@100010100 {
369 device_type = "cpu";
370 compatible = "arm,cortex-a57";
371 reg = <0x1 0x10100>;
372 enable-method = "spin-table";
373 cpu-release-addr = <0 0x20000000>;
374 };
375
376 CPU15: cpu@100010101 {
377 device_type = "cpu";
378 compatible = "arm,cortex-a57";
379 reg = <0x1 0x10101>;
380 enable-method = "spin-table";
381 cpu-release-addr = <0 0x20000000>;
382 };
383};
384
385Example 2 (ARM 32-bit, dual-cluster, 8-cpu system, no SMT):
386
387cpus {
388 #size-cells = <0>;
389 #address-cells = <1>;
390
391 cpu-map {
392 cluster0 {
393 core0 {
394 cpu = <&CPU0>;
395 };
396 core1 {
397 cpu = <&CPU1>;
398 };
399 core2 {
400 cpu = <&CPU2>;
401 };
402 core3 {
403 cpu = <&CPU3>;
404 };
405 };
406
407 cluster1 {
408 core0 {
409 cpu = <&CPU4>;
410 };
411 core1 {
412 cpu = <&CPU5>;
413 };
414 core2 {
415 cpu = <&CPU6>;
416 };
417 core3 {
418 cpu = <&CPU7>;
419 };
420 };
421 };
422
423 CPU0: cpu@0 {
424 device_type = "cpu";
425 compatible = "arm,cortex-a15";
426 reg = <0x0>;
427 };
428
429 CPU1: cpu@1 {
430 device_type = "cpu";
431 compatible = "arm,cortex-a15";
432 reg = <0x1>;
433 };
434
435 CPU2: cpu@2 {
436 device_type = "cpu";
437 compatible = "arm,cortex-a15";
438 reg = <0x2>;
439 };
440
441 CPU3: cpu@3 {
442 device_type = "cpu";
443 compatible = "arm,cortex-a15";
444 reg = <0x3>;
445 };
446
447 CPU4: cpu@100 {
448 device_type = "cpu";
449 compatible = "arm,cortex-a7";
450 reg = <0x100>;
451 };
452
453 CPU5: cpu@101 {
454 device_type = "cpu";
455 compatible = "arm,cortex-a7";
456 reg = <0x101>;
457 };
458
459 CPU6: cpu@102 {
460 device_type = "cpu";
461 compatible = "arm,cortex-a7";
462 reg = <0x102>;
463 };
464
465 CPU7: cpu@103 {
466 device_type = "cpu";
467 compatible = "arm,cortex-a7";
468 reg = <0x103>;
469 };
470};
471
472===============================================================================
473[1] ARM Linux kernel documentation
474 Documentation/devicetree/bindings/arm/cpus.txt
diff --git a/Documentation/devicetree/bindings/arm/vexpress-scc.txt b/Documentation/devicetree/bindings/arm/vexpress-scc.txt
new file mode 100644
index 000000000000..ae5043e42e5d
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/vexpress-scc.txt
@@ -0,0 +1,33 @@
1ARM Versatile Express Serial Configuration Controller
2-----------------------------------------------------
3
4Test chips for ARM Versatile Express platform implement SCC (Serial
5Configuration Controller) interface, used to set initial conditions
6for the test chip.
7
8In some cases its registers are also mapped in normal address space
9and can be used to obtain runtime information about the chip internals
10(like silicon temperature sensors) and as interface to other subsystems
11like platform configuration control and power management.
12
13Required properties:
14
15- compatible value: "arm,vexpress-scc,<model>", "arm,vexpress-scc";
16 where <model> is the full tile model name (as used
17 in the tile's Technical Reference Manual),
18 eg. for Coretile Express A15x2 A7x3 (V2P-CA15_A7):
19 compatible = "arm,vexpress-scc,v2p-ca15_a7", "arm,vexpress-scc";
20
21Optional properties:
22
23- reg: when the SCC is memory mapped, physical address and size of the
24 registers window
25- interrupts: when the SCC can generate a system-level interrupt
26
27Example:
28
29 scc@7fff0000 {
30 compatible = "arm,vexpress-scc,v2p-ca15_a7", "arm,vexpress-scc";
31 reg = <0 0x7fff0000 0 0x1000>;
32 interrupts = <0 95 4>;
33 };
diff --git a/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt b/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt
index 9cf3f25544c7..5580e9c4bd85 100644
--- a/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt
+++ b/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt
@@ -32,8 +32,8 @@ numbers - see motherboard's TRM for more details.
32The node describing a config device must refer to the sysreg node via 32The node describing a config device must refer to the sysreg node via
33"arm,vexpress,config-bridge" phandle (can be also defined in the node's 33"arm,vexpress,config-bridge" phandle (can be also defined in the node's
34parent) and relies on the board topology properties - see main vexpress 34parent) and relies on the board topology properties - see main vexpress
35node documentation for more details. It must must also define the 35node documentation for more details. It must also define the following
36following property: 36property:
37- arm,vexpress-sysreg,func : must contain two cells: 37- arm,vexpress-sysreg,func : must contain two cells:
38 - first cell defines function number (eg. 1 for clock generator, 38 - first cell defines function number (eg. 1 for clock generator,
39 2 for voltage regulators etc.) 39 2 for voltage regulators etc.)
diff --git a/Documentation/devicetree/bindings/arm/vic.txt b/Documentation/devicetree/bindings/arm/vic.txt
index 266716b23437..dd527216c5fb 100644
--- a/Documentation/devicetree/bindings/arm/vic.txt
+++ b/Documentation/devicetree/bindings/arm/vic.txt
@@ -18,6 +18,15 @@ Required properties:
18Optional properties: 18Optional properties:
19 19
20- interrupts : Interrupt source for parent controllers if the VIC is nested. 20- interrupts : Interrupt source for parent controllers if the VIC is nested.
21- valid-mask : A one cell big bit mask of valid interrupt sources. Each bit
22 represents single interrupt source, starting from source 0 at LSb and ending
23 at source 31 at MSb. A bit that is set means that the source is wired and
24 clear means otherwise. If unspecified, defaults to all valid.
25- valid-wakeup-mask : A one cell big bit mask of interrupt sources that can be
26 configured as wake up source for the system. Order of bits is the same as for
27 valid-mask property. A set bit means that this interrupt source can be
28 configured as a wake up source for the system. If unspecied, defaults to all
29 interrupt sources configurable as wake up sources.
21 30
22Example: 31Example:
23 32
@@ -26,4 +35,7 @@ Example:
26 interrupt-controller; 35 interrupt-controller;
27 #interrupt-cells = <1>; 36 #interrupt-cells = <1>;
28 reg = <0x60000 0x1000>; 37 reg = <0x60000 0x1000>;
38
39 valid-mask = <0xffffff7f>;
40 valid-wakeup-mask = <0x0000ff7f>;
29 }; 41 };
diff --git a/Documentation/devicetree/bindings/ata/ahci-platform.txt b/Documentation/devicetree/bindings/ata/ahci-platform.txt
index 3ec0c5c4f0e9..89de1564950c 100644
--- a/Documentation/devicetree/bindings/ata/ahci-platform.txt
+++ b/Documentation/devicetree/bindings/ata/ahci-platform.txt
@@ -4,27 +4,17 @@ SATA nodes are defined to describe on-chip Serial ATA controllers.
4Each SATA controller should have its own node. 4Each SATA controller should have its own node.
5 5
6Required properties: 6Required properties:
7- compatible : compatible list, contains "calxeda,hb-ahci" or "snps,spear-ahci" 7- compatible : compatible list, contains "snps,spear-ahci"
8- interrupts : <interrupt mapping for SATA IRQ> 8- interrupts : <interrupt mapping for SATA IRQ>
9- reg : <registers mapping> 9- reg : <registers mapping>
10 10
11Optional properties: 11Optional properties:
12- calxeda,port-phys: phandle-combophy and lane assignment, which maps each
13 SATA port to a combophy and a lane within that
14 combophy
15- calxeda,sgpio-gpio: phandle-gpio bank, bit offset, and default on or off,
16 which indicates that the driver supports SGPIO
17 indicator lights using the indicated GPIOs
18- calxeda,led-order : a u32 array that map port numbers to offsets within the
19 SGPIO bitstream.
20- dma-coherent : Present if dma operations are coherent 12- dma-coherent : Present if dma operations are coherent
21 13
22Example: 14Example:
23 sata@ffe08000 { 15 sata@ffe08000 {
24 compatible = "calxeda,hb-ahci"; 16 compatible = "snps,spear-ahci";
25 reg = <0xffe08000 0x1000>; 17 reg = <0xffe08000 0x1000>;
26 interrupts = <115>; 18 interrupts = <115>;
27 calxeda,port-phys = <&combophy5 0 &combophy0 0 &combophy0 1
28 &combophy0 2 &combophy0 3>;
29 19
30 }; 20 };
diff --git a/Documentation/devicetree/bindings/ata/sata_highbank.txt b/Documentation/devicetree/bindings/ata/sata_highbank.txt
new file mode 100644
index 000000000000..aa83407cb7a4
--- /dev/null
+++ b/Documentation/devicetree/bindings/ata/sata_highbank.txt
@@ -0,0 +1,44 @@
1* Calxeda AHCI SATA Controller
2
3SATA nodes are defined to describe on-chip Serial ATA controllers.
4The Calxeda SATA controller mostly conforms to the AHCI interface
5with some special extensions to add functionality.
6Each SATA controller should have its own node.
7
8Required properties:
9- compatible : compatible list, contains "calxeda,hb-ahci"
10- interrupts : <interrupt mapping for SATA IRQ>
11- reg : <registers mapping>
12
13Optional properties:
14- dma-coherent : Present if dma operations are coherent
15- calxeda,port-phys : phandle-combophy and lane assignment, which maps each
16 SATA port to a combophy and a lane within that
17 combophy
18- calxeda,sgpio-gpio: phandle-gpio bank, bit offset, and default on or off,
19 which indicates that the driver supports SGPIO
20 indicator lights using the indicated GPIOs
21- calxeda,led-order : a u32 array that map port numbers to offsets within the
22 SGPIO bitstream.
23- calxeda,tx-atten : a u32 array that contains TX attenuation override
24 codes, one per port. The upper 3 bytes are always
25 0 and thus ignored.
26- calxeda,pre-clocks : a u32 that indicates the number of additional clock
27 cycles to transmit before sending an SGPIO pattern
28- calxeda,post-clocks: a u32 that indicates the number of additional clock
29 cycles to transmit after sending an SGPIO pattern
30
31Example:
32 sata@ffe08000 {
33 compatible = "calxeda,hb-ahci";
34 reg = <0xffe08000 0x1000>;
35 interrupts = <115>;
36 dma-coherent;
37 calxeda,port-phys = <&combophy5 0 &combophy0 0 &combophy0 1
38 &combophy0 2 &combophy0 3>;
39 calxeda,sgpio-gpio =<&gpioh 5 1 &gpioh 6 1 &gpioh 7 1>;
40 calxeda,led-order = <4 0 1 2 3>;
41 calxeda,tx-atten = <0xff 22 0xff 0xff 23>;
42 calxeda,pre-clocks = <10>;
43 calxeda,post-clocks = <0>;
44 };
diff --git a/Documentation/devicetree/bindings/bus/imx-weim.txt b/Documentation/devicetree/bindings/bus/imx-weim.txt
index cedc2a9c4785..0fd76c405208 100644
--- a/Documentation/devicetree/bindings/bus/imx-weim.txt
+++ b/Documentation/devicetree/bindings/bus/imx-weim.txt
@@ -8,7 +8,7 @@ The actual devices are instantiated from the child nodes of a WEIM node.
8 8
9Required properties: 9Required properties:
10 10
11 - compatible: Should be set to "fsl,imx6q-weim" 11 - compatible: Should be set to "fsl,<soc>-weim"
12 - reg: A resource specifier for the register space 12 - reg: A resource specifier for the register space
13 (see the example below) 13 (see the example below)
14 - clocks: the clock, see the example below. 14 - clocks: the clock, see the example below.
@@ -21,11 +21,18 @@ Required properties:
21 21
22Timing property for child nodes. It is mandatory, not optional. 22Timing property for child nodes. It is mandatory, not optional.
23 23
24 - fsl,weim-cs-timing: The timing array, contains 6 timing values for the 24 - fsl,weim-cs-timing: The timing array, contains timing values for the
25 child node. We can get the CS index from the child 25 child node. We can get the CS index from the child
26 node's "reg" property. This property contains the values 26 node's "reg" property. The number of registers depends
27 for the registers EIM_CSnGCR1, EIM_CSnGCR2, EIM_CSnRCR1, 27 on the selected chip.
28 EIM_CSnRCR2, EIM_CSnWCR1, EIM_CSnWCR2 in this order. 28 For i.MX1, i.MX21 ("fsl,imx1-weim") there are two
29 registers: CSxU, CSxL.
30 For i.MX25, i.MX27, i.MX31 and i.MX35 ("fsl,imx27-weim")
31 there are three registers: CSCRxU, CSCRxL, CSCRxA.
32 For i.MX50, i.MX53 ("fsl,imx50-weim"),
33 i.MX51 ("fsl,imx51-weim") and i.MX6Q ("fsl,imx6q-weim")
34 there are six registers: CSxGCR1, CSxGCR2, CSxRCR1,
35 CSxRCR2, CSxWCR1, CSxWCR2.
29 36
30Example for an imx6q-sabreauto board, the NOR flash connected to the WEIM: 37Example for an imx6q-sabreauto board, the NOR flash connected to the WEIM:
31 38
diff --git a/Documentation/devicetree/bindings/bus/mvebu-mbus.txt b/Documentation/devicetree/bindings/bus/mvebu-mbus.txt
new file mode 100644
index 000000000000..7586fb68c072
--- /dev/null
+++ b/Documentation/devicetree/bindings/bus/mvebu-mbus.txt
@@ -0,0 +1,276 @@
1
2* Marvell MBus
3
4Required properties:
5
6- compatible: Should be set to one of the following:
7 marvell,armada370-mbus
8 marvell,armadaxp-mbus
9 marvell,armada370-mbus
10 marvell,armadaxp-mbus
11 marvell,kirkwood-mbus
12 marvell,dove-mbus
13 marvell,orion5x-88f5281-mbus
14 marvell,orion5x-88f5182-mbus
15 marvell,orion5x-88f5181-mbus
16 marvell,orion5x-88f6183-mbus
17 marvell,mv78xx0-mbus
18
19- address-cells: Must be '2'. The first cell for the MBus ID encoding,
20 the second cell for the address offset within the window.
21
22- size-cells: Must be '1'.
23
24- ranges: Must be set up to provide a proper translation for each child.
25 See the examples below.
26
27- controller: Contains a single phandle referring to the MBus controller
28 node. This allows to specify the node that contains the
29 registers that control the MBus, which is typically contained
30 within the internal register window (see below).
31
32Optional properties:
33
34- pcie-mem-aperture: This optional property contains the aperture for
35 the memory region of the PCIe driver.
36 If it's defined, it must encode the base address and
37 size for the address decoding windows allocated for
38 the PCIe memory region.
39
40- pcie-io-aperture: Just as explained for the above property, this
41 optional property contains the aperture for the
42 I/O region of the PCIe driver.
43
44* Marvell MBus controller
45
46Required properties:
47
48- compatible: Should be set to "marvell,mbus-controller".
49
50- reg: Device's register space.
51 Two entries are expected (see the examples below):
52 the first one controls the devices decoding window and
53 the second one controls the SDRAM decoding window.
54
55Example:
56
57 soc {
58 compatible = "marvell,armada370-mbus", "simple-bus";
59 #address-cells = <2>;
60 #size-cells = <1>;
61 controller = <&mbusc>;
62 pcie-mem-aperture = <0xe0000000 0x8000000>;
63 pcie-io-aperture = <0xe8000000 0x100000>;
64
65 internal-regs {
66 compatible = "simple-bus";
67
68 mbusc: mbus-controller@20000 {
69 compatible = "marvell,mbus-controller";
70 reg = <0x20000 0x100>, <0x20180 0x20>;
71 };
72
73 /* more children ...*/
74 };
75 };
76
77** MBus address decoding window specification
78
79The MBus children address space is comprised of two cells: the first one for
80the window ID and the second one for the offset within the window.
81In order to allow to describe valid and non-valid window entries, the
82following encoding is used:
83
84 0xSIAA0000 0x00oooooo
85
86Where:
87
88 S = 0x0 for a MBus valid window
89 S = 0xf for a non-valid window (see below)
90
91If S = 0x0, then:
92
93 I = 4-bit window target ID
94 AA = windpw attribute
95
96If S = 0xf, then:
97
98 I = don't care
99 AA = 1 for internal register
100
101Following the above encoding, for each ranges entry for a MBus valid window
102(S = 0x0), an address decoding window is allocated. On the other side,
103entries for translation that do not correspond to valid windows (S = 0xf)
104are skipped.
105
106 soc {
107 compatible = "marvell,armada370-mbus", "simple-bus";
108 #address-cells = <2>;
109 #size-cells = <1>;
110 controller = <&mbusc>;
111
112 ranges = <0xf0010000 0 0 0xd0000000 0x100000
113 0x01e00000 0 0 0xfff00000 0x100000>;
114
115 bootrom {
116 compatible = "marvell,bootrom";
117 reg = <0x01e00000 0 0x100000>;
118 };
119
120 /* other children */
121 ...
122
123 internal-regs {
124 compatible = "simple-bus";
125 ranges = <0 0xf0010000 0 0x100000>;
126
127 mbusc: mbus-controller@20000 {
128 compatible = "marvell,mbus-controller";
129 reg = <0x20000 0x100>, <0x20180 0x20>;
130 };
131
132 /* more children ...*/
133 };
134 };
135
136In the shown example, the translation entry in the 'ranges' property is what
137makes the MBus driver create a static decoding window for the corresponding
138given child device. Note that the binding does not require child nodes to be
139present. Of course, child nodes are needed to probe the devices.
140
141Since each window is identified by its target ID and attribute ID there's
142a special macro that can be use to simplify the translation entries:
143
144#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16))
145
146Using this macro, the above example would be:
147
148 soc {
149 compatible = "marvell,armada370-mbus", "simple-bus";
150 #address-cells = <2>;
151 #size-cells = <1>;
152 controller = <&mbusc>;
153
154 ranges = < MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000
155 MBUS_ID(0x01, 0xe0) 0 0 0xfff00000 0x100000>;
156
157 bootrom {
158 compatible = "marvell,bootrom";
159 reg = <MBUS_ID(0x01, 0xe0) 0 0x100000>;
160 };
161
162 /* other children */
163 ...
164
165 internal-regs {
166 compatible = "simple-bus";
167 #address-cells = <1>;
168 #size-cells = <1>;
169 ranges = <0 MBUS_ID(0xf0, 0x01) 0 0x100000>;
170
171 mbusc: mbus-controller@20000 {
172 compatible = "marvell,mbus-controller";
173 reg = <0x20000 0x100>, <0x20180 0x20>;
174 };
175
176 /* other children */
177 ...
178 };
179 };
180
181
182** About the window base address
183
184Remember the MBus controller allows a great deal of flexibility for choosing
185the decoding window base address. When planning the device tree layout it's
186possible to choose any address as the base address, provided of course there's
187a region large enough available, and with the required alignment.
188
189Yet in other words: there's nothing preventing us from setting a base address
190of 0xf0000000, or 0xd0000000 for the NOR device shown above, if such region is
191unused.
192
193** Window allocation policy
194
195The mbus-node ranges property defines a set of mbus windows that are expected
196to be set by the operating system and that are guaranteed to be free of overlaps
197with one another or with the system memory ranges.
198
199Each entry in the property refers to exactly one window. If the operating system
200choses to use a different set of mbus windows, it must ensure that any address
201translations performed from downstream devices are adapted accordingly.
202
203The operating system may insert additional mbus windows that do not conflict
204with the ones listed in the ranges, e.g. for mapping PCIe devices.
205As a special case, the internal register window must be set up by the boot
206loader at the address listed in the ranges property, since access to that region
207is needed to set up the other windows.
208
209** Example
210
211See the example below, where a more complete device tree is shown:
212
213 soc {
214 compatible = "marvell,armadaxp-mbus", "simple-bus";
215 controller = <&mbusc>;
216
217 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000 /* internal-regs */
218 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
219 MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x8000000>;
220
221 bootrom {
222 compatible = "marvell,bootrom";
223 reg = <MBUS_ID(0x01, 0x1d) 0 0x100000>;
224 };
225
226 devbus-bootcs {
227 status = "okay";
228 ranges = <0 MBUS_ID(0x01, 0x2f) 0 0x8000000>;
229
230 /* NOR */
231 nor {
232 compatible = "cfi-flash";
233 reg = <0 0x8000000>;
234 bank-width = <2>;
235 };
236 };
237
238 pcie-controller {
239 compatible = "marvell,armada-xp-pcie";
240 status = "okay";
241 device_type = "pci";
242
243 #address-cells = <3>;
244 #size-cells = <2>;
245
246 ranges =
247 <0x82000000 0 0x40000 MBUS_ID(0xf0, 0x01) 0x40000 0 0x00002000 /* Port 0.0 registers */
248 0x82000000 0 0x42000 MBUS_ID(0xf0, 0x01) 0x42000 0 0x00002000 /* Port 2.0 registers */
249 0x82000000 0 0x44000 MBUS_ID(0xf0, 0x01) 0x44000 0 0x00002000 /* Port 0.1 registers */
250 0x82000000 0 0x48000 MBUS_ID(0xf0, 0x01) 0x48000 0 0x00002000 /* Port 0.2 registers */
251 0x82000000 0 0x4c000 MBUS_ID(0xf0, 0x01) 0x4c000 0 0x00002000 /* Port 0.3 registers */
252 0x82000800 0 0xe0000000 MBUS_ID(0x04, 0xe8) 0xe0000000 0 0x08000000 /* Port 0.0 MEM */
253 0x81000800 0 0 MBUS_ID(0x04, 0xe0) 0xe8000000 0 0x00100000 /* Port 0.0 IO */>;
254
255
256 pcie@1,0 {
257 /* Port 0, Lane 0 */
258 status = "okay";
259 };
260 };
261
262 internal-regs {
263 compatible = "simple-bus";
264 #address-cells = <1>;
265 #size-cells = <1>;
266 ranges = <0 MBUS_ID(0xf0, 0x01) 0 0x100000>;
267
268 mbusc: mbus-controller@20000 {
269 reg = <0x20000 0x100>, <0x20180 0x20>;
270 };
271
272 interrupt-controller@20000 {
273 reg = <0x20a00 0x2d0>, <0x21070 0x58>;
274 };
275 };
276 };
diff --git a/Documentation/devicetree/bindings/c6x/dscr.txt b/Documentation/devicetree/bindings/c6x/dscr.txt
index d847758f2b20..b0e97144cfb1 100644
--- a/Documentation/devicetree/bindings/c6x/dscr.txt
+++ b/Documentation/devicetree/bindings/c6x/dscr.txt
@@ -5,7 +5,7 @@ TI C6X SoCs contain a region of miscellaneous registers which provide various
5function for SoC control or status. Details vary considerably among from SoC 5function for SoC control or status. Details vary considerably among from SoC
6to SoC with no two being alike. 6to SoC with no two being alike.
7 7
8In general, the Device State Configuraion Registers (DSCR) will provide one or 8In general, the Device State Configuration Registers (DSCR) will provide one or
9more configuration registers often protected by a lock register where one or 9more configuration registers often protected by a lock register where one or
10more key values must be written to a lock register in order to unlock the 10more key values must be written to a lock register in order to unlock the
11configuration register for writes. These configuration register may be used to 11configuration register for writes. These configuration register may be used to
diff --git a/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt b/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt
index a1201802f90d..75e2e1999f87 100644
--- a/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt
+++ b/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt
@@ -2,7 +2,7 @@
2 2
3The Samsung Audio Subsystem clock controller generates and supplies clocks 3The Samsung Audio Subsystem clock controller generates and supplies clocks
4to Audio Subsystem block available in the S5PV210 and Exynos SoCs. The clock 4to Audio Subsystem block available in the S5PV210 and Exynos SoCs. The clock
5binding described here is applicable to all SoC's in Exynos family. 5binding described here is applicable to all SoCs in Exynos family.
6 6
7Required Properties: 7Required Properties:
8 8
diff --git a/Documentation/devicetree/bindings/clock/efm32-clock.txt b/Documentation/devicetree/bindings/clock/efm32-clock.txt
new file mode 100644
index 000000000000..263d293f6a10
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/efm32-clock.txt
@@ -0,0 +1,11 @@
1* Clock bindings for Energy Micro efm32 Giant Gecko's Clock Management Unit
2
3Required properties:
4- compatible: Should be "efm32gg,cmu"
5- reg: Base address and length of the register set
6- interrupts: Interrupt used by the CMU
7- #clock-cells: Should be <1>
8
9The clock consumer should specify the desired clock by having the clock ID in
10its "clocks" phandle cell. The header efm32-clk.h contains a list of available
11IDs.
diff --git a/Documentation/devicetree/bindings/clock/exynos4-clock.txt b/Documentation/devicetree/bindings/clock/exynos4-clock.txt
index 14d5c2af26f4..c6bf8a6c8f52 100644
--- a/Documentation/devicetree/bindings/clock/exynos4-clock.txt
+++ b/Documentation/devicetree/bindings/clock/exynos4-clock.txt
@@ -236,6 +236,7 @@ Exynos4 SoC and this is specified where applicable.
236 spi0_isp_sclk 380 Exynos4x12 236 spi0_isp_sclk 380 Exynos4x12
237 spi1_isp_sclk 381 Exynos4x12 237 spi1_isp_sclk 381 Exynos4x12
238 uart_isp_sclk 382 Exynos4x12 238 uart_isp_sclk 382 Exynos4x12
239 tmu_apbif 383
239 240
240 [Mux Clocks] 241 [Mux Clocks]
241 242
diff --git a/Documentation/devicetree/bindings/clock/exynos5250-clock.txt b/Documentation/devicetree/bindings/clock/exynos5250-clock.txt
index 781a6276adf7..24765c146e31 100644
--- a/Documentation/devicetree/bindings/clock/exynos5250-clock.txt
+++ b/Documentation/devicetree/bindings/clock/exynos5250-clock.txt
@@ -59,6 +59,9 @@ clock which they consume.
59 sclk_spi0 154 59 sclk_spi0 154
60 sclk_spi1 155 60 sclk_spi1 155
61 sclk_spi2 156 61 sclk_spi2 156
62 div_i2s1 157
63 div_i2s2 158
64 sclk_hdmiphy 159
62 65
63 66
64 [Peripheral Clock Gates] 67 [Peripheral Clock Gates]
@@ -154,7 +157,16 @@ clock which they consume.
154 dsim0 341 157 dsim0 341
155 dp 342 158 dp 342
156 mixer 343 159 mixer 343
157 hdmi 345 160 hdmi 344
161 g2d 345
162
163
164 [Clock Muxes]
165
166 Clock ID
167 ----------------------------
168 mout_hdmi 1024
169
158 170
159Example 1: An example of a clock controller node is listed below. 171Example 1: An example of a clock controller node is listed below.
160 172
diff --git a/Documentation/devicetree/bindings/clock/exynos5420-clock.txt b/Documentation/devicetree/bindings/clock/exynos5420-clock.txt
index 9bcc4b1bff51..32aa34ecad36 100644
--- a/Documentation/devicetree/bindings/clock/exynos5420-clock.txt
+++ b/Documentation/devicetree/bindings/clock/exynos5420-clock.txt
@@ -59,6 +59,7 @@ clock which they consume.
59 sclk_pwm 155 59 sclk_pwm 155
60 sclk_gscl_wa 156 60 sclk_gscl_wa 156
61 sclk_gscl_wb 157 61 sclk_gscl_wb 157
62 sclk_hdmiphy 158
62 63
63 [Peripheral Clock Gates] 64 [Peripheral Clock Gates]
64 65
@@ -179,6 +180,17 @@ clock which they consume.
179 fimc_lite3 495 180 fimc_lite3 495
180 aclk_g3d 500 181 aclk_g3d 500
181 g3d 501 182 g3d 501
183 smmu_mixer 502
184
185 Mux ID
186 ----------------------------
187
188 mout_hdmi 640
189
190 Divider ID
191 ----------------------------
192
193 dout_pixel 768
182 194
183Example 1: An example of a clock controller node is listed below. 195Example 1: An example of a clock controller node is listed below.
184 196
diff --git a/Documentation/devicetree/bindings/clock/imx5-clock.txt b/Documentation/devicetree/bindings/clock/imx5-clock.txt
index f46f5625d8ad..4c029a8739d3 100644
--- a/Documentation/devicetree/bindings/clock/imx5-clock.txt
+++ b/Documentation/devicetree/bindings/clock/imx5-clock.txt
@@ -197,6 +197,7 @@ clocks and IDs.
197 spdif0_gate 183 197 spdif0_gate 183
198 spdif1_gate 184 198 spdif1_gate 184
199 spdif_ipg_gate 185 199 spdif_ipg_gate 185
200 ocram 186
200 201
201Examples (for mx53): 202Examples (for mx53):
202 203
diff --git a/Documentation/devicetree/bindings/clock/imx6q-clock.txt b/Documentation/devicetree/bindings/clock/imx6q-clock.txt
index a0e104f0527e..6aab72bf67ea 100644
--- a/Documentation/devicetree/bindings/clock/imx6q-clock.txt
+++ b/Documentation/devicetree/bindings/clock/imx6q-clock.txt
@@ -209,6 +209,17 @@ clocks and IDs.
209 pll5_post_div 194 209 pll5_post_div 194
210 pll5_video_div 195 210 pll5_video_div 195
211 eim_slow 196 211 eim_slow 196
212 spdif 197
213 cko2_sel 198
214 cko2_podf 199
215 cko2 200
216 cko 201
217 vdoa 202
218 pll4_audio_div 203
219 lvds1_sel 204
220 lvds2_sel 205
221 lvds1_gate 206
222 lvds2_gate 207
212 223
213Examples: 224Examples:
214 225
diff --git a/Documentation/devicetree/bindings/clock/keystone-gate.txt b/Documentation/devicetree/bindings/clock/keystone-gate.txt
new file mode 100644
index 000000000000..c5aa187026e3
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/keystone-gate.txt
@@ -0,0 +1,29 @@
1Status: Unstable - ABI compatibility may be broken in the future
2
3Binding for Keystone gate control driver which uses PSC controller IP.
4
5This binding uses the common clock binding[1].
6
7[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
8
9Required properties:
10- compatible : shall be "ti,keystone,psc-clock".
11- #clock-cells : from common clock binding; shall be set to 0.
12- clocks : parent clock phandle
13- reg : psc control and domain address address space
14- reg-names : psc control and domain registers
15- domain-id : psc domain id needed to check the transition state register
16
17Optional properties:
18- clock-output-names : From common clock binding to override the
19 default output clock name
20Example:
21 clkusb: clkusb {
22 #clock-cells = <0>;
23 compatible = "ti,keystone,psc-clock";
24 clocks = <&chipclk16>;
25 clock-output-names = "usb";
26 reg = <0x02350008 0xb00>, <0x02350000 0x400>;
27 reg-names = "control", "domain";
28 domain-id = <0>;
29 };
diff --git a/Documentation/devicetree/bindings/clock/keystone-pll.txt b/Documentation/devicetree/bindings/clock/keystone-pll.txt
new file mode 100644
index 000000000000..12bd72605a31
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/keystone-pll.txt
@@ -0,0 +1,84 @@
1Status: Unstable - ABI compatibility may be broken in the future
2
3Binding for keystone PLLs. The main PLL IP typically has a multiplier,
4a divider and a post divider. The additional PLL IPs like ARMPLL, DDRPLL
5and PAPLL are controlled by the memory mapped register where as the Main
6PLL is controlled by a PLL controller registers along with memory mapped
7registers.
8
9This binding uses the common clock binding[1].
10
11[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
12
13Required properties:
14- #clock-cells : from common clock binding; shall be set to 0.
15- compatible : shall be "ti,keystone,main-pll-clock" or "ti,keystone,pll-clock"
16- clocks : parent clock phandle
17- reg - pll control0 and pll multipler registers
18- reg-names : control and multiplier. The multiplier is applicable only for
19 main pll clock
20- fixed-postdiv : fixed post divider value
21
22Example:
23 mainpllclk: mainpllclk@2310110 {
24 #clock-cells = <0>;
25 compatible = "ti,keystone,main-pll-clock";
26 clocks = <&refclkmain>;
27 reg = <0x02620350 4>, <0x02310110 4>;
28 reg-names = "control", "multiplier";
29 fixed-postdiv = <2>;
30 };
31
32 papllclk: papllclk@2620358 {
33 #clock-cells = <0>;
34 compatible = "ti,keystone,pll-clock";
35 clocks = <&refclkmain>;
36 clock-output-names = "pa-pll-clk";
37 reg = <0x02620358 4>;
38 reg-names = "control";
39 fixed-postdiv = <6>;
40 };
41
42Required properties:
43- #clock-cells : from common clock binding; shall be set to 0.
44- compatible : shall be "ti,keystone,pll-mux-clock"
45- clocks : link phandles of parent clocks
46- reg - pll mux register
47- bit-shift : number of bits to shift the bit-mask
48- bit-mask : arbitrary bitmask for programming the mux
49
50Optional properties:
51- clock-output-names : From common clock binding.
52
53Example:
54 mainmuxclk: mainmuxclk@2310108 {
55 #clock-cells = <0>;
56 compatible = "ti,keystone,pll-mux-clock";
57 clocks = <&mainpllclk>, <&refclkmain>;
58 reg = <0x02310108 4>;
59 bit-shift = <23>;
60 bit-mask = <1>;
61 clock-output-names = "mainmuxclk";
62 };
63
64Required properties:
65- #clock-cells : from common clock binding; shall be set to 0.
66- compatible : shall be "ti,keystone,pll-divider-clock"
67- clocks : parent clock phandle
68- reg - pll mux register
69- bit-shift : number of bits to shift the bit-mask
70- bit-mask : arbitrary bitmask for programming the divider
71
72Optional properties:
73- clock-output-names : From common clock binding.
74
75Example:
76 gemtraceclk: gemtraceclk@2310120 {
77 #clock-cells = <0>;
78 compatible = "ti,keystone,pll-divider-clock";
79 clocks = <&mainmuxclk>;
80 reg = <0x02310120 4>;
81 bit-shift = <0>;
82 bit-mask = <8>;
83 clock-output-names = "gemtraceclk";
84 };
diff --git a/Documentation/devicetree/bindings/clock/mvebu-corediv-clock.txt b/Documentation/devicetree/bindings/clock/mvebu-corediv-clock.txt
new file mode 100644
index 000000000000..c62391fc0e39
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/mvebu-corediv-clock.txt
@@ -0,0 +1,19 @@
1* Core Divider Clock bindings for Marvell MVEBU SoCs
2
3The following is a list of provided IDs and clock names on Armada 370/XP:
4 0 = nand (NAND clock)
5
6Required properties:
7- compatible : must be "marvell,armada-370-corediv-clock"
8- reg : must be the register address of Core Divider control register
9- #clock-cells : from common clock binding; shall be set to 1
10- clocks : must be set to the parent's phandle
11
12Example:
13
14corediv_clk: corediv-clocks@18740 {
15 compatible = "marvell,armada-370-corediv-clock";
16 reg = <0x18740 0xc>;
17 #clock-cells = <1>;
18 clocks = <&pll>;
19};
diff --git a/Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt b/Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt
index cffc93d97f54..fc2910fa7e45 100644
--- a/Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt
+++ b/Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt
@@ -1,10 +1,10 @@
1* Gated Clock bindings for Marvell Orion SoCs 1* Gated Clock bindings for Marvell EBU SoCs
2 2
3Marvell Dove and Kirkwood allow some peripheral clocks to be gated to save 3Marvell Armada 370/XP, Dove and Kirkwood allow some peripheral clocks to be
4some power. The clock consumer should specify the desired clock by having 4gated to save some power. The clock consumer should specify the desired clock
5the clock ID in its "clocks" phandle cell. The clock ID is directly mapped to 5by having the clock ID in its "clocks" phandle cell. The clock ID is directly
6the corresponding clock gating control bit in HW to ease manual clock lookup 6mapped to the corresponding clock gating control bit in HW to ease manual clock
7in datasheet. 7lookup in datasheet.
8 8
9The following is a list of provided IDs for Armada 370: 9The following is a list of provided IDs for Armada 370:
10ID Clock Peripheral 10ID Clock Peripheral
@@ -94,6 +94,8 @@ ID Clock Peripheral
94 94
95Required properties: 95Required properties:
96- compatible : shall be one of the following: 96- compatible : shall be one of the following:
97 "marvell,armada-370-gating-clock" - for Armada 370 SoC clock gating
98 "marvell,armada-xp-gating-clock" - for Armada XP SoC clock gating
97 "marvell,dove-gating-clock" - for Dove SoC clock gating 99 "marvell,dove-gating-clock" - for Dove SoC clock gating
98 "marvell,kirkwood-gating-clock" - for Kirkwood SoC clock gating 100 "marvell,kirkwood-gating-clock" - for Kirkwood SoC clock gating
99- reg : shall be the register address of the Clock Gating Control register 101- reg : shall be the register address of the Clock Gating Control register
diff --git a/Documentation/devicetree/bindings/clock/samsung,s3c64xx-clock.txt b/Documentation/devicetree/bindings/clock/samsung,s3c64xx-clock.txt
new file mode 100644
index 000000000000..fa171dc4bd3c
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/samsung,s3c64xx-clock.txt
@@ -0,0 +1,77 @@
1* Samsung S3C64xx Clock Controller
2
3The S3C64xx clock controller generates and supplies clock to various controllers
4within the SoC. The clock binding described here is applicable to all SoCs in
5the S3C64xx family.
6
7Required Properties:
8
9- compatible: should be one of the following.
10 - "samsung,s3c6400-clock" - controller compatible with S3C6400 SoC.
11 - "samsung,s3c6410-clock" - controller compatible with S3C6410 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
18Each clock is assigned an identifier and client nodes can use this identifier
19to specify the clock which they consume. Some of the clocks are available only
20on a particular S3C64xx SoC and this is specified where applicable.
21
22All available clocks are defined as preprocessor macros in
23dt-bindings/clock/samsung,s3c64xx-clock.h header and can be used in device
24tree sources.
25
26External clocks:
27
28There are several clocks that are generated outside the SoC. It is expected
29that they are defined using standard clock bindings with following
30clock-output-names:
31 - "fin_pll" - PLL input clock (xtal/extclk) - required,
32 - "xusbxti" - USB xtal - required,
33 - "iiscdclk0" - I2S0 codec clock - optional,
34 - "iiscdclk1" - I2S1 codec clock - optional,
35 - "iiscdclk2" - I2S2 codec clock - optional,
36 - "pcmcdclk0" - PCM0 codec clock - optional,
37 - "pcmcdclk1" - PCM1 codec clock - optional, only S3C6410.
38
39Example: Clock controller node:
40
41 clock: clock-controller@7e00f000 {
42 compatible = "samsung,s3c6410-clock";
43 reg = <0x7e00f000 0x1000>;
44 #clock-cells = <1>;
45 };
46
47Example: Required external clocks:
48
49 fin_pll: clock-fin-pll {
50 compatible = "fixed-clock";
51 clock-output-names = "fin_pll";
52 clock-frequency = <12000000>;
53 #clock-cells = <0>;
54 };
55
56 xusbxti: clock-xusbxti {
57 compatible = "fixed-clock";
58 clock-output-names = "xusbxti";
59 clock-frequency = <48000000>;
60 #clock-cells = <0>;
61 };
62
63Example: UART controller node that consumes the clock generated by the clock
64 controller (refer to the standard clock bindings for information about
65 "clocks" and "clock-names" properties):
66
67 uart0: serial@7f005000 {
68 compatible = "samsung,s3c6400-uart";
69 reg = <0x7f005000 0x100>;
70 interrupt-parent = <&vic1>;
71 interrupts = <5>;
72 clock-names = "uart", "clk_uart_baud2",
73 "clk_uart_baud3";
74 clocks = <&clock PCLK_UART0>, <&clocks PCLK_UART0>,
75 <&clock SCLK_UART>;
76 status = "disabled";
77 };
diff --git a/Documentation/devicetree/bindings/clock/st,nomadik.txt b/Documentation/devicetree/bindings/clock/st,nomadik.txt
index 7fc09773de46..40e0cf1f7b99 100644
--- a/Documentation/devicetree/bindings/clock/st,nomadik.txt
+++ b/Documentation/devicetree/bindings/clock/st,nomadik.txt
@@ -17,7 +17,7 @@ Optional properties for the SRC node:
17- disable-mxtal: if present this will disable the MXTALO, 17- disable-mxtal: if present this will disable the MXTALO,
18 i.e. the driver output for the main (~19.2 MHz) chrystal, 18 i.e. the driver output for the main (~19.2 MHz) chrystal,
19 if the board has its own circuitry for providing this 19 if the board has its own circuitry for providing this
20 osciallator 20 oscillator
21 21
22 22
23PLL nodes: these nodes represent the two PLLs on the system, 23PLL nodes: these nodes represent the two PLLs on the system,
diff --git a/Documentation/devicetree/bindings/clock/sunxi.txt b/Documentation/devicetree/bindings/clock/sunxi.txt
index d495521a79d2..91a748fed13d 100644
--- a/Documentation/devicetree/bindings/clock/sunxi.txt
+++ b/Documentation/devicetree/bindings/clock/sunxi.txt
@@ -8,19 +8,31 @@ Required properties:
8- compatible : shall be one of the following: 8- compatible : shall be one of the following:
9 "allwinner,sun4i-osc-clk" - for a gatable oscillator 9 "allwinner,sun4i-osc-clk" - for a gatable oscillator
10 "allwinner,sun4i-pll1-clk" - for the main PLL clock 10 "allwinner,sun4i-pll1-clk" - for the main PLL clock
11 "allwinner,sun6i-a31-pll1-clk" - for the main PLL clock on A31
11 "allwinner,sun4i-cpu-clk" - for the CPU multiplexer clock 12 "allwinner,sun4i-cpu-clk" - for the CPU multiplexer clock
12 "allwinner,sun4i-axi-clk" - for the AXI clock 13 "allwinner,sun4i-axi-clk" - for the AXI clock
13 "allwinner,sun4i-axi-gates-clk" - for the AXI gates 14 "allwinner,sun4i-axi-gates-clk" - for the AXI gates
14 "allwinner,sun4i-ahb-clk" - for the AHB clock 15 "allwinner,sun4i-ahb-clk" - for the AHB clock
15 "allwinner,sun4i-ahb-gates-clk" - for the AHB gates on A10 16 "allwinner,sun4i-ahb-gates-clk" - for the AHB gates on A10
16 "allwinner,sun5i-a13-ahb-gates-clk" - for the AHB gates on A13 17 "allwinner,sun5i-a13-ahb-gates-clk" - for the AHB gates on A13
18 "allwinner,sun5i-a10s-ahb-gates-clk" - for the AHB gates on A10s
19 "allwinner,sun7i-a20-ahb-gates-clk" - for the AHB gates on A20
20 "allwinner,sun6i-a31-ahb1-mux-clk" - for the AHB1 multiplexer on A31
21 "allwinner,sun6i-a31-ahb1-gates-clk" - for the AHB1 gates on A31
17 "allwinner,sun4i-apb0-clk" - for the APB0 clock 22 "allwinner,sun4i-apb0-clk" - for the APB0 clock
18 "allwinner,sun4i-apb0-gates-clk" - for the APB0 gates on A10 23 "allwinner,sun4i-apb0-gates-clk" - for the APB0 gates on A10
19 "allwinner,sun5i-a13-apb0-gates-clk" - for the APB0 gates on A13 24 "allwinner,sun5i-a13-apb0-gates-clk" - for the APB0 gates on A13
25 "allwinner,sun5i-a10s-apb0-gates-clk" - for the APB0 gates on A10s
26 "allwinner,sun7i-a20-apb0-gates-clk" - for the APB0 gates on A20
20 "allwinner,sun4i-apb1-clk" - for the APB1 clock 27 "allwinner,sun4i-apb1-clk" - for the APB1 clock
21 "allwinner,sun4i-apb1-mux-clk" - for the APB1 clock muxing 28 "allwinner,sun4i-apb1-mux-clk" - for the APB1 clock muxing
22 "allwinner,sun4i-apb1-gates-clk" - for the APB1 gates on A10 29 "allwinner,sun4i-apb1-gates-clk" - for the APB1 gates on A10
23 "allwinner,sun5i-a13-apb1-gates-clk" - for the APB1 gates on A13 30 "allwinner,sun5i-a13-apb1-gates-clk" - for the APB1 gates on A13
31 "allwinner,sun5i-a10s-apb1-gates-clk" - for the APB1 gates on A10s
32 "allwinner,sun6i-a31-apb1-gates-clk" - for the APB1 gates on A31
33 "allwinner,sun7i-a20-apb1-gates-clk" - for the APB1 gates on A20
34 "allwinner,sun6i-a31-apb2-div-clk" - for the APB2 gates on A31
35 "allwinner,sun6i-a31-apb2-gates-clk" - for the APB2 gates on A31
24 36
25Required properties for all clocks: 37Required properties for all clocks:
26- reg : shall be the control register address for the clock. 38- reg : shall be the control register address for the clock.
@@ -33,8 +45,8 @@ Additionally, "allwinner,*-gates-clk" clocks require:
33 45
34Clock consumers should specify the desired clocks they use with a 46Clock consumers should specify the desired clocks they use with a
35"clocks" phandle cell. Consumers that are using a gated clock should 47"clocks" phandle cell. Consumers that are using a gated clock should
36provide an additional ID in their clock property. The values of this 48provide an additional ID in their clock property. This ID is the
37ID are documented in sunxi/<soc>-gates.txt. 49offset of the bit controlling this particular gate in the register.
38 50
39For example: 51For example:
40 52
diff --git a/Documentation/devicetree/bindings/clock/sunxi/sun4i-a10-gates.txt b/Documentation/devicetree/bindings/clock/sunxi/sun4i-a10-gates.txt
deleted file mode 100644
index 6a03475bbfe2..000000000000
--- a/Documentation/devicetree/bindings/clock/sunxi/sun4i-a10-gates.txt
+++ /dev/null
@@ -1,93 +0,0 @@
1Gate clock outputs
2------------------
3
4 * AXI gates ("allwinner,sun4i-axi-gates-clk")
5
6 DRAM 0
7
8 * AHB gates ("allwinner,sun4i-ahb-gates-clk")
9
10 USB0 0
11 EHCI0 1
12 OHCI0 2*
13 EHCI1 3
14 OHCI1 4*
15 SS 5
16 DMA 6
17 BIST 7
18 MMC0 8
19 MMC1 9
20 MMC2 10
21 MMC3 11
22 MS 12**
23 NAND 13
24 SDRAM 14
25
26 ACE 16
27 EMAC 17
28 TS 18
29
30 SPI0 20
31 SPI1 21
32 SPI2 22
33 SPI3 23
34 PATA 24
35 SATA 25**
36 GPS 26*
37
38 VE 32
39 TVD 33
40 TVE0 34
41 TVE1 35
42 LCD0 36
43 LCD1 37
44
45 CSI0 40
46 CSI1 41
47
48 HDMI 43
49 DE_BE0 44
50 DE_BE1 45
51 DE_FE1 46
52 DE_FE1 47
53
54 MP 50
55
56 MALI400 52
57
58 * APB0 gates ("allwinner,sun4i-apb0-gates-clk")
59
60 CODEC 0
61 SPDIF 1*
62 AC97 2
63 IIS 3
64
65 PIO 5
66 IR0 6
67 IR1 7
68
69 KEYPAD 10
70
71 * APB1 gates ("allwinner,sun4i-apb1-gates-clk")
72
73 I2C0 0
74 I2C1 1
75 I2C2 2
76
77 CAN 4
78 SCR 5
79 PS20 6
80 PS21 7
81
82 UART0 16
83 UART1 17
84 UART2 18
85 UART3 19
86 UART4 20
87 UART5 21
88 UART6 22
89 UART7 23
90
91Notation:
92 [*]: The datasheet didn't mention these, but they are present on AW code
93 [**]: The datasheet had this marked as "NC" but they are used on AW code
diff --git a/Documentation/devicetree/bindings/clock/sunxi/sun5i-a13-gates.txt b/Documentation/devicetree/bindings/clock/sunxi/sun5i-a13-gates.txt
deleted file mode 100644
index 006b6dfc4703..000000000000
--- a/Documentation/devicetree/bindings/clock/sunxi/sun5i-a13-gates.txt
+++ /dev/null
@@ -1,58 +0,0 @@
1Gate clock outputs
2------------------
3
4 * AXI gates ("allwinner,sun4i-axi-gates-clk")
5
6 DRAM 0
7
8 * AHB gates ("allwinner,sun5i-a13-ahb-gates-clk")
9
10 USBOTG 0
11 EHCI 1
12 OHCI 2
13
14 SS 5
15 DMA 6
16 BIST 7
17 MMC0 8
18 MMC1 9
19 MMC2 10
20
21 NAND 13
22 SDRAM 14
23
24 SPI0 20
25 SPI1 21
26 SPI2 22
27
28 STIMER 28
29
30 VE 32
31
32 LCD 36
33
34 CSI 40
35
36 DE_BE 44
37
38 DE_FE 46
39
40 IEP 51
41 MALI400 52
42
43 * APB0 gates ("allwinner,sun5i-a13-apb0-gates-clk")
44
45 CODEC 0
46
47 PIO 5
48 IR 6
49
50 * APB1 gates ("allwinner,sun5i-a13-apb1-gates-clk")
51
52 I2C0 0
53 I2C1 1
54 I2C2 2
55
56 UART1 17
57
58 UART3 19
diff --git a/Documentation/devicetree/bindings/clock/xgene.txt b/Documentation/devicetree/bindings/clock/xgene.txt
new file mode 100644
index 000000000000..1c4ef773feea
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/xgene.txt
@@ -0,0 +1,111 @@
1Device Tree Clock bindings for APM X-Gene
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 "apm,xgene-socpll-clock" - for a X-Gene SoC PLL clock
10 "apm,xgene-pcppll-clock" - for a X-Gene PCP PLL clock
11 "apm,xgene-device-clock" - for a X-Gene device clock
12
13Required properties for SoC or PCP PLL clocks:
14- reg : shall be the physical PLL register address for the pll clock.
15- clocks : shall be the input parent clock phandle for the clock. This should
16 be the reference clock.
17- #clock-cells : shall be set to 1.
18- clock-output-names : shall be the name of the PLL referenced by derive
19 clock.
20Optional properties for PLL clocks:
21- clock-names : shall be the name of the PLL. If missing, use the device name.
22
23Required properties for device clocks:
24- reg : shall be a list of address and length pairs describing the CSR
25 reset and/or the divider. Either may be omitted, but at least
26 one must be present.
27 - reg-names : shall be a string list describing the reg resource. This
28 may include "csr-reg" and/or "div-reg". If this property
29 is not present, the reg property is assumed to describe
30 only "csr-reg".
31- clocks : shall be the input parent clock phandle for the clock.
32- #clock-cells : shall be set to 1.
33- clock-output-names : shall be the name of the device referenced.
34Optional properties for device clocks:
35- clock-names : shall be the name of the device clock. If missing, use the
36 device name.
37- csr-offset : Offset to the CSR reset register from the reset address base.
38 Default is 0.
39- csr-mask : CSR reset mask bit. Default is 0xF.
40- enable-offset : Offset to the enable register from the reset address base.
41 Default is 0x8.
42- enable-mask : CSR enable mask bit. Default is 0xF.
43- divider-offset : Offset to the divider CSR register from the divider base.
44 Default is 0x0.
45- divider-width : Width of the divider register. Default is 0.
46- divider-shift : Bit shift of the divider register. Default is 0.
47
48For example:
49
50 pcppll: pcppll@17000100 {
51 compatible = "apm,xgene-pcppll-clock";
52 #clock-cells = <1>;
53 clocks = <&refclk 0>;
54 clock-names = "pcppll";
55 reg = <0x0 0x17000100 0x0 0x1000>;
56 clock-output-names = "pcppll";
57 type = <0>;
58 };
59
60 socpll: socpll@17000120 {
61 compatible = "apm,xgene-socpll-clock";
62 #clock-cells = <1>;
63 clocks = <&refclk 0>;
64 clock-names = "socpll";
65 reg = <0x0 0x17000120 0x0 0x1000>;
66 clock-output-names = "socpll";
67 type = <1>;
68 };
69
70 qmlclk: qmlclk {
71 compatible = "apm,xgene-device-clock";
72 #clock-cells = <1>;
73 clocks = <&socplldiv2 0>;
74 clock-names = "qmlclk";
75 reg = <0x0 0x1703C000 0x0 0x1000>;
76 reg-name = "csr-reg";
77 clock-output-names = "qmlclk";
78 };
79
80 ethclk: ethclk {
81 compatible = "apm,xgene-device-clock";
82 #clock-cells = <1>;
83 clocks = <&socplldiv2 0>;
84 clock-names = "ethclk";
85 reg = <0x0 0x17000000 0x0 0x1000>;
86 reg-names = "div-reg";
87 divider-offset = <0x238>;
88 divider-width = <0x9>;
89 divider-shift = <0x0>;
90 clock-output-names = "ethclk";
91 };
92
93 apbclk: apbclk {
94 compatible = "apm,xgene-device-clock";
95 #clock-cells = <1>;
96 clocks = <&ahbclk 0>;
97 clock-names = "apbclk";
98 reg = <0x0 0x1F2AC000 0x0 0x1000
99 0x0 0x1F2AC000 0x0 0x1000>;
100 reg-names = "csr-reg", "div-reg";
101 csr-offset = <0x0>;
102 csr-mask = <0x200>;
103 enable-offset = <0x8>;
104 enable-mask = <0x200>;
105 divider-offset = <0x10>;
106 divider-width = <0x2>;
107 divider-shift = <0x0>;
108 flags = <0x8>;
109 clock-output-names = "apbclk";
110 };
111
diff --git a/Documentation/devicetree/bindings/crypto/fsl-sec6.txt b/Documentation/devicetree/bindings/crypto/fsl-sec6.txt
new file mode 100644
index 000000000000..c0a20cd972e3
--- /dev/null
+++ b/Documentation/devicetree/bindings/crypto/fsl-sec6.txt
@@ -0,0 +1,157 @@
1SEC 6 is as Freescale's Cryptographic Accelerator and Assurance Module (CAAM).
2Currently Freescale powerpc chip C29X is embeded with SEC 6.
3SEC 6 device tree binding include:
4 -SEC 6 Node
5 -Job Ring Node
6 -Full Example
7
8=====================================================================
9SEC 6 Node
10
11Description
12
13 Node defines the base address of the SEC 6 block.
14 This block specifies the address range of all global
15 configuration registers for the SEC 6 block.
16 For example, In C293, we could see three SEC 6 node.
17
18PROPERTIES
19
20 - compatible
21 Usage: required
22 Value type: <string>
23 Definition: Must include "fsl,sec-v6.0".
24
25 - fsl,sec-era
26 Usage: optional
27 Value type: <u32>
28 Definition: A standard property. Define the 'ERA' of the SEC
29 device.
30
31 - #address-cells
32 Usage: required
33 Value type: <u32>
34 Definition: A standard property. Defines the number of cells
35 for representing physical addresses in child nodes.
36
37 - #size-cells
38 Usage: required
39 Value type: <u32>
40 Definition: A standard property. Defines the number of cells
41 for representing the size of physical addresses in
42 child nodes.
43
44 - reg
45 Usage: required
46 Value type: <prop-encoded-array>
47 Definition: A standard property. Specifies the physical
48 address and length of the SEC 6 configuration registers.
49
50 - ranges
51 Usage: required
52 Value type: <prop-encoded-array>
53 Definition: A standard property. Specifies the physical address
54 range of the SEC 6.0 register space (-SNVS not included). A
55 triplet that includes the child address, parent address, &
56 length.
57
58 Note: All other standard properties (see the ePAPR) are allowed
59 but are optional.
60
61EXAMPLE
62 crypto@a0000 {
63 compatible = "fsl,sec-v6.0";
64 fsl,sec-era = <6>;
65 #address-cells = <1>;
66 #size-cells = <1>;
67 reg = <0xa0000 0x20000>;
68 ranges = <0 0xa0000 0x20000>;
69 };
70
71=====================================================================
72Job Ring (JR) Node
73
74 Child of the crypto node defines data processing interface to SEC 6
75 across the peripheral bus for purposes of processing
76 cryptographic descriptors. The specified address
77 range can be made visible to one (or more) cores.
78 The interrupt defined for this node is controlled within
79 the address range of this node.
80
81 - compatible
82 Usage: required
83 Value type: <string>
84 Definition: Must include "fsl,sec-v6.0-job-ring".
85
86 - reg
87 Usage: required
88 Value type: <prop-encoded-array>
89 Definition: Specifies a two JR parameters: an offset from
90 the parent physical address and the length the JR registers.
91
92 - interrupts
93 Usage: required
94 Value type: <prop_encoded-array>
95 Definition: Specifies the interrupts generated by this
96 device. The value of the interrupts property
97 consists of one interrupt specifier. The format
98 of the specifier is defined by the binding document
99 describing the node's interrupt parent.
100
101EXAMPLE
102 jr@1000 {
103 compatible = "fsl,sec-v6.0-job-ring";
104 reg = <0x1000 0x1000>;
105 interrupts = <49 2 0 0>;
106 };
107
108===================================================================
109Full Example
110
111Since some chips may contain more than one SEC, the dtsi contains
112only the node contents, not the node itself. A chip using the SEC
113should include the dtsi inside each SEC node. Example:
114
115In qoriq-sec6.0.dtsi:
116
117 compatible = "fsl,sec-v6.0";
118 fsl,sec-era = <6>;
119 #address-cells = <1>;
120 #size-cells = <1>;
121
122 jr@1000 {
123 compatible = "fsl,sec-v6.0-job-ring",
124 "fsl,sec-v5.2-job-ring",
125 "fsl,sec-v5.0-job-ring",
126 "fsl,sec-v4.4-job-ring",
127 "fsl,sec-v4.0-job-ring";
128 reg = <0x1000 0x1000>;
129 };
130
131 jr@2000 {
132 compatible = "fsl,sec-v6.0-job-ring",
133 "fsl,sec-v5.2-job-ring",
134 "fsl,sec-v5.0-job-ring",
135 "fsl,sec-v4.4-job-ring",
136 "fsl,sec-v4.0-job-ring";
137 reg = <0x2000 0x1000>;
138 };
139
140In the C293 device tree, we add the include of public property:
141
142 crypto@a0000 {
143 /include/ "qoriq-sec6.0.dtsi"
144 }
145
146 crypto@a0000 {
147 reg = <0xa0000 0x20000>;
148 ranges = <0 0xa0000 0x20000>;
149
150 jr@1000 {
151 interrupts = <49 2 0 0>;
152 };
153
154 jr@2000 {
155 interrupts = <50 2 0 0>;
156 };
157 };
diff --git a/Documentation/devicetree/bindings/crypto/omap-aes.txt b/Documentation/devicetree/bindings/crypto/omap-aes.txt
new file mode 100644
index 000000000000..fd9717653cbb
--- /dev/null
+++ b/Documentation/devicetree/bindings/crypto/omap-aes.txt
@@ -0,0 +1,31 @@
1OMAP SoC AES crypto Module
2
3Required properties:
4
5- compatible : Should contain entries for this and backward compatible
6 AES versions:
7 - "ti,omap2-aes" for OMAP2.
8 - "ti,omap3-aes" for OMAP3.
9 - "ti,omap4-aes" for OMAP4 and AM33XX.
10 Note that the OMAP2 and 3 versions are compatible (OMAP3 supports
11 more algorithms) but they are incompatible with OMAP4.
12- ti,hwmods: Name of the hwmod associated with the AES module
13- reg : Offset and length of the register set for the module
14- interrupts : the interrupt-specifier for the AES module.
15
16Optional properties:
17- dmas: DMA specifiers for tx and rx dma. See the DMA client binding,
18 Documentation/devicetree/bindings/dma/dma.txt
19- dma-names: DMA request names should include "tx" and "rx" if present.
20
21Example:
22 /* AM335x */
23 aes: aes@53500000 {
24 compatible = "ti,omap4-aes";
25 ti,hwmods = "aes";
26 reg = <0x53500000 0xa0>;
27 interrupts = <102>;
28 dmas = <&edma 6>,
29 <&edma 5>;
30 dma-names = "tx", "rx";
31 };
diff --git a/Documentation/devicetree/bindings/crypto/omap-sham.txt b/Documentation/devicetree/bindings/crypto/omap-sham.txt
new file mode 100644
index 000000000000..f839acd6f0ee
--- /dev/null
+++ b/Documentation/devicetree/bindings/crypto/omap-sham.txt
@@ -0,0 +1,28 @@
1OMAP SoC SHA crypto Module
2
3Required properties:
4
5- compatible : Should contain entries for this and backward compatible
6 SHAM versions:
7 - "ti,omap2-sham" for OMAP2 & OMAP3.
8 - "ti,omap4-sham" for OMAP4 and AM33XX.
9 Note that these two versions are incompatible.
10- ti,hwmods: Name of the hwmod associated with the SHAM module
11- reg : Offset and length of the register set for the module
12- interrupts : the interrupt-specifier for the SHAM module.
13
14Optional properties:
15- dmas: DMA specifiers for the rx dma. See the DMA client binding,
16 Documentation/devicetree/bindings/dma/dma.txt
17- dma-names: DMA request name. Should be "rx" if a dma is present.
18
19Example:
20 /* AM335x */
21 sham: sham@53100000 {
22 compatible = "ti,omap4-sham";
23 ti,hwmods = "sham";
24 reg = <0x53100000 0x200>;
25 interrupts = <109>;
26 dmas = <&edma 36>;
27 dma-names = "rx";
28 };
diff --git a/Documentation/devicetree/bindings/dma/atmel-dma.txt b/Documentation/devicetree/bindings/dma/atmel-dma.txt
index c280a0e6f42d..e1f343c7a34b 100644
--- a/Documentation/devicetree/bindings/dma/atmel-dma.txt
+++ b/Documentation/devicetree/bindings/dma/atmel-dma.txt
@@ -18,14 +18,14 @@ dma0: dma@ffffec00 {
18 18
19DMA clients connected to the Atmel DMA controller must use the format 19DMA clients connected to the Atmel DMA controller must use the format
20described in the dma.txt file, using a three-cell specifier for each channel: 20described in the dma.txt file, using a three-cell specifier for each channel:
21a phandle plus two interger cells. 21a phandle plus two integer cells.
22The three cells in order are: 22The three cells in order are:
23 23
241. A phandle pointing to the DMA controller. 241. A phandle pointing to the DMA controller.
252. The memory interface (16 most significant bits), the peripheral interface 252. The memory interface (16 most significant bits), the peripheral interface
26(16 less significant bits). 26(16 less significant bits).
273. Parameters for the at91 DMA configuration register which are device 273. Parameters for the at91 DMA configuration register which are device
28dependant: 28dependent:
29 - bit 7-0: peripheral identifier for the hardware handshaking interface. The 29 - bit 7-0: peripheral identifier for the hardware handshaking interface. The
30 identifier can be different for tx and rx. 30 identifier can be different for tx and rx.
31 - bit 11-8: FIFO configuration. 0 for half FIFO, 1 for ALAP, 1 for ASAP. 31 - bit 11-8: FIFO configuration. 0 for half FIFO, 1 for ALAP, 1 for ASAP.
diff --git a/Documentation/devicetree/bindings/dma/fsl-imx-dma.txt b/Documentation/devicetree/bindings/dma/fsl-imx-dma.txt
index 2717ecb47db9..7bd8847d6394 100644
--- a/Documentation/devicetree/bindings/dma/fsl-imx-dma.txt
+++ b/Documentation/devicetree/bindings/dma/fsl-imx-dma.txt
@@ -34,7 +34,7 @@ Clients have to specify the DMA requests with phandles in a list.
34Required properties: 34Required properties:
35- dmas: List of one or more DMA request specifiers. One DMA request specifier 35- dmas: List of one or more DMA request specifiers. One DMA request specifier
36 consists of a phandle to the DMA controller followed by the integer 36 consists of a phandle to the DMA controller followed by the integer
37 specifiying the request line. 37 specifying the request line.
38- dma-names: List of string identifiers for the DMA requests. For the correct 38- dma-names: List of string identifiers for the DMA requests. For the correct
39 names, have a look at the specific client driver. 39 names, have a look at the specific client driver.
40 40
diff --git a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt
index 68cee4f5539f..4fa814d38321 100644
--- a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt
+++ b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt
@@ -1,7 +1,12 @@
1* Freescale Smart Direct Memory Access (SDMA) Controller for i.MX 1* Freescale Smart Direct Memory Access (SDMA) Controller for i.MX
2 2
3Required properties: 3Required properties:
4- compatible : Should be "fsl,<chip>-sdma" 4- compatible : Should be "fsl,imx31-sdma", "fsl,imx31-to1-sdma",
5 "fsl,imx31-to2-sdma", "fsl,imx35-sdma", "fsl,imx35-to1-sdma",
6 "fsl,imx35-to2-sdma", "fsl,imx51-sdma", "fsl,imx53-sdma" or
7 "fsl,imx6q-sdma". The -to variants should be preferred since they
8 allow to determnine the correct ROM script addresses needed for
9 the driver to work without additional firmware.
5- reg : Should contain SDMA registers location and length 10- reg : Should contain SDMA registers location and length
6- interrupts : Should contain SDMA interrupt 11- interrupts : Should contain SDMA interrupt
7- #dma-cells : Must be <3>. 12- #dma-cells : Must be <3>.
diff --git a/Documentation/devicetree/bindings/dma/k3dma.txt b/Documentation/devicetree/bindings/dma/k3dma.txt
new file mode 100644
index 000000000000..23f8d712c3ce
--- /dev/null
+++ b/Documentation/devicetree/bindings/dma/k3dma.txt
@@ -0,0 +1,46 @@
1* Hisilicon K3 DMA controller
2
3See dma.txt first
4
5Required properties:
6- compatible: Should be "hisilicon,k3-dma-1.0"
7- reg: Should contain DMA registers location and length.
8- interrupts: Should contain one interrupt shared by all channel
9- #dma-cells: see dma.txt, should be 1, para number
10- dma-channels: physical channels supported
11- dma-requests: virtual channels supported, each virtual channel
12 have specific request line
13- clocks: clock required
14
15Example:
16
17Controller:
18 dma0: dma@fcd02000 {
19 compatible = "hisilicon,k3-dma-1.0";
20 reg = <0xfcd02000 0x1000>;
21 #dma-cells = <1>;
22 dma-channels = <16>;
23 dma-requests = <27>;
24 interrupts = <0 12 4>;
25 clocks = <&pclk>;
26 status = "disable";
27 };
28
29Client:
30Use specific request line passing from dmax
31For example, i2c0 read channel request line is 18, while write channel use 19
32
33 i2c0: i2c@fcb08000 {
34 compatible = "snps,designware-i2c";
35 dmas = <&dma0 18 /* read channel */
36 &dma0 19>; /* write channel */
37 dma-names = "rx", "tx";
38 };
39
40 i2c1: i2c@fcb09000 {
41 compatible = "snps,designware-i2c";
42 dmas = <&dma0 20 /* read channel */
43 &dma0 21>; /* write channel */
44 dma-names = "rx", "tx";
45 };
46
diff --git a/Documentation/devicetree/bindings/dma/shdma.txt b/Documentation/devicetree/bindings/dma/shdma.txt
index c15994aa1939..2a3f3b8946b9 100644
--- a/Documentation/devicetree/bindings/dma/shdma.txt
+++ b/Documentation/devicetree/bindings/dma/shdma.txt
@@ -22,42 +22,51 @@ Optional properties (currently unused):
22* DMA controller 22* DMA controller
23 23
24Required properties: 24Required properties:
25- compatible: should be "renesas,shdma" 25- compatible: should be of the form "renesas,shdma-<soc>", where <soc> should
26 be replaced with the desired SoC model, e.g.
27 "renesas,shdma-r8a73a4" for the system DMAC on r8a73a4 SoC
26 28
27Example: 29Example:
28 dmac: dma-mux0 { 30 dmac: dma-multiplexer@0 {
29 compatible = "renesas,shdma-mux"; 31 compatible = "renesas,shdma-mux";
30 #dma-cells = <1>; 32 #dma-cells = <1>;
31 dma-channels = <6>; 33 dma-channels = <20>;
32 dma-requests = <256>; 34 dma-requests = <256>;
33 reg = <0 0>; /* Needed for AUXDATA */ 35 #address-cells = <2>;
34 #address-cells = <1>; 36 #size-cells = <2>;
35 #size-cells = <1>;
36 ranges; 37 ranges;
37 38
38 dma0: shdma@fe008020 { 39 dma0: dma-controller@e6700020 {
39 compatible = "renesas,shdma"; 40 compatible = "renesas,shdma-r8a73a4";
40 reg = <0xfe008020 0x270>, 41 reg = <0 0xe6700020 0 0x89e0>;
41 <0xfe009000 0xc>;
42 interrupt-parent = <&gic>; 42 interrupt-parent = <&gic>;
43 interrupts = <0 34 4 43 interrupts = <0 220 4
44 0 28 4 44 0 200 4
45 0 29 4 45 0 201 4
46 0 30 4 46 0 202 4
47 0 31 4 47 0 203 4
48 0 32 4 48 0 204 4
49 0 33 4>; 49 0 205 4
50 0 206 4
51 0 207 4
52 0 208 4
53 0 209 4
54 0 210 4
55 0 211 4
56 0 212 4
57 0 213 4
58 0 214 4
59 0 215 4
60 0 216 4
61 0 217 4
62 0 218 4
63 0 219 4>;
50 interrupt-names = "error", 64 interrupt-names = "error",
51 "ch0", "ch1", "ch2", "ch3", 65 "ch0", "ch1", "ch2", "ch3",
52 "ch4", "ch5"; 66 "ch4", "ch5", "ch6", "ch7",
53 }; 67 "ch8", "ch9", "ch10", "ch11",
54 68 "ch12", "ch13", "ch14", "ch15",
55 dma1: shdma@fe018020 { 69 "ch16", "ch17", "ch18", "ch19";
56 ...
57 };
58
59 dma2: shdma@fe028020 {
60 ...
61 }; 70 };
62 }; 71 };
63 72
diff --git a/Documentation/devicetree/bindings/dma/ste-dma40.txt b/Documentation/devicetree/bindings/dma/ste-dma40.txt
index bea5b73a7390..a8c21c256baa 100644
--- a/Documentation/devicetree/bindings/dma/ste-dma40.txt
+++ b/Documentation/devicetree/bindings/dma/ste-dma40.txt
@@ -37,14 +37,14 @@ Each dmas request consists of 4 cells:
37 1. A phandle pointing to the DMA controller 37 1. A phandle pointing to the DMA controller
38 2. Device Type 38 2. Device Type
39 3. The DMA request line number (only when 'use fixed channel' is set) 39 3. The DMA request line number (only when 'use fixed channel' is set)
40 4. A 32bit mask specifying; mode, direction and endianess [NB: This list will grow] 40 4. A 32bit mask specifying; mode, direction and endianness [NB: This list will grow]
41 0x00000001: Mode: 41 0x00000001: Mode:
42 Logical channel when unset 42 Logical channel when unset
43 Physical channel when set 43 Physical channel when set
44 0x00000002: Direction: 44 0x00000002: Direction:
45 Memory to Device when unset 45 Memory to Device when unset
46 Device to Memory when set 46 Device to Memory when set
47 0x00000004: Endianess: 47 0x00000004: Endianness:
48 Little endian when unset 48 Little endian when unset
49 Big endian when set 49 Big endian when set
50 0x00000008: Use fixed channel: 50 0x00000008: Use fixed channel:
diff --git a/Documentation/devicetree/bindings/extcon/extcon-twl.txt b/Documentation/devicetree/bindings/extcon/extcon-palmas.txt
index 58f531ab4df3..7dab6a8f4a0e 100644
--- a/Documentation/devicetree/bindings/extcon/extcon-twl.txt
+++ b/Documentation/devicetree/bindings/extcon/extcon-palmas.txt
@@ -1,15 +1,15 @@
1EXTCON FOR TWL CHIPS 1EXTCON FOR PALMAS/TWL CHIPS
2 2
3PALMAS USB COMPARATOR 3PALMAS USB COMPARATOR
4Required Properties: 4Required Properties:
5 - compatible : Should be "ti,palmas-usb" or "ti,twl6035-usb" 5 - compatible : Should be "ti,palmas-usb" or "ti,twl6035-usb"
6 - vbus-supply : phandle to the regulator device tree node.
7 6
8Optional Properties: 7Optional Properties:
9 - ti,wakeup : To enable the wakeup comparator in probe 8 - ti,wakeup : To enable the wakeup comparator in probe
9 - ti,enable-id-detection: Perform ID detection.
10 - ti,enable-vbus-detection: Perform VBUS detection.
10 11
11palmas-usb { 12palmas-usb {
12 compatible = "ti,twl6035-usb", "ti,palmas-usb"; 13 compatible = "ti,twl6035-usb", "ti,palmas-usb";
13 vbus-supply = <&smps10_reg>;
14 ti,wakeup; 14 ti,wakeup;
15}; 15};
diff --git a/Documentation/devicetree/bindings/gpio/abilis,tb10x-gpio.txt b/Documentation/devicetree/bindings/gpio/abilis,tb10x-gpio.txt
new file mode 100644
index 000000000000..00611aceed3e
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/abilis,tb10x-gpio.txt
@@ -0,0 +1,36 @@
1* Abilis TB10x GPIO controller
2
3Required Properties:
4- compatible: Should be "abilis,tb10x-gpio"
5- reg: Address and length of the register set for the device
6- gpio-controller: Marks the device node as a gpio controller.
7- #gpio-cells: Should be <2>. The first cell is the pin number and the
8 second cell is used to specify optional parameters:
9 - bit 0 specifies polarity (0 for normal, 1 for inverted).
10- abilis,ngpio: the number of GPIO pins this driver controls.
11
12Optional Properties:
13- interrupt-controller: Marks the device node as an interrupt controller.
14- #interrupt-cells: Should be <1>. Interrupts are triggered on both edges.
15- interrupts: Defines the interrupt line connecting this GPIO controller to
16 its parent interrupt controller.
17- interrupt-parent: Defines the parent interrupt controller.
18
19GPIO ranges are specified as described in
20Documentation/devicetree/bindings/gpio/gpio.txt
21
22Example:
23
24 gpioa: gpio@FF140000 {
25 compatible = "abilis,tb10x-gpio";
26 interrupt-controller;
27 #interrupt-cells = <1>;
28 interrupt-parent = <&tb10x_ictl>;
29 interrupts = <27 2>;
30 reg = <0xFF140000 0x1000>;
31 gpio-controller;
32 #gpio-cells = <2>;
33 abilis,ngpio = <3>;
34 gpio-ranges = <&iomux 0 0 0>;
35 gpio-ranges-group-names = "gpioa_pins";
36 };
diff --git a/Documentation/devicetree/bindings/gpio/gpio-bcm-kona.txt b/Documentation/devicetree/bindings/gpio/gpio-bcm-kona.txt
new file mode 100644
index 000000000000..4a63bc96b687
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-bcm-kona.txt
@@ -0,0 +1,52 @@
1Broadcom Kona Family GPIO
2=========================
3
4This GPIO driver is used in the following Broadcom SoCs:
5 BCM11130, BCM11140, BCM11351, BCM28145, BCM28155
6
7The Broadcom GPIO Controller IP can be configured prior to synthesis to
8support up to 8 banks of 32 GPIOs where each bank has its own IRQ. The
9GPIO controller only supports edge, not level, triggering of interrupts.
10
11Required properties
12-------------------
13
14- compatible: "brcm,bcm11351-gpio", "brcm,kona-gpio"
15- reg: Physical base address and length of the controller's registers.
16- interrupts: The interrupt outputs from the controller. There is one GPIO
17 interrupt per GPIO bank. The number of interrupts listed depends on the
18 number of GPIO banks on the SoC. The interrupts must be ordered by bank,
19 starting with bank 0. There is always a 1:1 mapping between banks and
20 IRQs.
21- #gpio-cells: Should be <2>. The first cell is the pin number, the second
22 cell is used to specify optional parameters:
23 - bit 0 specifies polarity (0 for normal, 1 for inverted)
24 See also "gpio-specifier" in .../devicetree/bindings/gpio/gpio.txt.
25- #interrupt-cells: Should be <2>. The first cell is the GPIO number. The
26 second cell is used to specify flags. The following subset of flags is
27 supported:
28 - trigger type (bits[1:0]):
29 1 = low-to-high edge triggered.
30 2 = high-to-low edge triggered.
31 3 = low-to-high or high-to-low edge triggered
32 Valid values are 1, 2, 3
33 See also .../devicetree/bindings/interrupt-controller/interrupts.txt.
34- gpio-controller: Marks the device node as a GPIO controller.
35- interrupt-controller: Marks the device node as an interrupt controller.
36
37Example:
38 gpio: gpio@35003000 {
39 compatible = "brcm,bcm11351-gpio", "brcm,kona-gpio";
40 reg = <0x35003000 0x800>;
41 interrupts =
42 <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH
43 GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH
44 GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH
45 GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH
46 GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH
47 GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
48 #gpio-cells = <2>;
49 #interrupt-cells = <2>;
50 gpio-controller;
51 interrupt-controller;
52 };
diff --git a/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt b/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt
index 629d0ef17308..daa30174bcc1 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt
+++ b/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt
@@ -3,10 +3,17 @@ Microchip MCP2308/MCP23S08/MCP23017/MCP23S17 driver for
3 3
4Required properties: 4Required properties:
5- compatible : Should be 5- compatible : Should be
6 - "mcp,mcp23s08" for 8 GPIO SPI version 6 - "mcp,mcp23s08" (DEPRECATED) for 8 GPIO SPI version
7 - "mcp,mcp23s17" for 16 GPIO SPI version 7 - "mcp,mcp23s17" (DEPRECATED) for 16 GPIO SPI version
8 - "mcp,mcp23008" for 8 GPIO I2C version or 8 - "mcp,mcp23008" (DEPRECATED) for 8 GPIO I2C version or
9 - "mcp,mcp23017" for 16 GPIO I2C version of the chip 9 - "mcp,mcp23017" (DEPRECATED) for 16 GPIO I2C version of the chip
10
11 - "microchip,mcp23s08" for 8 GPIO SPI version
12 - "microchip,mcp23s17" for 16 GPIO SPI version
13 - "microchip,mcp23008" for 8 GPIO I2C version or
14 - "microchip,mcp23017" for 16 GPIO I2C version of the chip
15 NOTE: Do not use the old mcp prefix any more. It is deprecated and will be
16 removed.
10- #gpio-cells : Should be two. 17- #gpio-cells : Should be two.
11 - first cell is the pin number 18 - first cell is the pin number
12 - second cell is used to specify flags. Flags are currently unused. 19 - second cell is used to specify flags. Flags are currently unused.
@@ -15,10 +22,11 @@ Required properties:
15 SPI uses this to specify the chipselect line which the chip is 22 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 23 connected to. The driver and the SPI variant of the chip support
17 multiple chips on the same chipselect. Have a look at 24 multiple chips on the same chipselect. Have a look at
18 mcp,spi-present-mask below. 25 microchip,spi-present-mask below.
19 26
20Required device specific properties (only for SPI chips): 27Required device specific properties (only for SPI chips):
21- mcp,spi-present-mask : This is a present flag, that makes only sense for SPI 28- mcp,spi-present-mask (DEPRECATED)
29- microchip,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 30 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 31 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 32 chip connected with the corresponding spi address set. For example if
@@ -26,11 +34,13 @@ Required device specific properties (only for SPI chips):
26 which is 0x08. mcp23s08 chip variant only supports bits 0-3. It is not 34 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 35 possible to mix mcp23s08 and mcp23s17 on the same chipselect. Set at
28 least one bit to 1 for SPI chips. 36 least one bit to 1 for SPI chips.
37 NOTE: Do not use the old mcp prefix any more. It is deprecated and will be
38 removed.
29- spi-max-frequency = The maximum frequency this chip is able to handle 39- spi-max-frequency = The maximum frequency this chip is able to handle
30 40
31Example I2C: 41Example I2C:
32gpiom1: gpio@20 { 42gpiom1: gpio@20 {
33 compatible = "mcp,mcp23017"; 43 compatible = "microchip,mcp23017";
34 gpio-controller; 44 gpio-controller;
35 #gpio-cells = <2>; 45 #gpio-cells = <2>;
36 reg = <0x20>; 46 reg = <0x20>;
@@ -38,7 +48,7 @@ gpiom1: gpio@20 {
38 48
39Example SPI: 49Example SPI:
40gpiom1: gpio@0 { 50gpiom1: gpio@0 {
41 compatible = "mcp,mcp23s17"; 51 compatible = "microchip,mcp23s17";
42 gpio-controller; 52 gpio-controller;
43 #gpio-cells = <2>; 53 #gpio-cells = <2>;
44 spi-present-mask = <0x01>; 54 spi-present-mask = <0x01>;
diff --git a/Documentation/devicetree/bindings/gpio/gpio-palmas.txt b/Documentation/devicetree/bindings/gpio/gpio-palmas.txt
new file mode 100644
index 000000000000..08b5b52a3ae0
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-palmas.txt
@@ -0,0 +1,27 @@
1Palmas GPIO controller bindings
2
3Required properties:
4- compatible:
5 - "ti,palams-gpio" for palma series of the GPIO controller
6 - "ti,tps80036-gpio" for Palma series device TPS80036.
7 - "ti,tps65913-gpio" for palma series device TPS65913.
8 - "ti,tps65914-gpio" for palma series device TPS65914.
9- #gpio-cells : Should be two.
10 - first cell is the gpio pin number
11 - second cell is used to specify the gpio polarity:
12 0 = active high
13 1 = active low
14- gpio-controller : Marks the device node as a GPIO controller.
15
16Note: This gpio node will be sub node of palmas node.
17
18Example:
19 palmas: tps65913@58 {
20 :::::::::::
21 palmas_gpio: palmas_gpio {
22 compatible = "ti,palmas-gpio";
23 gpio-controller;
24 #gpio-cells = <2>;
25 };
26 :::::::::::
27 };
diff --git a/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt b/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt
new file mode 100644
index 000000000000..d63194a2c848
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt
@@ -0,0 +1,71 @@
1* PCF857x-compatible I/O expanders
2
3The PCF857x-compatible chips have "quasi-bidirectional" I/O lines that can be
4driven high by a pull-up current source or driven low to ground. This combines
5the direction and output level into a single bit per line, which can't be read
6back. We can't actually know at initialization time whether a line is configured
7(a) as output and driving the signal low/high, or (b) as input and reporting a
8low/high value, without knowing the last value written since the chip came out
9of reset (if any). The only reliable solution for setting up line direction is
10thus to do it explicitly.
11
12Required Properties:
13
14 - compatible: should be one of the following.
15 - "maxim,max7328": For the Maxim MAX7378
16 - "maxim,max7329": For the Maxim MAX7329
17 - "nxp,pca8574": For the NXP PCA8574
18 - "nxp,pca8575": For the NXP PCA8575
19 - "nxp,pca9670": For the NXP PCA9670
20 - "nxp,pca9671": For the NXP PCA9671
21 - "nxp,pca9672": For the NXP PCA9672
22 - "nxp,pca9673": For the NXP PCA9673
23 - "nxp,pca9674": For the NXP PCA9674
24 - "nxp,pca9675": For the NXP PCA9675
25 - "nxp,pcf8574": For the NXP PCF8574
26 - "nxp,pcf8574a": For the NXP PCF8574A
27 - "nxp,pcf8575": For the NXP PCF8575
28 - "ti,tca9554": For the TI TCA9554
29
30 - reg: I2C slave address.
31
32 - gpio-controller: Marks the device node as a gpio controller.
33 - #gpio-cells: Should be 2. The first cell is the GPIO number and the second
34 cell specifies GPIO flags, as defined in <dt-bindings/gpio/gpio.h>. Only the
35 GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW flags are supported.
36
37Optional Properties:
38
39 - lines-initial-states: Bitmask that specifies the initial state of each
40 line. When a bit is set to zero, the corresponding line will be initialized to
41 the input (pulled-up) state. When the bit is set to one, the line will be
42 initialized the the low-level output state. If the property is not specified
43 all lines will be initialized to the input state.
44
45 The I/O expander can detect input state changes, and thus optionally act as
46 an interrupt controller. When the expander interrupt line is connected all the
47 following properties must be set. For more information please see the
48 interrupt controller device tree bindings documentation available at
49 Documentation/devicetree/bindings/interrupt-controller/interrupts.txt.
50
51 - interrupt-controller: Identifies the node as an interrupt controller.
52 - #interrupt-cells: Number of cells to encode an interrupt source, shall be 2.
53 - interrupt-parent: phandle of the parent interrupt controller.
54 - interrupts: Interrupt specifier for the controllers interrupt.
55
56
57Please refer to gpio.txt in this directory for details of the common GPIO
58bindings used by client devices.
59
60Example: PCF8575 I/O expander node
61
62 pcf8575: gpio@20 {
63 compatible = "nxp,pcf8575";
64 reg = <0x20>;
65 interrupt-parent = <&irqpin2>;
66 interrupts = <3 0>;
67 gpio-controller;
68 #gpio-cells = <2>;
69 interrupt-controller;
70 #interrupt-cells = <2>;
71 };
diff --git a/Documentation/devicetree/bindings/gpio/gpio-tz1090-pdc.txt b/Documentation/devicetree/bindings/gpio/gpio-tz1090-pdc.txt
new file mode 100644
index 000000000000..1fd98ffa8cb7
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-tz1090-pdc.txt
@@ -0,0 +1,45 @@
1ImgTec TZ1090 PDC GPIO Controller
2
3Required properties:
4- compatible: Compatible property value should be "img,tz1090-pdc-gpio".
5
6- reg: Physical base address of the controller and length of memory mapped
7 region. This starts at and cover the SOC_GPIO_CONTROL registers.
8
9- gpio-controller: Specifies that the node is a gpio controller.
10
11- #gpio-cells: Should be 2. The syntax of the gpio specifier used by client
12 nodes should have the following values.
13 <[phandle of the gpio controller node]
14 [PDC gpio number]
15 [gpio flags]>
16
17 Values for gpio specifier:
18 - GPIO number: a value in the range 0 to 6.
19 - GPIO flags: bit field of flags, as defined in <dt-bindings/gpio/gpio.h>.
20 Only the following flags are supported:
21 GPIO_ACTIVE_HIGH
22 GPIO_ACTIVE_LOW
23
24Optional properties:
25- gpio-ranges: Mapping to pin controller pins (as described in
26 Documentation/devicetree/bindings/gpio/gpio.txt)
27
28- interrupts: Individual syswake interrupts (other GPIOs cannot interrupt)
29
30
31Example:
32
33 pdc_gpios: gpio-controller@02006500 {
34 gpio-controller;
35 #gpio-cells = <2>;
36
37 compatible = "img,tz1090-pdc-gpio";
38 reg = <0x02006500 0x100>;
39
40 interrupt-parent = <&pdc>;
41 interrupts = <8 IRQ_TYPE_NONE>, /* Syswake 0 */
42 <9 IRQ_TYPE_NONE>, /* Syswake 1 */
43 <10 IRQ_TYPE_NONE>; /* Syswake 2 */
44 gpio-ranges = <&pdc_pinctrl 0 0 7>;
45 };
diff --git a/Documentation/devicetree/bindings/gpio/gpio-tz1090.txt b/Documentation/devicetree/bindings/gpio/gpio-tz1090.txt
new file mode 100644
index 000000000000..174cdf309170
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-tz1090.txt
@@ -0,0 +1,88 @@
1ImgTec TZ1090 GPIO Controller
2
3Required properties:
4- compatible: Compatible property value should be "img,tz1090-gpio".
5
6- reg: Physical base address of the controller and length of memory mapped
7 region.
8
9- #address-cells: Should be 1 (for bank subnodes)
10
11- #size-cells: Should be 0 (for bank subnodes)
12
13- Each bank of GPIOs should have a subnode to represent it.
14
15 Bank subnode required properties:
16 - reg: Index of bank in the range 0 to 2.
17
18 - gpio-controller: Specifies that the node is a gpio controller.
19
20 - #gpio-cells: Should be 2. The syntax of the gpio specifier used by client
21 nodes should have the following values.
22 <[phandle of the gpio controller node]
23 [gpio number within the gpio bank]
24 [gpio flags]>
25
26 Values for gpio specifier:
27 - GPIO number: a value in the range 0 to 29.
28 - GPIO flags: bit field of flags, as defined in <dt-bindings/gpio/gpio.h>.
29 Only the following flags are supported:
30 GPIO_ACTIVE_HIGH
31 GPIO_ACTIVE_LOW
32
33 Bank subnode optional properties:
34 - gpio-ranges: Mapping to pin controller pins (as described in
35 Documentation/devicetree/bindings/gpio/gpio.txt)
36
37 - interrupts: Interrupt for the entire bank
38
39 - interrupt-controller: Specifies that the node is an interrupt controller
40
41 - #interrupt-cells: Should be 2. The syntax of the interrupt specifier used by
42 client nodes should have the following values.
43 <[phandle of the interurupt controller]
44 [gpio number within the gpio bank]
45 [irq flags]>
46
47 Values for irq specifier:
48 - GPIO number: a value in the range 0 to 29
49 - IRQ flags: value to describe edge and level triggering, as defined in
50 <dt-bindings/interrupt-controller/irq.h>. Only the following flags are
51 supported:
52 IRQ_TYPE_EDGE_RISING
53 IRQ_TYPE_EDGE_FALLING
54 IRQ_TYPE_EDGE_BOTH
55 IRQ_TYPE_LEVEL_HIGH
56 IRQ_TYPE_LEVEL_LOW
57
58
59
60Example:
61
62 gpios: gpio-controller@02005800 {
63 #address-cells = <1>;
64 #size-cells = <0>;
65 compatible = "img,tz1090-gpio";
66 reg = <0x02005800 0x90>;
67
68 /* bank 0 with an interrupt */
69 gpios0: bank@0 {
70 #gpio-cells = <2>;
71 #interrupt-cells = <2>;
72 reg = <0>;
73 interrupts = <13 IRQ_TYPE_LEVEL_HIGH>;
74 gpio-controller;
75 gpio-ranges = <&pinctrl 0 0 30>;
76 interrupt-controller;
77 };
78
79 /* bank 2 without interrupt */
80 gpios2: bank@2 {
81 #gpio-cells = <2>;
82 reg = <2>;
83 gpio-controller;
84 gpio-ranges = <&pinctrl 0 60 30>;
85 };
86 };
87
88
diff --git a/Documentation/devicetree/bindings/gpio/gpio.txt b/Documentation/devicetree/bindings/gpio/gpio.txt
index d933af370697..0c85bb6e3a80 100644
--- a/Documentation/devicetree/bindings/gpio/gpio.txt
+++ b/Documentation/devicetree/bindings/gpio/gpio.txt
@@ -75,23 +75,51 @@ Example of two SOC GPIO banks defined as gpio-controller nodes:
75 gpio-controller; 75 gpio-controller;
76 }; 76 };
77 77
782.1) gpio-controller and pinctrl subsystem 782.1) gpio- and pin-controller interaction
79------------------------------------------ 79-----------------------------------------
80 80
81gpio-controller on a SOC might be tightly coupled with the pinctrl 81Some or all of the GPIOs provided by a GPIO controller may be routed to pins
82subsystem, in the sense that the pins can be used by other functions 82on the package via a pin controller. This allows muxing those pins between
83together with optional gpio feature. 83GPIO and other functions.
84 84
85While the pin allocation is totally managed by the pin ctrl subsystem, 85It is useful to represent which GPIOs correspond to which pins on which pin
86gpio (under gpiolib) is still maintained by gpio drivers. It may happen 86controllers. The gpio-ranges property described below represents this, and
87that different pin ranges in a SoC is managed by different gpio drivers. 87contains information structures as follows:
88 88
89This makes it logical to let gpio drivers announce their pin ranges to 89 gpio-range-list ::= <single-gpio-range> [gpio-range-list]
90the pin ctrl subsystem and call 'pinctrl_request_gpio' in order to 90 single-gpio-range ::= <numeric-gpio-range> | <named-gpio-range>
91request the corresponding pin before any gpio usage. 91 numeric-gpio-range ::=
92 92 <pinctrl-phandle> <gpio-base> <pinctrl-base> <count>
93For this, the gpio controller can use a pinctrl phandle and pins to 93 named-gpio-range ::= <pinctrl-phandle> <gpio-base> '<0 0>'
94announce the pinrange to the pin ctrl subsystem. For example, 94 gpio-phandle : phandle to pin controller node.
95 gpio-base : Base GPIO ID in the GPIO controller
96 pinctrl-base : Base pinctrl pin ID in the pin controller
97 count : The number of GPIOs/pins in this range
98
99The "pin controller node" mentioned above must conform to the bindings
100described in ../pinctrl/pinctrl-bindings.txt.
101
102In case named gpio ranges are used (ranges with both <pinctrl-base> and
103<count> set to 0), the property gpio-ranges-group-names contains one string
104for every single-gpio-range in gpio-ranges:
105 gpiorange-names-list ::= <gpiorange-name> [gpiorange-names-list]
106 gpiorange-name : Name of the pingroup associated to the GPIO range in
107 the respective pin controller.
108
109Elements of gpiorange-names-list corresponding to numeric ranges contain
110the empty string. Elements of gpiorange-names-list corresponding to named
111ranges contain the name of a pin group defined in the respective pin
112controller. The number of pins/GPIOs in the range is the number of pins in
113that pin group.
114
115Previous versions of this binding required all pin controller nodes that
116were referenced by any gpio-ranges property to contain a property named
117#gpio-range-cells with value <3>. This requirement is now deprecated.
118However, that property may still exist in older device trees for
119compatibility reasons, and would still be required even in new device
120trees that need to be compatible with older software.
121
122Example 1:
95 123
96 qe_pio_e: gpio-controller@1460 { 124 qe_pio_e: gpio-controller@1460 {
97 #gpio-cells = <2>; 125 #gpio-cells = <2>;
@@ -99,16 +127,29 @@ announce the pinrange to the pin ctrl subsystem. For example,
99 reg = <0x1460 0x18>; 127 reg = <0x1460 0x18>;
100 gpio-controller; 128 gpio-controller;
101 gpio-ranges = <&pinctrl1 0 20 10>, <&pinctrl2 10 50 20>; 129 gpio-ranges = <&pinctrl1 0 20 10>, <&pinctrl2 10 50 20>;
130 };
102 131
103 } 132Here, a single GPIO controller has GPIOs 0..9 routed to pin controller
133pinctrl1's pins 20..29, and GPIOs 10..19 routed to pin controller pinctrl2's
134pins 50..59.
104 135
105where, 136Example 2:
106 &pinctrl1 and &pinctrl2 is the phandle to the pinctrl DT node.
107 137
108 Next values specify the base pin and number of pins for the range 138 gpio_pio_i: gpio-controller@14B0 {
109 handled by 'qe_pio_e' gpio. In the given example from base pin 20 to 139 #gpio-cells = <2>;
110 pin 29 under pinctrl1 with gpio offset 0 and pin 50 to pin 69 under 140 compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank";
111 pinctrl2 with gpio offset 10 is handled by this gpio controller. 141 reg = <0x1480 0x18>;
142 gpio-controller;
143 gpio-ranges = <&pinctrl1 0 20 10>,
144 <&pinctrl2 10 0 0>,
145 <&pinctrl1 15 0 10>,
146 <&pinctrl2 25 0 0>;
147 gpio-ranges-group-names = "",
148 "foo",
149 "",
150 "bar";
151 };
112 152
113The pinctrl node must have "#gpio-range-cells" property to show number of 153Here, three GPIO ranges are defined wrt. two pin controllers. pinctrl1 GPIO
114arguments to pass with phandle from gpio controllers node. 154ranges are defined using pin numbers whereas the GPIO ranges wrt. pinctrl2
155are named "foo" and "bar".
diff --git a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt b/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
index 9b3f1d4a88d6..66416261e14d 100644
--- a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
+++ b/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
@@ -10,8 +10,9 @@ Required properties:
10 There're three gpio interrupts in arch-pxa, and they're gpio0, 10 There're three gpio interrupts in arch-pxa, and they're gpio0,
11 gpio1 and gpio_mux. There're only one gpio interrupt in arch-mmp, 11 gpio1 and gpio_mux. There're only one gpio interrupt in arch-mmp,
12 gpio_mux. 12 gpio_mux.
13- interrupt-name : Should be the name of irq resource. Each interrupt 13- interrupt-names : Should be the names of irq resources. Each interrupt
14 binds its interrupt-name. 14 uses its own interrupt name, so there should be as many interrupt names
15 as referenced interrups.
15- interrupt-controller : Identifies the node as an interrupt controller. 16- interrupt-controller : Identifies the node as an interrupt controller.
16- #interrupt-cells: Specifies the number of cells needed to encode an 17- #interrupt-cells: Specifies the number of cells needed to encode an
17 interrupt source. 18 interrupt source.
@@ -24,7 +25,7 @@ Example:
24 compatible = "marvell,mmp-gpio"; 25 compatible = "marvell,mmp-gpio";
25 reg = <0xd4019000 0x1000>; 26 reg = <0xd4019000 0x1000>;
26 interrupts = <49>; 27 interrupts = <49>;
27 interrupt-name = "gpio_mux"; 28 interrupt-names = "gpio_mux";
28 gpio-controller; 29 gpio-controller;
29 #gpio-cells = <1>; 30 #gpio-cells = <1>;
30 interrupt-controller; 31 interrupt-controller;
diff --git a/Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt b/Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt
index cb3dc7bcd8e6..8655df9440d5 100644
--- a/Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt
+++ b/Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt
@@ -23,6 +23,10 @@ Required Properties:
23Please refer to gpio.txt in this directory for details of gpio-ranges property 23Please refer to gpio.txt in this directory for details of gpio-ranges property
24and the common GPIO bindings used by client devices. 24and the common GPIO bindings used by client devices.
25 25
26The GPIO controller also acts as an interrupt controller. It uses the default
27two cells specifier as described in Documentation/devicetree/bindings/
28interrupt-controller/interrupts.txt.
29
26Example: R8A7779 (R-Car H1) GPIO controller nodes 30Example: R8A7779 (R-Car H1) GPIO controller nodes
27 31
28 gpio0: gpio@ffc40000 { 32 gpio0: gpio@ffc40000 {
@@ -33,6 +37,8 @@ Example: R8A7779 (R-Car H1) GPIO controller nodes
33 #gpio-cells = <2>; 37 #gpio-cells = <2>;
34 gpio-controller; 38 gpio-controller;
35 gpio-ranges = <&pfc 0 0 32>; 39 gpio-ranges = <&pfc 0 0 32>;
40 interrupt-controller;
41 #interrupt-cells = <2>;
36 }; 42 };
37 ... 43 ...
38 gpio6: gpio@ffc46000 { 44 gpio6: gpio@ffc46000 {
@@ -43,4 +49,6 @@ Example: R8A7779 (R-Car H1) GPIO controller nodes
43 #gpio-cells = <2>; 49 #gpio-cells = <2>;
44 gpio-controller; 50 gpio-controller;
45 gpio-ranges = <&pfc 0 192 9>; 51 gpio-ranges = <&pfc 0 192 9>;
52 interrupt-controller;
53 #interrupt-cells = <2>;
46 }; 54 };
diff --git a/Documentation/devicetree/bindings/gpu/samsung-g2d.txt b/Documentation/devicetree/bindings/gpu/samsung-g2d.txt
index 3f454ffc654a..c4f358dafdaa 100644
--- a/Documentation/devicetree/bindings/gpu/samsung-g2d.txt
+++ b/Documentation/devicetree/bindings/gpu/samsung-g2d.txt
@@ -11,8 +11,11 @@ Required properties:
11 11
12 - interrupts : G2D interrupt number to the CPU. 12 - interrupts : G2D interrupt number to the CPU.
13 - clocks : from common clock binding: handle to G2D clocks. 13 - clocks : from common clock binding: handle to G2D clocks.
14 - clock-names : from common clock binding: must contain "sclk_fimg2d" and 14 - clock-names : names of clocks listed in clocks property, in the same
15 "fimg2d", corresponding to entries in the clocks property. 15 order, depending on SoC type:
16 - for S5PV210 and Exynos4 based SoCs: "fimg2d" and
17 "sclk_fimg2d"
18 - for Exynos5250 SoC: "fimg2d".
16 19
17Example: 20Example:
18 g2d@12800000 { 21 g2d@12800000 {
diff --git a/Documentation/devicetree/bindings/gpu/samsung-rotator.txt b/Documentation/devicetree/bindings/gpu/samsung-rotator.txt
new file mode 100644
index 000000000000..82cd1ed0be93
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpu/samsung-rotator.txt
@@ -0,0 +1,27 @@
1* Samsung Image Rotator
2
3Required properties:
4 - compatible : value should be one of the following:
5 (a) "samsung,exynos4210-rotator" for Rotator IP in Exynos4210
6 (b) "samsung,exynos4212-rotator" for Rotator IP in Exynos4212/4412
7 (c) "samsung,exynos5250-rotator" for Rotator IP in Exynos5250
8
9 - reg : Physical base address of the IP registers and length of memory
10 mapped region.
11
12 - interrupts : Interrupt specifier for rotator interrupt, according to format
13 specific to interrupt parent.
14
15 - clocks : Clock specifier for rotator clock, according to generic clock
16 bindings. (See Documentation/devicetree/bindings/clock/exynos*.txt)
17
18 - clock-names : Names of clocks. For exynos rotator, it should be "rotator".
19
20Example:
21 rotator@12810000 {
22 compatible = "samsung,exynos4210-rotator";
23 reg = <0x12810000 0x1000>;
24 interrupts = <0 83 0>;
25 clocks = <&clock 278>;
26 clock-names = "rotator";
27 };
diff --git a/Documentation/devicetree/bindings/hid/hid-over-i2c.txt b/Documentation/devicetree/bindings/hid/hid-over-i2c.txt
new file mode 100644
index 000000000000..488edcb264c4
--- /dev/null
+++ b/Documentation/devicetree/bindings/hid/hid-over-i2c.txt
@@ -0,0 +1,28 @@
1* HID over I2C Device-Tree bindings
2
3HID over I2C provides support for various Human Interface Devices over the
4I2C bus. These devices can be for example touchpads, keyboards, touch screens
5or sensors.
6
7The specification has been written by Microsoft and is currently available here:
8http://msdn.microsoft.com/en-us/library/windows/hardware/hh852380.aspx
9
10If this binding is used, the kernel module i2c-hid will handle the communication
11with the device and the generic hid core layer will handle the protocol.
12
13Required properties:
14- compatible: must be "hid-over-i2c"
15- reg: i2c slave address
16- hid-descr-addr: HID descriptor address
17- interrupt-parent: the phandle for the interrupt controller
18- interrupts: interrupt line
19
20Example:
21
22 i2c-hid-dev@2c {
23 compatible = "hid-over-i2c";
24 reg = <0x2c>;
25 hid-descr-addr = <0x0020>;
26 interrupt-parent = <&gpx3>;
27 interrupts = <3 2>;
28 };
diff --git a/Documentation/devicetree/bindings/hwrng/omap_rng.txt b/Documentation/devicetree/bindings/hwrng/omap_rng.txt
new file mode 100644
index 000000000000..6a62acd86953
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwrng/omap_rng.txt
@@ -0,0 +1,22 @@
1OMAP SoC HWRNG Module
2
3Required properties:
4
5- compatible : Should contain entries for this and backward compatible
6 RNG versions:
7 - "ti,omap2-rng" for OMAP2.
8 - "ti,omap4-rng" for OMAP4, OMAP5 and AM33XX.
9 Note that these two versions are incompatible.
10- ti,hwmods: Name of the hwmod associated with the RNG module
11- reg : Offset and length of the register set for the module
12- interrupts : the interrupt number for the RNG module.
13 Only used for "ti,omap4-rng".
14
15Example:
16/* AM335x */
17rng: rng@48310000 {
18 compatible = "ti,omap4-rng";
19 ti,hwmods = "rng";
20 reg = <0x48310000 0x2000>;
21 interrupts = <111>;
22};
diff --git a/Documentation/devicetree/bindings/i2c/i2c-imx.txt b/Documentation/devicetree/bindings/i2c/i2c-imx.txt
index 3614242e7732..4a8513e44740 100644
--- a/Documentation/devicetree/bindings/i2c/i2c-imx.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-imx.txt
@@ -1,7 +1,10 @@
1* Freescale Inter IC (I2C) and High Speed Inter IC (HS-I2C) for i.MX 1* Freescale Inter IC (I2C) and High Speed Inter IC (HS-I2C) for i.MX
2 2
3Required properties: 3Required properties:
4- compatible : Should be "fsl,<chip>-i2c" 4- compatible :
5 - "fsl,imx1-i2c" for I2C compatible with the one integrated on i.MX1 SoC
6 - "fsl,imx21-i2c" for I2C compatible with the one integrated on i.MX21 SoC
7 - "fsl,vf610-i2c" for I2C compatible with the one integrated on Vybrid vf610 SoC
5- reg : Should contain I2C/HS-I2C registers location and length 8- reg : Should contain I2C/HS-I2C registers location and length
6- interrupts : Should contain I2C/HS-I2C interrupt 9- interrupts : Should contain I2C/HS-I2C interrupt
7 10
diff --git a/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt b/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt
index 6113f9275f42..82e8f6f17179 100644
--- a/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt
@@ -5,6 +5,7 @@ Required properties :
5 5
6 - reg : Offset and length of the register set for the device 6 - reg : Offset and length of the register set for the device
7 - compatible : Should be "marvell,mv64xxx-i2c" or "allwinner,sun4i-i2c" 7 - compatible : Should be "marvell,mv64xxx-i2c" or "allwinner,sun4i-i2c"
8 or "marvell,mv78230-i2c"
8 - interrupts : The interrupt number 9 - interrupts : The interrupt number
9 10
10Optional properties : 11Optional properties :
@@ -20,3 +21,12 @@ Examples:
20 interrupts = <29>; 21 interrupts = <29>;
21 clock-frequency = <100000>; 22 clock-frequency = <100000>;
22 }; 23 };
24
25For the Armada XP:
26
27 i2c@11000 {
28 compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c";
29 reg = <0x11000 0x100>;
30 interrupts = <29>;
31 clock-frequency = <100000>;
32 };
diff --git a/Documentation/devicetree/bindings/iio/accel/bma180.txt b/Documentation/devicetree/bindings/iio/accel/bma180.txt
new file mode 100644
index 000000000000..c5933573e0f6
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/accel/bma180.txt
@@ -0,0 +1,24 @@
1* Bosch BMA180 triaxial acceleration sensor
2
3http://omapworld.com/BMA180_111_1002839.pdf
4
5Required properties:
6
7 - compatible : should be "bosch,bma180"
8 - reg : the I2C address of the sensor
9
10Optional properties:
11
12 - interrupt-parent : should be the phandle for the interrupt controller
13
14 - interrupts : interrupt mapping for GPIO IRQ, it should by configured with
15 flags IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_EDGE_RISING
16
17Example:
18
19bma180@40 {
20 compatible = "bosch,bma180";
21 reg = <0x40>;
22 interrupt-parent = <&gpio6>;
23 interrupts = <18 (IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_EDGE_RISING)>;
24};
diff --git a/Documentation/devicetree/bindings/iio/adc/nuvoton-nau7802.txt b/Documentation/devicetree/bindings/iio/adc/nuvoton-nau7802.txt
new file mode 100644
index 000000000000..e9582e6fe350
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/adc/nuvoton-nau7802.txt
@@ -0,0 +1,18 @@
1* Nuvoton NAU7802 Analog to Digital Converter (ADC)
2
3Required properties:
4 - compatible: Should be "nuvoton,nau7802"
5 - reg: Should contain the ADC I2C address
6
7Optional properties:
8 - nuvoton,vldo: Internal reference voltage in millivolts to be
9 configured valid values are between 2400 mV and 4500 mV.
10 - interrupts: IRQ line for the ADC. If not used the driver will use
11 polling.
12
13Example:
14adc2: nau7802@2a {
15 compatible = "nuvoton,nau7802";
16 reg = <0x2a>;
17 nuvoton,vldo = <3000>;
18};
diff --git a/Documentation/devicetree/bindings/iio/light/apds9300.txt b/Documentation/devicetree/bindings/iio/light/apds9300.txt
new file mode 100644
index 000000000000..d6f66c73ddbf
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/light/apds9300.txt
@@ -0,0 +1,22 @@
1* Avago APDS9300 ambient light sensor
2
3http://www.avagotech.com/docs/AV02-1077EN
4
5Required properties:
6
7 - compatible : should be "avago,apds9300"
8 - reg : the I2C address of the sensor
9
10Optional properties:
11
12 - interrupt-parent : should be the phandle for the interrupt controller
13 - interrupts : interrupt mapping for GPIO IRQ
14
15Example:
16
17apds9300@39 {
18 compatible = "avago,apds9300";
19 reg = <0x39>;
20 interrupt-parent = <&gpio2>;
21 interrupts = <29 8>;
22};
diff --git a/Documentation/devicetree/bindings/iio/light/cm36651.txt b/Documentation/devicetree/bindings/iio/light/cm36651.txt
new file mode 100644
index 000000000000..c03e19db4550
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/light/cm36651.txt
@@ -0,0 +1,26 @@
1* Capella CM36651 I2C Proximity and Color Light sensor
2
3Required properties:
4- compatible: must be "capella,cm36651"
5- reg: the I2C address of the device
6- interrupts: interrupt-specifier for the sole interrupt
7 generated by the device
8- vled-supply: regulator for the IR LED. IR_LED is a part
9 of the cm36651 for proximity detection.
10 As covered in ../../regulator/regulator.txt
11
12Example:
13
14 i2c_cm36651: i2c-gpio {
15 /* ... */
16
17 cm36651@18 {
18 compatible = "capella,cm36651";
19 reg = <0x18>;
20 interrupt-parent = <&gpx0>;
21 interrupts = <2 0>;
22 vled-supply = <&ps_als_reg>;
23 };
24
25 /* ... */
26 };
diff --git a/Documentation/devicetree/bindings/iio/light/gp2ap020a00f.txt b/Documentation/devicetree/bindings/iio/light/gp2ap020a00f.txt
new file mode 100644
index 000000000000..9231c82317ad
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/light/gp2ap020a00f.txt
@@ -0,0 +1,21 @@
1* Sharp GP2AP020A00F I2C Proximity/ALS sensor
2
3The proximity detector sensor requires power supply
4for its built-in led. It is also defined by this binding.
5
6Required properties:
7
8 - compatible : should be "sharp,gp2ap020a00f"
9 - reg : the I2C slave address of the light sensor
10 - interrupts : interrupt specifier for the sole interrupt generated
11 by the device
12 - vled-supply : VLED power supply, as covered in ../regulator/regulator.txt
13
14Example:
15
16gp2ap020a00f@39 {
17 compatible = "sharp,gp2ap020a00f";
18 reg = <0x39>;
19 interrupts = <2 0>;
20 vled-supply = <...>;
21};
diff --git a/Documentation/devicetree/bindings/input/input-reset.txt b/Documentation/devicetree/bindings/input/input-reset.txt
new file mode 100644
index 000000000000..2bb2626fdb78
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/input-reset.txt
@@ -0,0 +1,33 @@
1Input: sysrq reset sequence
2
3A simple binding to represent a set of keys as described in
4include/uapi/linux/input.h. This is to communicate a sequence of keys to the
5sysrq driver. Upon holding the keys for a specified amount of time (if
6specified) the system is sync'ed and reset.
7
8Key sequences are global to the system but all the keys in a set must be coming
9from the same input device.
10
11The /chosen node should contain a 'linux,sysrq-reset-seq' child node to define
12a set of keys.
13
14Required property:
15sysrq-reset-seq: array of Linux keycodes, one keycode per cell.
16
17Optional property:
18timeout-ms: duration keys must be pressed together in milliseconds before
19generating a sysrq. If omitted the system is rebooted immediately when a valid
20sequence has been recognized.
21
22Example:
23
24 chosen {
25 linux,sysrq-reset-seq {
26 keyset = <0x03
27 0x04
28 0x0a>;
29 timeout-ms = <3000>;
30 };
31 };
32
33Would represent KEY_2, KEY_3 and KEY_9.
diff --git a/Documentation/devicetree/bindings/input/touchscreen/egalax-ts.txt b/Documentation/devicetree/bindings/input/touchscreen/egalax-ts.txt
index df70318a617f..49fa14ed155c 100644
--- a/Documentation/devicetree/bindings/input/touchscreen/egalax-ts.txt
+++ b/Documentation/devicetree/bindings/input/touchscreen/egalax-ts.txt
@@ -6,7 +6,7 @@ Required properties:
6- interrupt-parent: the phandle for the interrupt controller 6- interrupt-parent: the phandle for the interrupt controller
7- interrupts: touch controller interrupt 7- interrupts: touch controller interrupt
8- wakeup-gpios: the gpio pin to be used for waking up the controller 8- wakeup-gpios: the gpio pin to be used for waking up the controller
9 as well as uased as irq pin 9 and also used as irq pin
10 10
11Example: 11Example:
12 12
diff --git a/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt b/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt
index 57edb30dbbca..3d3b2b91e333 100644
--- a/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt
+++ b/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt
@@ -8,9 +8,6 @@ Required properties:
8- #interrupt-cells : Specifies the number of cells needed to encode an 8- #interrupt-cells : Specifies the number of cells needed to encode an
9 interrupt source. The value shall be 1. 9 interrupt source. The value shall be 1.
10 10
11For the valid interrupt sources for your SoC, see the documentation in
12sunxi/<soc>.txt
13
14Example: 11Example:
15 12
16intc: interrupt-controller { 13intc: interrupt-controller {
diff --git a/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt b/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
index 72a06c0ab1db..1486497a24c1 100644
--- a/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
+++ b/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
@@ -4,16 +4,33 @@ Specifying interrupt information for devices
41) Interrupt client nodes 41) Interrupt client nodes
5------------------------- 5-------------------------
6 6
7Nodes that describe devices which generate interrupts must contain an 7Nodes that describe devices which generate interrupts must contain an either an
8"interrupts" property. This property must contain a list of interrupt 8"interrupts" property or an "interrupts-extended" property. These properties
9specifiers, one per output interrupt. The format of the interrupt specifier is 9contain a list of interrupt specifiers, one per output interrupt. The format of
10determined by the interrupt controller to which the interrupts are routed; see 10the interrupt specifier is determined by the interrupt controller to which the
11section 2 below for details. 11interrupts are routed; see section 2 below for details.
12
13 Example:
14 interrupt-parent = <&intc1>;
15 interrupts = <5 0>, <6 0>;
12 16
13The "interrupt-parent" property is used to specify the controller to which 17The "interrupt-parent" property is used to specify the controller to which
14interrupts are routed and contains a single phandle referring to the interrupt 18interrupts are routed and contains a single phandle referring to the interrupt
15controller node. This property is inherited, so it may be specified in an 19controller node. This property is inherited, so it may be specified in an
16interrupt client node or in any of its parent nodes. 20interrupt client node or in any of its parent nodes. Interrupts listed in the
21"interrupts" property are always in reference to the node's interrupt parent.
22
23The "interrupts-extended" property is a special form for use when a node needs
24to reference multiple interrupt parents. Each entry in this property contains
25both the parent phandle and the interrupt specifier. "interrupts-extended"
26should only be used when a device has multiple interrupt parents.
27
28 Example:
29 interrupts-extended = <&intc1 5 1>, <&intc2 1 0>;
30
31A device node may contain either "interrupts" or "interrupts-extended", but not
32both. If both properties are present, then the operating system should log an
33error and use only the data in "interrupts".
17 34
182) Interrupt controller nodes 352) Interrupt controller nodes
19----------------------------- 36-----------------------------
diff --git a/Documentation/devicetree/bindings/interrupt-controller/sunxi/sun4i-a10.txt b/Documentation/devicetree/bindings/interrupt-controller/sunxi/sun4i-a10.txt
deleted file mode 100644
index 76b98c834499..000000000000
--- a/Documentation/devicetree/bindings/interrupt-controller/sunxi/sun4i-a10.txt
+++ /dev/null
@@ -1,89 +0,0 @@
1Allwinner A10 (sun4i) interrupt sources
2---------------------------------------
3
4The interrupt sources available for the Allwinner A10 SoC are the
5following one:
6
70: ENMI
81: UART0
92: UART1
103: UART2
114: UART3
125: IR0
136: IR1
147: I2C0
158: I2C1
169: I2C2
1710: SPI0
1811: SPI1
1912: SPI2
2013: SPDIF
2114: AC97
2215: TS
2316: I2S
2417: UART4
2518: UART5
2619: UART6
2720: UART7
2821: KEYPAD
2922: TIMER0
3023: TIMER1
3124: TIMER2
3225: TIMER3
3326: CAN
3427: DMA
3528: PIO
3629: TOUCH_PANEL
3730: AUDIO_CODEC
3831: LRADC
3932: MMC0
4033: MMC1
4134: MMC2
4235: MMC3
4336: MEMSTICK
4437: NAND
4538: USB0
4639: USB1
4740: USB2
4841: SCR
4942: CSI0
5043: CSI1
5144: LCDCTRL0
5245: LCDCTRL1
5346: MP
5447: DEFEBE0
5548: DEFEBE1
5649: PMU
5750: SPI3
5851: TZASC
5952: PATA
6053: VE
6154: SS
6255: EMAC
6356: SATA
6457: GPS
6558: HDMI
6659: TVE
6760: ACE
6861: TVD
6962: PS2_0
7063: PS2_1
7164: USB3
7265: USB4
7366: PLE_PFM
7467: TIMER4
7568: TIMER5
7669: GPU_GP
7770: GPU_GPMMU
7871: GPU_PP0
7972: GPU_PPMMU0
8073: GPU_PMU
8174: GPU_RSV0
8275: GPU_RSV1
8376: GPU_RSV2
8477: GPU_RSV3
8578: GPU_RSV4
8679: GPU_RSV5
8780: GPU_RSV6
8882: SYNC_TIMER0
8983: SYNC_TIMER1
diff --git a/Documentation/devicetree/bindings/interrupt-controller/sunxi/sun5i-a13.txt b/Documentation/devicetree/bindings/interrupt-controller/sunxi/sun5i-a13.txt
deleted file mode 100644
index 2ec3b5ce1a0b..000000000000
--- a/Documentation/devicetree/bindings/interrupt-controller/sunxi/sun5i-a13.txt
+++ /dev/null
@@ -1,55 +0,0 @@
1Allwinner A13 (sun5i) interrupt sources
2---------------------------------------
3
4The interrupt sources available for the Allwinner A13 SoC are the
5following one:
6
70: ENMI
82: UART1
94: UART3
105: IR
117: I2C0
128: I2C1
139: I2C2
1410: SPI0
1511: SPI1
1612: SPI2
1722: TIMER0
1823: TIMER1
1924: TIMER2
2025: TIMER3
2127: DMA
2228: PIO
2329: TOUCH_PANEL
2430: AUDIO_CODEC
2531: LRADC
2632: MMC0
2733: MMC1
2834: MMC2
2937: NAND
3038: USB OTG
3139: USB EHCI
3240: USB OHCI
3342: CSI
3444: LCDCTRL
3547: DEFEBE
3649: PMU
3753: VE
3854: SS
3966: PLE_PFM
4067: TIMER4
4168: TIMER5
4269: GPU_GP
4370: GPU_GPMMU
4471: GPU_PP0
4572: GPU_PPMMU0
4673: GPU_PMU
4774: GPU_RSV0
4875: GPU_RSV1
4976: GPU_RSV2
5077: GPU_RSV3
5178: GPU_RSV4
5279: GPU_RSV5
5380: GPU_RSV6
5482: SYNC_TIMER0
5583: SYNC_TIMER1
diff --git a/Documentation/devicetree/bindings/leds/leds-lp55xx.txt b/Documentation/devicetree/bindings/leds/leds-lp55xx.txt
index d5176882d8b9..c55b8c016a9e 100644
--- a/Documentation/devicetree/bindings/leds/leds-lp55xx.txt
+++ b/Documentation/devicetree/bindings/leds/leds-lp55xx.txt
@@ -1,7 +1,7 @@
1Binding for TI/National Semiconductor LP55xx Led Drivers 1Binding for TI/National Semiconductor LP55xx Led Drivers
2 2
3Required properties: 3Required properties:
4- compatible: "national,lp5521" or "national,lp5523" or "ti,lp5562" 4- compatible: "national,lp5521" or "national,lp5523" or "ti,lp5562" or "ti,lp8501"
5- reg: I2C slave address 5- reg: I2C slave address
6- clock-mode: Input clock mode, (0: automode, 1: internal, 2: external) 6- clock-mode: Input clock mode, (0: automode, 1: internal, 2: external)
7 7
@@ -10,14 +10,23 @@ Each child has own specific current settings
10- max-cur: Maximun current at each led channel. 10- max-cur: Maximun current at each led channel.
11 11
12Optional properties: 12Optional properties:
13- enable-gpio: GPIO attached to the chip's enable pin
13- label: Used for naming LEDs 14- label: Used for naming LEDs
15- pwr-sel: LP8501 specific property. Power selection for output channels.
16 0: D1~9 are connected to VDD
17 1: D1~6 with VDD, D7~9 with VOUT
18 2: D1~6 with VOUT, D7~9 with VDD
19 3: D1~9 are connected to VOUT
14 20
15Alternatively, each child can have specific channel name 21Alternatively, each child can have a specific channel name and trigger:
16- chan-name: Name of each channel name 22- chan-name (optional): name of channel
23- linux,default-trigger (optional): see
24 Documentation/devicetree/bindings/leds/common.txt
17 25
18example 1) LP5521 26example 1) LP5521
193 LED channels, external clock used. Channel names are 'lp5521_pri:channel0', 273 LED channels, external clock used. Channel names are 'lp5521_pri:channel0',
20'lp5521_pri:channel1' and 'lp5521_pri:channel2' 28'lp5521_pri:channel1' and 'lp5521_pri:channel2', with a heartbeat trigger
29on channel 0.
21 30
22lp5521@32 { 31lp5521@32 {
23 compatible = "national,lp5521"; 32 compatible = "national,lp5521";
@@ -28,6 +37,7 @@ lp5521@32 {
28 chan0 { 37 chan0 {
29 led-cur = /bits/ 8 <0x2f>; 38 led-cur = /bits/ 8 <0x2f>;
30 max-cur = /bits/ 8 <0x5f>; 39 max-cur = /bits/ 8 <0x5f>;
40 linux,default-trigger = "heartbeat";
31 }; 41 };
32 42
33 chan1 { 43 chan1 {
@@ -145,3 +155,68 @@ lp5562@30 {
145 max-cur = /bits/ 8 <0x60>; 155 max-cur = /bits/ 8 <0x60>;
146 }; 156 };
147}; 157};
158
159example 4) LP8501
1609 channels are defined. The 'pwr-sel' is LP8501 specific property.
161Others are same as LP5523.
162
163lp8501@32 {
164 compatible = "ti,lp8501";
165 reg = <0x32>;
166 clock-mode = /bits/ 8 <2>;
167 pwr-sel = /bits/ 8 <3>; /* D1~9 connected to VOUT */
168
169 chan0 {
170 chan-name = "d1";
171 led-cur = /bits/ 8 <0x14>;
172 max-cur = /bits/ 8 <0x20>;
173 };
174
175 chan1 {
176 chan-name = "d2";
177 led-cur = /bits/ 8 <0x14>;
178 max-cur = /bits/ 8 <0x20>;
179 };
180
181 chan2 {
182 chan-name = "d3";
183 led-cur = /bits/ 8 <0x14>;
184 max-cur = /bits/ 8 <0x20>;
185 };
186
187 chan3 {
188 chan-name = "d4";
189 led-cur = /bits/ 8 <0x14>;
190 max-cur = /bits/ 8 <0x20>;
191 };
192
193 chan4 {
194 chan-name = "d5";
195 led-cur = /bits/ 8 <0x14>;
196 max-cur = /bits/ 8 <0x20>;
197 };
198
199 chan5 {
200 chan-name = "d6";
201 led-cur = /bits/ 8 <0x14>;
202 max-cur = /bits/ 8 <0x20>;
203 };
204
205 chan6 {
206 chan-name = "d7";
207 led-cur = /bits/ 8 <0x14>;
208 max-cur = /bits/ 8 <0x20>;
209 };
210
211 chan7 {
212 chan-name = "d8";
213 led-cur = /bits/ 8 <0x14>;
214 max-cur = /bits/ 8 <0x20>;
215 };
216
217 chan8 {
218 chan-name = "d9";
219 led-cur = /bits/ 8 <0x14>;
220 max-cur = /bits/ 8 <0x20>;
221 };
222};
diff --git a/Documentation/devicetree/bindings/leds/pca963x.txt b/Documentation/devicetree/bindings/leds/pca963x.txt
new file mode 100644
index 000000000000..aece3eac1b63
--- /dev/null
+++ b/Documentation/devicetree/bindings/leds/pca963x.txt
@@ -0,0 +1,47 @@
1LEDs connected to pca9632, pca9633 or pca9634
2
3Required properties:
4- compatible : should be : "nxp,pca9632", "nxp,pca9633" or "nxp,pca9634"
5
6Optional properties:
7- nxp,totem-pole : use totem pole (push-pull) instead of default open-drain
8- nxp,hw-blink : use hardware blinking instead of software blinking
9
10Each led is represented as a sub-node of the nxp,pca963x device.
11
12LED sub-node properties:
13- label : (optional) see Documentation/devicetree/bindings/leds/common.txt
14- reg : number of LED line (could be from 0 to 3 in pca9632 or pca9633
15 or 0 to 7 in pca9634)
16- linux,default-trigger : (optional)
17 see Documentation/devicetree/bindings/leds/common.txt
18
19Examples:
20
21pca9632: pca9632 {
22 compatible = "nxp,pca9632";
23 #address-cells = <1>;
24 #size-cells = <0>;
25 reg = <0x62>;
26
27 red@0 {
28 label = "red";
29 reg = <0>;
30 linux,default-trigger = "none";
31 };
32 green@1 {
33 label = "green";
34 reg = <1>;
35 linux,default-trigger = "none";
36 };
37 blue@2 {
38 label = "blue";
39 reg = <2>;
40 linux,default-trigger = "none";
41 };
42 unused@3 {
43 label = "unused";
44 reg = <3>;
45 linux,default-trigger = "none";
46 };
47};
diff --git a/Documentation/devicetree/bindings/media/i2c/adv7343.txt b/Documentation/devicetree/bindings/media/i2c/adv7343.txt
new file mode 100644
index 000000000000..5653bc2428b8
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/adv7343.txt
@@ -0,0 +1,48 @@
1* Analog Devices adv7343 video encoder
2
3The ADV7343 are high speed, digital-to-analog video encoders in a 64-lead LQFP
4package. Six high speed, 3.3 V, 11-bit video DACs provide support for composite
5(CVBS), S-Video (Y-C), and component (YPrPb/RGB) analog outputs in standard
6definition (SD), enhanced definition (ED), or high definition (HD) video
7formats.
8
9Required Properties :
10- compatible: Must be "adi,adv7343"
11
12Optional Properties :
13- adi,power-mode-sleep-mode: on enable the current consumption is reduced to
14 micro ampere level. All DACs and the internal PLL
15 circuit are disabled.
16- adi,power-mode-pll-ctrl: PLL and oversampling control. This control allows
17 internal PLL 1 circuit to be powered down and the
18 oversampling to be switched off.
19- ad,adv7343-power-mode-dac: array configuring the power on/off DAC's 1..6,
20 0 = OFF and 1 = ON, Default value when this
21 property is not specified is <0 0 0 0 0 0>.
22- ad,adv7343-sd-config-dac-out: array configure SD DAC Output's 1 and 2, 0 = OFF
23 and 1 = ON, Default value when this property is
24 not specified is <0 0>.
25
26Example:
27
28i2c0@1c22000 {
29 ...
30 ...
31
32 adv7343@2a {
33 compatible = "adi,adv7343";
34 reg = <0x2a>;
35
36 port {
37 adv7343_1: endpoint {
38 adi,power-mode-sleep-mode;
39 adi,power-mode-pll-ctrl;
40 /* Use DAC1..3, DAC6 */
41 adi,dac-enable = <1 1 1 0 0 1>;
42 /* Use SD DAC output 1 */
43 adi,sd-dac-enable = <1 0>;
44 };
45 };
46 };
47 ...
48};
diff --git a/Documentation/devicetree/bindings/media/i2c/ths8200.txt b/Documentation/devicetree/bindings/media/i2c/ths8200.txt
new file mode 100644
index 000000000000..285f6ae7dfa9
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/ths8200.txt
@@ -0,0 +1,19 @@
1* Texas Instruments THS8200 video encoder
2
3The ths8200 device is a digital to analog converter used in DVD players, video
4recorders, set-top boxes.
5
6Required Properties :
7- compatible : value must be "ti,ths8200"
8
9Example:
10
11 i2c0@1c22000 {
12 ...
13 ...
14 ths8200@5c {
15 compatible = "ti,ths8200";
16 reg = <0x5c>;
17 };
18 ...
19 };
diff --git a/Documentation/devicetree/bindings/media/i2c/tvp7002.txt b/Documentation/devicetree/bindings/media/i2c/tvp7002.txt
new file mode 100644
index 000000000000..5f28b5d9abcc
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/tvp7002.txt
@@ -0,0 +1,53 @@
1* Texas Instruments TV7002 video decoder
2
3The TVP7002 device supports digitizing of video and graphics signal in RGB and
4YPbPr color space.
5
6Required Properties :
7- compatible : Must be "ti,tvp7002"
8
9Optional Properties:
10- hsync-active: HSYNC Polarity configuration for the bus. Default value when
11 this property is not specified is <0>.
12
13- vsync-active: VSYNC Polarity configuration for the bus. Default value when
14 this property is not specified is <0>.
15
16- pclk-sample: Clock polarity of the bus. Default value when this property is
17 not specified is <0>.
18
19- sync-on-green-active: Active state of Sync-on-green signal property of the
20 endpoint.
21 0 = Normal Operation (Active Low, Default)
22 1 = Inverted operation
23
24- field-even-active: Active-high Field ID output polarity control of the bus.
25 Under normal operation, the field ID output is set to logic 1 for an odd field
26 (field 1) and set to logic 0 for an even field (field 0).
27 0 = Normal Operation (Active Low, Default)
28 1 = FID output polarity inverted
29
30For further reading of port node refer Documentation/devicetree/bindings/media/
31video-interfaces.txt.
32
33Example:
34
35 i2c0@1c22000 {
36 ...
37 ...
38 tvp7002@5c {
39 compatible = "ti,tvp7002";
40 reg = <0x5c>;
41
42 port {
43 tvp7002_1: endpoint {
44 hsync-active = <1>;
45 vsync-active = <1>;
46 pclk-sample = <0>;
47 sync-on-green-active = <1>;
48 field-even-active = <0>;
49 };
50 };
51 };
52 ...
53 };
diff --git a/Documentation/devicetree/bindings/media/s5p-mfc.txt b/Documentation/devicetree/bindings/media/s5p-mfc.txt
index df37b0230c75..f4181680831b 100644
--- a/Documentation/devicetree/bindings/media/s5p-mfc.txt
+++ b/Documentation/devicetree/bindings/media/s5p-mfc.txt
@@ -10,14 +10,15 @@ Required properties:
10 - compatible : value should be either one among the following 10 - compatible : value should be either one among the following
11 (a) "samsung,mfc-v5" for MFC v5 present in Exynos4 SoCs 11 (a) "samsung,mfc-v5" for MFC v5 present in Exynos4 SoCs
12 (b) "samsung,mfc-v6" for MFC v6 present in Exynos5 SoCs 12 (b) "samsung,mfc-v6" for MFC v6 present in Exynos5 SoCs
13 (b) "samsung,mfc-v7" for MFC v7 present in Exynos5420 SoC
13 14
14 - reg : Physical base address of the IP registers and length of memory 15 - reg : Physical base address of the IP registers and length of memory
15 mapped region. 16 mapped region.
16 17
17 - interrupts : MFC interrupt number to the CPU. 18 - interrupts : MFC interrupt number to the CPU.
18 - clocks : from common clock binding: handle to mfc clocks. 19 - clocks : from common clock binding: handle to mfc clock.
19 - clock-names : from common clock binding: must contain "sclk_mfc" and "mfc", 20 - clock-names : from common clock binding: must contain "mfc",
20 corresponding to entries in the clocks property. 21 corresponding to entry in the clocks property.
21 22
22 - samsung,mfc-r : Base address of the first memory bank used by MFC 23 - samsung,mfc-r : Base address of the first memory bank used by MFC
23 for DMA contiguous memory allocation and its size. 24 for DMA contiguous memory allocation and its size.
@@ -37,8 +38,8 @@ mfc: codec@13400000 {
37 reg = <0x13400000 0x10000>; 38 reg = <0x13400000 0x10000>;
38 interrupts = <0 94 0>; 39 interrupts = <0 94 0>;
39 samsung,power-domain = <&pd_mfc>; 40 samsung,power-domain = <&pd_mfc>;
40 clocks = <&clock 170>, <&clock 273>; 41 clocks = <&clock 273>;
41 clock-names = "sclk_mfc", "mfc"; 42 clock-names = "mfc";
42}; 43};
43 44
44Board specific DT entry: 45Board specific DT entry:
diff --git a/Documentation/devicetree/bindings/media/video-interfaces.txt b/Documentation/devicetree/bindings/media/video-interfaces.txt
index e022d2dc4962..ce719f89dd1c 100644
--- a/Documentation/devicetree/bindings/media/video-interfaces.txt
+++ b/Documentation/devicetree/bindings/media/video-interfaces.txt
@@ -88,6 +88,8 @@ Optional endpoint properties
88- field-even-active: field signal level during the even field data transmission. 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 89- pclk-sample: sample data on rising (1) or falling (0) edge of the pixel clock
90 signal. 90 signal.
91- sync-on-green-active: active state of Sync-on-green (SoG) signal, 0/1 for
92 LOW/HIGH respectively.
91- data-lanes: an array of physical data lane indexes. Position of an entry 93- 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 94 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 95 physical lane, e.g. for 2-lane MIPI CSI-2 bus we could have
diff --git a/Documentation/devicetree/bindings/metag/pdc-intc.txt b/Documentation/devicetree/bindings/metag/pdc-intc.txt
new file mode 100644
index 000000000000..a69118550344
--- /dev/null
+++ b/Documentation/devicetree/bindings/metag/pdc-intc.txt
@@ -0,0 +1,105 @@
1* ImgTec Powerdown Controller (PDC) Interrupt Controller Binding
2
3This binding specifies what properties must be available in the device tree
4representation of a PDC IRQ controller. This has a number of input interrupt
5lines which can wake the system, and are passed on through output interrupt
6lines.
7
8Required properties:
9
10 - compatible: Specifies the compatibility list for the interrupt controller.
11 The type shall be <string> and the value shall include "img,pdc-intc".
12
13 - reg: Specifies the base PDC physical address(s) and size(s) of the
14 addressable register space. The type shall be <prop-encoded-array>.
15
16 - interrupt-controller: The presence of this property identifies the node
17 as an interrupt controller. No property value shall be defined.
18
19 - #interrupt-cells: Specifies the number of cells needed to encode an
20 interrupt source. The type shall be a <u32> and the value shall be 2.
21
22 - num-perips: Number of waking peripherals.
23
24 - num-syswakes: Number of SysWake inputs.
25
26 - interrupts: List of interrupt specifiers. The first specifier shall be the
27 shared SysWake interrupt, and remaining specifies shall be PDC peripheral
28 interrupts in order.
29
30* Interrupt Specifier Definition
31
32 Interrupt specifiers consists of 2 cells encoded as follows:
33
34 - <1st-cell>: The interrupt-number that identifies the interrupt source.
35 0-7: Peripheral interrupts
36 8-15: SysWake interrupts
37
38 - <2nd-cell>: The level-sense information, encoded using the Linux interrupt
39 flags as follows (only 4 valid for peripheral interrupts):
40 0 = none (decided by software)
41 1 = low-to-high edge triggered
42 2 = high-to-low edge triggered
43 3 = both edge triggered
44 4 = active-high level-sensitive (required for perip irqs)
45 8 = active-low level-sensitive
46
47* Examples
48
49Example 1:
50
51 /*
52 * TZ1090 PDC block
53 */
54 pdc: pdc@0x02006000 {
55 // This is an interrupt controller node.
56 interrupt-controller;
57
58 // Three cells to encode interrupt sources.
59 #interrupt-cells = <2>;
60
61 // Offset address of 0x02006000 and size of 0x1000.
62 reg = <0x02006000 0x1000>;
63
64 // Compatible with Meta hardware trigger block.
65 compatible = "img,pdc-intc";
66
67 // Three peripherals are connected.
68 num-perips = <3>;
69
70 // Four SysWakes are connected.
71 num-syswakes = <4>;
72
73 interrupts = <18 4 /* level */>, /* Syswakes */
74 <30 4 /* level */>, /* Peripheral 0 (RTC) */
75 <29 4 /* level */>, /* Peripheral 1 (IR) */
76 <31 4 /* level */>; /* Peripheral 2 (WDT) */
77 };
78
79Example 2:
80
81 /*
82 * An SoC peripheral that is wired through the PDC.
83 */
84 rtc0 {
85 // The interrupt controller that this device is wired to.
86 interrupt-parent = <&pdc>;
87
88 // Interrupt source Peripheral 0
89 interrupts = <0 /* Peripheral 0 (RTC) */
90 4> /* IRQ_TYPE_LEVEL_HIGH */
91 };
92
93Example 3:
94
95 /*
96 * An interrupt generating device that is wired to a SysWake pin.
97 */
98 touchscreen0 {
99 // The interrupt controller that this device is wired to.
100 interrupt-parent = <&pdc>;
101
102 // Interrupt source SysWake 0 that is active-low level-sensitive
103 interrupts = <8 /* SysWake0 */
104 8 /* IRQ_TYPE_LEVEL_LOW */>;
105 };
diff --git a/Documentation/devicetree/bindings/mfd/cros-ec.txt b/Documentation/devicetree/bindings/mfd/cros-ec.txt
index e0e59c58a1f9..5f229c5f6da9 100644
--- a/Documentation/devicetree/bindings/mfd/cros-ec.txt
+++ b/Documentation/devicetree/bindings/mfd/cros-ec.txt
@@ -4,7 +4,7 @@ Google's ChromeOS EC is a Cortex-M device which talks to the AP and
4implements various function such as keyboard and battery charging. 4implements various function such as keyboard and battery charging.
5 5
6The EC can be connect through various means (I2C, SPI, LPC) and the 6The EC can be connect through various means (I2C, SPI, LPC) and the
7compatible string used depends on the inteface. Each connection method has 7compatible string used depends on the interface. Each connection method has
8its own driver which connects to the top level interface-agnostic EC driver. 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 9Other Linux driver (such as cros-ec-keyb for the matrix keyboard) connect to
10the top-level driver. 10the top-level driver.
diff --git a/Documentation/devicetree/bindings/mfd/palmas.txt b/Documentation/devicetree/bindings/mfd/palmas.txt
index 892537d1a48f..e5f0f8303461 100644
--- a/Documentation/devicetree/bindings/mfd/palmas.txt
+++ b/Documentation/devicetree/bindings/mfd/palmas.txt
@@ -5,6 +5,7 @@ twl6035 (palmas)
5twl6037 (palmas) 5twl6037 (palmas)
6tps65913 (palmas) 6tps65913 (palmas)
7tps65914 (palmas) 7tps65914 (palmas)
8tps659038
8 9
9Required properties: 10Required properties:
10- compatible : Should be from the list 11- compatible : Should be from the list
@@ -14,6 +15,7 @@ Required properties:
14 ti,tps65913 15 ti,tps65913
15 ti,tps65914 16 ti,tps65914
16 ti,tps80036 17 ti,tps80036
18 ti,tps659038
17and also the generic series names 19and also the generic series names
18 ti,palmas 20 ti,palmas
19- interrupt-controller : palmas has its own internal IRQs 21- interrupt-controller : palmas has its own internal IRQs
diff --git a/Documentation/devicetree/bindings/mfd/s2mps11.txt b/Documentation/devicetree/bindings/mfd/s2mps11.txt
new file mode 100644
index 000000000000..c9332c626021
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/s2mps11.txt
@@ -0,0 +1,109 @@
1
2* Samsung S2MPS11 Voltage and Current Regulator
3
4The Samsung S2MP211 is a multi-function device which includes voltage and
5current regulators, RTC, charger controller and other sub-blocks. It is
6interfaced to the host controller using a I2C interface. Each sub-block is
7addressed by the host system using different I2C slave address.
8
9Required properties:
10- compatible: Should be "samsung,s2mps11-pmic".
11- reg: Specifies the I2C slave address of the pmic block. It should be 0x66.
12
13Optional properties:
14- interrupt-parent: Specifies the phandle of the interrupt controller to which
15 the interrupts from s2mps11 are delivered to.
16- interrupts: Interrupt specifiers for interrupt sources.
17
18Optional nodes:
19- clocks: s2mps11 provides three(AP/CP/BT) buffered 32.768 KHz outputs, so to
20 register these as clocks with common clock framework instantiate a sub-node
21 named "clocks". It uses the common clock binding documented in :
22 [Documentation/devicetree/bindings/clock/clock-bindings.txt]
23 - #clock-cells: should be 1.
24
25 - The following is the list of clocks generated by the controller. Each clock
26 is assigned an identifier and client nodes use this identifier to specify
27 the clock which they consume.
28 Clock ID
29 ----------------------
30 32KhzAP 0
31 32KhzCP 1
32 32KhzBT 2
33
34- regulators: The regulators of s2mps11 that have to be instantiated should be
35included in a sub-node named 'regulators'. Regulator nodes included in this
36sub-node should be of the format as listed below.
37
38 regulator_name {
39 [standard regulator constraints....];
40 };
41
42 regulator-ramp-delay for BUCKs = [6250/12500/25000(default)/50000] uV/us
43
44 BUCK[2/3/4/6] supports disabling ramp delay on hardware, so explictly
45 regulator-ramp-delay = <0> can be used for them to disable ramp delay.
46 In absence of regulator-ramp-delay property, default ramp delay will be used.
47
48NOTE: Some BUCKs share the ramp rate setting i.e. same ramp value will be set
49for a particular group of BUCKs. So provide same regulator-ramp-delay<value>.
50Grouping of BUCKs sharing ramp rate setting is as follow : BUCK[1, 6],
51BUCK[3, 4], and BUCK[7, 8, 10]
52
53The regulator constraints inside the regulator nodes use the standard regulator
54bindings which are documented elsewhere.
55
56The following are the names of the regulators that the s2mps11 pmic block
57supports. Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number
58as per the datasheet of s2mps11.
59
60 - LDOn
61 - valid values for n are 1 to 28
62 - Example: LDO0, LD01, LDO28
63 - BUCKn
64 - valid values for n are 1 to 9.
65 - Example: BUCK1, BUCK2, BUCK9
66
67Example:
68
69 s2mps11_pmic@66 {
70 compatible = "samsung,s2mps11-pmic";
71 reg = <0x66>;
72
73 s2m_osc: clocks{
74 #clock-cells = 1;
75 clock-output-names = "xx", "yy", "zz";
76 };
77
78 regulators {
79 ldo1_reg: LDO1 {
80 regulator-name = "VDD_ABB_3.3V";
81 regulator-min-microvolt = <3300000>;
82 regulator-max-microvolt = <3300000>;
83 };
84
85 ldo2_reg: LDO2 {
86 regulator-name = "VDD_ALIVE_1.1V";
87 regulator-min-microvolt = <1100000>;
88 regulator-max-microvolt = <1100000>;
89 regulator-always-on;
90 };
91
92 buck1_reg: BUCK1 {
93 regulator-name = "vdd_mif";
94 regulator-min-microvolt = <950000>;
95 regulator-max-microvolt = <1350000>;
96 regulator-always-on;
97 regulator-boot-on;
98 };
99
100 buck2_reg: BUCK2 {
101 regulator-name = "vdd_arm";
102 regulator-min-microvolt = <950000>;
103 regulator-max-microvolt = <1350000>;
104 regulator-always-on;
105 regulator-boot-on;
106 regulator-ramp-delay = <50000>;
107 };
108 };
109 };
diff --git a/Documentation/devicetree/bindings/misc/allwinner,sunxi-sid.txt b/Documentation/devicetree/bindings/misc/allwinner,sunxi-sid.txt
new file mode 100644
index 000000000000..68ba37295565
--- /dev/null
+++ b/Documentation/devicetree/bindings/misc/allwinner,sunxi-sid.txt
@@ -0,0 +1,17 @@
1Allwinner sunxi-sid
2
3Required properties:
4- compatible: "allwinner,sun4i-sid" or "allwinner,sun7i-a20-sid".
5- reg: Should contain registers location and length
6
7Example for sun4i:
8 sid@01c23800 {
9 compatible = "allwinner,sun4i-sid";
10 reg = <0x01c23800 0x10>
11 };
12
13Example for sun7i:
14 sid@01c23800 {
15 compatible = "allwinner,sun7i-a20-sid";
16 reg = <0x01c23800 0x200>
17 };
diff --git a/Documentation/devicetree/bindings/misc/atmel-ssc.txt b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
index 38e51ad2e07e..a45ae08c8ed1 100644
--- a/Documentation/devicetree/bindings/misc/atmel-ssc.txt
+++ b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
@@ -7,9 +7,30 @@ Required properties:
7- reg: Should contain SSC registers location and length 7- reg: Should contain SSC registers location and length
8- interrupts: Should contain SSC interrupt 8- interrupts: Should contain SSC interrupt
9 9
10Example: 10
11Required properties for devices compatible with "atmel,at91sam9g45-ssc":
12- dmas: DMA specifier, consisting of a phandle to DMA controller node,
13 the memory interface and SSC DMA channel ID (for tx and rx).
14 See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
15- dma-names: Must be "tx", "rx".
16
17Examples:
18- PDC transfer:
11ssc0: ssc@fffbc000 { 19ssc0: ssc@fffbc000 {
12 compatible = "atmel,at91rm9200-ssc"; 20 compatible = "atmel,at91rm9200-ssc";
13 reg = <0xfffbc000 0x4000>; 21 reg = <0xfffbc000 0x4000>;
14 interrupts = <14 4 5>; 22 interrupts = <14 4 5>;
15}; 23};
24
25- DMA transfer:
26ssc0: ssc@f0010000 {
27 compatible = "atmel,at91sam9g45-ssc";
28 reg = <0xf0010000 0x4000>;
29 interrupts = <28 4 5>;
30 dmas = <&dma0 1 13>,
31 <&dma0 1 14>;
32 dma-names = "tx", "rx";
33 pinctrl-names = "default";
34 pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
35 status = "disabled";
36};
diff --git a/Documentation/devicetree/bindings/misc/smc.txt b/Documentation/devicetree/bindings/misc/smc.txt
index 02b428136177..6c9f176f3571 100644
--- a/Documentation/devicetree/bindings/misc/smc.txt
+++ b/Documentation/devicetree/bindings/misc/smc.txt
@@ -4,11 +4,12 @@ This binding defines the location of the bounce buffer
4used for non-secure to secure communications. 4used for non-secure to secure communications.
5 5
6Required properties: 6Required properties:
7- compatible : "bcm,kona-smc" 7- compatible : "brcm,kona-smc"
8- DEPRECATED: compatible : "bcm,kona-smc"
8- reg : Location and size of bounce buffer 9- reg : Location and size of bounce buffer
9 10
10Example: 11Example:
11 smc@0x3404c000 { 12 smc@0x3404c000 {
12 compatible = "bcm,bcm11351-smc", "bcm,kona-smc"; 13 compatible = "brcm,bcm11351-smc", "brcm,kona-smc";
13 reg = <0x3404c000 0x400>; //1 KiB in SRAM 14 reg = <0x3404c000 0x400>; //1 KiB in SRAM
14 }; 15 };
diff --git a/Documentation/devicetree/bindings/misc/ti,dac7512.txt b/Documentation/devicetree/bindings/misc/ti,dac7512.txt
new file mode 100644
index 000000000000..1db45939dac9
--- /dev/null
+++ b/Documentation/devicetree/bindings/misc/ti,dac7512.txt
@@ -0,0 +1,20 @@
1TI DAC7512 DEVICETREE BINDINGS
2
3Required properties:
4
5 - "compatible" Must be set to "ti,dac7512"
6
7Property rules described in Documentation/devicetree/bindings/spi/spi-bus.txt
8apply. In particular, "reg" and "spi-max-frequency" properties must be given.
9
10
11Example:
12
13 spi_master {
14 dac7512: dac7512@0 {
15 compatible = "ti,dac7512";
16 reg = <0>; /* CS0 */
17 spi-max-frequency = <1000000>;
18 };
19 };
20
diff --git a/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt
index 6d1c0988cfc7..c67b975c8906 100644
--- a/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt
+++ b/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt
@@ -1,11 +1,11 @@
1* Samsung Exynos specific extensions to the Synopsis Designware Mobile 1* Samsung Exynos specific extensions to the Synopsys Designware Mobile
2 Storage Host Controller 2 Storage Host Controller
3 3
4The Synopsis designware mobile storage host controller is used to interface 4The Synopsys designware mobile storage host controller is used to interface
5a SoC with storage medium such as eMMC or SD/MMC cards. This file documents 5a SoC with storage medium such as eMMC or SD/MMC cards. This file documents
6differences between the core Synopsis dw mshc controller properties described 6differences between the core Synopsys dw mshc controller properties described
7by synopsis-dw-mshc.txt and the properties used by the Samsung Exynos specific 7by synopsys-dw-mshc.txt and the properties used by the Samsung Exynos specific
8extensions to the Synopsis Designware Mobile Storage Host Controller. 8extensions to the Synopsys Designware Mobile Storage Host Controller.
9 9
10Required Properties: 10Required Properties:
11 11
diff --git a/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt b/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt
index bd9be0b5bc20..b7943f3f9995 100644
--- a/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt
+++ b/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt
@@ -19,6 +19,9 @@ Optional properties:
19 "bus-width = <1>" property. 19 "bus-width = <1>" property.
20 - sdhci,auto-cmd12: specifies that a controller can only handle auto 20 - sdhci,auto-cmd12: specifies that a controller can only handle auto
21 CMD12. 21 CMD12.
22 - voltage-ranges : two cells are required, first cell specifies minimum
23 slot voltage (mV), second cell specifies maximum slot voltage (mV).
24 Several ranges could be specified.
22 25
23Example: 26Example:
24 27
@@ -29,4 +32,5 @@ sdhci@2e000 {
29 interrupt-parent = <&ipic>; 32 interrupt-parent = <&ipic>;
30 /* Filled in by U-Boot */ 33 /* Filled in by U-Boot */
31 clock-frequency = <0>; 34 clock-frequency = <0>;
35 voltage-ranges = <3300 3300>;
32}; 36};
diff --git a/Documentation/devicetree/bindings/mmc/bcm,kona-sdhci.txt b/Documentation/devicetree/bindings/mmc/kona-sdhci.txt
index 094ae010f2fb..789fb07a426d 100644
--- a/Documentation/devicetree/bindings/mmc/bcm,kona-sdhci.txt
+++ b/Documentation/devicetree/bindings/mmc/kona-sdhci.txt
@@ -4,12 +4,13 @@ This file documents differences between the core properties in mmc.txt
4and the properties present in the bcm281xx SDHCI 4and the properties present in the bcm281xx SDHCI
5 5
6Required properties: 6Required properties:
7- compatible : Should be "bcm,kona-sdhci" 7- compatible : Should be "brcm,kona-sdhci"
8- DEPRECATED: compatible : Should be "bcm,kona-sdhci"
8 9
9Example: 10Example:
10 11
11sdio2: sdio@0x3f1a0000 { 12sdio2: sdio@0x3f1a0000 {
12 compatible = "bcm,kona-sdhci"; 13 compatible = "brcm,kona-sdhci";
13 reg = <0x3f1a0000 0x10000>; 14 reg = <0x3f1a0000 0x10000>;
14 interrupts = <0x0 74 0x4>; 15 interrupts = <0x0 74 0x4>;
15}; 16};
diff --git a/Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt
index 8a3d91d47b6a..c559f3f36309 100644
--- a/Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt
+++ b/Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt
@@ -1,11 +1,11 @@
1* Rockchip specific extensions to the Synopsis Designware Mobile 1* Rockchip specific extensions to the Synopsys Designware Mobile
2 Storage Host Controller 2 Storage Host Controller
3 3
4The Synopsis designware mobile storage host controller is used to interface 4The Synopsys designware mobile storage host controller is used to interface
5a SoC with storage medium such as eMMC or SD/MMC cards. This file documents 5a SoC with storage medium such as eMMC or SD/MMC cards. This file documents
6differences between the core Synopsis dw mshc controller properties described 6differences between the core Synopsys dw mshc controller properties described
7by synopsis-dw-mshc.txt and the properties used by the Rockchip specific 7by synopsys-dw-mshc.txt and the properties used by the Rockchip specific
8extensions to the Synopsis Designware Mobile Storage Host Controller. 8extensions to the Synopsys Designware Mobile Storage Host Controller.
9 9
10Required Properties: 10Required Properties:
11 11
diff --git a/Documentation/devicetree/bindings/mmc/synopsis-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt
index cdcebea9c6f5..066a78b034ca 100644
--- a/Documentation/devicetree/bindings/mmc/synopsis-dw-mshc.txt
+++ b/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt
@@ -1,14 +1,14 @@
1* Synopsis Designware Mobile Storage Host Controller 1* Synopsys Designware Mobile Storage Host Controller
2 2
3The Synopsis designware mobile storage host controller is used to interface 3The Synopsys designware mobile storage host controller is used to interface
4a SoC with storage medium such as eMMC or SD/MMC cards. This file documents 4a SoC with storage medium such as eMMC or SD/MMC cards. This file documents
5differences between the core mmc properties described by mmc.txt and the 5differences between the core mmc properties described by mmc.txt and the
6properties used by the Synopsis Designware Mobile Storage Host Controller. 6properties used by the Synopsys Designware Mobile Storage Host Controller.
7 7
8Required Properties: 8Required Properties:
9 9
10* compatible: should be 10* compatible: should be
11 - snps,dw-mshc: for controllers compliant with synopsis dw-mshc. 11 - snps,dw-mshc: for controllers compliant with synopsys dw-mshc.
12* #address-cells: should be 1. 12* #address-cells: should be 1.
13* #size-cells: should be 0. 13* #size-cells: should be 0.
14 14
diff --git a/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt b/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
index ed271fc255b2..8c8908ab84ba 100644
--- a/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
+++ b/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
@@ -20,8 +20,29 @@ ti,dual-volt: boolean, supports dual voltage cards
20ti,non-removable: non-removable slot (like eMMC) 20ti,non-removable: non-removable slot (like eMMC)
21ti,needs-special-reset: Requires a special softreset sequence 21ti,needs-special-reset: Requires a special softreset sequence
22ti,needs-special-hs-handling: HSMMC IP needs special setting for handling High Speed 22ti,needs-special-hs-handling: HSMMC IP needs special setting for handling High Speed
23dmas: List of DMA specifiers with the controller specific format
24as described in the generic DMA client binding. A tx and rx
25specifier is required.
26dma-names: List of DMA request names. These strings correspond
271:1 with the DMA specifiers listed in dmas. The string naming is
28to be "rx" and "tx" for RX and TX DMA requests, respectively.
29
30Examples:
31
32[hwmod populated DMA resources]
33
34 mmc1: mmc@0x4809c000 {
35 compatible = "ti,omap4-hsmmc";
36 reg = <0x4809c000 0x400>;
37 ti,hwmods = "mmc1";
38 ti,dual-volt;
39 bus-width = <4>;
40 vmmc-supply = <&vmmc>; /* phandle to regulator node */
41 ti,non-removable;
42 };
43
44[generic DMA request binding]
23 45
24Example:
25 mmc1: mmc@0x4809c000 { 46 mmc1: mmc@0x4809c000 {
26 compatible = "ti,omap4-hsmmc"; 47 compatible = "ti,omap4-hsmmc";
27 reg = <0x4809c000 0x400>; 48 reg = <0x4809c000 0x400>;
@@ -30,4 +51,7 @@ Example:
30 bus-width = <4>; 51 bus-width = <4>;
31 vmmc-supply = <&vmmc>; /* phandle to regulator node */ 52 vmmc-supply = <&vmmc>; /* phandle to regulator node */
32 ti,non-removable; 53 ti,non-removable;
54 dmas = <&edma 24
55 &edma 25>;
56 dma-names = "tx", "rx";
33 }; 57 };
diff --git a/Documentation/devicetree/bindings/mmc/tmio_mmc.txt b/Documentation/devicetree/bindings/mmc/tmio_mmc.txt
index df204e18e030..6a2a1160a70d 100644
--- a/Documentation/devicetree/bindings/mmc/tmio_mmc.txt
+++ b/Documentation/devicetree/bindings/mmc/tmio_mmc.txt
@@ -9,12 +9,15 @@ compulsory and any optional properties, common to all SD/MMC drivers, as
9described in mmc.txt, can be used. Additionally the following tmio_mmc-specific 9described in mmc.txt, can be used. Additionally the following tmio_mmc-specific
10optional bindings can be used. 10optional bindings can be used.
11 11
12Required properties:
13- compatible: "renesas,sdhi-shmobile" - a generic sh-mobile SDHI unit
14 "renesas,sdhi-sh7372" - SDHI IP on SH7372 SoC
15 "renesas,sdhi-sh73a0" - SDHI IP on SH73A0 SoC
16 "renesas,sdhi-r8a73a4" - SDHI IP on R8A73A4 SoC
17 "renesas,sdhi-r8a7740" - SDHI IP on R8A7740 SoC
18 "renesas,sdhi-r8a7778" - SDHI IP on R8A7778 SoC
19 "renesas,sdhi-r8a7779" - SDHI IP on R8A7779 SoC
20 "renesas,sdhi-r8a7790" - SDHI IP on R8A7790 SoC
21
12Optional properties: 22Optional properties:
13- toshiba,mmc-wrprotect-disable: write-protect detection is unavailable 23- toshiba,mmc-wrprotect-disable: write-protect detection is unavailable
14
15When used with Renesas SDHI hardware, the following compatibility strings
16configure various model-specific properties:
17
18"renesas,sh7372-sdhi": (default) compatible with SH7372
19"renesas,r8a7740-sdhi": compatible with R8A7740: certain MMC/SD commands have to
20 wait for the interface to become idle.
diff --git a/Documentation/devicetree/bindings/mtd/atmel-nand.txt b/Documentation/devicetree/bindings/mtd/atmel-nand.txt
index d555421ea49f..c4728839d0c1 100644
--- a/Documentation/devicetree/bindings/mtd/atmel-nand.txt
+++ b/Documentation/devicetree/bindings/mtd/atmel-nand.txt
@@ -15,6 +15,7 @@ Required properties:
15 optional gpio and may be set to 0 if not present. 15 optional gpio and may be set to 0 if not present.
16 16
17Optional properties: 17Optional properties:
18- atmel,nand-has-dma : boolean to support dma transfer for nand read/write.
18- nand-ecc-mode : String, operation mode of the NAND ecc mode, soft by default. 19- nand-ecc-mode : String, operation mode of the NAND ecc mode, soft by default.
19 Supported values are: "none", "soft", "hw", "hw_syndrome", "hw_oob_first", 20 Supported values are: "none", "soft", "hw", "hw_syndrome", "hw_oob_first",
20 "soft_bch". 21 "soft_bch".
@@ -29,6 +30,14 @@ Optional properties:
29 sector size 1024. 30 sector size 1024.
30- nand-bus-width : 8 or 16 bus width if not present 8 31- nand-bus-width : 8 or 16 bus width if not present 8
31- nand-on-flash-bbt: boolean to enable on flash bbt option if not present false 32- nand-on-flash-bbt: boolean to enable on flash bbt option if not present false
33- Nand Flash Controller(NFC) is a slave driver under Atmel nand flash
34 - Required properties:
35 - compatible : "atmel,sama5d3-nfc".
36 - reg : should specify the address and size used for NFC command registers,
37 NFC registers and NFC Sram. NFC Sram address and size can be absent
38 if don't want to use it.
39 - Optional properties:
40 - atmel,write-by-sram: boolean to enable NFC write by sram.
32 41
33Examples: 42Examples:
34nand0: nand@40000000,0 { 43nand0: nand@40000000,0 {
@@ -77,3 +86,22 @@ nand0: nand@40000000 {
77 ... 86 ...
78 }; 87 };
79}; 88};
89
90/* for NFC supported chips */
91nand0: nand@40000000 {
92 compatible = "atmel,at91rm9200-nand";
93 #address-cells = <1>;
94 #size-cells = <1>;
95 ranges;
96 ...
97 nfc@70000000 {
98 compatible = "atmel,sama5d3-nfc";
99 #address-cells = <1>;
100 #size-cells = <1>;
101 reg = <
102 0x70000000 0x10000000 /* NFC Command Registers */
103 0xffffc000 0x00000070 /* NFC HSMC regs */
104 0x00200000 0x00100000 /* NFC SRAM banks */
105 >;
106 };
107};
diff --git a/Documentation/devicetree/bindings/mtd/fsmc-nand.txt b/Documentation/devicetree/bindings/mtd/fsmc-nand.txt
index 2240ac09f6ba..ec42935f3908 100644
--- a/Documentation/devicetree/bindings/mtd/fsmc-nand.txt
+++ b/Documentation/devicetree/bindings/mtd/fsmc-nand.txt
@@ -1,4 +1,5 @@
1* FSMC NAND 1ST Microelectronics Flexible Static Memory Controller (FSMC)
2NAND Interface
2 3
3Required properties: 4Required properties:
4- compatible : "st,spear600-fsmc-nand", "stericsson,fsmc-nand" 5- compatible : "st,spear600-fsmc-nand", "stericsson,fsmc-nand"
@@ -9,6 +10,26 @@ Optional properties:
9- bank-width : Width (in bytes) of the device. If not present, the width 10- bank-width : Width (in bytes) of the device. If not present, the width
10 defaults to 1 byte 11 defaults to 1 byte
11- nand-skip-bbtscan: Indicates the the BBT scanning should be skipped 12- nand-skip-bbtscan: Indicates the the BBT scanning should be skipped
13- timings: array of 6 bytes for NAND timings. The meanings of these bytes
14 are:
15 byte 0 TCLR : CLE to RE delay in number of AHB clock cycles, only 4 bits
16 are valid. Zero means one clockcycle, 15 means 16 clock
17 cycles.
18 byte 1 TAR : ALE to RE delay, 4 bits are valid. Same format as TCLR.
19 byte 2 THIZ : number of HCLK clock cycles during which the data bus is
20 kept in Hi-Z (tristate) after the start of a write access.
21 Only valid for write transactions. Zero means zero cycles,
22 255 means 255 cycles.
23 byte 3 THOLD : number of HCLK clock cycles to hold the address (and data
24 when writing) after the command deassertation. Zero means
25 one cycle, 255 means 256 cycles.
26 byte 4 TWAIT : number of HCLK clock cycles to assert the command to the
27 NAND flash in response to SMWAITn. Zero means 1 cycle,
28 255 means 256 cycles.
29 byte 5 TSET : number of HCLK clock cycles to assert the address before the
30 command is asserted. Zero means one cycle, 255 means 256
31 cycles.
32- bank: default NAND bank to use (0-3 are valid, 0 is the default).
12 33
13Example: 34Example:
14 35
@@ -24,6 +45,8 @@ Example:
24 45
25 bank-width = <1>; 46 bank-width = <1>;
26 nand-skip-bbtscan; 47 nand-skip-bbtscan;
48 timings = /bits/ 8 <0 0 0 2 3 0>;
49 bank = <1>;
27 50
28 partition@0 { 51 partition@0 {
29 ... 52 ...
diff --git a/Documentation/devicetree/bindings/mtd/partition.txt b/Documentation/devicetree/bindings/mtd/partition.txt
index 9315ac96b49b..8e5557da1955 100644
--- a/Documentation/devicetree/bindings/mtd/partition.txt
+++ b/Documentation/devicetree/bindings/mtd/partition.txt
@@ -4,6 +4,7 @@ Partitions can be represented by sub-nodes of an mtd device. This can be used
4on platforms which have strong conventions about which portions of a flash are 4on platforms which have strong conventions about which portions of a flash are
5used for what purposes, but which don't use an on-flash partition table such 5used for what purposes, but which don't use an on-flash partition table such
6as RedBoot. 6as RedBoot.
7NOTE: if the sub-node has a compatible string, then it is not a partition.
7 8
8#address-cells & #size-cells must both be present in the mtd device. There are 9#address-cells & #size-cells must both be present in the mtd device. There are
9two valid values for both: 10two valid values for both:
diff --git a/Documentation/devicetree/bindings/net/can/atmel-can.txt b/Documentation/devicetree/bindings/net/can/atmel-can.txt
index 72cf0c5daff4..14e52a0d86ec 100644
--- a/Documentation/devicetree/bindings/net/can/atmel-can.txt
+++ b/Documentation/devicetree/bindings/net/can/atmel-can.txt
@@ -8,7 +8,7 @@ Required properties:
8Example: 8Example:
9 9
10 can0: can@f000c000 { 10 can0: can@f000c000 {
11 compatbile = "atmel,at91sam9x5-can"; 11 compatible = "atmel,at91sam9x5-can";
12 reg = <0xf000c000 0x300>; 12 reg = <0xf000c000 0x300>;
13 interrupts = <40 4 5> 13 interrupts = <40 4 5>
14 }; 14 };
diff --git a/Documentation/devicetree/bindings/net/can/sja1000.txt b/Documentation/devicetree/bindings/net/can/sja1000.txt
index c2dbcec0ee31..f2105a47ec87 100644
--- a/Documentation/devicetree/bindings/net/can/sja1000.txt
+++ b/Documentation/devicetree/bindings/net/can/sja1000.txt
@@ -37,7 +37,7 @@ Optional properties:
37 If not specified or if the specified value is 0, the CLKOUT pin 37 If not specified or if the specified value is 0, the CLKOUT pin
38 will be disabled. 38 will be disabled.
39 39
40- nxp,no-comparator-bypass : Allows to disable the CAN input comperator. 40- nxp,no-comparator-bypass : Allows to disable the CAN input comparator.
41 41
42For further information, please have a look to the SJA1000 data sheet. 42For further information, please have a look to the SJA1000 data sheet.
43 43
diff --git a/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt b/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt
index 2c6be0377f55..d2ea4605d078 100644
--- a/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt
+++ b/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt
@@ -86,6 +86,7 @@ General Properties:
86 86
87Clock Properties: 87Clock Properties:
88 88
89 - fsl,cksel Timer reference clock source.
89 - fsl,tclk-period Timer reference clock period in nanoseconds. 90 - fsl,tclk-period Timer reference clock period in nanoseconds.
90 - fsl,tmr-prsc Prescaler, divides the output clock. 91 - fsl,tmr-prsc Prescaler, divides the output clock.
91 - fsl,tmr-add Frequency compensation value. 92 - fsl,tmr-add Frequency compensation value.
@@ -97,7 +98,7 @@ Clock Properties:
97 clock. You must choose these carefully for the clock to work right. 98 clock. You must choose these carefully for the clock to work right.
98 Here is how to figure good values: 99 Here is how to figure good values:
99 100
100 TimerOsc = system clock MHz 101 TimerOsc = selected reference clock MHz
101 tclk_period = desired clock period nanoseconds 102 tclk_period = desired clock period nanoseconds
102 NominalFreq = 1000 / tclk_period MHz 103 NominalFreq = 1000 / tclk_period MHz
103 FreqDivRatio = TimerOsc / NominalFreq (must be greater that 1.0) 104 FreqDivRatio = TimerOsc / NominalFreq (must be greater that 1.0)
@@ -114,6 +115,20 @@ Clock Properties:
114 Pulse Per Second (PPS) signal, since this will be offered to the PPS 115 Pulse Per Second (PPS) signal, since this will be offered to the PPS
115 subsystem to synchronize the Linux clock. 116 subsystem to synchronize the Linux clock.
116 117
118 Reference clock source is determined by the value, which is holded
119 in CKSEL bits in TMR_CTRL register. "fsl,cksel" property keeps the
120 value, which will be directly written in those bits, that is why,
121 according to reference manual, the next clock sources can be used:
122
123 <0> - external high precision timer reference clock (TSEC_TMR_CLK
124 input is used for this purpose);
125 <1> - eTSEC system clock;
126 <2> - eTSEC1 transmit clock;
127 <3> - RTC clock input.
128
129 When this attribute is not used, eTSEC system clock will serve as
130 IEEE 1588 timer reference clock.
131
117Example: 132Example:
118 133
119 ptp_clock@24E00 { 134 ptp_clock@24E00 {
@@ -121,6 +136,7 @@ Example:
121 reg = <0x24E00 0xB0>; 136 reg = <0x24E00 0xB0>;
122 interrupts = <12 0x8 13 0x8>; 137 interrupts = <12 0x8 13 0x8>;
123 interrupt-parent = < &ipic >; 138 interrupt-parent = < &ipic >;
139 fsl,cksel = <1>;
124 fsl,tclk-period = <10>; 140 fsl,tclk-period = <10>;
125 fsl,tmr-prsc = <100>; 141 fsl,tmr-prsc = <100>;
126 fsl,tmr-add = <0x999999A4>; 142 fsl,tmr-add = <0x999999A4>;
diff --git a/Documentation/devicetree/bindings/net/micrel-ksz9021.txt b/Documentation/devicetree/bindings/net/micrel-ksz9021.txt
new file mode 100644
index 000000000000..997a63f1aea1
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/micrel-ksz9021.txt
@@ -0,0 +1,49 @@
1Micrel KSZ9021 Gigabit Ethernet PHY
2
3Some boards require special tuning values, particularly when it comes to
4clock delays. You can specify clock delay values by adding
5micrel-specific properties to an Ethernet OF device node.
6
7All skew control options are specified in picoseconds. The minimum
8value is 0, and the maximum value is 3000.
9
10Optional properties:
11 - rxc-skew-ps : Skew control of RXC pad
12 - rxdv-skew-ps : Skew control of RX CTL pad
13 - txc-skew-ps : Skew control of TXC pad
14 - txen-skew-ps : Skew control of TX_CTL pad
15 - rxd0-skew-ps : Skew control of RX data 0 pad
16 - rxd1-skew-ps : Skew control of RX data 1 pad
17 - rxd2-skew-ps : Skew control of RX data 2 pad
18 - rxd3-skew-ps : Skew control of RX data 3 pad
19 - txd0-skew-ps : Skew control of TX data 0 pad
20 - txd1-skew-ps : Skew control of TX data 1 pad
21 - txd2-skew-ps : Skew control of TX data 2 pad
22 - txd3-skew-ps : Skew control of TX data 3 pad
23
24Examples:
25
26 /* Attach to an Ethernet device with autodetected PHY */
27 &enet {
28 rxc-skew-ps = <3000>;
29 rxdv-skew-ps = <0>;
30 txc-skew-ps = <3000>;
31 txen-skew-ps = <0>;
32 status = "okay";
33 };
34
35 /* Attach to an explicitly-specified PHY */
36 mdio {
37 phy0: ethernet-phy@0 {
38 rxc-skew-ps = <3000>;
39 rxdv-skew-ps = <0>;
40 txc-skew-ps = <3000>;
41 txen-skew-ps = <0>;
42 reg = <0>;
43 };
44 };
45 ethernet@70000 {
46 status = "okay";
47 phy = <&phy0>;
48 phy-mode = "rgmii-id";
49 };
diff --git a/Documentation/devicetree/bindings/net/moxa,moxart-mac.txt b/Documentation/devicetree/bindings/net/moxa,moxart-mac.txt
new file mode 100644
index 000000000000..583418b2c127
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/moxa,moxart-mac.txt
@@ -0,0 +1,21 @@
1MOXA ART Ethernet Controller
2
3Required properties:
4
5- compatible : Must be "moxa,moxart-mac"
6- reg : Should contain register location and length
7- interrupts : Should contain the mac interrupt number
8
9Example:
10
11 mac0: mac@90900000 {
12 compatible = "moxa,moxart-mac";
13 reg = <0x90900000 0x100>;
14 interrupts = <25 0>;
15 };
16
17 mac1: mac@92000000 {
18 compatible = "moxa,moxart-mac";
19 reg = <0x92000000 0x100>;
20 interrupts = <27 0>;
21 };
diff --git a/Documentation/devicetree/bindings/net/stmmac.txt b/Documentation/devicetree/bindings/net/stmmac.txt
index 261c563b5f06..eba0e5e59ebe 100644
--- a/Documentation/devicetree/bindings/net/stmmac.txt
+++ b/Documentation/devicetree/bindings/net/stmmac.txt
@@ -22,6 +22,11 @@ Required properties:
22- snps,pbl Programmable Burst Length 22- snps,pbl Programmable Burst Length
23- snps,fixed-burst Program the DMA to use the fixed burst mode 23- snps,fixed-burst Program the DMA to use the fixed burst mode
24- snps,mixed-burst Program the DMA to use the mixed burst mode 24- snps,mixed-burst Program the DMA to use the mixed burst mode
25- snps,force_thresh_dma_mode Force DMA to use the threshold mode for
26 both tx and rx
27- snps,force_sf_dma_mode Force DMA to use the Store and Forward
28 mode for both tx and rx. This flag is
29 ignored if force_thresh_dma_mode is set.
25 30
26Optional properties: 31Optional properties:
27- mac-address: 6 bytes, mac address 32- mac-address: 6 bytes, mac address
diff --git a/Documentation/devicetree/bindings/pci/designware-pcie.txt b/Documentation/devicetree/bindings/pci/designware-pcie.txt
index e2371f5cdebe..e216af356847 100644
--- a/Documentation/devicetree/bindings/pci/designware-pcie.txt
+++ b/Documentation/devicetree/bindings/pci/designware-pcie.txt
@@ -1,4 +1,4 @@
1* Synopsis Designware PCIe interface 1* Synopsys Designware PCIe interface
2 2
3Required properties: 3Required properties:
4- compatible: should contain "snps,dw-pcie" to identify the 4- compatible: should contain "snps,dw-pcie" to identify the
@@ -18,6 +18,7 @@ Required properties:
18- interrupt-map-mask and interrupt-map: standard PCI properties 18- interrupt-map-mask and interrupt-map: standard PCI properties
19 to define the mapping of the PCIe interface to interrupt 19 to define the mapping of the PCIe interface to interrupt
20 numbers. 20 numbers.
21- num-lanes: number of lanes to use
21- reset-gpio: gpio pin number of power good signal 22- reset-gpio: gpio pin number of power good signal
22 23
23Example: 24Example:
@@ -41,6 +42,7 @@ SoC specific DT Entry:
41 #interrupt-cells = <1>; 42 #interrupt-cells = <1>;
42 interrupt-map-mask = <0 0 0 0>; 43 interrupt-map-mask = <0 0 0 0>;
43 interrupt-map = <0x0 0 &gic 53>; 44 interrupt-map = <0x0 0 &gic 53>;
45 num-lanes = <4>;
44 }; 46 };
45 47
46 pcie@2a0000 { 48 pcie@2a0000 {
@@ -60,6 +62,7 @@ SoC specific DT Entry:
60 #interrupt-cells = <1>; 62 #interrupt-cells = <1>;
61 interrupt-map-mask = <0 0 0 0>; 63 interrupt-map-mask = <0 0 0 0>;
62 interrupt-map = <0x0 0 &gic 56>; 64 interrupt-map = <0x0 0 &gic 56>;
65 num-lanes = <4>;
63 }; 66 };
64 67
65Board specific DT Entry: 68Board specific DT Entry:
diff --git a/Documentation/devicetree/bindings/pci/mvebu-pci.txt b/Documentation/devicetree/bindings/pci/mvebu-pci.txt
index f8d405897a94..08c716b2c6b6 100644
--- a/Documentation/devicetree/bindings/pci/mvebu-pci.txt
+++ b/Documentation/devicetree/bindings/pci/mvebu-pci.txt
@@ -1,20 +1,62 @@
1* Marvell EBU PCIe interfaces 1* Marvell EBU PCIe interfaces
2 2
3Mandatory properties: 3Mandatory properties:
4
4- compatible: one of the following values: 5- compatible: one of the following values:
5 marvell,armada-370-pcie 6 marvell,armada-370-pcie
6 marvell,armada-xp-pcie 7 marvell,armada-xp-pcie
8 marvell,dove-pcie
7 marvell,kirkwood-pcie 9 marvell,kirkwood-pcie
8- #address-cells, set to <3> 10- #address-cells, set to <3>
9- #size-cells, set to <2> 11- #size-cells, set to <2>
10- #interrupt-cells, set to <1> 12- #interrupt-cells, set to <1>
11- bus-range: PCI bus numbers covered 13- bus-range: PCI bus numbers covered
12- device_type, set to "pci" 14- device_type, set to "pci"
13- ranges: ranges for the PCI memory and I/O regions, as well as the 15- ranges: ranges describing the MMIO registers to control the PCIe
14 MMIO registers to control the PCIe interfaces. 16 interfaces, and ranges describing the MBus windows needed to access
17 the memory and I/O regions of each PCIe interface.
18- msi-parent: Link to the hardware entity that serves as the Message
19 Signaled Interrupt controller for this PCI controller.
20
21The ranges describing the MMIO registers have the following layout:
22
23 0x82000000 0 r MBUS_ID(0xf0, 0x01) r 0 s
24
25where:
26
27 * r is a 32-bits value that gives the offset of the MMIO
28 registers of this PCIe interface, from the base of the internal
29 registers.
30
31 * s is a 32-bits value that give the size of this MMIO
32 registers area. This range entry translates the '0x82000000 0 r' PCI
33 address into the 'MBUS_ID(0xf0, 0x01) r' CPU address, which is part
34 of the internal register window (as identified by MBUS_ID(0xf0,
35 0x01)).
36
37The ranges describing the MBus windows have the following layout:
38
39 0x8t000000 s 0 MBUS_ID(w, a) 0 1 0
40
41where:
42
43 * t is the type of the MBus window (as defined by the standard PCI DT
44 bindings), 1 for I/O and 2 for memory.
15 45
16In addition, the Device Tree node must have sub-nodes describing each 46 * s is the PCI slot that corresponds to this PCIe interface
47
48 * w is the 'target ID' value for the MBus window
49
50 * a the 'attribute' value for the MBus window.
51
52Since the location and size of the different MBus windows is not fixed in
53hardware, and only determined in runtime, those ranges cover the full first
544 GB of the physical address space, and do not translate into a valid CPU
55address.
56
57In addition, the device tree node must have sub-nodes describing each
17PCIe interface, having the following mandatory properties: 58PCIe interface, having the following mandatory properties:
59
18- reg: used only for interrupt mapping, so only the first four bytes 60- reg: used only for interrupt mapping, so only the first four bytes
19 are used to refer to the correct bus number and device number. 61 are used to refer to the correct bus number and device number.
20- assigned-addresses: reference to the MMIO registers used to control 62- assigned-addresses: reference to the MMIO registers used to control
@@ -26,7 +68,8 @@ PCIe interface, having the following mandatory properties:
26- #address-cells, set to <3> 68- #address-cells, set to <3>
27- #size-cells, set to <2> 69- #size-cells, set to <2>
28- #interrupt-cells, set to <1> 70- #interrupt-cells, set to <1>
29- ranges, empty property. 71- ranges, translating the MBus windows ranges of the parent node into
72 standard PCI addresses.
30- interrupt-map-mask and interrupt-map, standard PCI properties to 73- interrupt-map-mask and interrupt-map, standard PCI properties to
31 define the mapping of the PCIe interface to interrupt numbers. 74 define the mapping of the PCIe interface to interrupt numbers.
32 75
@@ -34,6 +77,8 @@ and the following optional properties:
34- marvell,pcie-lane: the physical PCIe lane number, for ports having 77- marvell,pcie-lane: the physical PCIe lane number, for ports having
35 multiple lanes. If this property is not found, we assume that the 78 multiple lanes. If this property is not found, we assume that the
36 value is 0. 79 value is 0.
80- reset-gpios: optional gpio to PERST#
81- reset-delay-us: delay in us to wait after reset de-assertion
37 82
38Example: 83Example:
39 84
@@ -46,44 +91,73 @@ pcie-controller {
46 #size-cells = <2>; 91 #size-cells = <2>;
47 92
48 bus-range = <0x00 0xff>; 93 bus-range = <0x00 0xff>;
94 msi-parent = <&mpic>;
49 95
50 ranges = <0x82000000 0 0xd0040000 0xd0040000 0 0x00002000 /* Port 0.0 registers */ 96 ranges =
51 0x82000000 0 0xd0042000 0xd0042000 0 0x00002000 /* Port 2.0 registers */ 97 <0x82000000 0 0x40000 MBUS_ID(0xf0, 0x01) 0x40000 0 0x00002000 /* Port 0.0 registers */
52 0x82000000 0 0xd0044000 0xd0044000 0 0x00002000 /* Port 0.1 registers */ 98 0x82000000 0 0x42000 MBUS_ID(0xf0, 0x01) 0x42000 0 0x00002000 /* Port 2.0 registers */
53 0x82000000 0 0xd0048000 0xd0048000 0 0x00002000 /* Port 0.2 registers */ 99 0x82000000 0 0x44000 MBUS_ID(0xf0, 0x01) 0x44000 0 0x00002000 /* Port 0.1 registers */
54 0x82000000 0 0xd004c000 0xd004c000 0 0x00002000 /* Port 0.3 registers */ 100 0x82000000 0 0x48000 MBUS_ID(0xf0, 0x01) 0x48000 0 0x00002000 /* Port 0.2 registers */
55 0x82000000 0 0xd0080000 0xd0080000 0 0x00002000 /* Port 1.0 registers */ 101 0x82000000 0 0x4c000 MBUS_ID(0xf0, 0x01) 0x4c000 0 0x00002000 /* Port 0.3 registers */
56 0x82000000 0 0xd0082000 0xd0082000 0 0x00002000 /* Port 3.0 registers */ 102 0x82000000 0 0x80000 MBUS_ID(0xf0, 0x01) 0x80000 0 0x00002000 /* Port 1.0 registers */
57 0x82000000 0 0xd0084000 0xd0084000 0 0x00002000 /* Port 1.1 registers */ 103 0x82000000 0 0x82000 MBUS_ID(0xf0, 0x01) 0x82000 0 0x00002000 /* Port 3.0 registers */
58 0x82000000 0 0xd0088000 0xd0088000 0 0x00002000 /* Port 1.2 registers */ 104 0x82000000 0 0x84000 MBUS_ID(0xf0, 0x01) 0x84000 0 0x00002000 /* Port 1.1 registers */
59 0x82000000 0 0xd008c000 0xd008c000 0 0x00002000 /* Port 1.3 registers */ 105 0x82000000 0 0x88000 MBUS_ID(0xf0, 0x01) 0x88000 0 0x00002000 /* Port 1.2 registers */
60 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */ 106 0x82000000 0 0x8c000 MBUS_ID(0xf0, 0x01) 0x8c000 0 0x00002000 /* Port 1.3 registers */
61 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */ 107 0x82000000 0x1 0 MBUS_ID(0x04, 0xe8) 0 1 0 /* Port 0.0 MEM */
108 0x81000000 0x1 0 MBUS_ID(0x04, 0xe0) 0 1 0 /* Port 0.0 IO */
109 0x82000000 0x2 0 MBUS_ID(0x04, 0xd8) 0 1 0 /* Port 0.1 MEM */
110 0x81000000 0x2 0 MBUS_ID(0x04, 0xd0) 0 1 0 /* Port 0.1 IO */
111 0x82000000 0x3 0 MBUS_ID(0x04, 0xb8) 0 1 0 /* Port 0.2 MEM */
112 0x81000000 0x3 0 MBUS_ID(0x04, 0xb0) 0 1 0 /* Port 0.2 IO */
113 0x82000000 0x4 0 MBUS_ID(0x04, 0x78) 0 1 0 /* Port 0.3 MEM */
114 0x81000000 0x4 0 MBUS_ID(0x04, 0x70) 0 1 0 /* Port 0.3 IO */
115
116 0x82000000 0x5 0 MBUS_ID(0x08, 0xe8) 0 1 0 /* Port 1.0 MEM */
117 0x81000000 0x5 0 MBUS_ID(0x08, 0xe0) 0 1 0 /* Port 1.0 IO */
118 0x82000000 0x6 0 MBUS_ID(0x08, 0xd8) 0 1 0 /* Port 1.1 MEM */
119 0x81000000 0x6 0 MBUS_ID(0x08, 0xd0) 0 1 0 /* Port 1.1 IO */
120 0x82000000 0x7 0 MBUS_ID(0x08, 0xb8) 0 1 0 /* Port 1.2 MEM */
121 0x81000000 0x7 0 MBUS_ID(0x08, 0xb0) 0 1 0 /* Port 1.2 IO */
122 0x82000000 0x8 0 MBUS_ID(0x08, 0x78) 0 1 0 /* Port 1.3 MEM */
123 0x81000000 0x8 0 MBUS_ID(0x08, 0x70) 0 1 0 /* Port 1.3 IO */
124
125 0x82000000 0x9 0 MBUS_ID(0x04, 0xf8) 0 1 0 /* Port 2.0 MEM */
126 0x81000000 0x9 0 MBUS_ID(0x04, 0xf0) 0 1 0 /* Port 2.0 IO */
127
128 0x82000000 0xa 0 MBUS_ID(0x08, 0xf8) 0 1 0 /* Port 3.0 MEM */
129 0x81000000 0xa 0 MBUS_ID(0x08, 0xf0) 0 1 0 /* Port 3.0 IO */>;
62 130
63 pcie@1,0 { 131 pcie@1,0 {
64 device_type = "pci"; 132 device_type = "pci";
65 assigned-addresses = <0x82000800 0 0xd0040000 0 0x2000>; 133 assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
66 reg = <0x0800 0 0 0 0>; 134 reg = <0x0800 0 0 0 0>;
67 #address-cells = <3>; 135 #address-cells = <3>;
68 #size-cells = <2>; 136 #size-cells = <2>;
69 #interrupt-cells = <1>; 137 #interrupt-cells = <1>;
70 ranges; 138 ranges = <0x82000000 0 0 0x82000000 0x1 0 1 0
139 0x81000000 0 0 0x81000000 0x1 0 1 0>;
71 interrupt-map-mask = <0 0 0 0>; 140 interrupt-map-mask = <0 0 0 0>;
72 interrupt-map = <0 0 0 0 &mpic 58>; 141 interrupt-map = <0 0 0 0 &mpic 58>;
73 marvell,pcie-port = <0>; 142 marvell,pcie-port = <0>;
74 marvell,pcie-lane = <0>; 143 marvell,pcie-lane = <0>;
144 /* low-active PERST# reset on GPIO 25 */
145 reset-gpios = <&gpio0 25 1>;
146 /* wait 20ms for device settle after reset deassertion */
147 reset-delay-us = <20000>;
75 clocks = <&gateclk 5>; 148 clocks = <&gateclk 5>;
76 status = "disabled"; 149 status = "disabled";
77 }; 150 };
78 151
79 pcie@2,0 { 152 pcie@2,0 {
80 device_type = "pci"; 153 device_type = "pci";
81 assigned-addresses = <0x82001000 0 0xd0044000 0 0x2000>; 154 assigned-addresses = <0x82001000 0 0x44000 0 0x2000>;
82 reg = <0x1000 0 0 0 0>; 155 reg = <0x1000 0 0 0 0>;
83 #address-cells = <3>; 156 #address-cells = <3>;
84 #size-cells = <2>; 157 #size-cells = <2>;
85 #interrupt-cells = <1>; 158 #interrupt-cells = <1>;
86 ranges; 159 ranges = <0x82000000 0 0 0x82000000 0x2 0 1 0
160 0x81000000 0 0 0x81000000 0x2 0 1 0>;
87 interrupt-map-mask = <0 0 0 0>; 161 interrupt-map-mask = <0 0 0 0>;
88 interrupt-map = <0 0 0 0 &mpic 59>; 162 interrupt-map = <0 0 0 0 &mpic 59>;
89 marvell,pcie-port = <0>; 163 marvell,pcie-port = <0>;
@@ -94,12 +168,13 @@ pcie-controller {
94 168
95 pcie@3,0 { 169 pcie@3,0 {
96 device_type = "pci"; 170 device_type = "pci";
97 assigned-addresses = <0x82001800 0 0xd0048000 0 0x2000>; 171 assigned-addresses = <0x82001800 0 0x48000 0 0x2000>;
98 reg = <0x1800 0 0 0 0>; 172 reg = <0x1800 0 0 0 0>;
99 #address-cells = <3>; 173 #address-cells = <3>;
100 #size-cells = <2>; 174 #size-cells = <2>;
101 #interrupt-cells = <1>; 175 #interrupt-cells = <1>;
102 ranges; 176 ranges = <0x82000000 0 0 0x82000000 0x3 0 1 0
177 0x81000000 0 0 0x81000000 0x3 0 1 0>;
103 interrupt-map-mask = <0 0 0 0>; 178 interrupt-map-mask = <0 0 0 0>;
104 interrupt-map = <0 0 0 0 &mpic 60>; 179 interrupt-map = <0 0 0 0 &mpic 60>;
105 marvell,pcie-port = <0>; 180 marvell,pcie-port = <0>;
@@ -110,12 +185,13 @@ pcie-controller {
110 185
111 pcie@4,0 { 186 pcie@4,0 {
112 device_type = "pci"; 187 device_type = "pci";
113 assigned-addresses = <0x82002000 0 0xd004c000 0 0x2000>; 188 assigned-addresses = <0x82002000 0 0x4c000 0 0x2000>;
114 reg = <0x2000 0 0 0 0>; 189 reg = <0x2000 0 0 0 0>;
115 #address-cells = <3>; 190 #address-cells = <3>;
116 #size-cells = <2>; 191 #size-cells = <2>;
117 #interrupt-cells = <1>; 192 #interrupt-cells = <1>;
118 ranges; 193 ranges = <0x82000000 0 0 0x82000000 0x4 0 1 0
194 0x81000000 0 0 0x81000000 0x4 0 1 0>;
119 interrupt-map-mask = <0 0 0 0>; 195 interrupt-map-mask = <0 0 0 0>;
120 interrupt-map = <0 0 0 0 &mpic 61>; 196 interrupt-map = <0 0 0 0 &mpic 61>;
121 marvell,pcie-port = <0>; 197 marvell,pcie-port = <0>;
@@ -126,12 +202,13 @@ pcie-controller {
126 202
127 pcie@5,0 { 203 pcie@5,0 {
128 device_type = "pci"; 204 device_type = "pci";
129 assigned-addresses = <0x82002800 0 0xd0080000 0 0x2000>; 205 assigned-addresses = <0x82002800 0 0x80000 0 0x2000>;
130 reg = <0x2800 0 0 0 0>; 206 reg = <0x2800 0 0 0 0>;
131 #address-cells = <3>; 207 #address-cells = <3>;
132 #size-cells = <2>; 208 #size-cells = <2>;
133 #interrupt-cells = <1>; 209 #interrupt-cells = <1>;
134 ranges; 210 ranges = <0x82000000 0 0 0x82000000 0x5 0 1 0
211 0x81000000 0 0 0x81000000 0x5 0 1 0>;
135 interrupt-map-mask = <0 0 0 0>; 212 interrupt-map-mask = <0 0 0 0>;
136 interrupt-map = <0 0 0 0 &mpic 62>; 213 interrupt-map = <0 0 0 0 &mpic 62>;
137 marvell,pcie-port = <1>; 214 marvell,pcie-port = <1>;
@@ -142,12 +219,13 @@ pcie-controller {
142 219
143 pcie@6,0 { 220 pcie@6,0 {
144 device_type = "pci"; 221 device_type = "pci";
145 assigned-addresses = <0x82003000 0 0xd0084000 0 0x2000>; 222 assigned-addresses = <0x82003000 0 0x84000 0 0x2000>;
146 reg = <0x3000 0 0 0 0>; 223 reg = <0x3000 0 0 0 0>;
147 #address-cells = <3>; 224 #address-cells = <3>;
148 #size-cells = <2>; 225 #size-cells = <2>;
149 #interrupt-cells = <1>; 226 #interrupt-cells = <1>;
150 ranges; 227 ranges = <0x82000000 0 0 0x82000000 0x6 0 1 0
228 0x81000000 0 0 0x81000000 0x6 0 1 0>;
151 interrupt-map-mask = <0 0 0 0>; 229 interrupt-map-mask = <0 0 0 0>;
152 interrupt-map = <0 0 0 0 &mpic 63>; 230 interrupt-map = <0 0 0 0 &mpic 63>;
153 marvell,pcie-port = <1>; 231 marvell,pcie-port = <1>;
@@ -158,12 +236,13 @@ pcie-controller {
158 236
159 pcie@7,0 { 237 pcie@7,0 {
160 device_type = "pci"; 238 device_type = "pci";
161 assigned-addresses = <0x82003800 0 0xd0088000 0 0x2000>; 239 assigned-addresses = <0x82003800 0 0x88000 0 0x2000>;
162 reg = <0x3800 0 0 0 0>; 240 reg = <0x3800 0 0 0 0>;
163 #address-cells = <3>; 241 #address-cells = <3>;
164 #size-cells = <2>; 242 #size-cells = <2>;
165 #interrupt-cells = <1>; 243 #interrupt-cells = <1>;
166 ranges; 244 ranges = <0x82000000 0 0 0x82000000 0x7 0 1 0
245 0x81000000 0 0 0x81000000 0x7 0 1 0>;
167 interrupt-map-mask = <0 0 0 0>; 246 interrupt-map-mask = <0 0 0 0>;
168 interrupt-map = <0 0 0 0 &mpic 64>; 247 interrupt-map = <0 0 0 0 &mpic 64>;
169 marvell,pcie-port = <1>; 248 marvell,pcie-port = <1>;
@@ -174,12 +253,13 @@ pcie-controller {
174 253
175 pcie@8,0 { 254 pcie@8,0 {
176 device_type = "pci"; 255 device_type = "pci";
177 assigned-addresses = <0x82004000 0 0xd008c000 0 0x2000>; 256 assigned-addresses = <0x82004000 0 0x8c000 0 0x2000>;
178 reg = <0x4000 0 0 0 0>; 257 reg = <0x4000 0 0 0 0>;
179 #address-cells = <3>; 258 #address-cells = <3>;
180 #size-cells = <2>; 259 #size-cells = <2>;
181 #interrupt-cells = <1>; 260 #interrupt-cells = <1>;
182 ranges; 261 ranges = <0x82000000 0 0 0x82000000 0x8 0 1 0
262 0x81000000 0 0 0x81000000 0x8 0 1 0>;
183 interrupt-map-mask = <0 0 0 0>; 263 interrupt-map-mask = <0 0 0 0>;
184 interrupt-map = <0 0 0 0 &mpic 65>; 264 interrupt-map = <0 0 0 0 &mpic 65>;
185 marvell,pcie-port = <1>; 265 marvell,pcie-port = <1>;
@@ -187,14 +267,16 @@ pcie-controller {
187 clocks = <&gateclk 12>; 267 clocks = <&gateclk 12>;
188 status = "disabled"; 268 status = "disabled";
189 }; 269 };
270
190 pcie@9,0 { 271 pcie@9,0 {
191 device_type = "pci"; 272 device_type = "pci";
192 assigned-addresses = <0x82004800 0 0xd0042000 0 0x2000>; 273 assigned-addresses = <0x82004800 0 0x42000 0 0x2000>;
193 reg = <0x4800 0 0 0 0>; 274 reg = <0x4800 0 0 0 0>;
194 #address-cells = <3>; 275 #address-cells = <3>;
195 #size-cells = <2>; 276 #size-cells = <2>;
196 #interrupt-cells = <1>; 277 #interrupt-cells = <1>;
197 ranges; 278 ranges = <0x82000000 0 0 0x82000000 0x9 0 1 0
279 0x81000000 0 0 0x81000000 0x9 0 1 0>;
198 interrupt-map-mask = <0 0 0 0>; 280 interrupt-map-mask = <0 0 0 0>;
199 interrupt-map = <0 0 0 0 &mpic 99>; 281 interrupt-map = <0 0 0 0 &mpic 99>;
200 marvell,pcie-port = <2>; 282 marvell,pcie-port = <2>;
@@ -205,12 +287,13 @@ pcie-controller {
205 287
206 pcie@10,0 { 288 pcie@10,0 {
207 device_type = "pci"; 289 device_type = "pci";
208 assigned-addresses = <0x82005000 0 0xd0082000 0 0x2000>; 290 assigned-addresses = <0x82005000 0 0x82000 0 0x2000>;
209 reg = <0x5000 0 0 0 0>; 291 reg = <0x5000 0 0 0 0>;
210 #address-cells = <3>; 292 #address-cells = <3>;
211 #size-cells = <2>; 293 #size-cells = <2>;
212 #interrupt-cells = <1>; 294 #interrupt-cells = <1>;
213 ranges; 295 ranges = <0x82000000 0 0 0x82000000 0xa 0 1 0
296 0x81000000 0 0 0x81000000 0xa 0 1 0>;
214 interrupt-map-mask = <0 0 0 0>; 297 interrupt-map-mask = <0 0 0 0>;
215 interrupt-map = <0 0 0 0 &mpic 103>; 298 interrupt-map = <0 0 0 0 &mpic 103>;
216 marvell,pcie-port = <3>; 299 marvell,pcie-port = <3>;
diff --git a/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt b/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt
new file mode 100644
index 000000000000..6b7510775c50
--- /dev/null
+++ b/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt
@@ -0,0 +1,163 @@
1NVIDIA Tegra PCIe controller
2
3Required properties:
4- compatible: "nvidia,tegra20-pcie" or "nvidia,tegra30-pcie"
5- device_type: Must be "pci"
6- reg: A list of physical base address and length for each set of controller
7 registers. Must contain an entry for each entry in the reg-names property.
8- reg-names: Must include the following entries:
9 "pads": PADS registers
10 "afi": AFI registers
11 "cs": configuration space region
12- interrupts: A list of interrupt outputs of the controller. Must contain an
13 entry for each entry in the interrupt-names property.
14- interrupt-names: Must include the following entries:
15 "intr": The Tegra interrupt that is asserted for controller interrupts
16 "msi": The Tegra interrupt that is asserted when an MSI is received
17- pex-clk-supply: Supply voltage for internal reference clock
18- vdd-supply: Power supply for controller (1.05V)
19- avdd-supply: Power supply for controller (1.05V) (not required for Tegra20)
20- bus-range: Range of bus numbers associated with this controller
21- #address-cells: Address representation for root ports (must be 3)
22 - cell 0 specifies the bus and device numbers of the root port:
23 [23:16]: bus number
24 [15:11]: device number
25 - cell 1 denotes the upper 32 address bits and should be 0
26 - cell 2 contains the lower 32 address bits and is used to translate to the
27 CPU address space
28- #size-cells: Size representation for root ports (must be 2)
29- ranges: Describes the translation of addresses for root ports and standard
30 PCI regions. The entries must be 6 cells each, where the first three cells
31 correspond to the address as described for the #address-cells property
32 above, the fourth cell is the physical CPU address to translate to and the
33 fifth and six cells are as described for the #size-cells property above.
34 - The first two entries are expected to translate the addresses for the root
35 port registers, which are referenced by the assigned-addresses property of
36 the root port nodes (see below).
37 - The remaining entries setup the mapping for the standard I/O, memory and
38 prefetchable PCI regions. The first cell determines the type of region
39 that is setup:
40 - 0x81000000: I/O memory region
41 - 0x82000000: non-prefetchable memory region
42 - 0xc2000000: prefetchable memory region
43 Please refer to the standard PCI bus binding document for a more detailed
44 explanation.
45- clocks: List of clock inputs of the controller. Must contain an entry for
46 each entry in the clock-names property.
47- clock-names: Must include the following entries:
48 "pex": The Tegra clock of that name
49 "afi": The Tegra clock of that name
50 "pcie_xclk": The Tegra clock of that name
51 "pll_e": The Tegra clock of that name
52 "cml": The Tegra clock of that name (not required for Tegra20)
53
54Root ports are defined as subnodes of the PCIe controller node.
55
56Required properties:
57- device_type: Must be "pci"
58- assigned-addresses: Address and size of the port configuration registers
59- reg: PCI bus address of the root port
60- #address-cells: Must be 3
61- #size-cells: Must be 2
62- ranges: Sub-ranges distributed from the PCIe controller node. An empty
63 property is sufficient.
64- nvidia,num-lanes: Number of lanes to use for this port. Valid combinations
65 are:
66 - Root port 0 uses 4 lanes, root port 1 is unused.
67 - Both root ports use 2 lanes.
68
69Example:
70
71SoC DTSI:
72
73 pcie-controller {
74 compatible = "nvidia,tegra20-pcie";
75 device_type = "pci";
76 reg = <0x80003000 0x00000800 /* PADS registers */
77 0x80003800 0x00000200 /* AFI registers */
78 0x90000000 0x10000000>; /* configuration space */
79 reg-names = "pads", "afi", "cs";
80 interrupts = <0 98 0x04 /* controller interrupt */
81 0 99 0x04>; /* MSI interrupt */
82 interrupt-names = "intr", "msi";
83
84 bus-range = <0x00 0xff>;
85 #address-cells = <3>;
86 #size-cells = <2>;
87
88 ranges = <0x82000000 0 0x80000000 0x80000000 0 0x00001000 /* port 0 registers */
89 0x82000000 0 0x80001000 0x80001000 0 0x00001000 /* port 1 registers */
90 0x81000000 0 0 0x82000000 0 0x00010000 /* downstream I/O */
91 0x82000000 0 0xa0000000 0xa0000000 0 0x10000000 /* non-prefetchable memory */
92 0xc2000000 0 0xb0000000 0xb0000000 0 0x10000000>; /* prefetchable memory */
93
94 clocks = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 74>,
95 <&tegra_car 118>;
96 clock-names = "pex", "afi", "pcie_xclk", "pll_e";
97 status = "disabled";
98
99 pci@1,0 {
100 device_type = "pci";
101 assigned-addresses = <0x82000800 0 0x80000000 0 0x1000>;
102 reg = <0x000800 0 0 0 0>;
103 status = "disabled";
104
105 #address-cells = <3>;
106 #size-cells = <2>;
107
108 ranges;
109
110 nvidia,num-lanes = <2>;
111 };
112
113 pci@2,0 {
114 device_type = "pci";
115 assigned-addresses = <0x82001000 0 0x80001000 0 0x1000>;
116 reg = <0x001000 0 0 0 0>;
117 status = "disabled";
118
119 #address-cells = <3>;
120 #size-cells = <2>;
121
122 ranges;
123
124 nvidia,num-lanes = <2>;
125 };
126 };
127
128
129Board DTS:
130
131 pcie-controller {
132 status = "okay";
133
134 vdd-supply = <&pci_vdd_reg>;
135 pex-clk-supply = <&pci_clk_reg>;
136
137 /* root port 00:01.0 */
138 pci@1,0 {
139 status = "okay";
140
141 /* bridge 01:00.0 (optional) */
142 pci@0,0 {
143 reg = <0x010000 0 0 0 0>;
144
145 #address-cells = <3>;
146 #size-cells = <2>;
147
148 device_type = "pci";
149
150 /* endpoint 02:00.0 */
151 pci@0,0 {
152 reg = <0x020000 0 0 0 0>;
153 };
154 };
155 };
156 };
157
158Note that devices on the PCI bus are dynamically discovered using PCI's bus
159enumeration and therefore don't need corresponding device nodes in DT. However
160if a device on the PCI bus provides a non-probeable bus such as I2C or SPI,
161device nodes need to be added in order to allow the bus' children to be
162instantiated at the proper location in the operating system's device tree (as
163illustrated by the optional nodes in the example above).
diff --git a/Documentation/devicetree/bindings/pci/ralink,rt3883-pci.txt b/Documentation/devicetree/bindings/pci/ralink,rt3883-pci.txt
new file mode 100644
index 000000000000..8e0a1eb0acbb
--- /dev/null
+++ b/Documentation/devicetree/bindings/pci/ralink,rt3883-pci.txt
@@ -0,0 +1,190 @@
1* Mediatek/Ralink RT3883 PCI controller
2
31) Main node
4
5 Required properties:
6
7 - compatible: must be "ralink,rt3883-pci"
8
9 - reg: specifies the physical base address of the controller and
10 the length of the memory mapped region.
11
12 - #address-cells: specifies the number of cells needed to encode an
13 address. The value must be 1.
14
15 - #size-cells: specifies the number of cells used to represent the size
16 of an address. The value must be 1.
17
18 - ranges: specifies the translation between child address space and parent
19 address space
20
21 Optional properties:
22
23 - status: indicates the operational status of the device.
24 Value must be either "disabled" or "okay".
25
262) Child nodes
27
28 The main node must have two child nodes which describes the built-in
29 interrupt controller and the PCI host bridge.
30
31 a) Interrupt controller:
32
33 Required properties:
34
35 - interrupt-controller: identifies the node as an interrupt controller
36
37 - #address-cells: specifies the number of cells needed to encode an
38 address. The value must be 0. As such, 'interrupt-map' nodes do not
39 have to specify a parent unit address.
40
41 - #interrupt-cells: specifies the number of cells needed to encode an
42 interrupt source. The value must be 1.
43
44 - interrupt-parent: the phandle for the interrupt controller that
45 services interrupts for this device.
46
47 - interrupts: specifies the interrupt source of the parent interrupt
48 controller. The format of the interrupt specifier depends on the
49 parent interrupt controller.
50
51 b) PCI host bridge:
52
53 Required properties:
54
55 - #address-cells: specifies the number of cells needed to encode an
56 address. The value must be 0.
57
58 - #size-cells: specifies the number of cells used to represent the size
59 of an address. The value must be 2.
60
61 - #interrupt-cells: specifies the number of cells needed to encode an
62 interrupt source. The value must be 1.
63
64 - device_type: must be "pci"
65
66 - bus-range: PCI bus numbers covered
67
68 - ranges: specifies the ranges for the PCI memory and I/O regions
69
70 - interrupt-map-mask,
71 - interrupt-map: standard PCI properties to define the mapping of the
72 PCI interface to interrupt numbers.
73
74 The PCI host bridge node migh have additional sub-nodes representing
75 the onboard PCI devices/PCI slots. Each such sub-node must have the
76 following mandatory properties:
77
78 - reg: used only for interrupt mapping, so only the first four bytes
79 are used to refer to the correct bus number and device number.
80
81 - device_type: must be "pci"
82
83 If a given sub-node represents a PCI bridge it must have following
84 mandatory properties as well:
85
86 - #address-cells: must be set to <3>
87
88 - #size-cells: must set to <2>
89
90 - #interrupt-cells: must be set to <1>
91
92 - interrupt-map-mask,
93 - interrupt-map: standard PCI properties to define the mapping of the
94 PCI interface to interrupt numbers.
95
96 Besides the required properties the sub-nodes may have these optional
97 properties:
98
99 - status: indicates the operational status of the sub-node.
100 Value must be either "disabled" or "okay".
101
1023) Example:
103
104 a) SoC specific dtsi file:
105
106 pci@10140000 {
107 compatible = "ralink,rt3883-pci";
108 reg = <0x10140000 0x20000>;
109 #address-cells = <1>;
110 #size-cells = <1>;
111 ranges; /* direct mapping */
112
113 status = "disabled";
114
115 pciintc: interrupt-controller {
116 interrupt-controller;
117 #address-cells = <0>;
118 #interrupt-cells = <1>;
119
120 interrupt-parent = <&cpuintc>;
121 interrupts = <4>;
122 };
123
124 host-bridge {
125 #address-cells = <3>;
126 #size-cells = <2>;
127 #interrupt-cells = <1>;
128
129 device_type = "pci";
130
131 bus-range = <0 255>;
132 ranges = <
133 0x02000000 0 0x00000000 0x20000000 0 0x10000000 /* pci memory */
134 0x01000000 0 0x00000000 0x10160000 0 0x00010000 /* io space */
135 >;
136
137 interrupt-map-mask = <0xf800 0 0 7>;
138 interrupt-map = <
139 /* IDSEL 17 */
140 0x8800 0 0 1 &pciintc 18
141 0x8800 0 0 2 &pciintc 18
142 0x8800 0 0 3 &pciintc 18
143 0x8800 0 0 4 &pciintc 18
144 /* IDSEL 18 */
145 0x9000 0 0 1 &pciintc 19
146 0x9000 0 0 2 &pciintc 19
147 0x9000 0 0 3 &pciintc 19
148 0x9000 0 0 4 &pciintc 19
149 >;
150
151 pci-bridge@1 {
152 reg = <0x0800 0 0 0 0>;
153 device_type = "pci";
154 #interrupt-cells = <1>;
155 #address-cells = <3>;
156 #size-cells = <2>;
157
158 interrupt-map-mask = <0x0 0 0 0>;
159 interrupt-map = <0x0 0 0 0 &pciintc 20>;
160
161 status = "disabled";
162 };
163
164 pci-slot@17 {
165 reg = <0x8800 0 0 0 0>;
166 device_type = "pci";
167
168 status = "disabled";
169 };
170
171 pci-slot@18 {
172 reg = <0x9000 0 0 0 0>;
173 device_type = "pci";
174
175 status = "disabled";
176 };
177 };
178 };
179
180 b) Board specific dts file:
181
182 pci@10140000 {
183 status = "okay";
184
185 host-bridge {
186 pci-bridge@1 {
187 status = "okay";
188 };
189 };
190 };
diff --git a/Documentation/devicetree/bindings/phy/phy-bindings.txt b/Documentation/devicetree/bindings/phy/phy-bindings.txt
new file mode 100644
index 000000000000..8ae844fc0c60
--- /dev/null
+++ b/Documentation/devicetree/bindings/phy/phy-bindings.txt
@@ -0,0 +1,66 @@
1This document explains only the device tree data binding. For general
2information about PHY subsystem refer to Documentation/phy.txt
3
4PHY device node
5===============
6
7Required Properties:
8#phy-cells: Number of cells in a PHY specifier; The meaning of all those
9 cells is defined by the binding for the phy node. The PHY
10 provider can use the values in cells to find the appropriate
11 PHY.
12
13For example:
14
15phys: phy {
16 compatible = "xxx";
17 reg = <...>;
18 .
19 .
20 #phy-cells = <1>;
21 .
22 .
23};
24
25That node describes an IP block (PHY provider) that implements 2 different PHYs.
26In order to differentiate between these 2 PHYs, an additonal specifier should be
27given while trying to get a reference to it.
28
29PHY user node
30=============
31
32Required Properties:
33phys : the phandle for the PHY device (used by the PHY subsystem)
34phy-names : the names of the PHY corresponding to the PHYs present in the
35 *phys* phandle
36
37Example 1:
38usb1: usb_otg_ss@xxx {
39 compatible = "xxx";
40 reg = <xxx>;
41 .
42 .
43 phys = <&usb2_phy>, <&usb3_phy>;
44 phy-names = "usb2phy", "usb3phy";
45 .
46 .
47};
48
49This node represents a controller that uses two PHYs, one for usb2 and one for
50usb3.
51
52Example 2:
53usb2: usb_otg_ss@xxx {
54 compatible = "xxx";
55 reg = <xxx>;
56 .
57 .
58 phys = <&phys 1>;
59 phy-names = "usbphy";
60 .
61 .
62};
63
64This node represents a controller that uses one of the PHYs of the PHY provider
65device defined previously. Note that the phy handle has an additional specifier
66"1" to differentiate between the two PHYs.
diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt b/Documentation/devicetree/bindings/phy/samsung-phy.txt
new file mode 100644
index 000000000000..c0fccaa1671e
--- /dev/null
+++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt
@@ -0,0 +1,22 @@
1Samsung S5P/EXYNOS SoC series MIPI CSIS/DSIM DPHY
2-------------------------------------------------
3
4Required properties:
5- compatible : should be "samsung,s5pv210-mipi-video-phy";
6- reg : offset and length of the MIPI DPHY register set;
7- #phy-cells : from the generic phy bindings, must be 1;
8
9For "samsung,s5pv210-mipi-video-phy" compatible PHYs the second cell in
10the PHY specifier identifies the PHY and its meaning is as follows:
11 0 - MIPI CSIS 0,
12 1 - MIPI DSIM 0,
13 2 - MIPI CSIS 1,
14 3 - MIPI DSIM 1.
15
16Samsung EXYNOS SoC series Display Port PHY
17-------------------------------------------------
18
19Required properties:
20- compatible : should be "samsung,exynos5250-dp-video-phy";
21- reg : offset and length of the Display Port PHY register set;
22- #phy-cells : from the generic PHY bindings, must be 0;
diff --git a/Documentation/devicetree/bindings/pinctrl/abilis,tb10x-iomux.txt b/Documentation/devicetree/bindings/pinctrl/abilis,tb10x-iomux.txt
new file mode 100644
index 000000000000..2c11866221c2
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/abilis,tb10x-iomux.txt
@@ -0,0 +1,80 @@
1Abilis Systems TB10x pin controller
2===================================
3
4Required properties
5-------------------
6
7- compatible: should be "abilis,tb10x-iomux";
8- reg: should contain the physical address and size of the pin controller's
9 register range.
10
11
12Function definitions
13--------------------
14
15Functions are defined (and referenced) by sub-nodes of the pin controller.
16Every sub-node defines exactly one function (implying a set of pins).
17Every function is associated to one named pin group inside the pin controller
18driver and these names are used to associate pin group predefinitions to pin
19controller sub-nodes.
20
21Required function definition subnode properties:
22 - abilis,function: should be set to the name of the function's pin group.
23
24The following pin groups are available:
25 - GPIO ports: gpioa, gpiob, gpioc, gpiod, gpioe, gpiof, gpiog,
26 gpioh, gpioi, gpioj, gpiok, gpiol, gpiom, gpion
27 - Serial TS input ports: mis0, mis1, mis2, mis3, mis4, mis5, mis6, mis7
28 - Parallel TS input ports: mip1, mip3, mip5, mip7
29 - Serial TS output ports: mos0, mos1, mos2, mos3
30 - Parallel TS output port: mop
31 - CI+ port: ciplus
32 - CableCard (Mcard) port: mcard
33 - Smart card ports: stc0, stc1
34 - UART ports: uart0, uart1
35 - SPI ports: spi1, spi3
36 - JTAG: jtag
37
38All other ports of the chip are not multiplexed and thus not managed by this
39driver.
40
41
42GPIO ranges definition
43----------------------
44
45The named pin groups of GPIO ports can be used to define GPIO ranges as
46explained in Documentation/devicetree/bindings/gpio/gpio.txt.
47
48
49Example
50-------
51
52iomux: iomux@FF10601c {
53 compatible = "abilis,tb10x-iomux";
54 reg = <0xFF10601c 0x4>;
55 pctl_gpio_a: pctl-gpio-a {
56 abilis,function = "gpioa";
57 };
58 pctl_uart0: pctl-uart0 {
59 abilis,function = "uart0";
60 };
61};
62uart@FF100000 {
63 compatible = "snps,dw-apb-uart";
64 reg = <0xFF100000 0x100>;
65 clock-frequency = <166666666>;
66 interrupts = <25 1>;
67 reg-shift = <2>;
68 reg-io-width = <4>;
69 pinctrl-names = "default";
70 pinctrl-0 = <&pctl_uart0>;
71};
72gpioa: gpio@FF140000 {
73 compatible = "abilis,tb10x-gpio";
74 reg = <0xFF140000 0x1000>;
75 gpio-controller;
76 #gpio-cells = <2>;
77 ngpio = <3>;
78 gpio-ranges = <&iomux 0 0>;
79 gpio-ranges-group-names = "gpioa";
80};
diff --git a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt
index 648d60eb9fd8..02ab5ab198a4 100644
--- a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt
@@ -18,7 +18,7 @@ mode) this pin can work on and the 'config' configures various pad settings
18such as pull-up, multi drive, etc. 18such as pull-up, multi drive, etc.
19 19
20Required properties for iomux controller: 20Required properties for iomux controller:
21- compatible: "atmel,at91rm9200-pinctrl" 21- compatible: "atmel,at91rm9200-pinctrl" or "atmel,at91sam9x5-pinctrl"
22- atmel,mux-mask: array of mask (periph per bank) to describe if a pin can be 22- atmel,mux-mask: array of mask (periph per bank) to describe if a pin can be
23 configured in this periph mode. All the periph and bank need to be describe. 23 configured in this periph mode. All the periph and bank need to be describe.
24 24
@@ -37,7 +37,7 @@ Bank: 3 (A, B and C)
37 0xffffffff 0x7fff3ccf /* pioB */ 37 0xffffffff 0x7fff3ccf /* pioB */
38 0xffffffff 0x007fffff /* pioC */ 38 0xffffffff 0x007fffff /* pioC */
39 39
40For each peripheral/bank we will descibe in a u32 if a pin can can be 40For each peripheral/bank we will descibe in a u32 if a pin can be
41configured in it by putting 1 to the pin bit (1 << pin) 41configured in it by putting 1 to the pin bit (1 << pin)
42 42
43Let's take the pioA on peripheral B 43Let's take the pioA on peripheral B
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt
index 3a7caf7a744a..9fde25f1401a 100644
--- a/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt
@@ -22,11 +22,12 @@ Required properties for iomux controller:
22 Please refer to each fsl,<soc>-pinctrl.txt binding doc for supported SoCs. 22 Please refer to each fsl,<soc>-pinctrl.txt binding doc for supported SoCs.
23 23
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: each entry consists of 6 integers and represents the mux and config
26 setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a 26 setting for one pin. The first 5 integers <mux_reg conf_reg input_reg mux_val
27 pin working on a specific function, which consists of a tuple of 27 input_val> are specified using a PIN_FUNC_ID macro, which can be found in
28 <mux_reg conf_reg input_reg mux_val input_val>. CONFIG is the pad setting 28 imx*-pinfunc.h under device tree source folder. The last integer CONFIG is
29 value like pull-up on this pin. 29 the pad setting value like pull-up on this pin. And that's why fsl,pins entry
30 looks like <PIN_FUNC_ID CONFIG> in the example below.
30 31
31Bits used for CONFIG: 32Bits used for CONFIG:
32NO_PAD_CTL(1 << 31): indicate this pin does not need config. 33NO_PAD_CTL(1 << 31): indicate this pin does not need config.
@@ -72,17 +73,18 @@ iomuxc@020e0000 {
72 /* shared pinctrl settings */ 73 /* shared pinctrl settings */
73 usdhc4 { 74 usdhc4 {
74 pinctrl_usdhc4_1: usdhc4grp-1 { 75 pinctrl_usdhc4_1: usdhc4grp-1 {
75 fsl,pins = <1386 0x17059 /* MX6Q_PAD_SD4_CMD__USDHC4_CMD */ 76 fsl,pins = <
76 1392 0x10059 /* MX6Q_PAD_SD4_CLK__USDHC4_CLK */ 77 MX6QDL_PAD_SD4_CMD__SD4_CMD 0x17059
77 1462 0x17059 /* MX6Q_PAD_SD4_DAT0__USDHC4_DAT0 */ 78 MX6QDL_PAD_SD4_CLK__SD4_CLK 0x10059
78 1470 0x17059 /* MX6Q_PAD_SD4_DAT1__USDHC4_DAT1 */ 79 MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17059
79 1478 0x17059 /* MX6Q_PAD_SD4_DAT2__USDHC4_DAT2 */ 80 MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17059
80 1486 0x17059 /* MX6Q_PAD_SD4_DAT3__USDHC4_DAT3 */ 81 MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17059
81 1493 0x17059 /* MX6Q_PAD_SD4_DAT4__USDHC4_DAT4 */ 82 MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17059
82 1501 0x17059 /* MX6Q_PAD_SD4_DAT5__USDHC4_DAT5 */ 83 MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17059
83 1509 0x17059 /* MX6Q_PAD_SD4_DAT6__USDHC4_DAT6 */ 84 MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17059
84 1517 0x17059>; /* MX6Q_PAD_SD4_DAT7__USDHC4_DAT7 */ 85 MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17059
85 }; 86 MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17059
87 >;
86 }; 88 };
87 .... 89 ....
88}; 90};
@@ -90,6 +92,3 @@ Refer to the IOMUXC controller chapter in imx6q datasheet,
900x17059 means enable hysteresis, 47KOhm Pull Up, 50Mhz speed, 920x17059 means enable hysteresis, 47KOhm Pull Up, 50Mhz speed,
9180Ohm driver strength and Fast Slew Rate. 9380Ohm driver strength and Fast Slew Rate.
92User should refer to each SoC spec to set the correct value. 94User should refer to each SoC spec to set the correct value.
93
94TODO: when dtc macro support is available, we can change above raw data
95to dt macro which can get better readability in dts file.
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx27-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx27-pinctrl.txt
new file mode 100644
index 000000000000..353eca0efbf8
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx27-pinctrl.txt
@@ -0,0 +1,99 @@
1* Freescale IMX27 IOMUX Controller
2
3Required properties:
4- compatible: "fsl,imx27-iomuxc"
5
6The iomuxc driver node should define subnodes containing of pinctrl configuration subnodes.
7
8Required properties for pin configuration node:
9- fsl,pins: three integers array, represents a group of pins mux and config
10 setting. The format is fsl,pins = <PIN MUX_ID CONFIG>.
11
12 PIN is an integer between 0 and 0xbf. imx27 has 6 ports with 32 configurable
13 configurable pins each. PIN is PORT * 32 + PORT_PIN, PORT_PIN is the pin
14 number on the specific port (between 0 and 31).
15
16 MUX_ID is
17 function + (direction << 2) + (gpio_oconf << 4) + (gpio_iconfa << 8) + (gpio_iconfb << 10)
18
19 function value is used to select the pin function.
20 Possible values:
21 0 - Primary function
22 1 - Alternate function
23 2 - GPIO
24 Registers: GIUS (GPIO In Use), GPR (General Purpose Register)
25
26 direction defines the data direction of the pin.
27 Possible values:
28 0 - Input
29 1 - Output
30 Register: DDIR
31
32 gpio_oconf configures the gpio submodule output signal. This does not
33 have any effect unless GPIO function is selected. A/B/C_IN are output
34 signals of function blocks A,B and C. Specific function blocks are
35 described in the reference manual.
36 Possible values:
37 0 - A_IN
38 1 - B_IN
39 2 - C_IN
40 3 - Data Register
41 Registers: OCR1, OCR2
42
43 gpio_iconfa/b configures the gpio submodule input to functionblocks A and
44 B. GPIO function should be selected if this is configured.
45 Possible values:
46 0 - GPIO_IN
47 1 - Interrupt Status Register
48 2 - Pulldown
49 3 - Pullup
50 Registers ICONFA1, ICONFA2, ICONFB1 and ICONFB2
51
52 CONFIG can be 0 or 1, meaning Pullup disable/enable.
53
54
55
56Example:
57
58iomuxc: iomuxc@10015000 {
59 compatible = "fsl,imx27-iomuxc";
60 reg = <0x10015000 0x600>;
61
62 uart {
63 pinctrl_uart1: uart-1 {
64 fsl,pins = <
65 0x8c 0x004 0x0 /* UART1_TXD__UART1_TXD */
66 0x8d 0x000 0x0 /* UART1_RXD__UART1_RXD */
67 0x8e 0x004 0x0 /* UART1_CTS__UART1_CTS */
68 0x8f 0x000 0x0 /* UART1_RTS__UART1_RTS */
69 >;
70 };
71
72 ...
73 };
74};
75
76
77For convenience there are macros defined in imx27-pinfunc.h which provide PIN
78and MUX_ID. They are structured as MX27_PAD_<Pad name>__<Signal name>. The names
79are defined in the i.MX27 reference manual.
80
81The above example using macros:
82
83iomuxc: iomuxc@10015000 {
84 compatible = "fsl,imx27-iomuxc";
85 reg = <0x10015000 0x600>;
86
87 uart {
88 pinctrl_uart1: uart-1 {
89 fsl,pins = <
90 MX27_PAD_UART1_TXD__UART1_TXD 0x0
91 MX27_PAD_UART1_RXD__UART1_RXD 0x0
92 MX27_PAD_UART1_CTS__UART1_CTS 0x0
93 MX27_PAD_UART1_RTS__UART1_RTS 0x0
94 >;
95 };
96
97 ...
98 };
99};
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt
index 3077370c89af..1e70a8aff260 100644
--- a/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt
@@ -59,16 +59,16 @@ Required subnode-properties:
59 59
60Optional subnode-properties: 60Optional subnode-properties:
61- fsl,drive-strength: Integer. 61- fsl,drive-strength: Integer.
62 0: 4 mA 62 0: MXS_DRIVE_4mA
63 1: 8 mA 63 1: MXS_DRIVE_8mA
64 2: 12 mA 64 2: MXS_DRIVE_12mA
65 3: 16 mA 65 3: MXS_DRIVE_16mA
66- fsl,voltage: Integer. 66- fsl,voltage: Integer.
67 0: 1.8 V 67 0: MXS_VOLTAGE_LOW - 1.8 V
68 1: 3.3 V 68 1: MXS_VOLTAGE_HIGH - 3.3 V
69- fsl,pull-up: Integer. 69- fsl,pull-up: Integer.
70 0: Disable the internal pull-up 70 0: MXS_PULL_DISABLE - Disable the internal pull-up
71 1: Enable the internal pull-up 71 1: MXS_PULL_ENABLE - Enable the internal pull-up
72 72
73Note that when enabling the pull-up, the internal pad keeper gets disabled. 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 74Also, some pins doesn't have a pull up, in that case, setting the fsl,pull-up
@@ -85,23 +85,32 @@ pinctrl@80018000 {
85 mmc0_8bit_pins_a: mmc0-8bit@0 { 85 mmc0_8bit_pins_a: mmc0-8bit@0 {
86 reg = <0>; 86 reg = <0>;
87 fsl,pinmux-ids = < 87 fsl,pinmux-ids = <
88 0x2000 0x2010 0x2020 0x2030 88 MX28_PAD_SSP0_DATA0__SSP0_D0
89 0x2040 0x2050 0x2060 0x2070 89 MX28_PAD_SSP0_DATA1__SSP0_D1
90 0x2080 0x2090 0x20a0>; 90 MX28_PAD_SSP0_DATA2__SSP0_D2
91 fsl,drive-strength = <1>; 91 MX28_PAD_SSP0_DATA3__SSP0_D3
92 fsl,voltage = <1>; 92 MX28_PAD_SSP0_DATA4__SSP0_D4
93 fsl,pull-up = <1>; 93 MX28_PAD_SSP0_DATA5__SSP0_D5
94 MX28_PAD_SSP0_DATA6__SSP0_D6
95 MX28_PAD_SSP0_DATA7__SSP0_D7
96 MX28_PAD_SSP0_CMD__SSP0_CMD
97 MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT
98 MX28_PAD_SSP0_SCK__SSP0_SCK
99 >;
100 fsl,drive-strength = <MXS_DRIVE_4mA>;
101 fsl,voltage = <MXS_VOLTAGE_HIGH>;
102 fsl,pull-up = <MXS_PULL_ENABLE>;
94 }; 103 };
95 104
96 mmc_cd_cfg: mmc-cd-cfg { 105 mmc_cd_cfg: mmc-cd-cfg {
97 fsl,pinmux-ids = <0x2090>; 106 fsl,pinmux-ids = <MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT>;
98 fsl,pull-up = <0>; 107 fsl,pull-up = <MXS_PULL_DISABLE>;
99 }; 108 };
100 109
101 mmc_sck_cfg: mmc-sck-cfg { 110 mmc_sck_cfg: mmc-sck-cfg {
102 fsl,pinmux-ids = <0x20a0>; 111 fsl,pinmux-ids = <MX28_PAD_SSP0_SCK__SSP0_SCK>;
103 fsl,drive-strength = <2>; 112 fsl,drive-strength = <MXS_DRIVE_12mA>;
104 fsl,pull-up = <0>; 113 fsl,pull-up = <MXS_PULL_DISABLE>;
105 }; 114 };
106}; 115};
107 116
@@ -112,811 +121,7 @@ adjusting the configuration for pins card-detection and clock from what group
112node mmc0-8bit defines. Only the configuration properties to be adjusted need 121node mmc0-8bit defines. Only the configuration properties to be adjusted need
113to be listed in the config nodes. 122to be listed in the config nodes.
114 123
115Valid values for i.MX28 pinmux-id: 124Valid values for i.MX28/i.MX23 pinmux-id are defined in
116 125arch/arm/boot/dts/imx28-pinfunc.h and arch/arm/boot/dts/imx23-pinfunc.h.
117pinmux id 126The definitions for the padconfig properties can be found in
118------ -- 127arch/arm/boot/dts/mxs-pinfunc.h.
119MX28_PAD_GPMI_D00__GPMI_D0 0x0000
120MX28_PAD_GPMI_D01__GPMI_D1 0x0010
121MX28_PAD_GPMI_D02__GPMI_D2 0x0020
122MX28_PAD_GPMI_D03__GPMI_D3 0x0030
123MX28_PAD_GPMI_D04__GPMI_D4 0x0040
124MX28_PAD_GPMI_D05__GPMI_D5 0x0050
125MX28_PAD_GPMI_D06__GPMI_D6 0x0060
126MX28_PAD_GPMI_D07__GPMI_D7 0x0070
127MX28_PAD_GPMI_CE0N__GPMI_CE0N 0x0100
128MX28_PAD_GPMI_CE1N__GPMI_CE1N 0x0110
129MX28_PAD_GPMI_CE2N__GPMI_CE2N 0x0120
130MX28_PAD_GPMI_CE3N__GPMI_CE3N 0x0130
131MX28_PAD_GPMI_RDY0__GPMI_READY0 0x0140
132MX28_PAD_GPMI_RDY1__GPMI_READY1 0x0150
133MX28_PAD_GPMI_RDY2__GPMI_READY2 0x0160
134MX28_PAD_GPMI_RDY3__GPMI_READY3 0x0170
135MX28_PAD_GPMI_RDN__GPMI_RDN 0x0180
136MX28_PAD_GPMI_WRN__GPMI_WRN 0x0190
137MX28_PAD_GPMI_ALE__GPMI_ALE 0x01a0
138MX28_PAD_GPMI_CLE__GPMI_CLE 0x01b0
139MX28_PAD_GPMI_RESETN__GPMI_RESETN 0x01c0
140MX28_PAD_LCD_D00__LCD_D0 0x1000
141MX28_PAD_LCD_D01__LCD_D1 0x1010
142MX28_PAD_LCD_D02__LCD_D2 0x1020
143MX28_PAD_LCD_D03__LCD_D3 0x1030
144MX28_PAD_LCD_D04__LCD_D4 0x1040
145MX28_PAD_LCD_D05__LCD_D5 0x1050
146MX28_PAD_LCD_D06__LCD_D6 0x1060
147MX28_PAD_LCD_D07__LCD_D7 0x1070
148MX28_PAD_LCD_D08__LCD_D8 0x1080
149MX28_PAD_LCD_D09__LCD_D9 0x1090
150MX28_PAD_LCD_D10__LCD_D10 0x10a0
151MX28_PAD_LCD_D11__LCD_D11 0x10b0
152MX28_PAD_LCD_D12__LCD_D12 0x10c0
153MX28_PAD_LCD_D13__LCD_D13 0x10d0
154MX28_PAD_LCD_D14__LCD_D14 0x10e0
155MX28_PAD_LCD_D15__LCD_D15 0x10f0
156MX28_PAD_LCD_D16__LCD_D16 0x1100
157MX28_PAD_LCD_D17__LCD_D17 0x1110
158MX28_PAD_LCD_D18__LCD_D18 0x1120
159MX28_PAD_LCD_D19__LCD_D19 0x1130
160MX28_PAD_LCD_D20__LCD_D20 0x1140
161MX28_PAD_LCD_D21__LCD_D21 0x1150
162MX28_PAD_LCD_D22__LCD_D22 0x1160
163MX28_PAD_LCD_D23__LCD_D23 0x1170
164MX28_PAD_LCD_RD_E__LCD_RD_E 0x1180
165MX28_PAD_LCD_WR_RWN__LCD_WR_RWN 0x1190
166MX28_PAD_LCD_RS__LCD_RS 0x11a0
167MX28_PAD_LCD_CS__LCD_CS 0x11b0
168MX28_PAD_LCD_VSYNC__LCD_VSYNC 0x11c0
169MX28_PAD_LCD_HSYNC__LCD_HSYNC 0x11d0
170MX28_PAD_LCD_DOTCLK__LCD_DOTCLK 0x11e0
171MX28_PAD_LCD_ENABLE__LCD_ENABLE 0x11f0
172MX28_PAD_SSP0_DATA0__SSP0_D0 0x2000
173MX28_PAD_SSP0_DATA1__SSP0_D1 0x2010
174MX28_PAD_SSP0_DATA2__SSP0_D2 0x2020
175MX28_PAD_SSP0_DATA3__SSP0_D3 0x2030
176MX28_PAD_SSP0_DATA4__SSP0_D4 0x2040
177MX28_PAD_SSP0_DATA5__SSP0_D5 0x2050
178MX28_PAD_SSP0_DATA6__SSP0_D6 0x2060
179MX28_PAD_SSP0_DATA7__SSP0_D7 0x2070
180MX28_PAD_SSP0_CMD__SSP0_CMD 0x2080
181MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT 0x2090
182MX28_PAD_SSP0_SCK__SSP0_SCK 0x20a0
183MX28_PAD_SSP1_SCK__SSP1_SCK 0x20c0
184MX28_PAD_SSP1_CMD__SSP1_CMD 0x20d0
185MX28_PAD_SSP1_DATA0__SSP1_D0 0x20e0
186MX28_PAD_SSP1_DATA3__SSP1_D3 0x20f0
187MX28_PAD_SSP2_SCK__SSP2_SCK 0x2100
188MX28_PAD_SSP2_MOSI__SSP2_CMD 0x2110
189MX28_PAD_SSP2_MISO__SSP2_D0 0x2120
190MX28_PAD_SSP2_SS0__SSP2_D3 0x2130
191MX28_PAD_SSP2_SS1__SSP2_D4 0x2140
192MX28_PAD_SSP2_SS2__SSP2_D5 0x2150
193MX28_PAD_SSP3_SCK__SSP3_SCK 0x2180
194MX28_PAD_SSP3_MOSI__SSP3_CMD 0x2190
195MX28_PAD_SSP3_MISO__SSP3_D0 0x21a0
196MX28_PAD_SSP3_SS0__SSP3_D3 0x21b0
197MX28_PAD_AUART0_RX__AUART0_RX 0x3000
198MX28_PAD_AUART0_TX__AUART0_TX 0x3010
199MX28_PAD_AUART0_CTS__AUART0_CTS 0x3020
200MX28_PAD_AUART0_RTS__AUART0_RTS 0x3030
201MX28_PAD_AUART1_RX__AUART1_RX 0x3040
202MX28_PAD_AUART1_TX__AUART1_TX 0x3050
203MX28_PAD_AUART1_CTS__AUART1_CTS 0x3060
204MX28_PAD_AUART1_RTS__AUART1_RTS 0x3070
205MX28_PAD_AUART2_RX__AUART2_RX 0x3080
206MX28_PAD_AUART2_TX__AUART2_TX 0x3090
207MX28_PAD_AUART2_CTS__AUART2_CTS 0x30a0
208MX28_PAD_AUART2_RTS__AUART2_RTS 0x30b0
209MX28_PAD_AUART3_RX__AUART3_RX 0x30c0
210MX28_PAD_AUART3_TX__AUART3_TX 0x30d0
211MX28_PAD_AUART3_CTS__AUART3_CTS 0x30e0
212MX28_PAD_AUART3_RTS__AUART3_RTS 0x30f0
213MX28_PAD_PWM0__PWM_0 0x3100
214MX28_PAD_PWM1__PWM_1 0x3110
215MX28_PAD_PWM2__PWM_2 0x3120
216MX28_PAD_SAIF0_MCLK__SAIF0_MCLK 0x3140
217MX28_PAD_SAIF0_LRCLK__SAIF0_LRCLK 0x3150
218MX28_PAD_SAIF0_BITCLK__SAIF0_BITCLK 0x3160
219MX28_PAD_SAIF0_SDATA0__SAIF0_SDATA0 0x3170
220MX28_PAD_I2C0_SCL__I2C0_SCL 0x3180
221MX28_PAD_I2C0_SDA__I2C0_SDA 0x3190
222MX28_PAD_SAIF1_SDATA0__SAIF1_SDATA0 0x31a0
223MX28_PAD_SPDIF__SPDIF_TX 0x31b0
224MX28_PAD_PWM3__PWM_3 0x31c0
225MX28_PAD_PWM4__PWM_4 0x31d0
226MX28_PAD_LCD_RESET__LCD_RESET 0x31e0
227MX28_PAD_ENET0_MDC__ENET0_MDC 0x4000
228MX28_PAD_ENET0_MDIO__ENET0_MDIO 0x4010
229MX28_PAD_ENET0_RX_EN__ENET0_RX_EN 0x4020
230MX28_PAD_ENET0_RXD0__ENET0_RXD0 0x4030
231MX28_PAD_ENET0_RXD1__ENET0_RXD1 0x4040
232MX28_PAD_ENET0_TX_CLK__ENET0_TX_CLK 0x4050
233MX28_PAD_ENET0_TX_EN__ENET0_TX_EN 0x4060
234MX28_PAD_ENET0_TXD0__ENET0_TXD0 0x4070
235MX28_PAD_ENET0_TXD1__ENET0_TXD1 0x4080
236MX28_PAD_ENET0_RXD2__ENET0_RXD2 0x4090
237MX28_PAD_ENET0_RXD3__ENET0_RXD3 0x40a0
238MX28_PAD_ENET0_TXD2__ENET0_TXD2 0x40b0
239MX28_PAD_ENET0_TXD3__ENET0_TXD3 0x40c0
240MX28_PAD_ENET0_RX_CLK__ENET0_RX_CLK 0x40d0
241MX28_PAD_ENET0_COL__ENET0_COL 0x40e0
242MX28_PAD_ENET0_CRS__ENET0_CRS 0x40f0
243MX28_PAD_ENET_CLK__CLKCTRL_ENET 0x4100
244MX28_PAD_JTAG_RTCK__JTAG_RTCK 0x4140
245MX28_PAD_EMI_D00__EMI_DATA0 0x5000
246MX28_PAD_EMI_D01__EMI_DATA1 0x5010
247MX28_PAD_EMI_D02__EMI_DATA2 0x5020
248MX28_PAD_EMI_D03__EMI_DATA3 0x5030
249MX28_PAD_EMI_D04__EMI_DATA4 0x5040
250MX28_PAD_EMI_D05__EMI_DATA5 0x5050
251MX28_PAD_EMI_D06__EMI_DATA6 0x5060
252MX28_PAD_EMI_D07__EMI_DATA7 0x5070
253MX28_PAD_EMI_D08__EMI_DATA8 0x5080
254MX28_PAD_EMI_D09__EMI_DATA9 0x5090
255MX28_PAD_EMI_D10__EMI_DATA10 0x50a0
256MX28_PAD_EMI_D11__EMI_DATA11 0x50b0
257MX28_PAD_EMI_D12__EMI_DATA12 0x50c0
258MX28_PAD_EMI_D13__EMI_DATA13 0x50d0
259MX28_PAD_EMI_D14__EMI_DATA14 0x50e0
260MX28_PAD_EMI_D15__EMI_DATA15 0x50f0
261MX28_PAD_EMI_ODT0__EMI_ODT0 0x5100
262MX28_PAD_EMI_DQM0__EMI_DQM0 0x5110
263MX28_PAD_EMI_ODT1__EMI_ODT1 0x5120
264MX28_PAD_EMI_DQM1__EMI_DQM1 0x5130
265MX28_PAD_EMI_DDR_OPEN_FB__EMI_DDR_OPEN_FEEDBACK 0x5140
266MX28_PAD_EMI_CLK__EMI_CLK 0x5150
267MX28_PAD_EMI_DQS0__EMI_DQS0 0x5160
268MX28_PAD_EMI_DQS1__EMI_DQS1 0x5170
269MX28_PAD_EMI_DDR_OPEN__EMI_DDR_OPEN 0x51a0
270MX28_PAD_EMI_A00__EMI_ADDR0 0x6000
271MX28_PAD_EMI_A01__EMI_ADDR1 0x6010
272MX28_PAD_EMI_A02__EMI_ADDR2 0x6020
273MX28_PAD_EMI_A03__EMI_ADDR3 0x6030
274MX28_PAD_EMI_A04__EMI_ADDR4 0x6040
275MX28_PAD_EMI_A05__EMI_ADDR5 0x6050
276MX28_PAD_EMI_A06__EMI_ADDR6 0x6060
277MX28_PAD_EMI_A07__EMI_ADDR7 0x6070
278MX28_PAD_EMI_A08__EMI_ADDR8 0x6080
279MX28_PAD_EMI_A09__EMI_ADDR9 0x6090
280MX28_PAD_EMI_A10__EMI_ADDR10 0x60a0
281MX28_PAD_EMI_A11__EMI_ADDR11 0x60b0
282MX28_PAD_EMI_A12__EMI_ADDR12 0x60c0
283MX28_PAD_EMI_A13__EMI_ADDR13 0x60d0
284MX28_PAD_EMI_A14__EMI_ADDR14 0x60e0
285MX28_PAD_EMI_BA0__EMI_BA0 0x6100
286MX28_PAD_EMI_BA1__EMI_BA1 0x6110
287MX28_PAD_EMI_BA2__EMI_BA2 0x6120
288MX28_PAD_EMI_CASN__EMI_CASN 0x6130
289MX28_PAD_EMI_RASN__EMI_RASN 0x6140
290MX28_PAD_EMI_WEN__EMI_WEN 0x6150
291MX28_PAD_EMI_CE0N__EMI_CE0N 0x6160
292MX28_PAD_EMI_CE1N__EMI_CE1N 0x6170
293MX28_PAD_EMI_CKE__EMI_CKE 0x6180
294MX28_PAD_GPMI_D00__SSP1_D0 0x0001
295MX28_PAD_GPMI_D01__SSP1_D1 0x0011
296MX28_PAD_GPMI_D02__SSP1_D2 0x0021
297MX28_PAD_GPMI_D03__SSP1_D3 0x0031
298MX28_PAD_GPMI_D04__SSP1_D4 0x0041
299MX28_PAD_GPMI_D05__SSP1_D5 0x0051
300MX28_PAD_GPMI_D06__SSP1_D6 0x0061
301MX28_PAD_GPMI_D07__SSP1_D7 0x0071
302MX28_PAD_GPMI_CE0N__SSP3_D0 0x0101
303MX28_PAD_GPMI_CE1N__SSP3_D3 0x0111
304MX28_PAD_GPMI_CE2N__CAN1_TX 0x0121
305MX28_PAD_GPMI_CE3N__CAN1_RX 0x0131
306MX28_PAD_GPMI_RDY0__SSP1_CARD_DETECT 0x0141
307MX28_PAD_GPMI_RDY1__SSP1_CMD 0x0151
308MX28_PAD_GPMI_RDY2__CAN0_TX 0x0161
309MX28_PAD_GPMI_RDY3__CAN0_RX 0x0171
310MX28_PAD_GPMI_RDN__SSP3_SCK 0x0181
311MX28_PAD_GPMI_WRN__SSP1_SCK 0x0191
312MX28_PAD_GPMI_ALE__SSP3_D1 0x01a1
313MX28_PAD_GPMI_CLE__SSP3_D2 0x01b1
314MX28_PAD_GPMI_RESETN__SSP3_CMD 0x01c1
315MX28_PAD_LCD_D03__ETM_DA8 0x1031
316MX28_PAD_LCD_D04__ETM_DA9 0x1041
317MX28_PAD_LCD_D08__ETM_DA3 0x1081
318MX28_PAD_LCD_D09__ETM_DA4 0x1091
319MX28_PAD_LCD_D20__ENET1_1588_EVENT2_OUT 0x1141
320MX28_PAD_LCD_D21__ENET1_1588_EVENT2_IN 0x1151
321MX28_PAD_LCD_D22__ENET1_1588_EVENT3_OUT 0x1161
322MX28_PAD_LCD_D23__ENET1_1588_EVENT3_IN 0x1171
323MX28_PAD_LCD_RD_E__LCD_VSYNC 0x1181
324MX28_PAD_LCD_WR_RWN__LCD_HSYNC 0x1191
325MX28_PAD_LCD_RS__LCD_DOTCLK 0x11a1
326MX28_PAD_LCD_CS__LCD_ENABLE 0x11b1
327MX28_PAD_LCD_VSYNC__SAIF1_SDATA0 0x11c1
328MX28_PAD_LCD_HSYNC__SAIF1_SDATA1 0x11d1
329MX28_PAD_LCD_DOTCLK__SAIF1_MCLK 0x11e1
330MX28_PAD_SSP0_DATA4__SSP2_D0 0x2041
331MX28_PAD_SSP0_DATA5__SSP2_D3 0x2051
332MX28_PAD_SSP0_DATA6__SSP2_CMD 0x2061
333MX28_PAD_SSP0_DATA7__SSP2_SCK 0x2071
334MX28_PAD_SSP1_SCK__SSP2_D1 0x20c1
335MX28_PAD_SSP1_CMD__SSP2_D2 0x20d1
336MX28_PAD_SSP1_DATA0__SSP2_D6 0x20e1
337MX28_PAD_SSP1_DATA3__SSP2_D7 0x20f1
338MX28_PAD_SSP2_SCK__AUART2_RX 0x2101
339MX28_PAD_SSP2_MOSI__AUART2_TX 0x2111
340MX28_PAD_SSP2_MISO__AUART3_RX 0x2121
341MX28_PAD_SSP2_SS0__AUART3_TX 0x2131
342MX28_PAD_SSP2_SS1__SSP2_D1 0x2141
343MX28_PAD_SSP2_SS2__SSP2_D2 0x2151
344MX28_PAD_SSP3_SCK__AUART4_TX 0x2181
345MX28_PAD_SSP3_MOSI__AUART4_RX 0x2191
346MX28_PAD_SSP3_MISO__AUART4_RTS 0x21a1
347MX28_PAD_SSP3_SS0__AUART4_CTS 0x21b1
348MX28_PAD_AUART0_RX__I2C0_SCL 0x3001
349MX28_PAD_AUART0_TX__I2C0_SDA 0x3011
350MX28_PAD_AUART0_CTS__AUART4_RX 0x3021
351MX28_PAD_AUART0_RTS__AUART4_TX 0x3031
352MX28_PAD_AUART1_RX__SSP2_CARD_DETECT 0x3041
353MX28_PAD_AUART1_TX__SSP3_CARD_DETECT 0x3051
354MX28_PAD_AUART1_CTS__USB0_OVERCURRENT 0x3061
355MX28_PAD_AUART1_RTS__USB0_ID 0x3071
356MX28_PAD_AUART2_RX__SSP3_D1 0x3081
357MX28_PAD_AUART2_TX__SSP3_D2 0x3091
358MX28_PAD_AUART2_CTS__I2C1_SCL 0x30a1
359MX28_PAD_AUART2_RTS__I2C1_SDA 0x30b1
360MX28_PAD_AUART3_RX__CAN0_TX 0x30c1
361MX28_PAD_AUART3_TX__CAN0_RX 0x30d1
362MX28_PAD_AUART3_CTS__CAN1_TX 0x30e1
363MX28_PAD_AUART3_RTS__CAN1_RX 0x30f1
364MX28_PAD_PWM0__I2C1_SCL 0x3101
365MX28_PAD_PWM1__I2C1_SDA 0x3111
366MX28_PAD_PWM2__USB0_ID 0x3121
367MX28_PAD_SAIF0_MCLK__PWM_3 0x3141
368MX28_PAD_SAIF0_LRCLK__PWM_4 0x3151
369MX28_PAD_SAIF0_BITCLK__PWM_5 0x3161
370MX28_PAD_SAIF0_SDATA0__PWM_6 0x3171
371MX28_PAD_I2C0_SCL__TIMROT_ROTARYA 0x3181
372MX28_PAD_I2C0_SDA__TIMROT_ROTARYB 0x3191
373MX28_PAD_SAIF1_SDATA0__PWM_7 0x31a1
374MX28_PAD_LCD_RESET__LCD_VSYNC 0x31e1
375MX28_PAD_ENET0_MDC__GPMI_CE4N 0x4001
376MX28_PAD_ENET0_MDIO__GPMI_CE5N 0x4011
377MX28_PAD_ENET0_RX_EN__GPMI_CE6N 0x4021
378MX28_PAD_ENET0_RXD0__GPMI_CE7N 0x4031
379MX28_PAD_ENET0_RXD1__GPMI_READY4 0x4041
380MX28_PAD_ENET0_TX_CLK__HSADC_TRIGGER 0x4051
381MX28_PAD_ENET0_TX_EN__GPMI_READY5 0x4061
382MX28_PAD_ENET0_TXD0__GPMI_READY6 0x4071
383MX28_PAD_ENET0_TXD1__GPMI_READY7 0x4081
384MX28_PAD_ENET0_RXD2__ENET1_RXD0 0x4091
385MX28_PAD_ENET0_RXD3__ENET1_RXD1 0x40a1
386MX28_PAD_ENET0_TXD2__ENET1_TXD0 0x40b1
387MX28_PAD_ENET0_TXD3__ENET1_TXD1 0x40c1
388MX28_PAD_ENET0_RX_CLK__ENET0_RX_ER 0x40d1
389MX28_PAD_ENET0_COL__ENET1_TX_EN 0x40e1
390MX28_PAD_ENET0_CRS__ENET1_RX_EN 0x40f1
391MX28_PAD_GPMI_CE2N__ENET0_RX_ER 0x0122
392MX28_PAD_GPMI_CE3N__SAIF1_MCLK 0x0132
393MX28_PAD_GPMI_RDY0__USB0_ID 0x0142
394MX28_PAD_GPMI_RDY2__ENET0_TX_ER 0x0162
395MX28_PAD_GPMI_RDY3__HSADC_TRIGGER 0x0172
396MX28_PAD_GPMI_ALE__SSP3_D4 0x01a2
397MX28_PAD_GPMI_CLE__SSP3_D5 0x01b2
398MX28_PAD_LCD_D00__ETM_DA0 0x1002
399MX28_PAD_LCD_D01__ETM_DA1 0x1012
400MX28_PAD_LCD_D02__ETM_DA2 0x1022
401MX28_PAD_LCD_D03__ETM_DA3 0x1032
402MX28_PAD_LCD_D04__ETM_DA4 0x1042
403MX28_PAD_LCD_D05__ETM_DA5 0x1052
404MX28_PAD_LCD_D06__ETM_DA6 0x1062
405MX28_PAD_LCD_D07__ETM_DA7 0x1072
406MX28_PAD_LCD_D08__ETM_DA8 0x1082
407MX28_PAD_LCD_D09__ETM_DA9 0x1092
408MX28_PAD_LCD_D10__ETM_DA10 0x10a2
409MX28_PAD_LCD_D11__ETM_DA11 0x10b2
410MX28_PAD_LCD_D12__ETM_DA12 0x10c2
411MX28_PAD_LCD_D13__ETM_DA13 0x10d2
412MX28_PAD_LCD_D14__ETM_DA14 0x10e2
413MX28_PAD_LCD_D15__ETM_DA15 0x10f2
414MX28_PAD_LCD_D16__ETM_DA7 0x1102
415MX28_PAD_LCD_D17__ETM_DA6 0x1112
416MX28_PAD_LCD_D18__ETM_DA5 0x1122
417MX28_PAD_LCD_D19__ETM_DA4 0x1132
418MX28_PAD_LCD_D20__ETM_DA3 0x1142
419MX28_PAD_LCD_D21__ETM_DA2 0x1152
420MX28_PAD_LCD_D22__ETM_DA1 0x1162
421MX28_PAD_LCD_D23__ETM_DA0 0x1172
422MX28_PAD_LCD_RD_E__ETM_TCTL 0x1182
423MX28_PAD_LCD_WR_RWN__ETM_TCLK 0x1192
424MX28_PAD_LCD_HSYNC__ETM_TCTL 0x11d2
425MX28_PAD_LCD_DOTCLK__ETM_TCLK 0x11e2
426MX28_PAD_SSP1_SCK__ENET0_1588_EVENT2_OUT 0x20c2
427MX28_PAD_SSP1_CMD__ENET0_1588_EVENT2_IN 0x20d2
428MX28_PAD_SSP1_DATA0__ENET0_1588_EVENT3_OUT 0x20e2
429MX28_PAD_SSP1_DATA3__ENET0_1588_EVENT3_IN 0x20f2
430MX28_PAD_SSP2_SCK__SAIF0_SDATA1 0x2102
431MX28_PAD_SSP2_MOSI__SAIF0_SDATA2 0x2112
432MX28_PAD_SSP2_MISO__SAIF1_SDATA1 0x2122
433MX28_PAD_SSP2_SS0__SAIF1_SDATA2 0x2132
434MX28_PAD_SSP2_SS1__USB1_OVERCURRENT 0x2142
435MX28_PAD_SSP2_SS2__USB0_OVERCURRENT 0x2152
436MX28_PAD_SSP3_SCK__ENET1_1588_EVENT0_OUT 0x2182
437MX28_PAD_SSP3_MOSI__ENET1_1588_EVENT0_IN 0x2192
438MX28_PAD_SSP3_MISO__ENET1_1588_EVENT1_OUT 0x21a2
439MX28_PAD_SSP3_SS0__ENET1_1588_EVENT1_IN 0x21b2
440MX28_PAD_AUART0_RX__DUART_CTS 0x3002
441MX28_PAD_AUART0_TX__DUART_RTS 0x3012
442MX28_PAD_AUART0_CTS__DUART_RX 0x3022
443MX28_PAD_AUART0_RTS__DUART_TX 0x3032
444MX28_PAD_AUART1_RX__PWM_0 0x3042
445MX28_PAD_AUART1_TX__PWM_1 0x3052
446MX28_PAD_AUART1_CTS__TIMROT_ROTARYA 0x3062
447MX28_PAD_AUART1_RTS__TIMROT_ROTARYB 0x3072
448MX28_PAD_AUART2_RX__SSP3_D4 0x3082
449MX28_PAD_AUART2_TX__SSP3_D5 0x3092
450MX28_PAD_AUART2_CTS__SAIF1_BITCLK 0x30a2
451MX28_PAD_AUART2_RTS__SAIF1_LRCLK 0x30b2
452MX28_PAD_AUART3_RX__ENET0_1588_EVENT0_OUT 0x30c2
453MX28_PAD_AUART3_TX__ENET0_1588_EVENT0_IN 0x30d2
454MX28_PAD_AUART3_CTS__ENET0_1588_EVENT1_OUT 0x30e2
455MX28_PAD_AUART3_RTS__ENET0_1588_EVENT1_IN 0x30f2
456MX28_PAD_PWM0__DUART_RX 0x3102
457MX28_PAD_PWM1__DUART_TX 0x3112
458MX28_PAD_PWM2__USB1_OVERCURRENT 0x3122
459MX28_PAD_SAIF0_MCLK__AUART4_CTS 0x3142
460MX28_PAD_SAIF0_LRCLK__AUART4_RTS 0x3152
461MX28_PAD_SAIF0_BITCLK__AUART4_RX 0x3162
462MX28_PAD_SAIF0_SDATA0__AUART4_TX 0x3172
463MX28_PAD_I2C0_SCL__DUART_RX 0x3182
464MX28_PAD_I2C0_SDA__DUART_TX 0x3192
465MX28_PAD_SAIF1_SDATA0__SAIF0_SDATA1 0x31a2
466MX28_PAD_SPDIF__ENET1_RX_ER 0x31b2
467MX28_PAD_ENET0_MDC__SAIF0_SDATA1 0x4002
468MX28_PAD_ENET0_MDIO__SAIF0_SDATA2 0x4012
469MX28_PAD_ENET0_RX_EN__SAIF1_SDATA1 0x4022
470MX28_PAD_ENET0_RXD0__SAIF1_SDATA2 0x4032
471MX28_PAD_ENET0_TX_CLK__ENET0_1588_EVENT2_OUT 0x4052
472MX28_PAD_ENET0_RXD2__ENET0_1588_EVENT0_OUT 0x4092
473MX28_PAD_ENET0_RXD3__ENET0_1588_EVENT0_IN 0x40a2
474MX28_PAD_ENET0_TXD2__ENET0_1588_EVENT1_OUT 0x40b2
475MX28_PAD_ENET0_TXD3__ENET0_1588_EVENT1_IN 0x40c2
476MX28_PAD_ENET0_RX_CLK__ENET0_1588_EVENT2_IN 0x40d2
477MX28_PAD_ENET0_COL__ENET0_1588_EVENT3_OUT 0x40e2
478MX28_PAD_ENET0_CRS__ENET0_1588_EVENT3_IN 0x40f2
479MX28_PAD_GPMI_D00__GPIO_0_0 0x0003
480MX28_PAD_GPMI_D01__GPIO_0_1 0x0013
481MX28_PAD_GPMI_D02__GPIO_0_2 0x0023
482MX28_PAD_GPMI_D03__GPIO_0_3 0x0033
483MX28_PAD_GPMI_D04__GPIO_0_4 0x0043
484MX28_PAD_GPMI_D05__GPIO_0_5 0x0053
485MX28_PAD_GPMI_D06__GPIO_0_6 0x0063
486MX28_PAD_GPMI_D07__GPIO_0_7 0x0073
487MX28_PAD_GPMI_CE0N__GPIO_0_16 0x0103
488MX28_PAD_GPMI_CE1N__GPIO_0_17 0x0113
489MX28_PAD_GPMI_CE2N__GPIO_0_18 0x0123
490MX28_PAD_GPMI_CE3N__GPIO_0_19 0x0133
491MX28_PAD_GPMI_RDY0__GPIO_0_20 0x0143
492MX28_PAD_GPMI_RDY1__GPIO_0_21 0x0153
493MX28_PAD_GPMI_RDY2__GPIO_0_22 0x0163
494MX28_PAD_GPMI_RDY3__GPIO_0_23 0x0173
495MX28_PAD_GPMI_RDN__GPIO_0_24 0x0183
496MX28_PAD_GPMI_WRN__GPIO_0_25 0x0193
497MX28_PAD_GPMI_ALE__GPIO_0_26 0x01a3
498MX28_PAD_GPMI_CLE__GPIO_0_27 0x01b3
499MX28_PAD_GPMI_RESETN__GPIO_0_28 0x01c3
500MX28_PAD_LCD_D00__GPIO_1_0 0x1003
501MX28_PAD_LCD_D01__GPIO_1_1 0x1013
502MX28_PAD_LCD_D02__GPIO_1_2 0x1023
503MX28_PAD_LCD_D03__GPIO_1_3 0x1033
504MX28_PAD_LCD_D04__GPIO_1_4 0x1043
505MX28_PAD_LCD_D05__GPIO_1_5 0x1053
506MX28_PAD_LCD_D06__GPIO_1_6 0x1063
507MX28_PAD_LCD_D07__GPIO_1_7 0x1073
508MX28_PAD_LCD_D08__GPIO_1_8 0x1083
509MX28_PAD_LCD_D09__GPIO_1_9 0x1093
510MX28_PAD_LCD_D10__GPIO_1_10 0x10a3
511MX28_PAD_LCD_D11__GPIO_1_11 0x10b3
512MX28_PAD_LCD_D12__GPIO_1_12 0x10c3
513MX28_PAD_LCD_D13__GPIO_1_13 0x10d3
514MX28_PAD_LCD_D14__GPIO_1_14 0x10e3
515MX28_PAD_LCD_D15__GPIO_1_15 0x10f3
516MX28_PAD_LCD_D16__GPIO_1_16 0x1103
517MX28_PAD_LCD_D17__GPIO_1_17 0x1113
518MX28_PAD_LCD_D18__GPIO_1_18 0x1123
519MX28_PAD_LCD_D19__GPIO_1_19 0x1133
520MX28_PAD_LCD_D20__GPIO_1_20 0x1143
521MX28_PAD_LCD_D21__GPIO_1_21 0x1153
522MX28_PAD_LCD_D22__GPIO_1_22 0x1163
523MX28_PAD_LCD_D23__GPIO_1_23 0x1173
524MX28_PAD_LCD_RD_E__GPIO_1_24 0x1183
525MX28_PAD_LCD_WR_RWN__GPIO_1_25 0x1193
526MX28_PAD_LCD_RS__GPIO_1_26 0x11a3
527MX28_PAD_LCD_CS__GPIO_1_27 0x11b3
528MX28_PAD_LCD_VSYNC__GPIO_1_28 0x11c3
529MX28_PAD_LCD_HSYNC__GPIO_1_29 0x11d3
530MX28_PAD_LCD_DOTCLK__GPIO_1_30 0x11e3
531MX28_PAD_LCD_ENABLE__GPIO_1_31 0x11f3
532MX28_PAD_SSP0_DATA0__GPIO_2_0 0x2003
533MX28_PAD_SSP0_DATA1__GPIO_2_1 0x2013
534MX28_PAD_SSP0_DATA2__GPIO_2_2 0x2023
535MX28_PAD_SSP0_DATA3__GPIO_2_3 0x2033
536MX28_PAD_SSP0_DATA4__GPIO_2_4 0x2043
537MX28_PAD_SSP0_DATA5__GPIO_2_5 0x2053
538MX28_PAD_SSP0_DATA6__GPIO_2_6 0x2063
539MX28_PAD_SSP0_DATA7__GPIO_2_7 0x2073
540MX28_PAD_SSP0_CMD__GPIO_2_8 0x2083
541MX28_PAD_SSP0_DETECT__GPIO_2_9 0x2093
542MX28_PAD_SSP0_SCK__GPIO_2_10 0x20a3
543MX28_PAD_SSP1_SCK__GPIO_2_12 0x20c3
544MX28_PAD_SSP1_CMD__GPIO_2_13 0x20d3
545MX28_PAD_SSP1_DATA0__GPIO_2_14 0x20e3
546MX28_PAD_SSP1_DATA3__GPIO_2_15 0x20f3
547MX28_PAD_SSP2_SCK__GPIO_2_16 0x2103
548MX28_PAD_SSP2_MOSI__GPIO_2_17 0x2113
549MX28_PAD_SSP2_MISO__GPIO_2_18 0x2123
550MX28_PAD_SSP2_SS0__GPIO_2_19 0x2133
551MX28_PAD_SSP2_SS1__GPIO_2_20 0x2143
552MX28_PAD_SSP2_SS2__GPIO_2_21 0x2153
553MX28_PAD_SSP3_SCK__GPIO_2_24 0x2183
554MX28_PAD_SSP3_MOSI__GPIO_2_25 0x2193
555MX28_PAD_SSP3_MISO__GPIO_2_26 0x21a3
556MX28_PAD_SSP3_SS0__GPIO_2_27 0x21b3
557MX28_PAD_AUART0_RX__GPIO_3_0 0x3003
558MX28_PAD_AUART0_TX__GPIO_3_1 0x3013
559MX28_PAD_AUART0_CTS__GPIO_3_2 0x3023
560MX28_PAD_AUART0_RTS__GPIO_3_3 0x3033
561MX28_PAD_AUART1_RX__GPIO_3_4 0x3043
562MX28_PAD_AUART1_TX__GPIO_3_5 0x3053
563MX28_PAD_AUART1_CTS__GPIO_3_6 0x3063
564MX28_PAD_AUART1_RTS__GPIO_3_7 0x3073
565MX28_PAD_AUART2_RX__GPIO_3_8 0x3083
566MX28_PAD_AUART2_TX__GPIO_3_9 0x3093
567MX28_PAD_AUART2_CTS__GPIO_3_10 0x30a3
568MX28_PAD_AUART2_RTS__GPIO_3_11 0x30b3
569MX28_PAD_AUART3_RX__GPIO_3_12 0x30c3
570MX28_PAD_AUART3_TX__GPIO_3_13 0x30d3
571MX28_PAD_AUART3_CTS__GPIO_3_14 0x30e3
572MX28_PAD_AUART3_RTS__GPIO_3_15 0x30f3
573MX28_PAD_PWM0__GPIO_3_16 0x3103
574MX28_PAD_PWM1__GPIO_3_17 0x3113
575MX28_PAD_PWM2__GPIO_3_18 0x3123
576MX28_PAD_SAIF0_MCLK__GPIO_3_20 0x3143
577MX28_PAD_SAIF0_LRCLK__GPIO_3_21 0x3153
578MX28_PAD_SAIF0_BITCLK__GPIO_3_22 0x3163
579MX28_PAD_SAIF0_SDATA0__GPIO_3_23 0x3173
580MX28_PAD_I2C0_SCL__GPIO_3_24 0x3183
581MX28_PAD_I2C0_SDA__GPIO_3_25 0x3193
582MX28_PAD_SAIF1_SDATA0__GPIO_3_26 0x31a3
583MX28_PAD_SPDIF__GPIO_3_27 0x31b3
584MX28_PAD_PWM3__GPIO_3_28 0x31c3
585MX28_PAD_PWM4__GPIO_3_29 0x31d3
586MX28_PAD_LCD_RESET__GPIO_3_30 0x31e3
587MX28_PAD_ENET0_MDC__GPIO_4_0 0x4003
588MX28_PAD_ENET0_MDIO__GPIO_4_1 0x4013
589MX28_PAD_ENET0_RX_EN__GPIO_4_2 0x4023
590MX28_PAD_ENET0_RXD0__GPIO_4_3 0x4033
591MX28_PAD_ENET0_RXD1__GPIO_4_4 0x4043
592MX28_PAD_ENET0_TX_CLK__GPIO_4_5 0x4053
593MX28_PAD_ENET0_TX_EN__GPIO_4_6 0x4063
594MX28_PAD_ENET0_TXD0__GPIO_4_7 0x4073
595MX28_PAD_ENET0_TXD1__GPIO_4_8 0x4083
596MX28_PAD_ENET0_RXD2__GPIO_4_9 0x4093
597MX28_PAD_ENET0_RXD3__GPIO_4_10 0x40a3
598MX28_PAD_ENET0_TXD2__GPIO_4_11 0x40b3
599MX28_PAD_ENET0_TXD3__GPIO_4_12 0x40c3
600MX28_PAD_ENET0_RX_CLK__GPIO_4_13 0x40d3
601MX28_PAD_ENET0_COL__GPIO_4_14 0x40e3
602MX28_PAD_ENET0_CRS__GPIO_4_15 0x40f3
603MX28_PAD_ENET_CLK__GPIO_4_16 0x4103
604MX28_PAD_JTAG_RTCK__GPIO_4_20 0x4143
605
606Valid values for i.MX23 pinmux-id:
607
608pinmux id
609------ --
610MX23_PAD_GPMI_D00__GPMI_D00 0x0000
611MX23_PAD_GPMI_D01__GPMI_D01 0x0010
612MX23_PAD_GPMI_D02__GPMI_D02 0x0020
613MX23_PAD_GPMI_D03__GPMI_D03 0x0030
614MX23_PAD_GPMI_D04__GPMI_D04 0x0040
615MX23_PAD_GPMI_D05__GPMI_D05 0x0050
616MX23_PAD_GPMI_D06__GPMI_D06 0x0060
617MX23_PAD_GPMI_D07__GPMI_D07 0x0070
618MX23_PAD_GPMI_D08__GPMI_D08 0x0080
619MX23_PAD_GPMI_D09__GPMI_D09 0x0090
620MX23_PAD_GPMI_D10__GPMI_D10 0x00a0
621MX23_PAD_GPMI_D11__GPMI_D11 0x00b0
622MX23_PAD_GPMI_D12__GPMI_D12 0x00c0
623MX23_PAD_GPMI_D13__GPMI_D13 0x00d0
624MX23_PAD_GPMI_D14__GPMI_D14 0x00e0
625MX23_PAD_GPMI_D15__GPMI_D15 0x00f0
626MX23_PAD_GPMI_CLE__GPMI_CLE 0x0100
627MX23_PAD_GPMI_ALE__GPMI_ALE 0x0110
628MX23_PAD_GPMI_CE2N__GPMI_CE2N 0x0120
629MX23_PAD_GPMI_RDY0__GPMI_RDY0 0x0130
630MX23_PAD_GPMI_RDY1__GPMI_RDY1 0x0140
631MX23_PAD_GPMI_RDY2__GPMI_RDY2 0x0150
632MX23_PAD_GPMI_RDY3__GPMI_RDY3 0x0160
633MX23_PAD_GPMI_WPN__GPMI_WPN 0x0170
634MX23_PAD_GPMI_WRN__GPMI_WRN 0x0180
635MX23_PAD_GPMI_RDN__GPMI_RDN 0x0190
636MX23_PAD_AUART1_CTS__AUART1_CTS 0x01a0
637MX23_PAD_AUART1_RTS__AUART1_RTS 0x01b0
638MX23_PAD_AUART1_RX__AUART1_RX 0x01c0
639MX23_PAD_AUART1_TX__AUART1_TX 0x01d0
640MX23_PAD_I2C_SCL__I2C_SCL 0x01e0
641MX23_PAD_I2C_SDA__I2C_SDA 0x01f0
642MX23_PAD_LCD_D00__LCD_D00 0x1000
643MX23_PAD_LCD_D01__LCD_D01 0x1010
644MX23_PAD_LCD_D02__LCD_D02 0x1020
645MX23_PAD_LCD_D03__LCD_D03 0x1030
646MX23_PAD_LCD_D04__LCD_D04 0x1040
647MX23_PAD_LCD_D05__LCD_D05 0x1050
648MX23_PAD_LCD_D06__LCD_D06 0x1060
649MX23_PAD_LCD_D07__LCD_D07 0x1070
650MX23_PAD_LCD_D08__LCD_D08 0x1080
651MX23_PAD_LCD_D09__LCD_D09 0x1090
652MX23_PAD_LCD_D10__LCD_D10 0x10a0
653MX23_PAD_LCD_D11__LCD_D11 0x10b0
654MX23_PAD_LCD_D12__LCD_D12 0x10c0
655MX23_PAD_LCD_D13__LCD_D13 0x10d0
656MX23_PAD_LCD_D14__LCD_D14 0x10e0
657MX23_PAD_LCD_D15__LCD_D15 0x10f0
658MX23_PAD_LCD_D16__LCD_D16 0x1100
659MX23_PAD_LCD_D17__LCD_D17 0x1110
660MX23_PAD_LCD_RESET__LCD_RESET 0x1120
661MX23_PAD_LCD_RS__LCD_RS 0x1130
662MX23_PAD_LCD_WR__LCD_WR 0x1140
663MX23_PAD_LCD_CS__LCD_CS 0x1150
664MX23_PAD_LCD_DOTCK__LCD_DOTCK 0x1160
665MX23_PAD_LCD_ENABLE__LCD_ENABLE 0x1170
666MX23_PAD_LCD_HSYNC__LCD_HSYNC 0x1180
667MX23_PAD_LCD_VSYNC__LCD_VSYNC 0x1190
668MX23_PAD_PWM0__PWM0 0x11a0
669MX23_PAD_PWM1__PWM1 0x11b0
670MX23_PAD_PWM2__PWM2 0x11c0
671MX23_PAD_PWM3__PWM3 0x11d0
672MX23_PAD_PWM4__PWM4 0x11e0
673MX23_PAD_SSP1_CMD__SSP1_CMD 0x2000
674MX23_PAD_SSP1_DETECT__SSP1_DETECT 0x2010
675MX23_PAD_SSP1_DATA0__SSP1_DATA0 0x2020
676MX23_PAD_SSP1_DATA1__SSP1_DATA1 0x2030
677MX23_PAD_SSP1_DATA2__SSP1_DATA2 0x2040
678MX23_PAD_SSP1_DATA3__SSP1_DATA3 0x2050
679MX23_PAD_SSP1_SCK__SSP1_SCK 0x2060
680MX23_PAD_ROTARYA__ROTARYA 0x2070
681MX23_PAD_ROTARYB__ROTARYB 0x2080
682MX23_PAD_EMI_A00__EMI_A00 0x2090
683MX23_PAD_EMI_A01__EMI_A01 0x20a0
684MX23_PAD_EMI_A02__EMI_A02 0x20b0
685MX23_PAD_EMI_A03__EMI_A03 0x20c0
686MX23_PAD_EMI_A04__EMI_A04 0x20d0
687MX23_PAD_EMI_A05__EMI_A05 0x20e0
688MX23_PAD_EMI_A06__EMI_A06 0x20f0
689MX23_PAD_EMI_A07__EMI_A07 0x2100
690MX23_PAD_EMI_A08__EMI_A08 0x2110
691MX23_PAD_EMI_A09__EMI_A09 0x2120
692MX23_PAD_EMI_A10__EMI_A10 0x2130
693MX23_PAD_EMI_A11__EMI_A11 0x2140
694MX23_PAD_EMI_A12__EMI_A12 0x2150
695MX23_PAD_EMI_BA0__EMI_BA0 0x2160
696MX23_PAD_EMI_BA1__EMI_BA1 0x2170
697MX23_PAD_EMI_CASN__EMI_CASN 0x2180
698MX23_PAD_EMI_CE0N__EMI_CE0N 0x2190
699MX23_PAD_EMI_CE1N__EMI_CE1N 0x21a0
700MX23_PAD_GPMI_CE1N__GPMI_CE1N 0x21b0
701MX23_PAD_GPMI_CE0N__GPMI_CE0N 0x21c0
702MX23_PAD_EMI_CKE__EMI_CKE 0x21d0
703MX23_PAD_EMI_RASN__EMI_RASN 0x21e0
704MX23_PAD_EMI_WEN__EMI_WEN 0x21f0
705MX23_PAD_EMI_D00__EMI_D00 0x3000
706MX23_PAD_EMI_D01__EMI_D01 0x3010
707MX23_PAD_EMI_D02__EMI_D02 0x3020
708MX23_PAD_EMI_D03__EMI_D03 0x3030
709MX23_PAD_EMI_D04__EMI_D04 0x3040
710MX23_PAD_EMI_D05__EMI_D05 0x3050
711MX23_PAD_EMI_D06__EMI_D06 0x3060
712MX23_PAD_EMI_D07__EMI_D07 0x3070
713MX23_PAD_EMI_D08__EMI_D08 0x3080
714MX23_PAD_EMI_D09__EMI_D09 0x3090
715MX23_PAD_EMI_D10__EMI_D10 0x30a0
716MX23_PAD_EMI_D11__EMI_D11 0x30b0
717MX23_PAD_EMI_D12__EMI_D12 0x30c0
718MX23_PAD_EMI_D13__EMI_D13 0x30d0
719MX23_PAD_EMI_D14__EMI_D14 0x30e0
720MX23_PAD_EMI_D15__EMI_D15 0x30f0
721MX23_PAD_EMI_DQM0__EMI_DQM0 0x3100
722MX23_PAD_EMI_DQM1__EMI_DQM1 0x3110
723MX23_PAD_EMI_DQS0__EMI_DQS0 0x3120
724MX23_PAD_EMI_DQS1__EMI_DQS1 0x3130
725MX23_PAD_EMI_CLK__EMI_CLK 0x3140
726MX23_PAD_EMI_CLKN__EMI_CLKN 0x3150
727MX23_PAD_GPMI_D00__LCD_D8 0x0001
728MX23_PAD_GPMI_D01__LCD_D9 0x0011
729MX23_PAD_GPMI_D02__LCD_D10 0x0021
730MX23_PAD_GPMI_D03__LCD_D11 0x0031
731MX23_PAD_GPMI_D04__LCD_D12 0x0041
732MX23_PAD_GPMI_D05__LCD_D13 0x0051
733MX23_PAD_GPMI_D06__LCD_D14 0x0061
734MX23_PAD_GPMI_D07__LCD_D15 0x0071
735MX23_PAD_GPMI_D08__LCD_D18 0x0081
736MX23_PAD_GPMI_D09__LCD_D19 0x0091
737MX23_PAD_GPMI_D10__LCD_D20 0x00a1
738MX23_PAD_GPMI_D11__LCD_D21 0x00b1
739MX23_PAD_GPMI_D12__LCD_D22 0x00c1
740MX23_PAD_GPMI_D13__LCD_D23 0x00d1
741MX23_PAD_GPMI_D14__AUART2_RX 0x00e1
742MX23_PAD_GPMI_D15__AUART2_TX 0x00f1
743MX23_PAD_GPMI_CLE__LCD_D16 0x0101
744MX23_PAD_GPMI_ALE__LCD_D17 0x0111
745MX23_PAD_GPMI_CE2N__ATA_A2 0x0121
746MX23_PAD_AUART1_RTS__IR_CLK 0x01b1
747MX23_PAD_AUART1_RX__IR_RX 0x01c1
748MX23_PAD_AUART1_TX__IR_TX 0x01d1
749MX23_PAD_I2C_SCL__GPMI_RDY2 0x01e1
750MX23_PAD_I2C_SDA__GPMI_CE2N 0x01f1
751MX23_PAD_LCD_D00__ETM_DA8 0x1001
752MX23_PAD_LCD_D01__ETM_DA9 0x1011
753MX23_PAD_LCD_D02__ETM_DA10 0x1021
754MX23_PAD_LCD_D03__ETM_DA11 0x1031
755MX23_PAD_LCD_D04__ETM_DA12 0x1041
756MX23_PAD_LCD_D05__ETM_DA13 0x1051
757MX23_PAD_LCD_D06__ETM_DA14 0x1061
758MX23_PAD_LCD_D07__ETM_DA15 0x1071
759MX23_PAD_LCD_D08__ETM_DA0 0x1081
760MX23_PAD_LCD_D09__ETM_DA1 0x1091
761MX23_PAD_LCD_D10__ETM_DA2 0x10a1
762MX23_PAD_LCD_D11__ETM_DA3 0x10b1
763MX23_PAD_LCD_D12__ETM_DA4 0x10c1
764MX23_PAD_LCD_D13__ETM_DA5 0x10d1
765MX23_PAD_LCD_D14__ETM_DA6 0x10e1
766MX23_PAD_LCD_D15__ETM_DA7 0x10f1
767MX23_PAD_LCD_RESET__ETM_TCTL 0x1121
768MX23_PAD_LCD_RS__ETM_TCLK 0x1131
769MX23_PAD_LCD_DOTCK__GPMI_RDY3 0x1161
770MX23_PAD_LCD_ENABLE__I2C_SCL 0x1171
771MX23_PAD_LCD_HSYNC__I2C_SDA 0x1181
772MX23_PAD_LCD_VSYNC__LCD_BUSY 0x1191
773MX23_PAD_PWM0__ROTARYA 0x11a1
774MX23_PAD_PWM1__ROTARYB 0x11b1
775MX23_PAD_PWM2__GPMI_RDY3 0x11c1
776MX23_PAD_PWM3__ETM_TCTL 0x11d1
777MX23_PAD_PWM4__ETM_TCLK 0x11e1
778MX23_PAD_SSP1_DETECT__GPMI_CE3N 0x2011
779MX23_PAD_SSP1_DATA1__I2C_SCL 0x2031
780MX23_PAD_SSP1_DATA2__I2C_SDA 0x2041
781MX23_PAD_ROTARYA__AUART2_RTS 0x2071
782MX23_PAD_ROTARYB__AUART2_CTS 0x2081
783MX23_PAD_GPMI_D00__SSP2_DATA0 0x0002
784MX23_PAD_GPMI_D01__SSP2_DATA1 0x0012
785MX23_PAD_GPMI_D02__SSP2_DATA2 0x0022
786MX23_PAD_GPMI_D03__SSP2_DATA3 0x0032
787MX23_PAD_GPMI_D04__SSP2_DATA4 0x0042
788MX23_PAD_GPMI_D05__SSP2_DATA5 0x0052
789MX23_PAD_GPMI_D06__SSP2_DATA6 0x0062
790MX23_PAD_GPMI_D07__SSP2_DATA7 0x0072
791MX23_PAD_GPMI_D08__SSP1_DATA4 0x0082
792MX23_PAD_GPMI_D09__SSP1_DATA5 0x0092
793MX23_PAD_GPMI_D10__SSP1_DATA6 0x00a2
794MX23_PAD_GPMI_D11__SSP1_DATA7 0x00b2
795MX23_PAD_GPMI_D15__GPMI_CE3N 0x00f2
796MX23_PAD_GPMI_RDY0__SSP2_DETECT 0x0132
797MX23_PAD_GPMI_RDY1__SSP2_CMD 0x0142
798MX23_PAD_GPMI_WRN__SSP2_SCK 0x0182
799MX23_PAD_AUART1_CTS__SSP1_DATA4 0x01a2
800MX23_PAD_AUART1_RTS__SSP1_DATA5 0x01b2
801MX23_PAD_AUART1_RX__SSP1_DATA6 0x01c2
802MX23_PAD_AUART1_TX__SSP1_DATA7 0x01d2
803MX23_PAD_I2C_SCL__AUART1_TX 0x01e2
804MX23_PAD_I2C_SDA__AUART1_RX 0x01f2
805MX23_PAD_LCD_D08__SAIF2_SDATA0 0x1082
806MX23_PAD_LCD_D09__SAIF1_SDATA0 0x1092
807MX23_PAD_LCD_D10__SAIF_MCLK_BITCLK 0x10a2
808MX23_PAD_LCD_D11__SAIF_LRCLK 0x10b2
809MX23_PAD_LCD_D12__SAIF2_SDATA1 0x10c2
810MX23_PAD_LCD_D13__SAIF2_SDATA2 0x10d2
811MX23_PAD_LCD_D14__SAIF1_SDATA2 0x10e2
812MX23_PAD_LCD_D15__SAIF1_SDATA1 0x10f2
813MX23_PAD_LCD_D16__SAIF_ALT_BITCLK 0x1102
814MX23_PAD_LCD_RESET__GPMI_CE3N 0x1122
815MX23_PAD_PWM0__DUART_RX 0x11a2
816MX23_PAD_PWM1__DUART_TX 0x11b2
817MX23_PAD_PWM3__AUART1_CTS 0x11d2
818MX23_PAD_PWM4__AUART1_RTS 0x11e2
819MX23_PAD_SSP1_CMD__JTAG_TDO 0x2002
820MX23_PAD_SSP1_DETECT__USB_OTG_ID 0x2012
821MX23_PAD_SSP1_DATA0__JTAG_TDI 0x2022
822MX23_PAD_SSP1_DATA1__JTAG_TCLK 0x2032
823MX23_PAD_SSP1_DATA2__JTAG_RTCK 0x2042
824MX23_PAD_SSP1_DATA3__JTAG_TMS 0x2052
825MX23_PAD_SSP1_SCK__JTAG_TRST 0x2062
826MX23_PAD_ROTARYA__SPDIF 0x2072
827MX23_PAD_ROTARYB__GPMI_CE3N 0x2082
828MX23_PAD_GPMI_D00__GPIO_0_0 0x0003
829MX23_PAD_GPMI_D01__GPIO_0_1 0x0013
830MX23_PAD_GPMI_D02__GPIO_0_2 0x0023
831MX23_PAD_GPMI_D03__GPIO_0_3 0x0033
832MX23_PAD_GPMI_D04__GPIO_0_4 0x0043
833MX23_PAD_GPMI_D05__GPIO_0_5 0x0053
834MX23_PAD_GPMI_D06__GPIO_0_6 0x0063
835MX23_PAD_GPMI_D07__GPIO_0_7 0x0073
836MX23_PAD_GPMI_D08__GPIO_0_8 0x0083
837MX23_PAD_GPMI_D09__GPIO_0_9 0x0093
838MX23_PAD_GPMI_D10__GPIO_0_10 0x00a3
839MX23_PAD_GPMI_D11__GPIO_0_11 0x00b3
840MX23_PAD_GPMI_D12__GPIO_0_12 0x00c3
841MX23_PAD_GPMI_D13__GPIO_0_13 0x00d3
842MX23_PAD_GPMI_D14__GPIO_0_14 0x00e3
843MX23_PAD_GPMI_D15__GPIO_0_15 0x00f3
844MX23_PAD_GPMI_CLE__GPIO_0_16 0x0103
845MX23_PAD_GPMI_ALE__GPIO_0_17 0x0113
846MX23_PAD_GPMI_CE2N__GPIO_0_18 0x0123
847MX23_PAD_GPMI_RDY0__GPIO_0_19 0x0133
848MX23_PAD_GPMI_RDY1__GPIO_0_20 0x0143
849MX23_PAD_GPMI_RDY2__GPIO_0_21 0x0153
850MX23_PAD_GPMI_RDY3__GPIO_0_22 0x0163
851MX23_PAD_GPMI_WPN__GPIO_0_23 0x0173
852MX23_PAD_GPMI_WRN__GPIO_0_24 0x0183
853MX23_PAD_GPMI_RDN__GPIO_0_25 0x0193
854MX23_PAD_AUART1_CTS__GPIO_0_26 0x01a3
855MX23_PAD_AUART1_RTS__GPIO_0_27 0x01b3
856MX23_PAD_AUART1_RX__GPIO_0_28 0x01c3
857MX23_PAD_AUART1_TX__GPIO_0_29 0x01d3
858MX23_PAD_I2C_SCL__GPIO_0_30 0x01e3
859MX23_PAD_I2C_SDA__GPIO_0_31 0x01f3
860MX23_PAD_LCD_D00__GPIO_1_0 0x1003
861MX23_PAD_LCD_D01__GPIO_1_1 0x1013
862MX23_PAD_LCD_D02__GPIO_1_2 0x1023
863MX23_PAD_LCD_D03__GPIO_1_3 0x1033
864MX23_PAD_LCD_D04__GPIO_1_4 0x1043
865MX23_PAD_LCD_D05__GPIO_1_5 0x1053
866MX23_PAD_LCD_D06__GPIO_1_6 0x1063
867MX23_PAD_LCD_D07__GPIO_1_7 0x1073
868MX23_PAD_LCD_D08__GPIO_1_8 0x1083
869MX23_PAD_LCD_D09__GPIO_1_9 0x1093
870MX23_PAD_LCD_D10__GPIO_1_10 0x10a3
871MX23_PAD_LCD_D11__GPIO_1_11 0x10b3
872MX23_PAD_LCD_D12__GPIO_1_12 0x10c3
873MX23_PAD_LCD_D13__GPIO_1_13 0x10d3
874MX23_PAD_LCD_D14__GPIO_1_14 0x10e3
875MX23_PAD_LCD_D15__GPIO_1_15 0x10f3
876MX23_PAD_LCD_D16__GPIO_1_16 0x1103
877MX23_PAD_LCD_D17__GPIO_1_17 0x1113
878MX23_PAD_LCD_RESET__GPIO_1_18 0x1123
879MX23_PAD_LCD_RS__GPIO_1_19 0x1133
880MX23_PAD_LCD_WR__GPIO_1_20 0x1143
881MX23_PAD_LCD_CS__GPIO_1_21 0x1153
882MX23_PAD_LCD_DOTCK__GPIO_1_22 0x1163
883MX23_PAD_LCD_ENABLE__GPIO_1_23 0x1173
884MX23_PAD_LCD_HSYNC__GPIO_1_24 0x1183
885MX23_PAD_LCD_VSYNC__GPIO_1_25 0x1193
886MX23_PAD_PWM0__GPIO_1_26 0x11a3
887MX23_PAD_PWM1__GPIO_1_27 0x11b3
888MX23_PAD_PWM2__GPIO_1_28 0x11c3
889MX23_PAD_PWM3__GPIO_1_29 0x11d3
890MX23_PAD_PWM4__GPIO_1_30 0x11e3
891MX23_PAD_SSP1_CMD__GPIO_2_0 0x2003
892MX23_PAD_SSP1_DETECT__GPIO_2_1 0x2013
893MX23_PAD_SSP1_DATA0__GPIO_2_2 0x2023
894MX23_PAD_SSP1_DATA1__GPIO_2_3 0x2033
895MX23_PAD_SSP1_DATA2__GPIO_2_4 0x2043
896MX23_PAD_SSP1_DATA3__GPIO_2_5 0x2053
897MX23_PAD_SSP1_SCK__GPIO_2_6 0x2063
898MX23_PAD_ROTARYA__GPIO_2_7 0x2073
899MX23_PAD_ROTARYB__GPIO_2_8 0x2083
900MX23_PAD_EMI_A00__GPIO_2_9 0x2093
901MX23_PAD_EMI_A01__GPIO_2_10 0x20a3
902MX23_PAD_EMI_A02__GPIO_2_11 0x20b3
903MX23_PAD_EMI_A03__GPIO_2_12 0x20c3
904MX23_PAD_EMI_A04__GPIO_2_13 0x20d3
905MX23_PAD_EMI_A05__GPIO_2_14 0x20e3
906MX23_PAD_EMI_A06__GPIO_2_15 0x20f3
907MX23_PAD_EMI_A07__GPIO_2_16 0x2103
908MX23_PAD_EMI_A08__GPIO_2_17 0x2113
909MX23_PAD_EMI_A09__GPIO_2_18 0x2123
910MX23_PAD_EMI_A10__GPIO_2_19 0x2133
911MX23_PAD_EMI_A11__GPIO_2_20 0x2143
912MX23_PAD_EMI_A12__GPIO_2_21 0x2153
913MX23_PAD_EMI_BA0__GPIO_2_22 0x2163
914MX23_PAD_EMI_BA1__GPIO_2_23 0x2173
915MX23_PAD_EMI_CASN__GPIO_2_24 0x2183
916MX23_PAD_EMI_CE0N__GPIO_2_25 0x2193
917MX23_PAD_EMI_CE1N__GPIO_2_26 0x21a3
918MX23_PAD_GPMI_CE1N__GPIO_2_27 0x21b3
919MX23_PAD_GPMI_CE0N__GPIO_2_28 0x21c3
920MX23_PAD_EMI_CKE__GPIO_2_29 0x21d3
921MX23_PAD_EMI_RASN__GPIO_2_30 0x21e3
922MX23_PAD_EMI_WEN__GPIO_2_31 0x21f3
diff --git a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra114-pinmux.txt b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra114-pinmux.txt
index e204d009f16c..fb70856c5b51 100644
--- a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra114-pinmux.txt
+++ b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra114-pinmux.txt
@@ -80,6 +80,17 @@ Valid values for pin and group names are:
80 dbg, sdio3, spi, uaa, uab, uart2, uart3, sdio1, ddc, gma, gme, gmf, gmg, 80 dbg, sdio3, spi, uaa, uab, uart2, uart3, sdio1, ddc, gma, gme, gmf, gmg,
81 gmh, owr, uda. 81 gmh, owr, uda.
82 82
83Valid values for nvidia,functions are:
84
85 blink, cec, cldvfs, clk12, cpu, dap, dap1, dap2, dev3, displaya,
86 displaya_alt, displayb, dtv, emc_dll, extperiph1, extperiph2,
87 extperiph3, gmi, gmi_alt, hda, hsi, i2c1, i2c2, i2c3, i2c4, i2cpwr,
88 i2s0, i2s1, i2s2, i2s3, i2s4, irda, kbc, nand, nand_alt, owr, pmi,
89 pwm0, pwm1, pwm2, pwm3, pwron, reset_out_n, rsvd1, rsvd2, rsvd3,
90 rsvd4, sdmmc1, sdmmc2, sdmmc3, sdmmc4, soc, spdif, spi1, spi2, spi3,
91 spi4, spi5, spi6, sysclk, trace, uarta, uartb, uartc, uartd, ulpi,
92 usb, vgp1, vgp2, vgp3, vgp4, vgp5, vgp6, vi, vi_alt1, vi_alt3
93
83Example: 94Example:
84 95
85 pinmux: pinmux { 96 pinmux: pinmux {
diff --git a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra20-pinmux.txt b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra20-pinmux.txt
index 683fde93c4fb..61e73cde9ae9 100644
--- a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra20-pinmux.txt
+++ b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra20-pinmux.txt
@@ -103,6 +103,17 @@ Valid values for pin and group names are:
103 drive_gma, drive_gmb, drive_gmc, drive_gmd, drive_gme, drive_owr, 103 drive_gma, drive_gmb, drive_gmc, drive_gmd, drive_gme, drive_owr,
104 drive_uda. 104 drive_uda.
105 105
106Valid values for nvidia,functions are:
107
108 ahb_clk, apb_clk, audio_sync, crt, dap1, dap2, dap3, dap4, dap5,
109 displaya, displayb, emc_test0_dll, emc_test1_dll, gmi, gmi_int,
110 hdmi, i2cp, i2c1, i2c2, i2c3, ide, irda, kbc, mio, mipi_hs, nand,
111 osc, owr, pcie, plla_out, pllc_out1, pllm_out1, pllp_out2, pllp_out3,
112 pllp_out4, pwm, pwr_intr, pwr_on, rsvd1, rsvd2, rsvd3, rsvd4, rtck,
113 sdio1, sdio2, sdio3, sdio4, sflash, spdif, spi1, spi2, spi2_alt,
114 spi3, spi4, trace, twc, uarta, uartb, uartc, uartd, uarte, ulpi,
115 vi, vi_sensor_clk, xio
116
106Example: 117Example:
107 118
108 pinctrl@70000000 { 119 pinctrl@70000000 {
diff --git a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra30-pinmux.txt b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra30-pinmux.txt
index 6f426ed7009e..0e6354c11e6d 100644
--- a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra30-pinmux.txt
+++ b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra30-pinmux.txt
@@ -91,6 +91,18 @@ Valid values for pin and group names are:
91 gmh, gpv, lcd1, lcd2, owr, sdio1, sdio2, sdio3, spi, uaa, uab, uart2, 91 gmh, gpv, lcd1, lcd2, owr, sdio1, sdio2, sdio3, spi, uaa, uab, uart2,
92 uart3, uda, vi1. 92 uart3, uda, vi1.
93 93
94Valid values for nvidia,functions are:
95
96 blink, cec, clk_12m_out, clk_32k_in, core_pwr_req, cpu_pwr_req, crt,
97 dap, ddr, dev3, displaya, displayb, dtv, extperiph1, extperiph2,
98 extperiph3, gmi, gmi_alt, hda, hdcp, hdmi, hsi, i2c1, i2c2, i2c3,
99 i2c4, i2cpwr, i2s0, i2s1, i2s2, i2s3, i2s4, invalid, kbc, mio, nand,
100 nand_alt, owr, pcie, pwm0, pwm1, pwm2, pwm3, pwr_int_n, rsvd1, rsvd2,
101 rsvd3, rsvd4, rtck, sata, sdmmc1, sdmmc2, sdmmc3, sdmmc4, spdif, spi1,
102 spi2, spi2_alt, spi3, spi4, spi5, spi6, sysclk, test, trace, uarta,
103 uartb, uartc, uartd, uarte, ulpi, vgp1, vgp2, vgp3, vgp4, vgp5, vgp6,
104 vi, vi_alt1, vi_alt2, vi_alt3
105
94Example: 106Example:
95 107
96 pinctrl@70000000 { 108 pinctrl@70000000 {
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
index aeb3c995cc04..1958ca9f9e5c 100644
--- a/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
+++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
@@ -127,21 +127,20 @@ whether there is any interaction between the child and intermediate parent
127nodes, is again defined entirely by the binding for the individual pin 127nodes, is again defined entirely by the binding for the individual pin
128controller device. 128controller device.
129 129
130== Using generic pinconfig options == 130== Generic pin configuration node content ==
131 131
132Generic pinconfig parameters can be used by defining a separate node containing 132Many data items that are represented in a pin configuration node are common
133the applicable parameters (and optional values), like: 133and generic. Pin control bindings should use the properties defined below
134where they are applicable; not all of these properties are relevant or useful
135for all hardware or binding structures. Each individual binding document
136should state which of these generic properties, if any, are used, and the
137structure of the DT nodes that contain these properties.
134 138
135pcfg_pull_up: pcfg_pull_up { 139Supported generic properties are:
136 bias-pull-up;
137 drive-strength = <20>;
138};
139
140This node should then be referenced in the appropriate pinctrl node as a phandle
141and parsed in the driver using the pinconf_generic_parse_dt_config function.
142
143Supported configuration parameters are:
144 140
141pins - the list of pins that properties in the node
142 apply to
143function - the mux function to select
145bias-disable - disable any pin bias 144bias-disable - disable any pin bias
146bias-high-impedance - high impedance mode ("third-state", "floating") 145bias-high-impedance - high impedance mode ("third-state", "floating")
147bias-bus-hold - latch weakly 146bias-bus-hold - latch weakly
@@ -160,7 +159,21 @@ low-power-disable - disable low power mode
160output-low - set the pin to output mode with low level 159output-low - set the pin to output mode with low level
161output-high - set the pin to output mode with high level 160output-high - set the pin to output mode with high level
162 161
163Arguments for parameters: 162Some of the generic properties take arguments. For those that do, the
163arguments are described below.
164
165- pins takes a list of pin names or IDs as a required argument. The specific
166 binding for the hardware defines:
167 - Whether the entries are integers or strings, and their meaning.
168
169- function takes a list of function names/IDs as a required argument. The
170 specific binding for the hardware defines:
171 - Whether the entries are integers or strings, and their meaning.
172 - Whether only a single entry is allowed (which is applied to all entries
173 in the pins property), or whether there may alternatively be one entry per
174 entry in the pins property, in which case the list lengths must match, and
175 for each list index i, the function at list index i is applied to the pin
176 at list index i.
164 177
165- bias-pull-up, -down and -pin-default take as optional argument on hardware 178- bias-pull-up, -down and -pin-default take as optional argument on hardware
166 supporting it the pull strength in Ohm. bias-disable will disable the pull. 179 supporting it the pull strength in Ohm. bias-disable will disable the pull.
@@ -170,7 +183,5 @@ Arguments for parameters:
170- input-debounce takes the debounce time in usec as argument 183- input-debounce takes the debounce time in usec as argument
171 or 0 to disable debouncing 184 or 0 to disable debouncing
172 185
173All parameters not listed here, do not take an argument.
174
175More in-depth documentation on these parameters can be found in 186More in-depth documentation on these parameters can be found in
176<include/linux/pinctrl/pinconfig-generic.h> 187<include/linux/pinctrl/pinconfig-generic.h>
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-palmas.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-palmas.txt
new file mode 100644
index 000000000000..caf297bee1fb
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-palmas.txt
@@ -0,0 +1,96 @@
1Palmas Pincontrol bindings
2
3The pins of Palmas device can be set on different option and provides
4the configuration for Pull UP/DOWN, open drain etc.
5
6Required properties:
7- compatible: It must be one of following:
8 - "ti,palmas-pinctrl" for Palma series of the pincontrol.
9 - "ti,tps65913-pinctrl" for Palma series device TPS65913.
10 - "ti,tps80036-pinctrl" for Palma series device TPS80036.
11
12Please refer to pinctrl-bindings.txt in this directory for details of the
13common pinctrl bindings used by client devices, including the meaning of the
14phrase "pin configuration node".
15
16Palmas's pin configuration nodes act as a container for an arbitrary number of
17subnodes. Each of these subnodes represents some desired configuration for a
18list of pins. This configuration can include the mux function to select on
19those pin(s), and various pin configuration parameters, such as pull-up,
20open drain.
21
22The name of each subnode is not important; all subnodes should be enumerated
23and processed purely based on their content.
24
25Each subnode only affects those parameters that are explicitly listed. In
26other words, a subnode that lists a mux function but no pin configuration
27parameters implies no information about any pin configuration parameters.
28Similarly, a pin subnode that describes a pullup parameter implies no
29information about e.g. the mux function.
30
31Optional properties:
32- ti,palmas-enable-dvfs1: Enable DVFS1. Configure pins for DVFS1 mode.
33 Selection primary or secondary function associated to I2C2_SCL_SCE,
34 I2C2_SDA_SDO pin/pad for DVFS1 interface
35- ti,palmas-enable-dvfs2: Enable DVFS2. Configure pins for DVFS2 mode.
36 Selection primary or secondary function associated to GPADC_START
37 and SYSEN2 pin/pad for DVFS2 interface
38
39This binding uses the following generic properties as defined in
40pinctrl-bindings.txt:
41
42Required: pins
43Options: function, bias-disable, bias-pull-up, bias-pull-down,
44 drive-open-drain.
45
46Note that many of these properties are only valid for certain specific pins.
47See the Palmas device datasheet for complete details regarding which pins
48support which functionality.
49
50Valid values for pin names are:
51 gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6, gpio7, gpio8, gpio9,
52 gpio10, gpio11, gpio12, gpio13, gpio14, gpio15, vac, powergood,
53 nreswarm, pwrdown, gpadc_start, reset_in, nsleep, enable1, enable2,
54 int.
55
56Valid value of function names are:
57 gpio, led, pwm, regen, sysen, clk32kgaudio, id, vbus_det, chrg_det,
58 vac, vacok, powergood, usb_psel, msecure, pwrhold, int, nreswarm,
59 simrsto, simrsti, low_vbat, wireless_chrg1, rcm, pwrdown, gpadc_start,
60 reset_in, nsleep, enable.
61
62There are 4 special functions: opt0, opt1, opt2 and opt3. If any of these
63functions is selected then directly pins register will be written with 0, 1, 2
64or 3 respectively if it is valid for that pins or list of pins.
65
66Example:
67 palmas: tps65913 {
68 ....
69 pinctrl {
70 compatible = "ti,tps65913-pinctrl";
71 ti,palmas-enable-dvfs1;
72 pinctrl-names = "default";
73 pinctrl-0 = <&palmas_pins_state>;
74
75 palmas_pins_state: pinmux {
76 gpio0 {
77 pins = "gpio0";
78 function = "id";
79 bias-pull-up;
80 };
81
82 vac {
83 pins = "vac";
84 function = "vacok";
85 bias-pull-down;
86 };
87
88 gpio5 {
89 pins = "gpio5";
90 function = "opt0";
91 drive-open-drain = <1>;
92 };
93 };
94 };
95 ....
96 };
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt
index 5a02e30dd262..7069a0b84e3a 100644
--- a/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt
+++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt
@@ -72,6 +72,13 @@ Optional properties:
72 /* pin base, nr pins & gpio function */ 72 /* pin base, nr pins & gpio function */
73 pinctrl-single,gpio-range = <&range 0 3 0 &range 3 9 1>; 73 pinctrl-single,gpio-range = <&range 0 3 0 &range 3 9 1>;
74 74
75- interrupt-controller : standard interrupt controller binding if using
76 interrupts for wake-up events for example. In this case pinctrl-single
77 is set up as a chained interrupt controller and the wake-up interrupts
78 can be requested by the drivers using request_irq().
79
80- #interrupt-cells : standard interrupt binding if using interrupts
81
75This driver assumes that there is only one register for each pin (unless the 82This driver assumes that there is only one register for each pin (unless the
76pinctrl-single,bit-per-mux is set), and uses the common pinctrl bindings as 83pinctrl-single,bit-per-mux is set), and uses the common pinctrl bindings as
77specified in the pinctrl-bindings.txt document in this directory. 84specified in the pinctrl-bindings.txt document in this directory.
@@ -121,6 +128,8 @@ pmx_core: pinmux@4a100040 {
121 reg = <0x4a100040 0x0196>; 128 reg = <0x4a100040 0x0196>;
122 #address-cells = <1>; 129 #address-cells = <1>;
123 #size-cells = <0>; 130 #size-cells = <0>;
131 #interrupt-cells = <1>;
132 interrupt-controller;
124 pinctrl-single,register-width = <16>; 133 pinctrl-single,register-width = <16>;
125 pinctrl-single,function-mask = <0xffff>; 134 pinctrl-single,function-mask = <0xffff>;
126}; 135};
@@ -131,6 +140,8 @@ pmx_wkup: pinmux@4a31e040 {
131 reg = <0x4a31e040 0x0038>; 140 reg = <0x4a31e040 0x0038>;
132 #address-cells = <1>; 141 #address-cells = <1>;
133 #size-cells = <0>; 142 #size-cells = <0>;
143 #interrupt-cells = <1>;
144 interrupt-controller;
134 pinctrl-single,register-width = <16>; 145 pinctrl-single,register-width = <16>;
135 pinctrl-single,function-mask = <0xffff>; 146 pinctrl-single,function-mask = <0xffff>;
136}; 147};
diff --git a/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt
index b0fb1018d7ad..f378d342aae4 100644
--- a/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt
@@ -21,10 +21,13 @@ defined as gpio sub-nodes of the pinmux controller.
21Required properties for iomux controller: 21Required properties for iomux controller:
22 - compatible: one of "rockchip,rk2928-pinctrl", "rockchip,rk3066a-pinctrl" 22 - compatible: one of "rockchip,rk2928-pinctrl", "rockchip,rk3066a-pinctrl"
23 "rockchip,rk3066b-pinctrl", "rockchip,rk3188-pinctrl" 23 "rockchip,rk3066b-pinctrl", "rockchip,rk3188-pinctrl"
24 - reg: first element is the general register space of the iomux controller
25 second element is the separate pull register space of the rk3188
24 26
25Required properties for gpio sub nodes: 27Required properties for gpio sub nodes:
26 - compatible: "rockchip,gpio-bank" 28 - compatible: "rockchip,gpio-bank", "rockchip,rk3188-gpio-bank0"
27 - reg: register of the gpio bank (different than the iomux registerset) 29 - reg: register of the gpio bank (different than the iomux registerset)
30 second element: separate pull register for rk3188 bank0
28 - interrupts: base interrupt of the gpio bank in the interrupt controller 31 - interrupts: base interrupt of the gpio bank in the interrupt controller
29 - clocks: clock that drives this bank 32 - clocks: clock that drives this bank
30 - gpio-controller: identifies the node as a gpio controller and pin bank. 33 - gpio-controller: identifies the node as a gpio controller and pin bank.
@@ -95,3 +98,44 @@ uart2: serial@20064000 {
95 pinctrl-names = "default"; 98 pinctrl-names = "default";
96 pinctrl-0 = <&uart2_xfer>; 99 pinctrl-0 = <&uart2_xfer>;
97}; 100};
101
102Example for rk3188:
103
104 pinctrl@20008000 {
105 compatible = "rockchip,rk3188-pinctrl";
106 reg = <0x20008000 0xa0>,
107 <0x20008164 0x1a0>;
108 #address-cells = <1>;
109 #size-cells = <1>;
110 ranges;
111
112 gpio0: gpio0@0x2000a000 {
113 compatible = "rockchip,rk3188-gpio-bank0";
114 reg = <0x2000a000 0x100>,
115 <0x20004064 0x8>;
116 interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
117 clocks = <&clk_gates8 9>;
118
119 gpio-controller;
120 #gpio-cells = <2>;
121
122 interrupt-controller;
123 #interrupt-cells = <2>;
124 };
125
126 gpio1: gpio1@0x2003c000 {
127 compatible = "rockchip,gpio-bank";
128 reg = <0x2003c000 0x100>;
129 interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
130 clocks = <&clk_gates8 10>;
131
132 gpio-controller;
133 #gpio-cells = <2>;
134
135 interrupt-controller;
136 #interrupt-cells = <2>;
137 };
138
139 ...
140
141 };
diff --git a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
index 36281e7a2a46..257677de3e6b 100644
--- a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
@@ -12,6 +12,7 @@ Required Properties:
12 - "samsung,s3c2440-pinctrl": for S3C2440-compatible pin-controller, 12 - "samsung,s3c2440-pinctrl": for S3C2440-compatible pin-controller,
13 - "samsung,s3c2450-pinctrl": for S3C2450-compatible pin-controller, 13 - "samsung,s3c2450-pinctrl": for S3C2450-compatible pin-controller,
14 - "samsung,s3c64xx-pinctrl": for S3C64xx-compatible pin-controller, 14 - "samsung,s3c64xx-pinctrl": for S3C64xx-compatible pin-controller,
15 - "samsung,s5pv210-pinctrl": for S5PV210-compatible pin-controller,
15 - "samsung,exynos4210-pinctrl": for Exynos4210 compatible pin-controller. 16 - "samsung,exynos4210-pinctrl": for Exynos4210 compatible pin-controller.
16 - "samsung,exynos4x12-pinctrl": for Exynos4x12 compatible pin-controller. 17 - "samsung,exynos4x12-pinctrl": for Exynos4x12 compatible pin-controller.
17 - "samsung,exynos5250-pinctrl": for Exynos5250 compatible pin-controller. 18 - "samsung,exynos5250-pinctrl": for Exynos5250 compatible pin-controller.
@@ -128,7 +129,7 @@ B. External Wakeup Interrupts: For supporting external wakeup interrupts, a
128 - samsung,s3c64xx-wakeup-eint: represents wakeup interrupt controller 129 - samsung,s3c64xx-wakeup-eint: represents wakeup interrupt controller
129 found on Samsung S3C64xx SoCs, 130 found on Samsung S3C64xx SoCs,
130 - samsung,exynos4210-wakeup-eint: represents wakeup interrupt controller 131 - samsung,exynos4210-wakeup-eint: represents wakeup interrupt controller
131 found on Samsung Exynos4210 SoC. 132 found on Samsung Exynos4210 and S5PC110/S5PV210 SoCs.
132 - interrupt-parent: phandle of the interrupt parent to which the external 133 - interrupt-parent: phandle of the interrupt parent to which the external
133 wakeup interrupts are forwarded to. 134 wakeup interrupts are forwarded to.
134 - interrupts: interrupt used by multiplexed wakeup interrupts. 135 - interrupts: interrupt used by multiplexed wakeup interrupts.
diff --git a/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt b/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt
index 9a2f3f420526..6b33b9f18e88 100644
--- a/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt
+++ b/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt
@@ -1,8 +1,8 @@
1ST Ericsson Nomadik pinmux controller 1ST Ericsson Nomadik pinmux controller
2 2
3Required properties: 3Required properties:
4- compatible: "stericsson,nmk-pinctrl", "stericsson,nmk-pinctrl-db8540", 4- compatible: "stericsson,db8500-pinctrl", "stericsson,db8540-pinctrl",
5 "stericsson,nmk-pinctrl-stn8815" 5 "stericsson,stn8815-pinctrl"
6- reg: Should contain the register physical address and length of the PRCMU. 6- reg: Should contain the register physical address and length of the PRCMU.
7 7
8Please refer to pinctrl-bindings.txt in this directory for details of the 8Please refer to pinctrl-bindings.txt in this directory for details of the
@@ -68,7 +68,7 @@ Optional subnode-properties:
68Example board file extract: 68Example board file extract:
69 69
70 pinctrl@80157000 { 70 pinctrl@80157000 {
71 compatible = "stericsson,nmk-pinctrl"; 71 compatible = "stericsson,db8500-pinctrl";
72 reg = <0x80157000 0x2000>; 72 reg = <0x80157000 0x2000>;
73 73
74 pinctrl-names = "default"; 74 pinctrl-names = "default";
diff --git a/Documentation/devicetree/bindings/power_supply/msm-poweroff.txt b/Documentation/devicetree/bindings/power_supply/msm-poweroff.txt
new file mode 100644
index 000000000000..ce44ad357565
--- /dev/null
+++ b/Documentation/devicetree/bindings/power_supply/msm-poweroff.txt
@@ -0,0 +1,17 @@
1MSM Restart Driver
2
3A power supply hold (ps-hold) bit is set to power the msm chipsets.
4Clearing that bit allows us to restart/poweroff. The difference
5between poweroff and restart is determined by unique power manager IC
6settings.
7
8Required Properties:
9-compatible: "qcom,pshold"
10-reg: Specifies the physical address of the ps-hold register
11
12Example:
13
14 restart@fc4ab000 {
15 compatible = "qcom,pshold";
16 reg = <0xfc4ab000 0x4>;
17 };
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt b/Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt
index 5693877ab377..82dd5b65cf48 100644
--- a/Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt
+++ b/Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt
@@ -1,21 +1,20 @@
1* Freescale MSI interrupt controller 1* Freescale MSI interrupt controller
2 2
3Required properties: 3Required properties:
4- compatible : compatible list, contains 2 entries, 4- compatible : compatible list, may contain one or two entries
5 first is "fsl,CHIP-msi", where CHIP is the processor(mpc8610, mpc8572, 5 The first is "fsl,CHIP-msi", where CHIP is the processor(mpc8610, mpc8572,
6 etc.) and the second is "fsl,mpic-msi" or "fsl,ipic-msi" depending on 6 etc.) and the second is "fsl,mpic-msi" or "fsl,ipic-msi" or
7 the parent type. 7 "fsl,mpic-msi-v4.3" depending on the parent type and version. If mpic
8 version is 4.3, the number of MSI registers is increased to 16, MSIIR1 is
9 provided to access these 16 registers, and compatible "fsl,mpic-msi-v4.3"
10 should be used. The first entry is optional; the second entry is
11 required.
8 12
9- reg : It may contain one or two regions. The first region should contain 13- reg : It may contain one or two regions. The first region should contain
10 the address and the length of the shared message interrupt register set. 14 the address and the length of the shared message interrupt register set.
11 The second region should contain the address of aliased MSIIR register for 15 The second region should contain the address of aliased MSIIR or MSIIR1
12 platforms that have such an alias. 16 register for platforms that have such an alias, if using MSIIR1, the second
13 17 region must be added because different MSI group has different MSIIR1 offset.
14- msi-available-ranges: use <start count> style section to define which
15 msi interrupt can be used in the 256 msi interrupts. This property is
16 optional, without this, all the 256 MSI interrupts can be used.
17 Each available range must begin and end on a multiple of 32 (i.e.
18 no splitting an individual MSI register or the associated PIC interrupt).
19 18
20- interrupts : each one of the interrupts here is one entry per 32 MSIs, 19- interrupts : each one of the interrupts here is one entry per 32 MSIs,
21 and routed to the host interrupt controller. the interrupts should 20 and routed to the host interrupt controller. the interrupts should
@@ -28,6 +27,14 @@ Required properties:
28 to MPIC. 27 to MPIC.
29 28
30Optional properties: 29Optional properties:
30- msi-available-ranges: use <start count> style section to define which
31 msi interrupt can be used in the 256 msi interrupts. This property is
32 optional, without this, all the MSI interrupts can be used.
33 Each available range must begin and end on a multiple of 32 (i.e.
34 no splitting an individual MSI register or the associated PIC interrupt).
35 MPIC v4.3 does not support this property because the 32 interrupts of an
36 individual register are not continuous when using MSIIR1.
37
31- msi-address-64: 64-bit PCI address of the MSIIR register. The MSIIR register 38- msi-address-64: 64-bit PCI address of the MSIIR register. The MSIIR register
32 is used for MSI messaging. The address of MSIIR in PCI address space is 39 is used for MSI messaging. The address of MSIIR in PCI address space is
33 the MSI message address. 40 the MSI message address.
@@ -54,6 +61,28 @@ Example:
54 interrupt-parent = <&mpic>; 61 interrupt-parent = <&mpic>;
55 }; 62 };
56 63
64 msi@41600 {
65 compatible = "fsl,mpic-msi-v4.3";
66 reg = <0x41600 0x200 0x44148 4>;
67 interrupts = <
68 0xe0 0 0 0
69 0xe1 0 0 0
70 0xe2 0 0 0
71 0xe3 0 0 0
72 0xe4 0 0 0
73 0xe5 0 0 0
74 0xe6 0 0 0
75 0xe7 0 0 0
76 0x100 0 0 0
77 0x101 0 0 0
78 0x102 0 0 0
79 0x103 0 0 0
80 0x104 0 0 0
81 0x105 0 0 0
82 0x106 0 0 0
83 0x107 0 0 0>;
84 };
85
57The Freescale hypervisor and msi-address-64 86The Freescale hypervisor and msi-address-64
58------------------------------------------- 87-------------------------------------------
59Normally, PCI devices have access to all of CCSR via an ATMU mapping. The 88Normally, PCI devices have access to all of CCSR via an ATMU mapping. The
diff --git a/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt b/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt
index de0eaed86651..8031148bcf85 100644
--- a/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt
+++ b/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt
@@ -2,11 +2,9 @@ Atmel TCB PWM controller
2 2
3Required properties: 3Required properties:
4- compatible: should be "atmel,tcb-pwm" 4- compatible: should be "atmel,tcb-pwm"
5- #pwm-cells: Should be 3. The first cell specifies the per-chip index 5- #pwm-cells: should be 3. See pwm.txt in this directory for a description of
6 of the PWM to use, the second cell is the period in nanoseconds and 6 the cells format. The only third cell flag supported by this binding is
7 bit 0 in the third cell is used to encode the polarity of PWM output. 7 PWM_POLARITY_INVERTED.
8 Set bit 0 of the third cell in PWM specifier to 1 for inverse polarity &
9 set to 0 for normal polarity.
10- tc-block: The Timer Counter block to use as a PWM chip. 8- tc-block: The Timer Counter block to use as a PWM chip.
11 9
12Example: 10Example:
diff --git a/Documentation/devicetree/bindings/pwm/imx-pwm.txt b/Documentation/devicetree/bindings/pwm/imx-pwm.txt
index 8522bfbccfd7..b50d7a6d9d7f 100644
--- a/Documentation/devicetree/bindings/pwm/imx-pwm.txt
+++ b/Documentation/devicetree/bindings/pwm/imx-pwm.txt
@@ -3,8 +3,8 @@ Freescale i.MX PWM controller
3Required properties: 3Required properties:
4- compatible: should be "fsl,<soc>-pwm" 4- compatible: should be "fsl,<soc>-pwm"
5- reg: physical base address and length of the controller's registers 5- reg: physical base address and length of the controller's registers
6- #pwm-cells: should be 2. The first cell specifies the per-chip index 6- #pwm-cells: should be 2. See pwm.txt in this directory for a description of
7 of the PWM to use and the second cell is the period in nanoseconds. 7 the cells format.
8- interrupts: The interrupt for the pwm controller 8- interrupts: The interrupt for the pwm controller
9 9
10Example: 10Example:
diff --git a/Documentation/devicetree/bindings/pwm/mxs-pwm.txt b/Documentation/devicetree/bindings/pwm/mxs-pwm.txt
index 9e3f8f1d46a2..96cdde5f6208 100644
--- a/Documentation/devicetree/bindings/pwm/mxs-pwm.txt
+++ b/Documentation/devicetree/bindings/pwm/mxs-pwm.txt
@@ -3,8 +3,8 @@ Freescale MXS PWM controller
3Required properties: 3Required properties:
4- compatible: should be "fsl,imx23-pwm" 4- compatible: should be "fsl,imx23-pwm"
5- reg: physical base address and length of the controller's registers 5- reg: physical base address and length of the controller's registers
6- #pwm-cells: should be 2. The first cell specifies the per-chip index 6- #pwm-cells: should be 2. See pwm.txt in this directory for a description of
7 of the PWM to use and the second cell is the period in nanoseconds. 7 the cells format.
8- fsl,pwm-number: the number of PWM devices 8- fsl,pwm-number: the number of PWM devices
9 9
10Example: 10Example:
diff --git a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
index 01438ecd6628..c3fc57af8772 100644
--- a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
+++ b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
@@ -5,9 +5,8 @@ Required properties:
5 - "nvidia,tegra20-pwm" 5 - "nvidia,tegra20-pwm"
6 - "nvidia,tegra30-pwm" 6 - "nvidia,tegra30-pwm"
7- reg: physical base address and length of the controller's registers 7- reg: physical base address and length of the controller's registers
8- #pwm-cells: On Tegra the number of cells used to specify a PWM is 2. The 8- #pwm-cells: should be 2. See pwm.txt in this directory for a description of
9 first cell specifies the per-chip index of the PWM to use and the second 9 the cells format.
10 cell is the period in nanoseconds.
11 10
12Example: 11Example:
13 12
diff --git a/Documentation/devicetree/bindings/pwm/nxp,pca9685-pwm.txt b/Documentation/devicetree/bindings/pwm/nxp,pca9685-pwm.txt
index 1e3dfe7a4894..f84ec9d291ea 100644
--- a/Documentation/devicetree/bindings/pwm/nxp,pca9685-pwm.txt
+++ b/Documentation/devicetree/bindings/pwm/nxp,pca9685-pwm.txt
@@ -3,8 +3,8 @@ NXP PCA9685 16-channel 12-bit PWM LED controller
3 3
4Required properties: 4Required properties:
5 - compatible: "nxp,pca9685-pwm" 5 - compatible: "nxp,pca9685-pwm"
6 - #pwm-cells: should be 2. The first cell specifies the per-chip index 6 - #pwm-cells: Should be 2. See pwm.txt in this directory for a description of
7 of the PWM to use and the second cell is the period in nanoseconds. 7 the cells format.
8 The index 16 is the ALLCALL channel, that sets all PWM channels at the same 8 The index 16 is the ALLCALL channel, that sets all PWM channels at the same
9 time. 9 time.
10 10
diff --git a/Documentation/devicetree/bindings/pwm/pwm-samsung.txt b/Documentation/devicetree/bindings/pwm/pwm-samsung.txt
index ac67c687a327..d61fccd40bad 100644
--- a/Documentation/devicetree/bindings/pwm/pwm-samsung.txt
+++ b/Documentation/devicetree/bindings/pwm/pwm-samsung.txt
@@ -19,13 +19,19 @@ Required properties:
19- reg: base address and size of register area 19- reg: base address and size of register area
20- interrupts: list of timer interrupts (one interrupt per timer, starting at 20- interrupts: list of timer interrupts (one interrupt per timer, starting at
21 timer 0) 21 timer 0)
22- #pwm-cells: number of cells used for PWM specifier - must be 3 22- clock-names: should contain all following required clock names:
23 the specifier format is as follows: 23 - "timers" - PWM base clock used to generate PWM signals,
24 - phandle to PWM controller node 24 and any subset of following optional clock names:
25 - index of PWM channel (from 0 to 4) 25 - "pwm-tclk0" - first external PWM clock source,
26 - PWM signal period in nanoseconds 26 - "pwm-tclk1" - second external PWM clock source.
27 - bitmask of optional PWM flags: 27 Note that not all IP variants allow using all external clock sources.
28 0x1 - invert PWM signal 28 Refer to SoC documentation to learn which clock source configurations
29 are available.
30- clocks: should contain clock specifiers of all clocks, which input names
31 have been specified in clock-names property, in same order.
32- #pwm-cells: should be 3. See pwm.txt in this directory for a description of
33 the cells format. The only third cell flag supported by this binding is
34 PWM_POLARITY_INVERTED.
29 35
30Optional properties: 36Optional properties:
31- samsung,pwm-outputs: list of PWM channels used as PWM outputs on particular 37- samsung,pwm-outputs: list of PWM channels used as PWM outputs on particular
@@ -38,6 +44,8 @@ Example:
38 reg = <0x7f006000 0x1000>; 44 reg = <0x7f006000 0x1000>;
39 interrupt-parent = <&vic0>; 45 interrupt-parent = <&vic0>;
40 interrupts = <23>, <24>, <25>, <27>, <28>; 46 interrupts = <23>, <24>, <25>, <27>, <28>;
47 clocks = <&clock 67>;
48 clock-names = "timers";
41 samsung,pwm-outputs = <0>, <1>; 49 samsung,pwm-outputs = <0>, <1>;
42 #pwm-cells = <3>; 50 #pwm-cells = <3>;
43 } 51 }
diff --git a/Documentation/devicetree/bindings/pwm/pwm-tiecap.txt b/Documentation/devicetree/bindings/pwm/pwm-tiecap.txt
index 681afad73778..fb81179dce37 100644
--- a/Documentation/devicetree/bindings/pwm/pwm-tiecap.txt
+++ b/Documentation/devicetree/bindings/pwm/pwm-tiecap.txt
@@ -4,11 +4,9 @@ Required properties:
4- compatible: Must be "ti,<soc>-ecap". 4- compatible: Must be "ti,<soc>-ecap".
5 for am33xx - compatible = "ti,am33xx-ecap"; 5 for am33xx - compatible = "ti,am33xx-ecap";
6 for da850 - compatible = "ti,da850-ecap", "ti,am33xx-ecap"; 6 for da850 - compatible = "ti,da850-ecap", "ti,am33xx-ecap";
7- #pwm-cells: Should be 3. Number of cells being used to specify PWM property. 7- #pwm-cells: should be 3. See pwm.txt in this directory for a description of
8 First cell specifies the per-chip index of the PWM to use, the second 8 the cells format. The PWM channel index ranges from 0 to 4. The only third
9 cell is the period in nanoseconds and bit 0 in the third cell is used to 9 cell flag supported by this binding is PWM_POLARITY_INVERTED.
10 encode the polarity of PWM output. Set bit 0 of the third in PWM specifier
11 to 1 for inverse polarity & set to 0 for normal polarity.
12- reg: physical base address and size of the registers map. 10- reg: physical base address and size of the registers map.
13 11
14Optional properties: 12Optional properties:
diff --git a/Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt b/Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt
index 337c6fc65d3f..9c100b2c5b23 100644
--- a/Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt
+++ b/Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt
@@ -4,11 +4,9 @@ Required properties:
4- compatible: Must be "ti,<soc>-ehrpwm". 4- compatible: Must be "ti,<soc>-ehrpwm".
5 for am33xx - compatible = "ti,am33xx-ehrpwm"; 5 for am33xx - compatible = "ti,am33xx-ehrpwm";
6 for da850 - compatible = "ti,da850-ehrpwm", "ti,am33xx-ehrpwm"; 6 for da850 - compatible = "ti,da850-ehrpwm", "ti,am33xx-ehrpwm";
7- #pwm-cells: Should be 3. Number of cells being used to specify PWM property. 7- #pwm-cells: should be 3. See pwm.txt in this directory for a description of
8 First cell specifies the per-chip index of the PWM to use, the second 8 the cells format. The only third cell flag supported by this binding is
9 cell is the period in nanoseconds and bit 0 in the third cell is used to 9 PWM_POLARITY_INVERTED.
10 encode the polarity of PWM output. Set bit 0 of the third in PWM specifier
11 to 1 for inverse polarity & set to 0 for normal polarity.
12- reg: physical base address and size of the registers map. 10- reg: physical base address and size of the registers map.
13 11
14Optional properties: 12Optional properties:
diff --git a/Documentation/devicetree/bindings/pwm/pwm.txt b/Documentation/devicetree/bindings/pwm/pwm.txt
index 06e67247859a..8556263b8502 100644
--- a/Documentation/devicetree/bindings/pwm/pwm.txt
+++ b/Documentation/devicetree/bindings/pwm/pwm.txt
@@ -43,13 +43,14 @@ because the name "backlight" would be used as fallback anyway.
43pwm-specifier typically encodes the chip-relative PWM number and the PWM 43pwm-specifier typically encodes the chip-relative PWM number and the PWM
44period in nanoseconds. 44period in nanoseconds.
45 45
46Optionally, the pwm-specifier can encode a number of flags in a third cell: 46Optionally, the pwm-specifier can encode a number of flags (defined in
47- bit 0: PWM signal polarity (0: normal polarity, 1: inverse polarity) 47<dt-bindings/pwm/pwm.h>) in a third cell:
48- PWM_POLARITY_INVERTED: invert the PWM signal polarity
48 49
49Example with optional PWM specifier for inverse polarity 50Example with optional PWM specifier for inverse polarity
50 51
51 bl: backlight { 52 bl: backlight {
52 pwms = <&pwm 0 5000000 1>; 53 pwms = <&pwm 0 5000000 PWM_POLARITY_INVERTED>;
53 pwm-names = "backlight"; 54 pwm-names = "backlight";
54 }; 55 };
55 56
diff --git a/Documentation/devicetree/bindings/pwm/renesas,tpu-pwm.txt b/Documentation/devicetree/bindings/pwm/renesas,tpu-pwm.txt
new file mode 100644
index 000000000000..b067e84a94b5
--- /dev/null
+++ b/Documentation/devicetree/bindings/pwm/renesas,tpu-pwm.txt
@@ -0,0 +1,28 @@
1* Renesas R-Car Timer Pulse Unit PWM Controller
2
3Required Properties:
4
5 - compatible: should be one of the following.
6 - "renesas,tpu-r8a73a4": for R8A77A4 (R-Mobile APE6) compatible PWM controller.
7 - "renesas,tpu-r8a7740": for R8A7740 (R-Mobile A1) compatible PWM controller.
8 - "renesas,tpu-r8a7790": for R8A7790 (R-Car H2) compatible PWM controller.
9 - "renesas,tpu-sh7372": for SH7372 (SH-Mobile AP4) compatible PWM controller.
10 - "renesas,tpu": for generic R-Car TPU PWM controller.
11
12 - reg: Base address and length of each memory resource used by the PWM
13 controller hardware module.
14
15 - #pwm-cells: should be 3. See pwm.txt in this directory for a description of
16 the cells format. The only third cell flag supported by this binding is
17 PWM_POLARITY_INVERTED.
18
19Please refer to pwm.txt in this directory for details of the common PWM bindings
20used by client devices.
21
22Example: R8A7740 (R-Car A1) TPU controller node
23
24 tpu: pwm@e6600000 {
25 compatible = "renesas,tpu-r8a7740", "renesas,tpu";
26 reg = <0xe6600000 0x100>;
27 #pwm-cells = <3>;
28 };
diff --git a/Documentation/devicetree/bindings/pwm/spear-pwm.txt b/Documentation/devicetree/bindings/pwm/spear-pwm.txt
index 3ac779d83386..b486de2c3fe3 100644
--- a/Documentation/devicetree/bindings/pwm/spear-pwm.txt
+++ b/Documentation/devicetree/bindings/pwm/spear-pwm.txt
@@ -5,9 +5,8 @@ Required properties:
5 - "st,spear320-pwm" 5 - "st,spear320-pwm"
6 - "st,spear1340-pwm" 6 - "st,spear1340-pwm"
7- reg: physical base address and length of the controller's registers 7- reg: physical base address and length of the controller's registers
8- #pwm-cells: number of cells used to specify PWM which is fixed to 2 on 8- #pwm-cells: should be 2. See pwm.txt in this directory for a description of
9 SPEAr. The first cell specifies the per-chip index of the PWM to use and 9 the cells format.
10 the second cell is the period in nanoseconds.
11 10
12Example: 11Example:
13 12
diff --git a/Documentation/devicetree/bindings/pwm/ti,twl-pwm.txt b/Documentation/devicetree/bindings/pwm/ti,twl-pwm.txt
index 2943ee5fce00..4e32bee11201 100644
--- a/Documentation/devicetree/bindings/pwm/ti,twl-pwm.txt
+++ b/Documentation/devicetree/bindings/pwm/ti,twl-pwm.txt
@@ -6,8 +6,8 @@ On TWL6030 series: PWM0 and PWM1
6 6
7Required properties: 7Required properties:
8- compatible: "ti,twl4030-pwm" or "ti,twl6030-pwm" 8- compatible: "ti,twl4030-pwm" or "ti,twl6030-pwm"
9- #pwm-cells: should be 2. The first cell specifies the per-chip index 9- #pwm-cells: should be 2. See pwm.txt in this directory for a description of
10 of the PWM to use and the second cell is the period in nanoseconds. 10 the cells format.
11 11
12Example: 12Example:
13 13
diff --git a/Documentation/devicetree/bindings/pwm/ti,twl-pwmled.txt b/Documentation/devicetree/bindings/pwm/ti,twl-pwmled.txt
index cb64f3acc10f..9f4b46090782 100644
--- a/Documentation/devicetree/bindings/pwm/ti,twl-pwmled.txt
+++ b/Documentation/devicetree/bindings/pwm/ti,twl-pwmled.txt
@@ -6,8 +6,8 @@ On TWL6030 series: LED PWM (mainly used as charging indicator LED)
6 6
7Required properties: 7Required properties:
8- compatible: "ti,twl4030-pwmled" or "ti,twl6030-pwmled" 8- compatible: "ti,twl4030-pwmled" or "ti,twl6030-pwmled"
9- #pwm-cells: should be 2. The first cell specifies the per-chip index 9- #pwm-cells: should be 2. See pwm.txt in this directory for a description of
10 of the PWM to use and the second cell is the period in nanoseconds. 10 the cells format.
11 11
12Example: 12Example:
13 13
diff --git a/Documentation/devicetree/bindings/pwm/vt8500-pwm.txt b/Documentation/devicetree/bindings/pwm/vt8500-pwm.txt
index d21d82d29855..a76390e6df2e 100644
--- a/Documentation/devicetree/bindings/pwm/vt8500-pwm.txt
+++ b/Documentation/devicetree/bindings/pwm/vt8500-pwm.txt
@@ -3,11 +3,9 @@ VIA/Wondermedia VT8500/WM8xxx series SoC PWM controller
3Required properties: 3Required properties:
4- compatible: should be "via,vt8500-pwm" 4- compatible: should be "via,vt8500-pwm"
5- reg: physical base address and length of the controller's registers 5- reg: physical base address and length of the controller's registers
6- #pwm-cells: Should be 3. Number of cells being used to specify PWM property. 6- #pwm-cells: should be 3. See pwm.txt in this directory for a description of
7 First cell specifies the per-chip index of the PWM to use, the second 7 the cells format. The only third cell flag supported by this binding is
8 cell is the period in nanoseconds and bit 0 in the third cell is used to 8 PWM_POLARITY_INVERTED.
9 encode the polarity of PWM output. Set bit 0 of the third in PWM specifier
10 to 1 for inverse polarity & set to 0 for normal polarity.
11- clocks: phandle to the PWM source clock 9- clocks: phandle to the PWM source clock
12 10
13Example: 11Example:
diff --git a/Documentation/devicetree/bindings/regulator/88pm800.txt b/Documentation/devicetree/bindings/regulator/88pm800.txt
new file mode 100644
index 000000000000..e8a54c2a5821
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/88pm800.txt
@@ -0,0 +1,38 @@
1Marvell 88PM800 regulator
2
3Required properties:
4- compatible: "marvell,88pm800"
5- reg: I2C slave address
6- regulators: A node that houses a sub-node for each regulator within the
7 device. Each sub-node is identified using the node's name (or the deprecated
8 regulator-compatible property if present), with valid values listed below.
9 The content of each sub-node is defined by the standard binding for
10 regulators; see regulator.txt.
11
12The valid names for regulators are:
13
14 buck1, buck2, buck3, buck4, buck5, ldo1, ldo2, ldo3, ldo4, ldo5, ldo6, ldo7,
15 ldo8, ldo9, ldo10, ldo11, ldo12, ldo13, ldo14, ldo15, ldo16, ldo17, ldo18, ldo19
16
17Example:
18
19 pmic: 88pm800@31 {
20 compatible = "marvell,88pm800";
21 reg = <0x31>;
22
23 regulators {
24 buck1 {
25 regulator-min-microvolt = <600000>;
26 regulator-max-microvolt = <3950000>;
27 regulator-boot-on;
28 regulator-always-on;
29 };
30 ldo1 {
31 regulator-min-microvolt = <600000>;
32 regulator-max-microvolt = <15000000>;
33 regulator-boot-on;
34 regulator-always-on;
35 };
36...
37 };
38 };
diff --git a/Documentation/devicetree/bindings/regulator/as3722-regulator.txt b/Documentation/devicetree/bindings/regulator/as3722-regulator.txt
new file mode 100644
index 000000000000..caad0c8a258d
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/as3722-regulator.txt
@@ -0,0 +1,91 @@
1Regulator of AMS AS3722 PMIC.
2Name of the regulator subnode must be "regulators".
3
4Optional properties:
5--------------------
6The input supply of regulators are the optional properties on the
7regulator node. The AS3722 is having 7 DCDC step-down regulators as
8sd[0-6], 10 LDOs as ldo[0-7], ldo[9-11]. The input supply of these
9regulators are provided through following properties:
10vsup-sd2-supply: Input supply for SD2.
11vsup-sd3-supply: Input supply for SD3.
12vsup-sd4-supply: Input supply for SD4.
13vsup-sd5-supply: Input supply for SD5.
14vin-ldo0-supply: Input supply for LDO0.
15vin-ldo1-6-supply: Input supply for LDO1 and LDO6.
16vin-ldo2-5-7-supply: Input supply for LDO2, LDO5 and LDO7.
17vin-ldo3-4-supply: Input supply for LDO3 and LDO4.
18vin-ldo9-10-supply: Input supply for LDO9 and LDO10.
19vin-ldo11-supply: Input supply for LDO11.
20
21Optional nodes:
22--------------
23- regulators : Must contain a sub-node per regulator from the list below.
24 Each sub-node should contain the constraints and initialization
25 information for that regulator. See regulator.txt for a
26 description of standard properties for these sub-nodes.
27 Additional custom properties are listed below.
28 sd[0-6], ldo[0-7], ldo[9-11].
29
30 Optional sub-node properties:
31 ----------------------------
32 ams,ext-control: External control of the rail. The option of
33 this properties will tell which external input is
34 controlling this rail. Valid values are 0, 1, 2 ad 3.
35 0: There is no external control of this rail.
36 1: Rail is controlled by ENABLE1 input pin.
37 2: Rail is controlled by ENABLE2 input pin.
38 3: Rail is controlled by ENABLE3 input pin.
39 ams,enable-tracking: Enable tracking with SD1, only supported
40 by LDO3.
41
42Example:
43-------
44 ams3722: ams3722 {
45 compatible = "ams,as3722";
46 reg = <0x40>;
47 ...
48
49 regulators {
50 vsup-sd2-supply = <...>;
51 ...
52
53 sd0 {
54 regulator-name = "vdd_cpu";
55 regulator-min-microvolt = <700000>;
56 regulator-max-microvolt = <1400000>;
57 regulator-always-on;
58 ams,ext-control = <2>;
59 };
60
61 sd1 {
62 regulator-name = "vdd_core";
63 regulator-min-microvolt = <700000>;
64 regulator-max-microvolt = <1400000>;
65 regulator-always-on;
66 ams,ext-control = <1>;
67 };
68
69 sd2 {
70 regulator-name = "vddio_ddr";
71 regulator-min-microvolt = <1350000>;
72 regulator-max-microvolt = <1350000>;
73 regulator-always-on;
74 };
75
76 sd4 {
77 regulator-name = "avdd-hdmi-pex";
78 regulator-min-microvolt = <1050000>;
79 regulator-max-microvolt = <1050000>;
80 regulator-always-on;
81 };
82
83 sd5 {
84 regulator-name = "vdd-1v8";
85 regulator-min-microvolt = <1800000>;
86 regulator-max-microvolt = <1800000>;
87 regulator-always-on;
88 };
89 ....
90 };
91 };
diff --git a/Documentation/devicetree/bindings/regulator/da9210.txt b/Documentation/devicetree/bindings/regulator/da9210.txt
new file mode 100644
index 000000000000..f120f229d67d
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/da9210.txt
@@ -0,0 +1,21 @@
1* Dialog Semiconductor DA9210 Voltage Regulator
2
3Required properties:
4
5- compatible: must be "diasemi,da9210"
6- reg: the i2c slave address of the regulator. It should be 0x68.
7
8Any standard regulator properties can be used to configure the single da9210
9DCDC.
10
11Example:
12
13 da9210@68 {
14 compatible = "diasemi,da9210";
15 reg = <0x68>;
16
17 regulator-min-microvolt = <900000>;
18 regulator-max-microvolt = <1000000>;
19 regulator-boot-on;
20 regulator-always-on;
21 };
diff --git a/Documentation/devicetree/bindings/regulator/max8660.txt b/Documentation/devicetree/bindings/regulator/max8660.txt
new file mode 100644
index 000000000000..8ba994d8a142
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/max8660.txt
@@ -0,0 +1,47 @@
1Maxim MAX8660 voltage regulator
2
3Required properties:
4- compatible: must be one of "maxim,max8660", "maxim,max8661"
5- reg: I2C slave address, usually 0x34
6- any required generic properties defined in regulator.txt
7
8Example:
9
10 i2c_master {
11 max8660@34 {
12 compatible = "maxim,max8660";
13 reg = <0x34>;
14
15 regulators {
16 regulator@0 {
17 regulator-compatible= "V3(DCDC)";
18 regulator-min-microvolt = <725000>;
19 regulator-max-microvolt = <1800000>;
20 };
21
22 regulator@1 {
23 regulator-compatible= "V4(DCDC)";
24 regulator-min-microvolt = <725000>;
25 regulator-max-microvolt = <1800000>;
26 };
27
28 regulator@2 {
29 regulator-compatible= "V5(LDO)";
30 regulator-min-microvolt = <1700000>;
31 regulator-max-microvolt = <2000000>;
32 };
33
34 regulator@3 {
35 regulator-compatible= "V6(LDO)";
36 regulator-min-microvolt = <1800000>;
37 regulator-max-microvolt = <3300000>;
38 };
39
40 regulator@4 {
41 regulator-compatible= "V7(LDO)";
42 regulator-min-microvolt = <1800000>;
43 regulator-max-microvolt = <3300000>;
44 };
45 };
46 };
47 };
diff --git a/Documentation/devicetree/bindings/regulator/palmas-pmic.txt b/Documentation/devicetree/bindings/regulator/palmas-pmic.txt
index 30b0581bb1ce..42e6b6bc48ff 100644
--- a/Documentation/devicetree/bindings/regulator/palmas-pmic.txt
+++ b/Documentation/devicetree/bindings/regulator/palmas-pmic.txt
@@ -25,17 +25,26 @@ Optional nodes:
25 Additional custom properties are listed below. 25 Additional custom properties are listed below.
26 26
27 For ti,palmas-pmic - smps12, smps123, smps3 depending on OTP, 27 For ti,palmas-pmic - smps12, smps123, smps3 depending on OTP,
28 smps45, smps457, smps7 depending on variant, smps6, smps[8-10], 28 smps45, smps457, smps7 depending on variant, smps6, smps[8-9],
29 ldo[1-9], ldoln, ldousb. 29 smps10_out2, smps10_out1, ldo[1-9], ldoln, ldousb.
30 30
31 Optional sub-node properties: 31 Optional sub-node properties:
32 ti,warm-reset - maintain voltage during warm reset(boolean) 32 ti,warm-reset - maintain voltage during warm reset(boolean)
33 ti,roof-floor - control voltage selection by pin(boolean) 33 ti,roof-floor - This takes as optional argument on platform supporting
34 the rail from desired external control. If there is no argument then
35 it will be assume that it is controlled by NSLEEP pin.
36 The valid value for external pins are:
37 ENABLE1 then 1,
38 ENABLE2 then 2 or
39 NSLEEP then 3.
34 ti,mode-sleep - mode to adopt in pmic sleep 0 - off, 1 - auto, 40 ti,mode-sleep - mode to adopt in pmic sleep 0 - off, 1 - auto,
35 2 - eco, 3 - forced pwm 41 2 - eco, 3 - forced pwm
36 ti,smps-range - OTP has the wrong range set for the hardware so override 42 ti,smps-range - OTP has the wrong range set for the hardware so override
37 0 - low range, 1 - high range. 43 0 - low range, 1 - high range.
38 44
45- ti,system-power-controller: Telling whether or not this pmic is controlling
46 the system power.
47
39Example: 48Example:
40 49
41#include <dt-bindings/interrupt-controller/irq.h> 50#include <dt-bindings/interrupt-controller/irq.h>
@@ -48,6 +57,8 @@ pmic {
48 57
49 ti,ldo6-vibrator; 58 ti,ldo6-vibrator;
50 59
60 ti,system-power-controller;
61
51 regulators { 62 regulators {
52 smps12_reg : smps12 { 63 smps12_reg : smps12 {
53 regulator-name = "smps12"; 64 regulator-name = "smps12";
@@ -56,7 +67,7 @@ pmic {
56 regulator-always-on; 67 regulator-always-on;
57 regulator-boot-on; 68 regulator-boot-on;
58 ti,warm-reset; 69 ti,warm-reset;
59 ti,roof-floor; 70 ti,roof-floor = <1>; /* ENABLE1 control */
60 ti,mode-sleep = <0>; 71 ti,mode-sleep = <0>;
61 ti,smps-range = <1>; 72 ti,smps-range = <1>;
62 }; 73 };
diff --git a/Documentation/devicetree/bindings/regulator/pfuze100.txt b/Documentation/devicetree/bindings/regulator/pfuze100.txt
new file mode 100644
index 000000000000..fc989b2e8057
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/pfuze100.txt
@@ -0,0 +1,115 @@
1PFUZE100 family of regulators
2
3Required properties:
4- compatible: "fsl,pfuze100"
5- reg: I2C slave address
6
7Required child node:
8- regulators: This is the list of child nodes that specify the regulator
9 initialization data for defined regulators. Please refer to below doc
10 Documentation/devicetree/bindings/regulator/regulator.txt.
11
12 The valid names for regulators are:
13 sw1ab,sw1c,sw2,sw3a,sw3b,sw4,swbst,vsnvs,vrefddr,vgen1~vgen6
14
15Each regulator is defined using the standard binding for regulators.
16
17Example:
18
19 pmic: pfuze100@08 {
20 compatible = "fsl,pfuze100";
21 reg = <0x08>;
22
23 regulators {
24 sw1a_reg: sw1ab {
25 regulator-min-microvolt = <300000>;
26 regulator-max-microvolt = <1875000>;
27 regulator-boot-on;
28 regulator-always-on;
29 regulator-ramp-delay = <6250>;
30 };
31
32 sw1c_reg: sw1c {
33 regulator-min-microvolt = <300000>;
34 regulator-max-microvolt = <1875000>;
35 regulator-boot-on;
36 regulator-always-on;
37 };
38
39 sw2_reg: sw2 {
40 regulator-min-microvolt = <800000>;
41 regulator-max-microvolt = <3300000>;
42 regulator-boot-on;
43 regulator-always-on;
44 };
45
46 sw3a_reg: sw3a {
47 regulator-min-microvolt = <400000>;
48 regulator-max-microvolt = <1975000>;
49 regulator-boot-on;
50 regulator-always-on;
51 };
52
53 sw3b_reg: sw3b {
54 regulator-min-microvolt = <400000>;
55 regulator-max-microvolt = <1975000>;
56 regulator-boot-on;
57 regulator-always-on;
58 };
59
60 sw4_reg: sw4 {
61 regulator-min-microvolt = <800000>;
62 regulator-max-microvolt = <3300000>;
63 };
64
65 swbst_reg: swbst {
66 regulator-min-microvolt = <5000000>;
67 regulator-max-microvolt = <5150000>;
68 };
69
70 snvs_reg: vsnvs {
71 regulator-min-microvolt = <1000000>;
72 regulator-max-microvolt = <3000000>;
73 regulator-boot-on;
74 regulator-always-on;
75 };
76
77 vref_reg: vrefddr {
78 regulator-boot-on;
79 regulator-always-on;
80 };
81
82 vgen1_reg: vgen1 {
83 regulator-min-microvolt = <800000>;
84 regulator-max-microvolt = <1550000>;
85 };
86
87 vgen2_reg: vgen2 {
88 regulator-min-microvolt = <800000>;
89 regulator-max-microvolt = <1550000>;
90 };
91
92 vgen3_reg: vgen3 {
93 regulator-min-microvolt = <1800000>;
94 regulator-max-microvolt = <3300000>;
95 };
96
97 vgen4_reg: vgen4 {
98 regulator-min-microvolt = <1800000>;
99 regulator-max-microvolt = <3300000>;
100 regulator-always-on;
101 };
102
103 vgen5_reg: vgen5 {
104 regulator-min-microvolt = <1800000>;
105 regulator-max-microvolt = <3300000>;
106 regulator-always-on;
107 };
108
109 vgen6_reg: vgen6 {
110 regulator-min-microvolt = <1800000>;
111 regulator-max-microvolt = <3300000>;
112 regulator-always-on;
113 };
114 };
115 };
diff --git a/Documentation/devicetree/bindings/regulator/regulator.txt b/Documentation/devicetree/bindings/regulator/regulator.txt
index 48a3b8e5d6bd..e2c7f1e7251a 100644
--- a/Documentation/devicetree/bindings/regulator/regulator.txt
+++ b/Documentation/devicetree/bindings/regulator/regulator.txt
@@ -12,6 +12,13 @@ Optional properties:
12- regulator-allow-bypass: allow the regulator to go into bypass mode 12- regulator-allow-bypass: allow the regulator to go into bypass mode
13- <name>-supply: phandle to the parent supply/regulator node 13- <name>-supply: phandle to the parent supply/regulator node
14- regulator-ramp-delay: ramp delay for regulator(in uV/uS) 14- regulator-ramp-delay: ramp delay for regulator(in uV/uS)
15 For hardwares which support disabling ramp rate, it should be explicitly
16 intialised to zero (regulator-ramp-delay = <0>) for disabling ramp delay.
17- regulator-enable-ramp-delay: The time taken, in microseconds, for the supply
18 rail to reach the target voltage, plus/minus whatever tolerance the board
19 design requires. This property describes the total system ramp time
20 required due to the combination of internal ramping of the regulator itself,
21 and board design issues such as trace capacitance and load on the supply.
15 22
16Deprecated properties: 23Deprecated properties:
17- regulator-compatible: If a regulator chip contains multiple 24- regulator-compatible: If a regulator chip contains multiple
diff --git a/Documentation/devicetree/bindings/rtc/dw-apb.txt b/Documentation/devicetree/bindings/rtc/dw-apb.txt
index eb2327b2bdb3..c703d51abb6c 100644
--- a/Documentation/devicetree/bindings/rtc/dw-apb.txt
+++ b/Documentation/devicetree/bindings/rtc/dw-apb.txt
@@ -1,7 +1,10 @@
1* Designware APB timer 1* Designware APB timer
2 2
3Required properties: 3Required properties:
4- compatible: "snps,dw-apb-timer-sp" or "snps,dw-apb-timer-osc" 4- compatible: One of:
5 "snps,dw-apb-timer"
6 "snps,dw-apb-timer-sp" <DEPRECATED>
7 "snps,dw-apb-timer-osc" <DEPRECATED>
5- reg: physical base address of the controller and length of memory mapped 8- reg: physical base address of the controller and length of memory mapped
6 region. 9 region.
7- interrupts: IRQ line for the timer. 10- interrupts: IRQ line for the timer.
@@ -20,25 +23,10 @@ systems may use one.
20 23
21 24
22Example: 25Example:
23 26 timer@ffe00000 {
24 timer1: timer@ffc09000 { 27 compatible = "snps,dw-apb-timer";
25 compatible = "snps,dw-apb-timer-sp"; 28 interrupts = <0 170 4>;
26 interrupts = <0 168 4>; 29 reg = <0xffe00000 0x1000>;
27 clock-frequency = <200000000>; 30 clocks = <&timer_clk>, <&timer_pclk>;
28 reg = <0xffc09000 0x1000>; 31 clock-names = "timer", "pclk";
29 }; 32 };
30
31 timer2: timer@ffd00000 {
32 compatible = "snps,dw-apb-timer-osc";
33 interrupts = <0 169 4>;
34 clock-frequency = <200000000>;
35 reg = <0xffd00000 0x1000>;
36 };
37
38 timer3: timer@ffe00000 {
39 compatible = "snps,dw-apb-timer-osc";
40 interrupts = <0 170 4>;
41 reg = <0xffe00000 0x1000>;
42 clocks = <&timer_clk>, <&timer_pclk>;
43 clock-names = "timer", "pclk";
44 };
diff --git a/Documentation/devicetree/bindings/rtc/moxa,moxart-rtc.txt b/Documentation/devicetree/bindings/rtc/moxa,moxart-rtc.txt
new file mode 100644
index 000000000000..c9d3ac1477fe
--- /dev/null
+++ b/Documentation/devicetree/bindings/rtc/moxa,moxart-rtc.txt
@@ -0,0 +1,17 @@
1MOXA ART real-time clock
2
3Required properties:
4
5- compatible : Should be "moxa,moxart-rtc"
6- gpio-rtc-sclk : RTC sclk gpio, with zero flags
7- gpio-rtc-data : RTC data gpio, with zero flags
8- gpio-rtc-reset : RTC reset gpio, with zero flags
9
10Example:
11
12 rtc: rtc {
13 compatible = "moxa,moxart-rtc";
14 gpio-rtc-sclk = <&gpio 5 0>;
15 gpio-rtc-data = <&gpio 6 0>;
16 gpio-rtc-reset = <&gpio 7 0>;
17 };
diff --git a/Documentation/devicetree/bindings/rtc/rtc-omap.txt b/Documentation/devicetree/bindings/rtc/rtc-omap.txt
index b47aa415c820..5a0f02d34d95 100644
--- a/Documentation/devicetree/bindings/rtc/rtc-omap.txt
+++ b/Documentation/devicetree/bindings/rtc/rtc-omap.txt
@@ -1,7 +1,11 @@
1TI Real Time Clock 1TI Real Time Clock
2 2
3Required properties: 3Required properties:
4- compatible: "ti,da830-rtc" 4- compatible:
5 - "ti,da830-rtc" - for RTC IP used similar to that on DA8xx SoC family.
6 - "ti,am3352-rtc" - for RTC IP used similar to that on AM335x SoC family.
7 This RTC IP has special WAKE-EN Register to enable
8 Wakeup generation for event Alarm.
5- reg: Address range of rtc register set 9- reg: Address range of rtc register set
6- interrupts: rtc timer, alarm interrupts in order 10- interrupts: rtc timer, alarm interrupts in order
7- interrupt-parent: phandle for the interrupt controller 11- interrupt-parent: phandle for the interrupt controller
diff --git a/Documentation/devicetree/bindings/rtc/rtc-palmas.txt b/Documentation/devicetree/bindings/rtc/rtc-palmas.txt
new file mode 100644
index 000000000000..adbccc0a51e1
--- /dev/null
+++ b/Documentation/devicetree/bindings/rtc/rtc-palmas.txt
@@ -0,0 +1,33 @@
1Palmas RTC controller bindings
2
3Required properties:
4- compatible:
5 - "ti,palmas-rtc" for palma series of the RTC controller
6- interrupt-parent: Parent interrupt device, must be handle of palmas node.
7- interrupts: Interrupt number of RTC submodule on device.
8
9Optional properties:
10
11- ti,backup-battery-chargeable: The Palmas series device like TPS65913 or
12 TPS80036 supports the backup battery for powering the RTC when main
13 battery is removed or in very low power state. The backup battery
14 can be chargeable or non-chargeable. This flag will tells whether
15 battery is chargeable or not. If charging battery then driver can
16 enable the charging.
17- ti,backup-battery-charge-high-current: Enable high current charging in
18 backup battery. Device supports the < 100mA and > 100mA charging.
19 The high current will be > 100mA. Absence of this property will
20 charge battery to lower current i.e. < 100mA.
21
22Example:
23 palmas: tps65913@58 {
24 ...
25 palmas_rtc: rtc {
26 compatible = "ti,palmas-rtc";
27 interrupt-parent = <&palmas>;
28 interrupts = <8 0>;
29 ti,backup-battery-chargeable;
30 ti,backup-battery-charge-high-current;
31 };
32 ...
33 };
diff --git a/Documentation/devicetree/bindings/serial/altera_jtaguart.txt b/Documentation/devicetree/bindings/serial/altera_jtaguart.txt
index c152f65f9a28..55a901051e8f 100644
--- a/Documentation/devicetree/bindings/serial/altera_jtaguart.txt
+++ b/Documentation/devicetree/bindings/serial/altera_jtaguart.txt
@@ -1,4 +1,5 @@
1Altera JTAG UART 1Altera JTAG UART
2 2
3Required properties: 3Required properties:
4- compatible : should be "ALTR,juart-1.0" 4- compatible : should be "ALTR,juart-1.0" <DEPRECATED>
5- compatible : should be "altr,juart-1.0"
diff --git a/Documentation/devicetree/bindings/serial/altera_uart.txt b/Documentation/devicetree/bindings/serial/altera_uart.txt
index 71cae3f70100..81bf7ffb1a81 100644
--- a/Documentation/devicetree/bindings/serial/altera_uart.txt
+++ b/Documentation/devicetree/bindings/serial/altera_uart.txt
@@ -1,7 +1,8 @@
1Altera UART 1Altera UART
2 2
3Required properties: 3Required properties:
4- compatible : should be "ALTR,uart-1.0" 4- compatible : should be "ALTR,uart-1.0" <DEPRECATED>
5- compatible : should be "altr,uart-1.0"
5 6
6Optional properties: 7Optional properties:
7- clock-frequency : frequency of the clock input to the UART 8- clock-frequency : frequency of the clock input to the UART
diff --git a/Documentation/devicetree/bindings/tty/serial/arc-uart.txt b/Documentation/devicetree/bindings/serial/arc-uart.txt
index 5cae2eb686f8..5cae2eb686f8 100644
--- a/Documentation/devicetree/bindings/tty/serial/arc-uart.txt
+++ b/Documentation/devicetree/bindings/serial/arc-uart.txt
diff --git a/Documentation/devicetree/bindings/tty/serial/atmel-usart.txt b/Documentation/devicetree/bindings/serial/atmel-usart.txt
index a49d9a1d4ccf..2191dcb9f1da 100644
--- a/Documentation/devicetree/bindings/tty/serial/atmel-usart.txt
+++ b/Documentation/devicetree/bindings/serial/atmel-usart.txt
@@ -10,13 +10,18 @@ Required properties:
10Optional properties: 10Optional properties:
11- atmel,use-dma-rx: use of PDC or DMA for receiving data 11- atmel,use-dma-rx: use of PDC or DMA for receiving data
12- atmel,use-dma-tx: use of PDC or DMA for transmitting data 12- atmel,use-dma-tx: use of PDC or DMA for transmitting data
13- add dma bindings for dma transfer:
14 - dmas: DMA specifier, consisting of a phandle to DMA controller node,
15 memory peripheral interface and USART DMA channel ID, FIFO configuration.
16 Refer to dma.txt and atmel-dma.txt for details.
17 - dma-names: "rx" for RX channel, "tx" for TX channel.
13 18
14<chip> compatible description: 19<chip> compatible description:
15- at91rm9200: legacy USART support 20- at91rm9200: legacy USART support
16- at91sam9260: generic USART implementation for SAM9 SoCs 21- at91sam9260: generic USART implementation for SAM9 SoCs
17 22
18Example: 23Example:
19 24- use PDC:
20 usart0: serial@fff8c000 { 25 usart0: serial@fff8c000 {
21 compatible = "atmel,at91sam9260-usart"; 26 compatible = "atmel,at91sam9260-usart";
22 reg = <0xfff8c000 0x4000>; 27 reg = <0xfff8c000 0x4000>;
@@ -25,3 +30,14 @@ Example:
25 atmel,use-dma-tx; 30 atmel,use-dma-tx;
26 }; 31 };
27 32
33- use DMA:
34 usart0: serial@f001c000 {
35 compatible = "atmel,at91sam9260-usart";
36 reg = <0xf001c000 0x100>;
37 interrupts = <12 4 5>;
38 atmel,use-dma-rx;
39 atmel,use-dma-tx;
40 dmas = <&dma0 2 0x3>,
41 <&dma0 2 0x204>;
42 dma-names = "tx", "rx";
43 };
diff --git a/Documentation/devicetree/bindings/tty/serial/efm32-uart.txt b/Documentation/devicetree/bindings/serial/efm32-uart.txt
index 8e080b893b49..8e080b893b49 100644
--- a/Documentation/devicetree/bindings/tty/serial/efm32-uart.txt
+++ b/Documentation/devicetree/bindings/serial/efm32-uart.txt
diff --git a/Documentation/devicetree/bindings/serial/fsl-imx-uart.txt b/Documentation/devicetree/bindings/serial/fsl-imx-uart.txt
index c58573b5b1a4..35ae1fb3537f 100644
--- a/Documentation/devicetree/bindings/serial/fsl-imx-uart.txt
+++ b/Documentation/devicetree/bindings/serial/fsl-imx-uart.txt
@@ -1,35 +1,29 @@
1* Freescale i.MX UART controller 1* Freescale i.MX Universal Asynchronous Receiver/Transmitter (UART)
2 2
3Required properties: 3Required properties:
4- compatible : should be "fsl,imx21-uart" 4- compatible : Should be "fsl,<soc>-uart"
5- reg : Address and length of the register set for the device 5- reg : Address and length of the register set for the device
6- interrupts : Should contain UART interrupt number 6- interrupts : Should contain uart interrupt
7 7
8Optional properties: 8Optional properties:
9- fsl,uart-has-rtscts: indicate that RTS/CTS signals are used 9- fsl,uart-has-rtscts : Indicate the uart has rts and cts
10- fsl,irda-mode : Indicate the uart supports irda mode
11- fsl,dte-mode : Indicate the uart works in DTE mode. The uart works
12 is DCE mode by default.
10 13
11Note: Each uart controller should have an alias correctly numbered 14Note: Each uart controller should have an alias correctly numbered
12in "aliases" node. 15in "aliases" node.
13 16
14Example: 17Example:
15 18
16- From imx51.dtsi:
17aliases { 19aliases {
18 serial0 = &uart1; 20 serial0 = &uart1;
19 serial1 = &uart2;
20 serial2 = &uart3;
21}; 21};
22 22
23uart1: serial@73fbc000 { 23uart1: serial@73fbc000 {
24 compatible = "fsl,imx51-uart", "fsl,imx21-uart"; 24 compatible = "fsl,imx51-uart", "fsl,imx21-uart";
25 reg = <0x73fbc000 0x4000>; 25 reg = <0x73fbc000 0x4000>;
26 interrupts = <31>; 26 interrupts = <31>;
27 status = "disabled";
28}
29
30- From imx51-babbage.dts:
31uart1: serial@73fbc000 {
32 fsl,uart-has-rtscts; 27 fsl,uart-has-rtscts;
33 status = "okay"; 28 fsl,dte-mode;
34}; 29};
35
diff --git a/Documentation/devicetree/bindings/tty/serial/fsl-lpuart.txt b/Documentation/devicetree/bindings/serial/fsl-lpuart.txt
index 6fd1dd1638dd..6fd1dd1638dd 100644
--- a/Documentation/devicetree/bindings/tty/serial/fsl-lpuart.txt
+++ b/Documentation/devicetree/bindings/serial/fsl-lpuart.txt
diff --git a/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt b/Documentation/devicetree/bindings/serial/fsl-mxs-auart.txt
index 2c00ec64628e..59a40f18d551 100644
--- a/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt
+++ b/Documentation/devicetree/bindings/serial/fsl-mxs-auart.txt
@@ -10,6 +10,10 @@ Required properties:
10 Refer to dma.txt and fsl-mxs-dma.txt for details. 10 Refer to dma.txt and fsl-mxs-dma.txt for details.
11- dma-names: "rx" for RX channel, "tx" for TX channel. 11- dma-names: "rx" for RX channel, "tx" for TX channel.
12 12
13Optional properties:
14- fsl,uart-has-rtscts : Indicate the UART has RTS and CTS lines,
15 it also means you enable the DMA support for this UART.
16
13Example: 17Example:
14auart0: serial@8006a000 { 18auart0: serial@8006a000 {
15 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 19 compatible = "fsl,imx28-auart", "fsl,imx23-auart";
diff --git a/Documentation/devicetree/bindings/serial/mrvl,pxa-ssp.txt b/Documentation/devicetree/bindings/serial/mrvl,pxa-ssp.txt
new file mode 100644
index 000000000000..669b8140dd79
--- /dev/null
+++ b/Documentation/devicetree/bindings/serial/mrvl,pxa-ssp.txt
@@ -0,0 +1,65 @@
1Device tree bindings for Marvell PXA SSP ports
2
3Required properties:
4
5 - compatible: Must be one of
6 mrvl,pxa25x-ssp
7 mvrl,pxa25x-nssp
8 mrvl,pxa27x-ssp
9 mrvl,pxa3xx-ssp
10 mvrl,pxa168-ssp
11 mrvl,pxa910-ssp
12 mrvl,ce4100-ssp
13 mrvl,lpss-ssp
14
15 - reg: The memory base
16 - dmas: Two dma phandles, one for rx, one for tx
17 - dma-names: Must be "rx", "tx"
18
19
20Example for PXA3xx:
21
22 ssp0: ssp@41000000 {
23 compatible = "mrvl,pxa3xx-ssp";
24 reg = <0x41000000 0x40>;
25 ssp-id = <1>;
26 interrupts = <24>;
27 clock-names = "pxa27x-ssp.0";
28 dmas = <&dma 13
29 &dma 14>;
30 dma-names = "rx", "tx";
31 };
32
33 ssp1: ssp@41700000 {
34 compatible = "mrvl,pxa3xx-ssp";
35 reg = <0x41700000 0x40>;
36 ssp-id = <2>;
37 interrupts = <16>;
38 clock-names = "pxa27x-ssp.1";
39 dmas = <&dma 15
40 &dma 16>;
41 dma-names = "rx", "tx";
42 };
43
44 ssp2: ssp@41900000 {
45 compatibl3 = "mrvl,pxa3xx-ssp";
46 reg = <0x41900000 0x40>;
47 ssp-id = <3>;
48 interrupts = <0>;
49 clock-names = "pxa27x-ssp.2";
50 dmas = <&dma 66
51 &dma 67>;
52 dma-names = "rx", "tx";
53 };
54
55 ssp3: ssp@41a00000 {
56 compatible = "mrvl,pxa3xx-ssp";
57 reg = <0x41a00000 0x40>;
58 ssp-id = <4>;
59 interrupts = <13>;
60 clock-names = "pxa27x-ssp.3";
61 dmas = <&dma 2
62 &dma 3>;
63 dma-names = "rx", "tx";
64 };
65
diff --git a/Documentation/devicetree/bindings/tty/serial/nxp-lpc32xx-hsuart.txt b/Documentation/devicetree/bindings/serial/nxp-lpc32xx-hsuart.txt
index 0d439dfc1aa5..0d439dfc1aa5 100644
--- a/Documentation/devicetree/bindings/tty/serial/nxp-lpc32xx-hsuart.txt
+++ b/Documentation/devicetree/bindings/serial/nxp-lpc32xx-hsuart.txt
diff --git a/Documentation/devicetree/bindings/tty/serial/of-serial.txt b/Documentation/devicetree/bindings/serial/of-serial.txt
index 1928a3e83cd0..1928a3e83cd0 100644
--- a/Documentation/devicetree/bindings/tty/serial/of-serial.txt
+++ b/Documentation/devicetree/bindings/serial/of-serial.txt
diff --git a/Documentation/devicetree/bindings/serial/qca,ar9330-uart.txt b/Documentation/devicetree/bindings/serial/qca,ar9330-uart.txt
new file mode 100644
index 000000000000..c5e032c85bf9
--- /dev/null
+++ b/Documentation/devicetree/bindings/serial/qca,ar9330-uart.txt
@@ -0,0 +1,34 @@
1* Qualcomm Atheros AR9330 High-Speed UART
2
3Required properties:
4
5- compatible: Must be "qca,ar9330-uart"
6
7- reg: Specifies the physical base address of the controller and
8 the length of the memory mapped region.
9
10- interrupt-parent: The phandle for the interrupt controller that
11 services interrupts for this device.
12
13- interrupts: Specifies the interrupt source of the parent interrupt
14 controller. The format of the interrupt specifier depends on the
15 parent interrupt controller.
16
17Additional requirements:
18
19 Each UART port must have an alias correctly numbered in "aliases"
20 node.
21
22Example:
23
24 aliases {
25 serial0 = &uart0;
26 };
27
28 uart0: uart@18020000 {
29 compatible = "qca,ar9330-uart";
30 reg = <0x18020000 0x14>;
31
32 interrupt-parent = <&intc>;
33 interrupts = <3>;
34 };
diff --git a/Documentation/devicetree/bindings/serial/qcom,msm-uart.txt b/Documentation/devicetree/bindings/serial/qcom,msm-uart.txt
new file mode 100644
index 000000000000..ce8c90161959
--- /dev/null
+++ b/Documentation/devicetree/bindings/serial/qcom,msm-uart.txt
@@ -0,0 +1,25 @@
1* MSM Serial UART
2
3The MSM serial UART hardware is designed for low-speed use cases where a
4dma-engine isn't needed. From a software perspective it's mostly compatible
5with the MSM serial UARTDM except that it only supports reading and writing one
6character at a time.
7
8Required properties:
9- compatible: Should contain "qcom,msm-uart"
10- reg: Should contain UART register location and length.
11- interrupts: Should contain UART interrupt.
12- clocks: Should contain the core clock.
13- clock-names: Should be "core".
14
15Example:
16
17A uart device at 0xa9c00000 with interrupt 11.
18
19serial@a9c00000 {
20 compatible = "qcom,msm-uart";
21 reg = <0xa9c00000 0x1000>;
22 interrupts = <11>;
23 clocks = <&uart_cxc>;
24 clock-names = "core";
25};
diff --git a/Documentation/devicetree/bindings/serial/qcom,msm-uartdm.txt b/Documentation/devicetree/bindings/serial/qcom,msm-uartdm.txt
new file mode 100644
index 000000000000..ffa5b784c66e
--- /dev/null
+++ b/Documentation/devicetree/bindings/serial/qcom,msm-uartdm.txt
@@ -0,0 +1,53 @@
1* MSM Serial UARTDM
2
3The MSM serial UARTDM hardware is designed for high-speed use cases where the
4transmit and/or receive channels can be offloaded to a dma-engine. From a
5software perspective it's mostly compatible with the MSM serial UART except
6that it supports reading and writing multiple characters at a time.
7
8Required properties:
9- compatible: Should contain at least "qcom,msm-uartdm".
10 A more specific property should be specified as follows depending
11 on the version:
12 "qcom,msm-uartdm-v1.1"
13 "qcom,msm-uartdm-v1.2"
14 "qcom,msm-uartdm-v1.3"
15 "qcom,msm-uartdm-v1.4"
16- reg: Should contain UART register locations and lengths. The first
17 register shall specify the main control registers. An optional second
18 register location shall specify the GSBI control region.
19 "qcom,msm-uartdm-v1.3" is the only compatible value that might
20 need the GSBI control region.
21- interrupts: Should contain UART interrupt.
22- clocks: Should contain the core clock and the AHB clock.
23- clock-names: Should be "core" for the core clock and "iface" for the
24 AHB clock.
25
26Optional properties:
27- dmas: Should contain dma specifiers for transmit and receive channels
28- dma-names: Should contain "tx" for transmit and "rx" for receive channels
29
30Examples:
31
32A uartdm v1.4 device with dma capabilities.
33
34serial@f991e000 {
35 compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
36 reg = <0xf991e000 0x1000>;
37 interrupts = <0 108 0x0>;
38 clocks = <&blsp1_uart2_apps_cxc>, <&blsp1_ahb_cxc>;
39 clock-names = "core", "iface";
40 dmas = <&dma0 0>, <&dma0 1>;
41 dma-names = "tx", "rx";
42};
43
44A uartdm v1.3 device without dma capabilities and part of a GSBI complex.
45
46serial@19c40000 {
47 compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
48 reg = <0x19c40000 0x1000>,
49 <0x19c00000 0x1000>;
50 interrupts = <0 195 0x0>;
51 clocks = <&gsbi5_uart_cxc>, <&gsbi5_ahb_cxc>;
52 clock-names = "core", "iface";
53};
diff --git a/Documentation/devicetree/bindings/serial/rs485.txt b/Documentation/devicetree/bindings/serial/rs485.txt
index 1e753c69fc83..32b1fa1f2a5b 100644
--- a/Documentation/devicetree/bindings/serial/rs485.txt
+++ b/Documentation/devicetree/bindings/serial/rs485.txt
@@ -7,7 +7,7 @@ UART node.
7 7
8Required properties: 8Required properties:
9- rs485-rts-delay: prop-encoded-array <a b> where: 9- rs485-rts-delay: prop-encoded-array <a b> where:
10 * a is the delay beteween rts signal and beginning of data sent in milliseconds. 10 * a is the delay between rts signal and beginning of data sent in milliseconds.
11 it corresponds to the delay before sending data. 11 it corresponds to the delay before sending data.
12 * b is the delay between end of data sent and rts signal in milliseconds 12 * b is the delay between end of data sent and rts signal in milliseconds
13 it corresponds to the delay after sending data and actual release of the line. 13 it corresponds to the delay after sending data and actual release of the line.
diff --git a/Documentation/devicetree/bindings/serial/sirf-uart.txt b/Documentation/devicetree/bindings/serial/sirf-uart.txt
new file mode 100644
index 000000000000..a2dfc6522a91
--- /dev/null
+++ b/Documentation/devicetree/bindings/serial/sirf-uart.txt
@@ -0,0 +1,33 @@
1* CSR SiRFprimaII/atlasVI Universal Synchronous Asynchronous Receiver/Transmitter *
2
3Required properties:
4- compatible : Should be "sirf,prima2-uart" or "sirf, prima2-usp-uart"
5- reg : Offset and length of the register set for the device
6- interrupts : Should contain uart interrupt
7- fifosize : Should define hardware rx/tx fifo size
8- clocks : Should contain uart clock number
9
10Optional properties:
11- sirf,uart-has-rtscts: we have hardware flow controller pins in hardware
12- rts-gpios: RTS pin for USP-based UART if sirf,uart-has-rtscts is true
13- cts-gpios: CTS pin for USP-based UART if sirf,uart-has-rtscts is true
14
15Example:
16
17uart0: uart@b0050000 {
18 cell-index = <0>;
19 compatible = "sirf,prima2-uart";
20 reg = <0xb0050000 0x1000>;
21 interrupts = <17>;
22 fifosize = <128>;
23 clocks = <&clks 13>;
24};
25
26On the board-specific dts, we can put rts-gpios and cts-gpios like
27
28usp@b0090000 {
29 compatible = "sirf,prima2-usp-uart";
30 sirf,uart-has-rtscts;
31 rts-gpios = <&gpio 15 0>;
32 cts-gpios = <&gpio 46 0>;
33};
diff --git a/Documentation/devicetree/bindings/tty/serial/snps-dw-apb-uart.txt b/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.txt
index f13f1c5be91c..f13f1c5be91c 100644
--- a/Documentation/devicetree/bindings/tty/serial/snps-dw-apb-uart.txt
+++ b/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.txt
diff --git a/Documentation/devicetree/bindings/serial/st-asc.txt b/Documentation/devicetree/bindings/serial/st-asc.txt
new file mode 100644
index 000000000000..75d877f5968f
--- /dev/null
+++ b/Documentation/devicetree/bindings/serial/st-asc.txt
@@ -0,0 +1,18 @@
1*st-asc(Serial Port)
2
3Required properties:
4- compatible : Should be "st,asc".
5- reg, reg-names, interrupts, interrupt-names : Standard way to define device
6 resources with names. look in
7 Documentation/devicetree/bindings/resource-names.txt
8
9Optional properties:
10- st,hw-flow-ctrl bool flag to enable hardware flow control.
11- st,force-m1 bool flat to force asc to be in Mode-1 recommeded
12 for high bit rates (above 19.2K)
13Example:
14serial@fe440000{
15 compatible = "st,asc";
16 reg = <0xfe440000 0x2c>;
17 interrupts = <0 209 0>;
18};
diff --git a/Documentation/devicetree/bindings/tty/serial/via,vt8500-uart.txt b/Documentation/devicetree/bindings/serial/via,vt8500-uart.txt
index 5feef1ef167d..5feef1ef167d 100644
--- a/Documentation/devicetree/bindings/tty/serial/via,vt8500-uart.txt
+++ b/Documentation/devicetree/bindings/serial/via,vt8500-uart.txt
diff --git a/Documentation/devicetree/bindings/serio/altera_ps2.txt b/Documentation/devicetree/bindings/serio/altera_ps2.txt
index 4d9eecc2ef7d..520199e2e347 100644
--- a/Documentation/devicetree/bindings/serio/altera_ps2.txt
+++ b/Documentation/devicetree/bindings/serio/altera_ps2.txt
@@ -1,4 +1,5 @@
1Altera UP PS/2 controller 1Altera UP PS/2 controller
2 2
3Required properties: 3Required properties:
4- compatible : should be "ALTR,ps2-1.0". 4- compatible : should be "ALTR,ps2-1.0". <DEPRECATED>
5- compatible : should be "altr,ps2-1.0".
diff --git a/Documentation/devicetree/bindings/sound/ak4554.c b/Documentation/devicetree/bindings/sound/ak4554.c
new file mode 100644
index 000000000000..934fa02754b3
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/ak4554.c
@@ -0,0 +1,11 @@
1AK4554 ADC/DAC
2
3Required properties:
4
5 - compatible : "asahi-kasei,ak4554"
6
7Example:
8
9ak4554-adc-dac {
10 compatible = "asahi-kasei,ak4554";
11};
diff --git a/Documentation/devicetree/bindings/sound/alc5632.txt b/Documentation/devicetree/bindings/sound/alc5632.txt
index 8608f747dcfe..ffd886d110bd 100644
--- a/Documentation/devicetree/bindings/sound/alc5632.txt
+++ b/Documentation/devicetree/bindings/sound/alc5632.txt
@@ -13,6 +13,25 @@ Required properties:
13 - #gpio-cells : Should be two. The first cell is the pin number and the 13 - #gpio-cells : Should be two. The first cell is the pin number and the
14 second cell is used to specify optional parameters (currently unused). 14 second cell is used to specify optional parameters (currently unused).
15 15
16Pins on the device (for linking into audio routes):
17
18 * SPK_OUTP
19 * SPK_OUTN
20 * HP_OUT_L
21 * HP_OUT_R
22 * AUX_OUT_P
23 * AUX_OUT_N
24 * LINE_IN_L
25 * LINE_IN_R
26 * PHONE_P
27 * PHONE_N
28 * MIC1_P
29 * MIC1_N
30 * MIC2_P
31 * MIC2_N
32 * MICBIAS1
33 * DMICDAT
34
16Example: 35Example:
17 36
18alc5632: alc5632@1e { 37alc5632: alc5632@1e {
diff --git a/Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt b/Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt
new file mode 100644
index 000000000000..0720857089a7
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt
@@ -0,0 +1,35 @@
1* Atmel at91sam9x5ek wm8731 audio complex
2
3Required properties:
4 - compatible: "atmel,sam9x5-wm8731-audio"
5 - atmel,model: The user-visible name of this sound complex.
6 - atmel,ssc-controller: The phandle of the SSC controller
7 - atmel,audio-codec: The phandle of the WM8731 audio codec
8 - atmel,audio-routing: A list of the connections between audio components.
9 Each entry is a pair of strings, the first being the connection's sink,
10 the second being the connection's source.
11
12Available audio endpoints for the audio-routing table:
13
14Board connectors:
15 * Headphone Jack
16 * Line In Jack
17
18wm8731 pins:
19cf Documentation/devicetree/bindings/sound/wm8731.txt
20
21Example:
22sound {
23 compatible = "atmel,sam9x5-wm8731-audio";
24
25 atmel,model = "wm8731 @ AT91SAM9X5EK";
26
27 atmel,audio-routing =
28 "Headphone Jack", "RHPOUT",
29 "Headphone Jack", "LHPOUT",
30 "LLINEIN", "Line In Jack",
31 "RLINEIN", "Line In Jack";
32
33 atmel,ssc-controller = <&ssc0>;
34 atmel,audio-codec = <&wm8731>;
35};
diff --git a/Documentation/devicetree/bindings/sound/atmel-wm8904.txt b/Documentation/devicetree/bindings/sound/atmel-wm8904.txt
new file mode 100644
index 000000000000..8bbe50c884b6
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/atmel-wm8904.txt
@@ -0,0 +1,55 @@
1Atmel ASoC driver with wm8904 audio codec complex
2
3Required properties:
4 - compatible: "atmel,asoc-wm8904"
5 - atmel,model: The user-visible name of this sound complex.
6 - atmel,audio-routing: A list of the connections between audio components.
7 Each entry is a pair of strings, the first being the connection's sink,
8 the second being the connection's source. Valid names for sources and
9 sinks are the WM8904's pins, and the jacks on the board:
10
11 WM8904 pins:
12
13 * IN1L
14 * IN1R
15 * IN2L
16 * IN2R
17 * IN3L
18 * IN3R
19 * HPOUTL
20 * HPOUTR
21 * LINEOUTL
22 * LINEOUTR
23 * MICBIAS
24
25 Board connectors:
26
27 * Headphone Jack
28 * Line In Jack
29 * Mic
30
31 - atmel,ssc-controller: The phandle of the SSC controller
32 - atmel,audio-codec: The phandle of the WM8904 audio codec
33
34Optional properties:
35 - pinctrl-names, pinctrl-0: Please refer to pinctrl-bindings.txt
36
37Example:
38sound {
39 compatible = "atmel,asoc-wm8904";
40 pinctrl-names = "default";
41 pinctrl-0 = <&pinctrl_pck0_as_mck>;
42
43 atmel,model = "wm8904 @ AT91SAM9N12EK";
44
45 atmel,audio-routing =
46 "Headphone Jack", "HPOUTL",
47 "Headphone Jack", "HPOUTR",
48 "IN2L", "Line In Jack",
49 "IN2R", "Line In Jack",
50 "Mic", "MICBIAS",
51 "IN1L", "Mic";
52
53 atmel,ssc-controller = <&ssc0>;
54 atmel,audio-codec = <&wm8904>;
55};
diff --git a/Documentation/devicetree/bindings/sound/cs42l73.txt b/Documentation/devicetree/bindings/sound/cs42l73.txt
new file mode 100644
index 000000000000..80ae910dbf6c
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/cs42l73.txt
@@ -0,0 +1,22 @@
1CS42L73 audio CODEC
2
3Required properties:
4
5 - compatible : "cirrus,cs42l73"
6
7 - reg : the I2C address of the device for I2C
8
9Optional properties:
10
11 - reset_gpio : a GPIO spec for the reset pin.
12 - chgfreq : Charge Pump Frequency values 0x00-0x0F
13
14
15Example:
16
17codec: cs42l73@4a {
18 compatible = "cirrus,cs42l73";
19 reg = <0x4a>;
20 reset_gpio = <&gpio 10 0>;
21 chgfreq = <0x05>;
22}; \ No newline at end of file
diff --git a/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt b/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt
new file mode 100644
index 000000000000..865178d5cdf3
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt
@@ -0,0 +1,42 @@
1* Texas Instruments SoC audio setups with TLV320AIC3X Codec
2
3Required properties:
4- compatible : "ti,da830-evm-audio" : forDM365/DA8xx/OMAPL1x/AM33xx
5- ti,model : The user-visible name of this sound complex.
6- ti,audio-codec : The phandle of the TLV320AIC3x audio codec
7- ti,mcasp-controller : The phandle of the McASP controller
8- ti,codec-clock-rate : The Codec Clock rate (in Hz) applied to the Codec
9- ti,audio-routing : A list of the connections between audio components.
10 Each entry is a pair of strings, the first being the connection's sink,
11 the second being the connection's source. Valid names for sources and
12 sinks are the codec's pins, and the jacks on the board:
13
14 Board connectors:
15
16 * Headphone Jack
17 * Line Out
18 * Mic Jack
19 * Line In
20
21
22Example:
23
24sound {
25 compatible = "ti,da830-evm-audio";
26 ti,model = "DA830 EVM";
27 ti,audio-codec = <&tlv320aic3x>;
28 ti,mcasp-controller = <&mcasp1>;
29 ti,codec-clock-rate = <12000000>;
30 ti,audio-routing =
31 "Headphone Jack", "HPLOUT",
32 "Headphone Jack", "HPROUT",
33 "Line Out", "LLOUT",
34 "Line Out", "RLOUT",
35 "MIC3L", "Mic Bias 2V",
36 "MIC3R", "Mic Bias 2V",
37 "Mic Bias 2V", "Mic Jack",
38 "LINE1L", "Line In",
39 "LINE2L", "Line In",
40 "LINE1R", "Line In",
41 "LINE2R", "Line In";
42};
diff --git a/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt
index 374e145c2ef1..ed785b3f67be 100644
--- a/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt
+++ b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt
@@ -4,17 +4,25 @@ Required properties:
4- compatible : 4- compatible :
5 "ti,dm646x-mcasp-audio" : for DM646x platforms 5 "ti,dm646x-mcasp-audio" : for DM646x platforms
6 "ti,da830-mcasp-audio" : for both DA830 & DA850 platforms 6 "ti,da830-mcasp-audio" : for both DA830 & DA850 platforms
7 "ti,omap2-mcasp-audio" : for OMAP2 platforms (TI81xx, AM33xx) 7 "ti,am33xx-mcasp-audio" : for AM33xx platforms (AM33xx, TI81xx)
8
9- reg : Should contain McASP registers offset and length
10- interrupts : Interrupt number for McASP
11- op-mode : I2S/DIT ops mode.
12- tdm-slots : Slots for TDM operation.
13- num-serializer : Serializers used by McASP.
14- serial-dir : A list of serializer pin mode. The list number should be equal
15 to "num-serializer" parameter. Each entry is a number indication
16 serializer pin direction. (0 - INACTIVE, 1 - TX, 2 - RX)
17 8
9- reg : Should contain reg specifiers for the entries in the reg-names property.
10- reg-names : Should contain:
11 * "mpu" for the main registers (required). For compatibility with
12 existing software, it is recommended this is the first entry.
13 * "dat" for separate data port register access (optional).
14- op-mode : I2S/DIT ops mode. 0 for I2S mode. 1 for DIT mode used for S/PDIF,
15 IEC60958-1, and AES-3 formats.
16- tdm-slots : Slots for TDM operation. Indicates number of channels transmitted
17 or received over one serializer.
18- serial-dir : A list of serializer configuration. Each entry is a number
19 indication for serializer pin direction.
20 (0 - INACTIVE, 1 - TX, 2 - RX)
21- dmas: two element list of DMA controller phandles and DMA request line
22 ordered pairs.
23- dma-names: identifier string for each DMA request line in the dmas property.
24 These strings correspond 1:1 with the ordered pairs in dmas. The dma
25 identifiers must be "rx" and "tx".
18 26
19Optional properties: 27Optional properties:
20 28
@@ -23,18 +31,23 @@ Optional properties:
23- rx-num-evt : FIFO levels. 31- rx-num-evt : FIFO levels.
24- sram-size-playback : size of sram to be allocated during playback 32- sram-size-playback : size of sram to be allocated during playback
25- sram-size-capture : size of sram to be allocated during capture 33- sram-size-capture : size of sram to be allocated during capture
34- interrupts : Interrupt numbers for McASP, currently not used by the driver
35- interrupt-names : Known interrupt names are "tx" and "rx"
36- pinctrl-0: Should specify pin control group used for this controller.
37- pinctrl-names: Should contain only one value - "default", for more details
38 please refer to pinctrl-bindings.txt
39
26 40
27Example: 41Example:
28 42
29mcasp0: mcasp0@1d00000 { 43mcasp0: mcasp0@1d00000 {
30 compatible = "ti,da830-mcasp-audio"; 44 compatible = "ti,da830-mcasp-audio";
31 #address-cells = <1>;
32 #size-cells = <0>;
33 reg = <0x100000 0x3000>; 45 reg = <0x100000 0x3000>;
34 interrupts = <82 83>; 46 reg-names "mpu";
47 interrupts = <82>, <83>;
48 interrupts-names = "tx", "rx";
35 op-mode = <0>; /* MCASP_IIS_MODE */ 49 op-mode = <0>; /* MCASP_IIS_MODE */
36 tdm-slots = <2>; 50 tdm-slots = <2>;
37 num-serializer = <16>;
38 serial-dir = < 51 serial-dir = <
39 0 0 0 0 /* 0: INACTIVE, 1: TX, 2: RX */ 52 0 0 0 0 /* 0: INACTIVE, 1: TX, 2: RX */
40 0 0 0 0 53 0 0 0 0
diff --git a/Documentation/devicetree/bindings/sound/fsl,spdif.txt b/Documentation/devicetree/bindings/sound/fsl,spdif.txt
new file mode 100644
index 000000000000..f2ae335670f5
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/fsl,spdif.txt
@@ -0,0 +1,54 @@
1Freescale Sony/Philips Digital Interface Format (S/PDIF) Controller
2
3The Freescale S/PDIF audio block is a stereo transceiver that allows the
4processor to receive and transmit digital audio via an coaxial cable or
5a fibre cable.
6
7Required properties:
8
9 - compatible : Compatible list, must contain "fsl,imx35-spdif".
10
11 - reg : Offset and length of the register set for the device.
12
13 - interrupts : Contains the spdif interrupt.
14
15 - dmas : Generic dma devicetree binding as described in
16 Documentation/devicetree/bindings/dma/dma.txt.
17
18 - dma-names : Two dmas have to be defined, "tx" and "rx".
19
20 - clocks : Contains an entry for each entry in clock-names.
21
22 - clock-names : Includes the following entries:
23 "core" The core clock of spdif controller
24 "rxtx<0-7>" Clock source list for tx and rx clock.
25 This clock list should be identical to
26 the source list connecting to the spdif
27 clock mux in "SPDIF Transceiver Clock
28 Diagram" of SoC reference manual. It
29 can also be referred to TxClk_Source
30 bit of register SPDIF_STC.
31
32Example:
33
34spdif: spdif@02004000 {
35 compatible = "fsl,imx35-spdif";
36 reg = <0x02004000 0x4000>;
37 interrupts = <0 52 0x04>;
38 dmas = <&sdma 14 18 0>,
39 <&sdma 15 18 0>;
40 dma-names = "rx", "tx";
41
42 clocks = <&clks 197>, <&clks 3>,
43 <&clks 197>, <&clks 107>,
44 <&clks 0>, <&clks 118>,
45 <&clks 62>, <&clks 139>,
46 <&clks 0>;
47 clock-names = "core", "rxtx0",
48 "rxtx1", "rxtx2",
49 "rxtx3", "rxtx4",
50 "rxtx5", "rxtx6",
51 "rxtx7";
52
53 status = "okay";
54};
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/ssi.txt b/Documentation/devicetree/bindings/sound/fsl,ssi.txt
index 5ff76c9c57d2..4303b6ab6208 100644
--- a/Documentation/devicetree/bindings/powerpc/fsl/ssi.txt
+++ b/Documentation/devicetree/bindings/sound/fsl,ssi.txt
@@ -43,10 +43,22 @@ Required properties:
43 together. This would still allow different sample sizes, 43 together. This would still allow different sample sizes,
44 but not different sample rates. 44 but not different sample rates.
45 45
46Required are also ac97 link bindings if ac97 is used. See
47Documentation/devicetree/bindings/sound/soc-ac97link.txt for the necessary
48bindings.
49
46Optional properties: 50Optional properties:
47- codec-handle: Phandle to a 'codec' node that defines an audio 51- codec-handle: Phandle to a 'codec' node that defines an audio
48 codec connected to this SSI. This node is typically 52 codec connected to this SSI. This node is typically
49 a child of an I2C or other control node. 53 a child of an I2C or other control node.
54- fsl,fiq-stream-filter: Bool property. Disabled DMA and use FIQ instead to
55 filter the codec stream. This is necessary for some boards
56 where an incompatible codec is connected to this SSI, e.g.
57 on pca100 and pcm043.
58- dmas: Generic dma devicetree binding as described in
59 Documentation/devicetree/bindings/dma/dma.txt.
60- dma-names: Two dmas have to be defined, "tx" and "rx", if fsl,imx-fiq
61 is not defined.
50 62
51Child 'codec' node required properties: 63Child 'codec' node required properties:
52- compatible: Compatible list, contains the name of the codec 64- compatible: Compatible list, contains the name of the codec
diff --git a/Documentation/devicetree/bindings/sound/imx-audio-spdif.txt b/Documentation/devicetree/bindings/sound/imx-audio-spdif.txt
new file mode 100644
index 000000000000..7d13479f9c3c
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/imx-audio-spdif.txt
@@ -0,0 +1,34 @@
1Freescale i.MX audio complex with S/PDIF transceiver
2
3Required properties:
4
5 - compatible : "fsl,imx-audio-spdif"
6
7 - model : The user-visible name of this sound complex
8
9 - spdif-controller : The phandle of the i.MX S/PDIF controller
10
11
12Optional properties:
13
14 - spdif-out : This is a boolean property. If present, the transmitting
15 function of S/PDIF will be enabled, indicating there's a physical
16 S/PDIF out connector/jack on the board or it's connecting to some
17 other IP block, such as an HDMI encoder/display-controller.
18
19 - spdif-in : This is a boolean property. If present, the receiving
20 function of S/PDIF will be enabled, indicating there's a physical
21 S/PDIF in connector/jack on the board.
22
23* Note: At least one of these two properties should be set in the DT binding.
24
25
26Example:
27
28sound-spdif {
29 compatible = "fsl,imx-audio-spdif";
30 model = "imx-spdif";
31 spdif-controller = <&spdif>;
32 spdif-out;
33 spdif-in;
34};
diff --git a/Documentation/devicetree/bindings/sound/imx-audmux.txt b/Documentation/devicetree/bindings/sound/imx-audmux.txt
index 215aa9817213..f88a00e54c63 100644
--- a/Documentation/devicetree/bindings/sound/imx-audmux.txt
+++ b/Documentation/devicetree/bindings/sound/imx-audmux.txt
@@ -5,6 +5,15 @@ Required properties:
5 or "fsl,imx31-audmux" for the version firstly used on i.MX31. 5 or "fsl,imx31-audmux" for the version firstly used on i.MX31.
6- reg : Should contain AUDMUX registers location and length 6- reg : Should contain AUDMUX registers location and length
7 7
8An initial configuration can be setup using child nodes.
9
10Required properties of optional child nodes:
11- fsl,audmux-port : Integer of the audmux port that is configured by this
12 child node.
13- fsl,port-config : List of configuration options for the specific port. For
14 imx31-audmux and above, it is a list of tuples <ptcr pdcr>. For
15 imx21-audmux it is a list of pcr values.
16
8Example: 17Example:
9 18
10audmux@021d8000 { 19audmux@021d8000 {
diff --git a/Documentation/devicetree/bindings/sound/mrvl,pxa-ssp.txt b/Documentation/devicetree/bindings/sound/mrvl,pxa-ssp.txt
new file mode 100644
index 000000000000..74c9ba6c2823
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/mrvl,pxa-ssp.txt
@@ -0,0 +1,28 @@
1Marvell PXA SSP CPU DAI bindings
2
3Required properties:
4
5 compatible Must be "mrvl,pxa-ssp-dai"
6 port A phandle reference to a PXA ssp upstream device
7
8Example:
9
10 /* upstream device */
11
12 ssp0: ssp@41000000 {
13 compatible = "mrvl,pxa3xx-ssp";
14 reg = <0x41000000 0x40>;
15 interrupts = <24>;
16 clock-names = "pxa27x-ssp.0";
17 dmas = <&dma 13
18 &dma 14>;
19 dma-names = "rx", "tx";
20 };
21
22 /* DAI as user */
23
24 ssp_dai0: ssp_dai@0 {
25 compatible = "mrvl,pxa-ssp-dai";
26 port = <&ssp0>;
27 };
28
diff --git a/Documentation/devicetree/bindings/sound/mrvl,pxa2xx-pcm.txt b/Documentation/devicetree/bindings/sound/mrvl,pxa2xx-pcm.txt
new file mode 100644
index 000000000000..551fbb8348c2
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/mrvl,pxa2xx-pcm.txt
@@ -0,0 +1,15 @@
1DT bindings for ARM PXA2xx PCM platform driver
2
3This is just a dummy driver that registers the PXA ASoC platform driver.
4It does not have any resources assigned.
5
6Required properties:
7
8 - compatible 'mrvl,pxa-pcm-audio'
9
10Example:
11
12 pxa_pcm_audio: snd_soc_pxa_audio {
13 compatible = "mrvl,pxa-pcm-audio";
14 };
15
diff --git a/Documentation/devicetree/bindings/sound/mvebu-audio.txt b/Documentation/devicetree/bindings/sound/mvebu-audio.txt
new file mode 100644
index 000000000000..f0062c5871b4
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/mvebu-audio.txt
@@ -0,0 +1,33 @@
1* mvebu (Kirkwood, Dove, Armada 370) audio controller
2
3Required properties:
4
5- compatible:
6 "marvell,kirkwood-audio" for Kirkwood platforms
7 "marvell,dove-audio" for Dove platforms
8
9- reg: physical base address of the controller and length of memory mapped
10 region.
11
12- interrupts:
13 with "marvell,kirkwood-audio", the audio interrupt
14 with "marvell,dove-audio", a list of two interrupts, the first for
15 the data flow, and the second for errors.
16
17- clocks: one or two phandles.
18 The first one is mandatory and defines the internal clock.
19 The second one is optional and defines an external clock.
20
21- clock-names: names associated to the clocks:
22 "internal" for the internal clock
23 "extclk" for the external clock
24
25Example:
26
27i2s1: audio-controller@b4000 {
28 compatible = "marvell,dove-audio";
29 reg = <0xb4000 0x2210>;
30 interrupts = <21>, <22>;
31 clocks = <&gate_clk 13>;
32 clock-names = "internal";
33};
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt
index 05ffecb57103..8b8903ef0800 100644
--- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt
@@ -11,28 +11,8 @@ Required properties:
11- nvidia,audio-routing : A list of the connections between audio components. 11- nvidia,audio-routing : A list of the connections between audio components.
12 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,
13 the second being the connection's source. Valid names for sources and 13 the second being the connection's source. Valid names for sources and
14 sinks are the ALC5632's pins: 14 sinks are the ALC5632's pins as documented in the binding for the device
15 15 and:
16 ALC5632 pins:
17
18 * SPK_OUTP
19 * SPK_OUTN
20 * HP_OUT_L
21 * HP_OUT_R
22 * AUX_OUT_P
23 * AUX_OUT_N
24 * LINE_IN_L
25 * LINE_IN_R
26 * PHONE_P
27 * PHONE_N
28 * MIC1_P
29 * MIC1_N
30 * MIC2_P
31 * MIC2_N
32 * MICBIAS1
33 * DMICDAT
34
35 Board connectors:
36 16
37 * Headset Stereophone 17 * Headset Stereophone
38 * Int Spk 18 * Int Spk
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt
index d130818700b2..dc6224994d69 100644
--- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt
@@ -11,32 +11,12 @@ Required properties:
11- nvidia,audio-routing : A list of the connections between audio components. 11- nvidia,audio-routing : A list of the connections between audio components.
12 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,
13 the second being the connection's source. Valid names for sources and 13 the second being the connection's source. Valid names for sources and
14 sinks are the RT5640's pins, and the jacks on the board: 14 sinks are the RT5640's pins (as documented in its binding), and the jacks
15 15 on the board:
16 RT5640 pins:
17
18 * DMIC1
19 * DMIC2
20 * MICBIAS1
21 * IN1P
22 * IN1R
23 * IN2P
24 * IN2R
25 * HPOL
26 * HPOR
27 * LOUTL
28 * LOUTR
29 * MONOP
30 * MONON
31 * SPOLP
32 * SPOLN
33 * SPORP
34 * SPORN
35
36 Board connectors:
37 16
38 * Headphones 17 * Headphones
39 * Speakers 18 * Speakers
19 * Mic Jack
40 20
41- nvidia,i2s-controller : The phandle of the Tegra I2S controller that's 21- nvidia,i2s-controller : The phandle of the Tegra I2S controller that's
42 connected to the CODEC. 22 connected to the CODEC.
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt
index d14510613a7f..aab6ce0ad2fc 100644
--- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt
@@ -11,31 +11,8 @@ Required properties:
11- nvidia,audio-routing : A list of the connections between audio components. 11- nvidia,audio-routing : A list of the connections between audio components.
12 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,
13 the second being the connection's source. Valid names for sources and 13 the second being the connection's source. Valid names for sources and
14 sinks are the WM8753's pins, and the jacks on the board: 14 sinks are the WM8753's pins as documented in the binding for the WM8753,
15 15 and the jacks on the board:
16 WM8753 pins:
17
18 * LOUT1
19 * LOUT2
20 * ROUT1
21 * ROUT2
22 * MONO1
23 * MONO2
24 * OUT3
25 * OUT4
26 * LINE1
27 * LINE2
28 * RXP
29 * RXN
30 * ACIN
31 * ACOP
32 * MIC1N
33 * MIC1
34 * MIC2N
35 * MIC2
36 * Mic Bias
37
38 Board connectors:
39 16
40 * Headphone Jack 17 * Headphone Jack
41 * Mic Jack 18 * Mic Jack
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt
index 3bf722deb722..4b44dfb6ca0d 100644
--- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt
@@ -11,28 +11,8 @@ Required properties:
11- nvidia,audio-routing : A list of the connections between audio components. 11- nvidia,audio-routing : A list of the connections between audio components.
12 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,
13 the second being the connection's source. Valid names for sources and 13 the second being the connection's source. Valid names for sources and
14 sinks are the WM8903's pins, and the jacks on the board: 14 sinks are the WM8903's pins (documented in the WM8903 binding document),
15 15 and the jacks on the board:
16 WM8903 pins:
17
18 * IN1L
19 * IN1R
20 * IN2L
21 * IN2R
22 * IN3L
23 * IN3R
24 * DMICDAT
25 * HPOUTL
26 * HPOUTR
27 * LINEOUTL
28 * LINEOUTR
29 * LOP
30 * LON
31 * ROP
32 * RON
33 * MICBIAS
34
35 Board connectors:
36 16
37 * Headphone Jack 17 * Headphone Jack
38 * Int Spk 18 * Int Spk
diff --git a/Documentation/devicetree/bindings/sound/pcm1792a.txt b/Documentation/devicetree/bindings/sound/pcm1792a.txt
new file mode 100644
index 000000000000..970ba1ed576f
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/pcm1792a.txt
@@ -0,0 +1,18 @@
1Texas Instruments pcm1792a DT bindings
2
3This driver supports the SPI bus.
4
5Required properties:
6
7 - compatible: "ti,pcm1792a"
8
9For required properties on SPI, please consult
10Documentation/devicetree/bindings/spi/spi-bus.txt
11
12Examples:
13
14 codec_spi: 1792a@0 {
15 compatible = "ti,pcm1792a";
16 spi-max-frequency = <600000>;
17 };
18
diff --git a/Documentation/devicetree/bindings/sound/rt5640.txt b/Documentation/devicetree/bindings/sound/rt5640.txt
index 005bcb24d72d..068a1141b06f 100644
--- a/Documentation/devicetree/bindings/sound/rt5640.txt
+++ b/Documentation/devicetree/bindings/sound/rt5640.txt
@@ -18,6 +18,26 @@ Optional properties:
18 18
19- realtek,ldo1-en-gpios : The GPIO that controls the CODEC's LDO1_EN pin. 19- realtek,ldo1-en-gpios : The GPIO that controls the CODEC's LDO1_EN pin.
20 20
21Pins on the device (for linking into audio routes):
22
23 * DMIC1
24 * DMIC2
25 * MICBIAS1
26 * IN1P
27 * IN1R
28 * IN2P
29 * IN2R
30 * HPOL
31 * HPOR
32 * LOUTL
33 * LOUTR
34 * MONOP
35 * MONON
36 * SPOLP
37 * SPOLN
38 * SPORP
39 * SPORN
40
21Example: 41Example:
22 42
23rt5640 { 43rt5640 {
diff --git a/Documentation/devicetree/bindings/sound/samsung-i2s.txt b/Documentation/devicetree/bindings/sound/samsung-i2s.txt
index 025e66b85a43..7386d444ada1 100644
--- a/Documentation/devicetree/bindings/sound/samsung-i2s.txt
+++ b/Documentation/devicetree/bindings/sound/samsung-i2s.txt
@@ -2,7 +2,15 @@
2 2
3Required SoC Specific Properties: 3Required SoC Specific Properties:
4 4
5- compatible : "samsung,i2s-v5" 5- compatible : should be one of the following.
6 - samsung,s3c6410-i2s: for 8/16/24bit stereo I2S.
7 - samsung,s5pv210-i2s: for 8/16/24bit multichannel(5.1) I2S with
8 secondary fifo, s/w reset control and internal mux for root clk src.
9 - samsung,exynos5420-i2s: for 8/16/24bit multichannel(7.1) I2S with
10 secondary fifo, s/w reset control, internal mux for root clk src and
11 TDM support. TDM (Time division multiplexing) is to allow transfer of
12 multiple channel audio data on single data line.
13
6- reg: physical base address of the controller and length of memory mapped 14- reg: physical base address of the controller and length of memory mapped
7 region. 15 region.
8- dmas: list of DMA controller phandle and DMA request line ordered pairs. 16- dmas: list of DMA controller phandle and DMA request line ordered pairs.
@@ -21,13 +29,6 @@ Required SoC Specific Properties:
21 29
22Optional SoC Specific Properties: 30Optional SoC Specific Properties:
23 31
24- samsung,supports-6ch: If the I2S Primary sound source has 5.1 Channel
25 support, this flag is enabled.
26- samsung,supports-rstclr: This flag should be set if I2S software reset bit
27 control is required. When this flag is set I2S software reset bit will be
28 enabled or disabled based on need.
29- samsung,supports-secdai:If I2S block has a secondary FIFO and internal DMA,
30 then this flag is enabled.
31- samsung,idma-addr: Internal DMA register base address of the audio 32- samsung,idma-addr: Internal DMA register base address of the audio
32 sub system(used in secondary sound source). 33 sub system(used in secondary sound source).
33- pinctrl-0: Should specify pin control groups used for this controller. 34- pinctrl-0: Should specify pin control groups used for this controller.
@@ -36,7 +37,7 @@ Optional SoC Specific Properties:
36Example: 37Example:
37 38
38i2s0: i2s@03830000 { 39i2s0: i2s@03830000 {
39 compatible = "samsung,i2s-v5"; 40 compatible = "samsung,s5pv210-i2s";
40 reg = <0x03830000 0x100>; 41 reg = <0x03830000 0x100>;
41 dmas = <&pdma0 10 42 dmas = <&pdma0 10
42 &pdma0 9 43 &pdma0 9
@@ -46,9 +47,6 @@ i2s0: i2s@03830000 {
46 <&clock_audss EXYNOS_I2S_BUS>, 47 <&clock_audss EXYNOS_I2S_BUS>,
47 <&clock_audss EXYNOS_SCLK_I2S>; 48 <&clock_audss EXYNOS_SCLK_I2S>;
48 clock-names = "iis", "i2s_opclk0", "i2s_opclk1"; 49 clock-names = "iis", "i2s_opclk0", "i2s_opclk1";
49 samsung,supports-6ch;
50 samsung,supports-rstclr;
51 samsung,supports-secdai;
52 samsung,idma-addr = <0x03000000>; 50 samsung,idma-addr = <0x03000000>;
53 pinctrl-names = "default"; 51 pinctrl-names = "default";
54 pinctrl-0 = <&i2s0_bus>; 52 pinctrl-0 = <&i2s0_bus>;
diff --git a/Documentation/devicetree/bindings/sound/soc-ac97link.txt b/Documentation/devicetree/bindings/sound/soc-ac97link.txt
new file mode 100644
index 000000000000..80152a87f239
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/soc-ac97link.txt
@@ -0,0 +1,28 @@
1AC97 link bindings
2
3These bindings can be included within any other device node.
4
5Required properties:
6 - pinctrl-names: Has to contain following states to setup the correct
7 pinmuxing for the used gpios:
8 "ac97-running": AC97-link is active
9 "ac97-reset": AC97-link reset state
10 "ac97-warm-reset": AC97-link warm reset state
11 - ac97-gpios: List of gpio phandles with args in the order ac97-sync,
12 ac97-sdata, ac97-reset
13
14
15Example:
16
17ssi {
18 ...
19
20 pinctrl-names = "default", "ac97-running", "ac97-reset", "ac97-warm-reset";
21 pinctrl-0 = <&ac97link_running>;
22 pinctrl-1 = <&ac97link_running>;
23 pinctrl-2 = <&ac97link_reset>;
24 pinctrl-3 = <&ac97link_warm_reset>;
25 ac97-gpios = <&gpio3 20 0 &gpio3 22 0 &gpio3 28 0>;
26
27 ...
28};
diff --git a/Documentation/devicetree/bindings/sound/ti,pcm1681.txt b/Documentation/devicetree/bindings/sound/ti,pcm1681.txt
new file mode 100644
index 000000000000..4df17185ab80
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/ti,pcm1681.txt
@@ -0,0 +1,15 @@
1Texas Instruments PCM1681 8-channel PWM Processor
2
3Required properties:
4
5 - compatible: Should contain "ti,pcm1681".
6 - reg: The i2c address. Should contain <0x4c>.
7
8Examples:
9
10 i2c_bus {
11 pcm1681@4c {
12 compatible = "ti,pcm1681";
13 reg = <0x4c>;
14 };
15 };
diff --git a/Documentation/devicetree/bindings/sound/tlv320aic3x.txt b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt
index f47c3f589fd0..5e6040c2c2e9 100644
--- a/Documentation/devicetree/bindings/sound/tlv320aic3x.txt
+++ b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt
@@ -3,7 +3,14 @@ Texas Instruments - tlv320aic3x Codec module
3The tlv320aic3x serial control bus communicates through I2C protocols 3The tlv320aic3x serial control bus communicates through I2C protocols
4 4
5Required properties: 5Required properties:
6- compatible - "string" - "ti,tlv320aic3x" 6
7- compatible - "string" - One of:
8 "ti,tlv320aic3x" - Generic TLV320AIC3x device
9 "ti,tlv320aic33" - TLV320AIC33
10 "ti,tlv320aic3007" - TLV320AIC3007
11 "ti,tlv320aic3106" - TLV320AIC3106
12
13
7- reg - <int> - I2C slave address 14- reg - <int> - I2C slave address
8 15
9 16
@@ -17,10 +24,36 @@ Optional properties:
17 3 - MICBIAS output is connected to AVDD, 24 3 - MICBIAS output is connected to AVDD,
18 If this node is not mentioned or if the value is incorrect, then MicBias 25 If this node is not mentioned or if the value is incorrect, then MicBias
19 is powered down. 26 is powered down.
27- AVDD-supply, IOVDD-supply, DRVDD-supply, DVDD-supply : power supplies for the
28 device as covered in Documentation/devicetree/bindings/regulator/regulator.txt
29
30CODEC output pins:
31 * LLOUT
32 * RLOUT
33 * MONO_LOUT
34 * HPLOUT
35 * HPROUT
36 * HPLCOM
37 * HPRCOM
38
39CODEC input pins:
40 * MIC3L
41 * MIC3R
42 * LINE1L
43 * LINE2L
44 * LINE1R
45 * LINE2R
46
47The pins can be used in referring sound node's audio-routing property.
20 48
21Example: 49Example:
22 50
23tlv320aic3x: tlv320aic3x@1b { 51tlv320aic3x: tlv320aic3x@1b {
24 compatible = "ti,tlv320aic3x"; 52 compatible = "ti,tlv320aic3x";
25 reg = <0x1b>; 53 reg = <0x1b>;
54
55 AVDD-supply = <&regulator>;
56 IOVDD-supply = <&regulator>;
57 DRVDD-supply = <&regulator>;
58 DVDD-supply = <&regulator>;
26}; 59};
diff --git a/Documentation/devicetree/bindings/sound/tpa6130a2.txt b/Documentation/devicetree/bindings/sound/tpa6130a2.txt
new file mode 100644
index 000000000000..6dfa740e4b2d
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/tpa6130a2.txt
@@ -0,0 +1,27 @@
1Texas Instruments - tpa6130a2 Codec module
2
3The tpa6130a2 serial control bus communicates through I2C protocols
4
5Required properties:
6
7- compatible - "string" - One of:
8 "ti,tpa6130a2" - TPA6130A2
9 "ti,tpa6140a2" - TPA6140A2
10
11
12- reg - <int> - I2C slave address
13
14- Vdd-supply - <phandle> - power supply regulator
15
16Optional properties:
17
18- power-gpio - gpio pin to power the device
19
20Example:
21
22tpa6130a2: tpa6130a2@60 {
23 compatible = "ti,tpa6130a2";
24 reg = <0x60>;
25 Vdd-supply = <&vmmc2>;
26 power-gpio = <&gpio4 2 GPIO_ACTIVE_HIGH>;
27};
diff --git a/Documentation/devicetree/bindings/sound/wm8731.txt b/Documentation/devicetree/bindings/sound/wm8731.txt
index 15f70048469b..236690e99b87 100644
--- a/Documentation/devicetree/bindings/sound/wm8731.txt
+++ b/Documentation/devicetree/bindings/sound/wm8731.txt
@@ -16,3 +16,12 @@ codec: wm8731@1a {
16 compatible = "wlf,wm8731"; 16 compatible = "wlf,wm8731";
17 reg = <0x1a>; 17 reg = <0x1a>;
18}; 18};
19
20Available audio endpoints for an audio-routing table:
21 * LOUT: Left Channel Line Output
22 * ROUT: Right Channel Line Output
23 * LHPOUT: Left Channel Headphone Output
24 * RHPOUT: Right Channel Headphone Output
25 * LLINEIN: Left Channel Line Input
26 * RLINEIN: Right Channel Line Input
27 * MICIN: Microphone Input
diff --git a/Documentation/devicetree/bindings/sound/wm8753.txt b/Documentation/devicetree/bindings/sound/wm8753.txt
index e65277a0fb60..8eee61282105 100644
--- a/Documentation/devicetree/bindings/sound/wm8753.txt
+++ b/Documentation/devicetree/bindings/sound/wm8753.txt
@@ -10,9 +10,31 @@ Required properties:
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
13Pins on the device (for linking into audio routes):
14
15 * LOUT1
16 * LOUT2
17 * ROUT1
18 * ROUT2
19 * MONO1
20 * MONO2
21 * OUT3
22 * OUT4
23 * LINE1
24 * LINE2
25 * RXP
26 * RXN
27 * ACIN
28 * ACOP
29 * MIC1N
30 * MIC1
31 * MIC2N
32 * MIC2
33 * Mic Bias
34
13Example: 35Example:
14 36
15codec: wm8737@1a { 37codec: wm8753@1a {
16 compatible = "wlf,wm8753"; 38 compatible = "wlf,wm8753";
17 reg = <0x1a>; 39 reg = <0x1a>;
18}; 40};
diff --git a/Documentation/devicetree/bindings/sound/wm8903.txt b/Documentation/devicetree/bindings/sound/wm8903.txt
index f102cbc42694..94ec32c194bb 100644
--- a/Documentation/devicetree/bindings/sound/wm8903.txt
+++ b/Documentation/devicetree/bindings/sound/wm8903.txt
@@ -28,6 +28,25 @@ Optional properties:
28 performed. If any entry has the value 0xffffffff, that GPIO's 28 performed. If any entry has the value 0xffffffff, that GPIO's
29 configuration will not be modified. 29 configuration will not be modified.
30 30
31Pins on the device (for linking into audio routes):
32
33 * IN1L
34 * IN1R
35 * IN2L
36 * IN2R
37 * IN3L
38 * IN3R
39 * DMICDAT
40 * HPOUTL
41 * HPOUTR
42 * LINEOUTL
43 * LINEOUTR
44 * LOP
45 * LON
46 * ROP
47 * RON
48 * MICBIAS
49
31Example: 50Example:
32 51
33codec: wm8903@1a { 52codec: wm8903@1a {
diff --git a/Documentation/devicetree/bindings/sound/wm8994.txt b/Documentation/devicetree/bindings/sound/wm8994.txt
index f2f3e80934d2..e045e90a0924 100644
--- a/Documentation/devicetree/bindings/sound/wm8994.txt
+++ b/Documentation/devicetree/bindings/sound/wm8994.txt
@@ -32,6 +32,10 @@ Optional properties:
32 The second cell is the flags, encoded as the trigger masks from 32 The second cell is the flags, encoded as the trigger masks from
33 Documentation/devicetree/bindings/interrupts.txt 33 Documentation/devicetree/bindings/interrupts.txt
34 34
35 - clocks : A list of up to two phandle and clock specifier pairs
36 - clock-names : A list of clock names sorted in the same order as clocks.
37 Valid clock names are "MCLK1" and "MCLK2".
38
35 - wlf,gpio-cfg : A list of GPIO configuration register values. If absent, 39 - wlf,gpio-cfg : A list of GPIO configuration register values. If absent,
36 no configuration of these registers is performed. If any value is 40 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 41 over 0xffff then the register will be left as default. If present 11
diff --git a/Documentation/devicetree/bindings/spi/efm32-spi.txt b/Documentation/devicetree/bindings/spi/efm32-spi.txt
new file mode 100644
index 000000000000..a590ca51be75
--- /dev/null
+++ b/Documentation/devicetree/bindings/spi/efm32-spi.txt
@@ -0,0 +1,34 @@
1* Energy Micro EFM32 SPI
2
3Required properties:
4- #address-cells: see spi-bus.txt
5- #size-cells: see spi-bus.txt
6- compatible: should be "efm32,spi"
7- reg: Offset and length of the register set for the controller
8- interrupts: pair specifying rx and tx irq
9- clocks: phandle to the spi clock
10- cs-gpios: see spi-bus.txt
11- location: Value to write to the ROUTE register's LOCATION bitfield to configure the pinmux for the device, see datasheet for values.
12
13Example:
14
15spi1: spi@0x4000c400 { /* USART1 */
16 #address-cells = <1>;
17 #size-cells = <0>;
18 compatible = "efm32,spi";
19 reg = <0x4000c400 0x400>;
20 interrupts = <15 16>;
21 clocks = <&cmu 20>;
22 cs-gpios = <&gpio 51 1>; // D3
23 location = <1>;
24 status = "ok";
25
26 ks8851@0 {
27 compatible = "ks8851";
28 spi-max-frequency = <6000000>;
29 reg = <0>;
30 interrupt-parent = <&boardfpga>;
31 interrupts = <4>;
32 status = "ok";
33 };
34};
diff --git a/Documentation/devicetree/bindings/spi/sh-hspi.txt b/Documentation/devicetree/bindings/spi/sh-hspi.txt
new file mode 100644
index 000000000000..30b57b1c8a13
--- /dev/null
+++ b/Documentation/devicetree/bindings/spi/sh-hspi.txt
@@ -0,0 +1,7 @@
1Renesas HSPI.
2
3Required properties:
4- compatible : "renesas,hspi"
5- reg : Offset and length of the register set for the device
6- interrupts : interrupt line used by HSPI
7
diff --git a/Documentation/devicetree/bindings/spi/spi-bus.txt b/Documentation/devicetree/bindings/spi/spi-bus.txt
index 296015e3c632..800dafe5b01b 100644
--- a/Documentation/devicetree/bindings/spi/spi-bus.txt
+++ b/Documentation/devicetree/bindings/spi/spi-bus.txt
@@ -55,6 +55,16 @@ contain the following properties.
55 chip select active high 55 chip select active high
56- spi-3wire - (optional) Empty property indicating device requires 56- spi-3wire - (optional) Empty property indicating device requires
57 3-wire mode. 57 3-wire mode.
58- spi-tx-bus-width - (optional) The bus width(number of data wires) that
59 used for MOSI. Defaults to 1 if not present.
60- spi-rx-bus-width - (optional) The bus width(number of data wires) that
61 used for MISO. Defaults to 1 if not present.
62
63Some SPI controllers and devices support Dual and Quad SPI transfer mode.
64It allows data in SPI system transfered in 2 wires(DUAL) or 4 wires(QUAD).
65Now the value that spi-tx-bus-width and spi-rx-bus-width can receive is
66only 1(SINGLE), 2(DUAL) and 4(QUAD).
67Dual/Quad mode is not allowed when 3-wire mode is used.
58 68
59If a gpio chipselect is used for the SPI slave the gpio number will be passed 69If a gpio chipselect is used for the SPI slave the gpio number will be passed
60via the cs_gpio 70via the cs_gpio
diff --git a/Documentation/devicetree/bindings/spi/spi-fsl-dspi.txt b/Documentation/devicetree/bindings/spi/spi-fsl-dspi.txt
new file mode 100644
index 000000000000..a1fb3035a42b
--- /dev/null
+++ b/Documentation/devicetree/bindings/spi/spi-fsl-dspi.txt
@@ -0,0 +1,42 @@
1ARM Freescale DSPI controller
2
3Required properties:
4- compatible : "fsl,vf610-dspi"
5- reg : Offset and length of the register set for the device
6- interrupts : Should contain SPI controller interrupt
7- clocks: from common clock binding: handle to dspi clock.
8- clock-names: from common clock binding: Shall be "dspi".
9- pinctrl-0: pin control group to be used for this controller.
10- pinctrl-names: must contain a "default" entry.
11- spi-num-chipselects : the number of the chipselect signals.
12- bus-num : the slave chip chipselect signal number.
13Example:
14
15dspi0@4002c000 {
16 #address-cells = <1>;
17 #size-cells = <0>;
18 compatible = "fsl,vf610-dspi";
19 reg = <0x4002c000 0x1000>;
20 interrupts = <0 67 0x04>;
21 clocks = <&clks VF610_CLK_DSPI0>;
22 clock-names = "dspi";
23 spi-num-chipselects = <5>;
24 bus-num = <0>;
25 pinctrl-names = "default";
26 pinctrl-0 = <&pinctrl_dspi0_1>;
27 status = "okay";
28
29 sflash: at26df081a@0 {
30 #address-cells = <1>;
31 #size-cells = <1>;
32 compatible = "atmel,at26df081a";
33 spi-max-frequency = <16000000>;
34 spi-cpol;
35 spi-cpha;
36 reg = <0>;
37 linux,modalias = "m25p80";
38 modal = "at26df081a";
39 };
40};
41
42
diff --git a/Documentation/devicetree/bindings/spi/spi_altera.txt b/Documentation/devicetree/bindings/spi/spi_altera.txt
index dda375943506..31319dcf30ab 100644
--- a/Documentation/devicetree/bindings/spi/spi_altera.txt
+++ b/Documentation/devicetree/bindings/spi/spi_altera.txt
@@ -1,4 +1,5 @@
1Altera SPI 1Altera SPI
2 2
3Required properties: 3Required properties:
4- compatible : should be "ALTR,spi-1.0". 4- compatible : should be "ALTR,spi-1.0". <DEPRECATED>
5- compatible : should be "altr,spi-1.0".
diff --git a/Documentation/devicetree/bindings/spi/ti_qspi.txt b/Documentation/devicetree/bindings/spi/ti_qspi.txt
new file mode 100644
index 000000000000..1f9641ade0b5
--- /dev/null
+++ b/Documentation/devicetree/bindings/spi/ti_qspi.txt
@@ -0,0 +1,22 @@
1TI QSPI controller.
2
3Required properties:
4- compatible : should be "ti,dra7xxx-qspi" or "ti,am4372-qspi".
5- reg: Should contain QSPI registers location and length.
6- #address-cells, #size-cells : Must be present if the device has sub-nodes
7- ti,hwmods: Name of the hwmod associated to the QSPI
8
9Recommended properties:
10- spi-max-frequency: Definition as per
11 Documentation/devicetree/bindings/spi/spi-bus.txt
12
13Example:
14
15qspi: qspi@4b300000 {
16 compatible = "ti,dra7xxx-qspi";
17 reg = <0x4b300000 0x100>;
18 #address-cells = <1>;
19 #size-cells = <0>;
20 spi-max-frequency = <25000000>;
21 ti,hwmods = "qspi";
22};
diff --git a/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt b/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt
index 46882058b59b..ee05dc390694 100644
--- a/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt
+++ b/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt
@@ -1,7 +1,8 @@
1* Freescale i.MX28 LRADC device driver 1* Freescale i.MX28 LRADC device driver
2 2
3Required properties: 3Required properties:
4- compatible: Should be "fsl,imx28-lradc" 4- compatible: Should be "fsl,imx23-lradc" for i.MX23 SoC and "fsl,imx28-lradc"
5 for i.MX28 SoC
5- reg: Address and length of the register set for the device 6- reg: Address and length of the register set for the device
6- interrupts: Should contain the LRADC interrupts 7- interrupts: Should contain the LRADC interrupts
7 8
@@ -9,13 +10,38 @@ Optional properties:
9- fsl,lradc-touchscreen-wires: Number of wires used to connect the touchscreen 10- fsl,lradc-touchscreen-wires: Number of wires used to connect the touchscreen
10 to LRADC. Valid value is either 4 or 5. If this 11 to LRADC. Valid value is either 4 or 5. If this
11 property is not present, then the touchscreen is 12 property is not present, then the touchscreen is
12 disabled. 13 disabled. 5 wires is valid for i.MX28 SoC only.
14- fsl,ave-ctrl: number of samples per direction to calculate an average value.
15 Allowed value is 1 ... 31, default is 4
16- fsl,ave-delay: delay between consecutive samples. Allowed value is
17 1 ... 2047. It is used if 'fsl,ave-ctrl' > 1, counts at
18 2 kHz and its default is 2 (= 1 ms)
19- fsl,settling: delay between plate switch to next sample. Allowed value is
20 1 ... 2047. It counts at 2 kHz and its default is
21 10 (= 5 ms)
13 22
14Examples: 23Example for i.MX23 SoC:
24
25 lradc@80050000 {
26 compatible = "fsl,imx23-lradc";
27 reg = <0x80050000 0x2000>;
28 interrupts = <36 37 38 39 40 41 42 43 44>;
29 status = "okay";
30 fsl,lradc-touchscreen-wires = <4>;
31 fsl,ave-ctrl = <4>;
32 fsl,ave-delay = <2>;
33 fsl,settling = <10>;
34 };
35
36Example for i.MX28 SoC:
15 37
16 lradc@80050000 { 38 lradc@80050000 {
17 compatible = "fsl,imx28-lradc"; 39 compatible = "fsl,imx28-lradc";
18 reg = <0x80050000 0x2000>; 40 reg = <0x80050000 0x2000>;
19 interrupts = <10 14 15 16 17 18 19 41 interrupts = <10 14 15 16 17 18 19 20 21 22 23 24 25>;
20 20 21 22 23 24 25>; 42 status = "okay";
43 fsl,lradc-touchscreen-wires = <5>;
44 fsl,ave-ctrl = <4>;
45 fsl,ave-delay = <2>;
46 fsl,settling = <10>;
21 }; 47 };
diff --git a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
new file mode 100644
index 000000000000..284f5300fd8b
--- /dev/null
+++ b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
@@ -0,0 +1,55 @@
1* Exynos Thermal Management Unit (TMU)
2
3** Required properties:
4
5- compatible : One of the following:
6 "samsung,exynos4412-tmu"
7 "samsung,exynos4210-tmu"
8 "samsung,exynos5250-tmu"
9 "samsung,exynos5440-tmu"
10- interrupt-parent : The phandle for the interrupt controller
11- reg : Address range of the thermal registers. For soc's which has multiple
12 instances of TMU and some registers are shared across all TMU's like
13 interrupt related then 2 set of register has to supplied. First set
14 belongs to each instance of TMU and second set belongs to common TMU
15 registers.
16- interrupts : Should contain interrupt for thermal system
17- clocks : The main clock for TMU device
18- clock-names : Thermal system clock name
19- vtmu-supply: This entry is optional and provides the regulator node supplying
20 voltage to TMU. If needed this entry can be placed inside
21 board/platform specific dts file.
22
23Example 1):
24
25 tmu@100C0000 {
26 compatible = "samsung,exynos4412-tmu";
27 interrupt-parent = <&combiner>;
28 reg = <0x100C0000 0x100>;
29 interrupts = <2 4>;
30 clocks = <&clock 383>;
31 clock-names = "tmu_apbif";
32 status = "disabled";
33 vtmu-supply = <&tmu_regulator_node>;
34 };
35
36Example 2):
37
38 tmuctrl_0: tmuctrl@160118 {
39 compatible = "samsung,exynos5440-tmu";
40 reg = <0x160118 0x230>, <0x160368 0x10>;
41 interrupts = <0 58 0>;
42 clocks = <&clock 21>;
43 clock-names = "tmu_apbif";
44 };
45
46Note: For multi-instance tmu each instance should have an alias correctly
47numbered in "aliases" node.
48
49Example:
50
51aliases {
52 tmuctrl0 = &tmuctrl_0;
53 tmuctrl1 = &tmuctrl_1;
54 tmuctrl2 = &tmuctrl_2;
55};
diff --git a/Documentation/devicetree/bindings/thermal/imx-thermal.txt b/Documentation/devicetree/bindings/thermal/imx-thermal.txt
new file mode 100644
index 000000000000..541c25e49abf
--- /dev/null
+++ b/Documentation/devicetree/bindings/thermal/imx-thermal.txt
@@ -0,0 +1,17 @@
1* Temperature Monitor (TEMPMON) on Freescale i.MX SoCs
2
3Required properties:
4- compatible : "fsl,imx6q-thermal"
5- fsl,tempmon : phandle pointer to system controller that contains TEMPMON
6 control registers, e.g. ANATOP on imx6q.
7- fsl,tempmon-data : phandle pointer to fuse controller that contains TEMPMON
8 calibration data, e.g. OCOTP on imx6q. The details about calibration data
9 can be found in SoC Reference Manual.
10
11Example:
12
13tempmon {
14 compatible = "fsl,imx6q-tempmon";
15 fsl,tempmon = <&anatop>;
16 fsl,tempmon-data = <&ocotp>;
17};
diff --git a/Documentation/devicetree/bindings/timer/efm32,timer.txt b/Documentation/devicetree/bindings/timer/efm32,timer.txt
new file mode 100644
index 000000000000..97a568f696c9
--- /dev/null
+++ b/Documentation/devicetree/bindings/timer/efm32,timer.txt
@@ -0,0 +1,23 @@
1* EFM32 timer hardware
2
3The efm32 Giant Gecko SoCs come with four 16 bit timers. Two counters can be
4connected to form a 32 bit counter. Each timer has three Compare/Capture
5channels and can be used as PWM or Quadrature Decoder. Available clock sources
6are the cpu's HFPERCLK (with a 10-bit prescaler) or an external pin.
7
8Required properties:
9- compatible : Should be efm32,timer
10- reg : Address and length of the register set
11- clocks : Should contain a reference to the HFPERCLK
12
13Optional properties:
14- interrupts : Reference to the timer interrupt
15
16Example:
17
18timer@40010c00 {
19 compatible = "efm32,timer";
20 reg = <0x40010c00 0x400>;
21 interrupts = <14>;
22 clocks = <&cmu clk_HFPERCLKTIMER3>;
23};
diff --git a/Documentation/devicetree/bindings/timer/marvell,armada-370-xp-timer.txt b/Documentation/devicetree/bindings/timer/marvell,armada-370-xp-timer.txt
index 36381129d141..f455182b1086 100644
--- a/Documentation/devicetree/bindings/timer/marvell,armada-370-xp-timer.txt
+++ b/Documentation/devicetree/bindings/timer/marvell,armada-370-xp-timer.txt
@@ -2,14 +2,40 @@ Marvell Armada 370 and Armada XP Timers
2--------------------------------------- 2---------------------------------------
3 3
4Required properties: 4Required properties:
5- compatible: Should be "marvell,armada-370-xp-timer" 5- compatible: Should be either "marvell,armada-370-timer" or
6 "marvell,armada-xp-timer" as appropriate.
6- interrupts: Should contain the list of Global Timer interrupts and 7- interrupts: Should contain the list of Global Timer interrupts and
7 then local timer interrupts 8 then local timer interrupts
8- reg: Should contain location and length for timers register. First 9- reg: Should contain location and length for timers register. First
9 pair for the Global Timer registers, second pair for the 10 pair for the Global Timer registers, second pair for the
10 local/private timers. 11 local/private timers.
11- clocks: clock driving the timer hardware
12 12
13Optional properties: 13Clocks required for compatible = "marvell,armada-370-timer":
14- marvell,timer-25Mhz: Tells whether the Global timer supports the 25 14- clocks : Must contain a single entry describing the clock input
15 Mhz fixed mode (available on Armada XP and not on Armada 370) 15
16Clocks required for compatible = "marvell,armada-xp-timer":
17- clocks : Must contain an entry for each entry in clock-names.
18- clock-names : Must include the following entries:
19 "nbclk" (L2/coherency fabric clock),
20 "fixed" (Reference 25 MHz fixed-clock).
21
22Examples:
23
24- Armada 370:
25
26 timer {
27 compatible = "marvell,armada-370-timer";
28 reg = <0x20300 0x30>, <0x21040 0x30>;
29 interrupts = <37>, <38>, <39>, <40>, <5>, <6>;
30 clocks = <&coreclk 2>;
31 };
32
33- Armada XP:
34
35 timer {
36 compatible = "marvell,armada-xp-timer";
37 reg = <0x20300 0x30>, <0x21040 0x30>;
38 interrupts = <37>, <38>, <39>, <40>, <5>, <6>;
39 clocks = <&coreclk 2>, <&refclk>;
40 clock-names = "nbclk", "fixed";
41 };
diff --git a/Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt b/Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt
new file mode 100644
index 000000000000..da2d510cae47
--- /dev/null
+++ b/Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt
@@ -0,0 +1,17 @@
1MOXA ART timer
2
3Required properties:
4
5- compatible : Must be "moxa,moxart-timer"
6- reg : Should contain registers location and length
7- interrupts : Should contain the timer interrupt number
8- clocks : Should contain phandle for the clock that drives the counter
9
10Example:
11
12 timer: timer@98400000 {
13 compatible = "moxa,moxart-timer";
14 reg = <0x98400000 0x42>;
15 interrupts = <19 1>;
16 clocks = <&coreclk>;
17 };
diff --git a/Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt b/Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt
deleted file mode 100644
index c662eb36be29..000000000000
--- a/Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt
+++ /dev/null
@@ -1,22 +0,0 @@
1* Freescale i.MX Universal Asynchronous Receiver/Transmitter (UART)
2
3Required properties:
4- compatible : Should be "fsl,<soc>-uart"
5- reg : Address and length of the register set for the device
6- interrupts : Should contain uart interrupt
7
8Optional properties:
9- fsl,uart-has-rtscts : Indicate the uart has rts and cts
10- fsl,irda-mode : Indicate the uart supports irda mode
11- fsl,dte-mode : Indicate the uart works in DTE mode. The uart works
12 is DCE mode by default.
13
14Example:
15
16serial@73fbc000 {
17 compatible = "fsl,imx51-uart", "fsl,imx21-uart";
18 reg = <0x73fbc000 0x4000>;
19 interrupts = <31>;
20 fsl,uart-has-rtscts;
21 fsl,dte-mode;
22};
diff --git a/Documentation/devicetree/bindings/tty/serial/msm_serial.txt b/Documentation/devicetree/bindings/tty/serial/msm_serial.txt
deleted file mode 100644
index aef383eb8876..000000000000
--- a/Documentation/devicetree/bindings/tty/serial/msm_serial.txt
+++ /dev/null
@@ -1,27 +0,0 @@
1* Qualcomm MSM UART
2
3Required properties:
4- compatible :
5 - "qcom,msm-uart", and one of "qcom,msm-hsuart" or
6 "qcom,msm-lsuart".
7- reg : offset and length of the register set for the device
8 for the hsuart operating in compatible mode, there should be a
9 second pair describing the gsbi registers.
10- interrupts : should contain the uart interrupt.
11
12There are two different UART blocks used in MSM devices,
13"qcom,msm-hsuart" and "qcom,msm-lsuart". The msm-serial driver is
14able to handle both of these, and matches against the "qcom,msm-uart"
15as the compatibility.
16
17The registers for the "qcom,msm-hsuart" device need to specify both
18register blocks, even for the common driver.
19
20Example:
21
22 uart@19c400000 {
23 compatible = "qcom,msm-hsuart", "qcom,msm-uart";
24 reg = <0x19c40000 0x1000>,
25 <0x19c00000 0x1000>;
26 interrupts = <195>;
27 };
diff --git a/Documentation/devicetree/bindings/usb/am33xx-usb.txt b/Documentation/devicetree/bindings/usb/am33xx-usb.txt
index dc9dc8c87f15..20c2ff2ba07e 100644
--- a/Documentation/devicetree/bindings/usb/am33xx-usb.txt
+++ b/Documentation/devicetree/bindings/usb/am33xx-usb.txt
@@ -1,35 +1,197 @@
1AM33XX MUSB GLUE 1 AM33xx MUSB
2 - compatible : Should be "ti,musb-am33xx" 2~~~~~~~~~~~~~~~
3 - reg : offset and length of register sets, first usbss, then for musb instances 3- compatible: ti,am33xx-usb
4 - interrupts : usbss, musb instance interrupts in order 4- reg: offset and length of the usbss register sets
5 - ti,hwmods : must be "usb_otg_hs" 5- ti,hwmods : must be "usb_otg_hs"
6 - multipoint : Should be "1" indicating the musb controller supports 6
7 multipoint. This is a MUSB configuration-specific setting. 7The glue layer contains multiple child nodes. It is required the have
8 - num-eps : Specifies the number of endpoints. This is also a 8at least a control module node, USB node and a PHY node. The second USB
9 MUSB configuration-specific setting. Should be set to "16" 9node and its PHY node is optional. The DMA node is also optional.
10 - ram-bits : Specifies the ram address size. Should be set to "12" 10
11 - port0-mode : Should be "3" to represent OTG. "1" signifies HOST and "2" 11Reset module
12 represents PERIPHERAL. 12~~~~~~~~~~~~
13 - port1-mode : Should be "1" to represent HOST. "3" signifies OTG and "2" 13- compatible: ti,am335x-usb-ctrl-module
14 represents PERIPHERAL. 14- reg: offset and length of the "USB control registers" in the "Control
15 - power : Should be "250". This signifies the controller can supply up to 15 Module" block. A second offset and length for the USB wake up control
16 500mA when operating in host mode. 16 in the same memory block.
17- reg-names: "phy_ctrl" for the "USB control registers" and "wakeup" for
18 the USB wake up control register.
19
20USB PHY
21~~~~~~~
22compatible: ti,am335x-usb-phy
23reg: offset and length of the "USB PHY" register space
24ti,ctrl_mod: reference to the "reset module" node
25reg-names: phy
26The PHY should have a "phy" alias numbered properly in the alias
27node.
28
29USB
30~~~
31- compatible: ti,musb-am33xx
32- reg: offset and length of "USB Controller Registers", and offset and
33 length of "USB Core" register space.
34- reg-names: control for the ""USB Controller Registers" and "mc" for
35 "USB Core" register space
36- interrupts: USB interrupt number
37- interrupt-names: mc
38- dr_mode: Should be one of "host", "peripheral" or "otg".
39- mentor,multipoint: Should be "1" indicating the musb controller supports
40 multipoint. This is a MUSB configuration-specific setting.
41- mentor,num-eps: Specifies the number of endpoints. This is also a
42 MUSB configuration-specific setting. Should be set to "16"
43- mentor,ram-bits: Specifies the ram address size. Should be set to "12"
44- mentor,power: Should be "500". This signifies the controller can supply up to
45 500mA when operating in host mode.
46- phys: reference to the USB phy
47- dmas: specifies the dma channels
48- dma-names: specifies the names of the channels. Use "rxN" for receive
49 and "txN" for transmit endpoints. N specifies the endpoint number.
50
51The controller should have an "usb" alias numbered properly in the alias
52node.
53
54DMA
55~~~
56- compatible: ti,am3359-cppi41
57- reg: offset and length of the following register spaces: USBSS, USB
58 CPPI DMA Controller, USB CPPI DMA Scheduler, USB Queue Manager
59- reg-names: glue, controller, scheduler, queuemgr
60- #dma-cells: should be set to 2. The first number represents the
61 endpoint number (0 … 14 for endpoints 1 … 15 on instance 0 and 15 … 29
62 for endpoints 1 … 15 on instance 1). The second number is 0 for RX and
63 1 for TX transfers.
64- #dma-channels: should be set to 30 representing the 15 endpoints for
65 each USB instance.
17 66
18Example: 67Example:
68~~~~~~~~
69The following example contains all the nodes as used on am335x-evm:
70
71aliases {
72 usb0 = &usb0;
73 usb1 = &usb1;
74 phy0 = &usb0_phy;
75 phy1 = &usb1_phy;
76};
19 77
20usb@47400000 { 78usb: usb@47400000 {
21 compatible = "ti,musb-am33xx"; 79 compatible = "ti,am33xx-usb";
22 reg = <0x47400000 0x1000 /* usbss */ 80 reg = <0x47400000 0x1000>;
23 0x47401000 0x800 /* musb instance 0 */ 81 ranges;
24 0x47401800 0x800>; /* musb instance 1 */ 82 #address-cells = <1>;
25 interrupts = <17 /* usbss */ 83 #size-cells = <1>;
26 18 /* musb instance 0 */
27 19>; /* musb instance 1 */
28 multipoint = <1>;
29 num-eps = <16>;
30 ram-bits = <12>;
31 port0-mode = <3>;
32 port1-mode = <3>;
33 power = <250>;
34 ti,hwmods = "usb_otg_hs"; 84 ti,hwmods = "usb_otg_hs";
85
86 ctrl_mod: control@44e10000 {
87 compatible = "ti,am335x-usb-ctrl-module";
88 reg = <0x44e10620 0x10
89 0x44e10648 0x4>;
90 reg-names = "phy_ctrl", "wakeup";
91 };
92
93 usb0_phy: usb-phy@47401300 {
94 compatible = "ti,am335x-usb-phy";
95 reg = <0x47401300 0x100>;
96 reg-names = "phy";
97 ti,ctrl_mod = <&ctrl_mod>;
98 };
99
100 usb0: usb@47401000 {
101 compatible = "ti,musb-am33xx";
102 reg = <0x47401400 0x400
103 0x47401000 0x200>;
104 reg-names = "mc", "control";
105
106 interrupts = <18>;
107 interrupt-names = "mc";
108 dr_mode = "otg"
109 mentor,multipoint = <1>;
110 mentor,num-eps = <16>;
111 mentor,ram-bits = <12>;
112 mentor,power = <500>;
113 phys = <&usb0_phy>;
114
115 dmas = <&cppi41dma 0 0 &cppi41dma 1 0
116 &cppi41dma 2 0 &cppi41dma 3 0
117 &cppi41dma 4 0 &cppi41dma 5 0
118 &cppi41dma 6 0 &cppi41dma 7 0
119 &cppi41dma 8 0 &cppi41dma 9 0
120 &cppi41dma 10 0 &cppi41dma 11 0
121 &cppi41dma 12 0 &cppi41dma 13 0
122 &cppi41dma 14 0 &cppi41dma 0 1
123 &cppi41dma 1 1 &cppi41dma 2 1
124 &cppi41dma 3 1 &cppi41dma 4 1
125 &cppi41dma 5 1 &cppi41dma 6 1
126 &cppi41dma 7 1 &cppi41dma 8 1
127 &cppi41dma 9 1 &cppi41dma 10 1
128 &cppi41dma 11 1 &cppi41dma 12 1
129 &cppi41dma 13 1 &cppi41dma 14 1>;
130 dma-names =
131 "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
132 "rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
133 "rx14", "rx15",
134 "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
135 "tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
136 "tx14", "tx15";
137 };
138
139 usb1_phy: usb-phy@47401b00 {
140 compatible = "ti,am335x-usb-phy";
141 reg = <0x47401b00 0x100>;
142 reg-names = "phy";
143 ti,ctrl_mod = <&ctrl_mod>;
144 };
145
146 usb1: usb@47401800 {
147 compatible = "ti,musb-am33xx";
148 reg = <0x47401c00 0x400
149 0x47401800 0x200>;
150 reg-names = "mc", "control";
151 interrupts = <19>;
152 interrupt-names = "mc";
153 dr_mode = "host"
154 mentor,multipoint = <1>;
155 mentor,num-eps = <16>;
156 mentor,ram-bits = <12>;
157 mentor,power = <500>;
158 phys = <&usb1_phy>;
159
160 dmas = <&cppi41dma 15 0 &cppi41dma 16 0
161 &cppi41dma 17 0 &cppi41dma 18 0
162 &cppi41dma 19 0 &cppi41dma 20 0
163 &cppi41dma 21 0 &cppi41dma 22 0
164 &cppi41dma 23 0 &cppi41dma 24 0
165 &cppi41dma 25 0 &cppi41dma 26 0
166 &cppi41dma 27 0 &cppi41dma 28 0
167 &cppi41dma 29 0 &cppi41dma 15 1
168 &cppi41dma 16 1 &cppi41dma 17 1
169 &cppi41dma 18 1 &cppi41dma 19 1
170 &cppi41dma 20 1 &cppi41dma 21 1
171 &cppi41dma 22 1 &cppi41dma 23 1
172 &cppi41dma 24 1 &cppi41dma 25 1
173 &cppi41dma 26 1 &cppi41dma 27 1
174 &cppi41dma 28 1 &cppi41dma 29 1>;
175 dma-names =
176 "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
177 "rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
178 "rx14", "rx15",
179 "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
180 "tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
181 "tx14", "tx15";
182 };
183
184 cppi41dma: dma-controller@07402000 {
185 compatible = "ti,am3359-cppi41";
186 reg = <0x47400000 0x1000
187 0x47402000 0x1000
188 0x47403000 0x1000
189 0x47404000 0x4000>;
190 reg-names = "glue", "controller", "scheduler", "queuemgr";
191 interrupts = <17>;
192 interrupt-names = "glue";
193 #dma-cells = <2>;
194 #dma-channels = <30>;
195 #dma-requests = <256>;
196 };
35}; 197};
diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt
index 7a95c651ceb3..e807635f9e1c 100644
--- a/Documentation/devicetree/bindings/usb/dwc3.txt
+++ b/Documentation/devicetree/bindings/usb/dwc3.txt
@@ -3,10 +3,12 @@ synopsys DWC3 CORE
3DWC3- USB3 CONTROLLER 3DWC3- USB3 CONTROLLER
4 4
5Required properties: 5Required properties:
6 - compatible: must be "synopsys,dwc3" 6 - compatible: must be "snps,dwc3"
7 - reg : Address and length of the register set for the device 7 - reg : Address and length of the register set for the device
8 - interrupts: Interrupts used by the dwc3 controller. 8 - interrupts: Interrupts used by the dwc3 controller.
9 - usb-phy : array of phandle for the PHY device 9 - usb-phy : array of phandle for the PHY device. The first element
10 in the array is expected to be a handle to the USB2/HS PHY and
11 the second element is expected to be a handle to the USB3/SS PHY
10 12
11Optional properties: 13Optional properties:
12 - tx-fifo-resize: determines if the FIFO *has* to be reallocated. 14 - tx-fifo-resize: determines if the FIFO *has* to be reallocated.
@@ -14,7 +16,7 @@ Optional properties:
14This is usually a subnode to DWC3 glue to which it is connected. 16This is usually a subnode to DWC3 glue to which it is connected.
15 17
16dwc3@4a030000 { 18dwc3@4a030000 {
17 compatible = "synopsys,dwc3"; 19 compatible = "snps,dwc3";
18 reg = <0x4a030000 0xcfff>; 20 reg = <0x4a030000 0xcfff>;
19 interrupts = <0 92 4> 21 interrupts = <0 92 4>
20 usb-phy = <&usb2_phy>, <&usb3,phy>; 22 usb-phy = <&usb2_phy>, <&usb3,phy>;
diff --git a/Documentation/devicetree/bindings/usb/generic.txt b/Documentation/devicetree/bindings/usb/generic.txt
new file mode 100644
index 000000000000..477d5bb5e51c
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/generic.txt
@@ -0,0 +1,24 @@
1Generic USB Properties
2
3Optional properties:
4 - maximum-speed: tells USB controllers we want to work up to a certain
5 speed. Valid arguments are "super-speed", "high-speed",
6 "full-speed" and "low-speed". In case this isn't passed
7 via DT, USB controllers should default to their maximum
8 HW capability.
9 - dr_mode: tells Dual-Role USB controllers that we want to work on a
10 particular mode. Valid arguments are "host",
11 "peripheral" and "otg". In case this attribute isn't
12 passed via DT, USB DRD controllers should default to
13 OTG.
14
15This is an attribute to a USB controller such as:
16
17dwc3@4a030000 {
18 compatible = "synopsys,dwc3";
19 reg = <0x4a030000 0xcfff>;
20 interrupts = <0 92 4>
21 usb-phy = <&usb2_phy>, <&usb3,phy>;
22 maximum-speed = "super-speed";
23 dr_mode = "otg";
24};
diff --git a/Documentation/devicetree/bindings/usb/msm-hsusb.txt b/Documentation/devicetree/bindings/usb/msm-hsusb.txt
new file mode 100644
index 000000000000..5ea26c631e3a
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/msm-hsusb.txt
@@ -0,0 +1,17 @@
1MSM SoC HSUSB controllers
2
3EHCI
4
5Required properties:
6- compatible: Should contain "qcom,ehci-host"
7- regs: offset and length of the register set in the memory map
8- usb-phy: phandle for the PHY device
9
10Example EHCI controller device node:
11
12 ehci: ehci@f9a55000 {
13 compatible = "qcom,ehci-host";
14 reg = <0xf9a55000 0x400>;
15 usb-phy = <&usb_otg>;
16 };
17
diff --git a/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt b/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt
index c4c9e9e664aa..ba797d3e6326 100644
--- a/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt
+++ b/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt
@@ -3,7 +3,7 @@ Tegra SOC USB PHY
3The device node for Tegra SOC USB PHY: 3The device node for Tegra SOC USB PHY:
4 4
5Required properties : 5Required properties :
6 - compatible : Should be "nvidia,tegra20-usb-phy". 6 - compatible : Should be "nvidia,tegra<chip>-usb-phy".
7 - reg : Defines the following set of registers, in the order listed: 7 - reg : Defines the following set of registers, in the order listed:
8 - The PHY's own register set. 8 - The PHY's own register set.
9 Always present. 9 Always present.
@@ -24,17 +24,26 @@ Required properties :
24Required properties for phy_type == ulpi: 24Required properties for phy_type == ulpi:
25 - nvidia,phy-reset-gpio : The GPIO used to reset the PHY. 25 - nvidia,phy-reset-gpio : The GPIO used to reset the PHY.
26 26
27Required PHY timing params for utmi phy: 27Required PHY timing params for utmi phy, for all chips:
28 - nvidia,hssync-start-delay : Number of 480 Mhz clock cycles to wait before 28 - nvidia,hssync-start-delay : Number of 480 Mhz clock cycles to wait before
29 start of sync launches RxActive 29 start of sync launches RxActive
30 - nvidia,elastic-limit : Variable FIFO Depth of elastic input store 30 - nvidia,elastic-limit : Variable FIFO Depth of elastic input store
31 - nvidia,idle-wait-delay : Number of 480 Mhz clock cycles of idle to wait 31 - nvidia,idle-wait-delay : Number of 480 Mhz clock cycles of idle to wait
32 before declare IDLE. 32 before declare IDLE.
33 - nvidia,term-range-adj : Range adjusment on terminations 33 - nvidia,term-range-adj : Range adjusment on terminations
34 - nvidia,xcvr-setup : HS driver output control 34 - Either one of the following for HS driver output control:
35 - nvidia,xcvr-setup : integer, uses the provided value.
36 - nvidia,xcvr-setup-use-fuses : boolean, indicates that the value is read
37 from the on-chip fuses
38 If both are provided, nvidia,xcvr-setup-use-fuses takes precedence.
35 - nvidia,xcvr-lsfslew : LS falling slew rate control. 39 - nvidia,xcvr-lsfslew : LS falling slew rate control.
36 - nvidia,xcvr-lsrslew : LS rising slew rate control. 40 - nvidia,xcvr-lsrslew : LS rising slew rate control.
37 41
42Required PHY timing params for utmi phy, only on Tegra30 and above:
43 - nvidia,xcvr-hsslew : HS slew rate control.
44 - nvidia,hssquelch-level : HS squelch detector level.
45 - nvidia,hsdiscon-level : HS disconnect detector level.
46
38Optional properties: 47Optional properties:
39 - nvidia,has-legacy-mode : boolean indicates whether this controller can 48 - nvidia,has-legacy-mode : boolean indicates whether this controller can
40 operate in legacy mode (as APX 2500 / 2600). In legacy mode some 49 operate in legacy mode (as APX 2500 / 2600). In legacy mode some
@@ -48,5 +57,5 @@ Optional properties:
48 peripheral means it is device controller 57 peripheral means it is device controller
49 otg means it can operate as either ("on the go") 58 otg means it can operate as either ("on the go")
50 59
51Required properties for dr_mode == otg: 60VBUS control (required for dr_mode == otg, optional for dr_mode == host):
52 - vbus-supply: regulator for VBUS 61 - vbus-supply: regulator for VBUS
diff --git a/Documentation/devicetree/bindings/usb/omap-usb.txt b/Documentation/devicetree/bindings/usb/omap-usb.txt
index 57e71f6817d0..090e5e22bd2b 100644
--- a/Documentation/devicetree/bindings/usb/omap-usb.txt
+++ b/Documentation/devicetree/bindings/usb/omap-usb.txt
@@ -3,9 +3,6 @@ OMAP GLUE AND OTHER OMAP SPECIFIC COMPONENTS
3OMAP MUSB GLUE 3OMAP MUSB GLUE
4 - compatible : Should be "ti,omap4-musb" or "ti,omap3-musb" 4 - compatible : Should be "ti,omap4-musb" or "ti,omap3-musb"
5 - ti,hwmods : must be "usb_otg_hs" 5 - ti,hwmods : must be "usb_otg_hs"
6 - ti,has-mailbox : to specify that omap uses an external mailbox
7 (in control module) to communicate with the musb core during device connect
8 and disconnect.
9 - multipoint : Should be "1" indicating the musb controller supports 6 - multipoint : Should be "1" indicating the musb controller supports
10 multipoint. This is a MUSB configuration-specific setting. 7 multipoint. This is a MUSB configuration-specific setting.
11 - num-eps : Specifies the number of endpoints. This is also a 8 - num-eps : Specifies the number of endpoints. This is also a
@@ -19,6 +16,9 @@ OMAP MUSB GLUE
19 - power : Should be "50". This signifies the controller can supply up to 16 - power : Should be "50". This signifies the controller can supply up to
20 100mA when operating in host mode. 17 100mA when operating in host mode.
21 - usb-phy : the phandle for the PHY device 18 - usb-phy : the phandle for the PHY device
19 - phys : the phandle for the PHY device (used by generic PHY framework)
20 - phy-names : the names of the PHY corresponding to the PHYs present in the
21 *phy* phandle.
22 22
23Optional properties: 23Optional properties:
24 - 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
@@ -28,11 +28,12 @@ SOC specific device node entry
28usb_otg_hs: usb_otg_hs@4a0ab000 { 28usb_otg_hs: usb_otg_hs@4a0ab000 {
29 compatible = "ti,omap4-musb"; 29 compatible = "ti,omap4-musb";
30 ti,hwmods = "usb_otg_hs"; 30 ti,hwmods = "usb_otg_hs";
31 ti,has-mailbox;
32 multipoint = <1>; 31 multipoint = <1>;
33 num-eps = <16>; 32 num-eps = <16>;
34 ram-bits = <12>; 33 ram-bits = <12>;
35 ctrl-module = <&omap_control_usb>; 34 ctrl-module = <&omap_control_usb>;
35 phys = <&usb2_phy>;
36 phy-names = "usb2-phy";
36}; 37};
37 38
38Board specific device node entry 39Board specific device node entry
@@ -53,6 +54,11 @@ OMAP DWC3 GLUE
53 It should be set to "1" for HW mode and "2" for SW mode. 54 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 - ranges: the child address space are mapped 1:1 onto the parent address space
55 56
57Optional Properties:
58 - extcon : phandle for the extcon device omap dwc3 uses to detect
59 connect/disconnect events.
60 - vbus-supply : phandle to the regulator device tree node if needed.
61
56Sub-nodes: 62Sub-nodes:
57The dwc3 core should be added as subnode to omap dwc3 glue. 63The dwc3 core should be added as subnode to omap dwc3 glue.
58- dwc3 : 64- dwc3 :
@@ -73,22 +79,22 @@ omap_dwc3 {
73OMAP CONTROL USB 79OMAP CONTROL USB
74 80
75Required properties: 81Required properties:
76 - compatible: Should be "ti,omap-control-usb" 82 - compatible: Should be one of
83 "ti,control-phy-otghs" - if it has otghs_control mailbox register as on OMAP4.
84 "ti,control-phy-usb2" - if it has Power down bit in control_dev_conf register
85 e.g. USB2_PHY on OMAP5.
86 "ti,control-phy-pipe3" - if it has DPLL and individual Rx & Tx power control
87 e.g. USB3 PHY and SATA PHY on OMAP5.
88 "ti,control-phy-dra7usb2" - if it has power down register like USB2 PHY on
89 DRA7 platform.
77 - reg : Address and length of the register set for the device. It contains 90 - reg : Address and length of the register set for the device. It contains
78 the address of "control_dev_conf" and "otghs_control" or "phy_power_usb" 91 the address of "otghs_control" for control-phy-otghs or "power" register
79 depending upon omap4 or omap5. 92 for other types.
80 - reg-names: The names of the register addresses corresponding to the registers 93 - reg-names: should be "otghs_control" control-phy-otghs and "power" for
81 filled in "reg". 94 other types.
82 - ti,type: This is used to differentiate whether the control module has
83 usb mailbox or usb3 phy power. omap4 has usb mailbox in control module to
84 notify events to the musb core and omap5 has usb3 phy power register to
85 power on usb3 phy. Should be "1" if it has mailbox and "2" if it has usb3
86 phy power.
87 95
88omap_control_usb: omap-control-usb@4a002300 { 96omap_control_usb: omap-control-usb@4a002300 {
89 compatible = "ti,omap-control-usb"; 97 compatible = "ti,control-phy-otghs";
90 reg = <0x4a002300 0x4>, 98 reg = <0x4a00233c 0x4>;
91 <0x4a00233c 0x4>; 99 reg-names = "otghs_control";
92 reg-names = "control_dev_conf", "otghs_control";
93 ti,type = <1>;
94}; 100};
diff --git a/Documentation/devicetree/bindings/usb/samsung-hsotg.txt b/Documentation/devicetree/bindings/usb/samsung-hsotg.txt
new file mode 100644
index 000000000000..b83d428a265e
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/samsung-hsotg.txt
@@ -0,0 +1,40 @@
1Samsung High Speed USB OTG controller
2-----------------------------
3
4The Samsung HSOTG IP can be found on Samsung SoCs, from S3C6400 onwards.
5It gives functionality of OTG-compliant USB 2.0 host and device with
6support for USB 2.0 high-speed (480Mbps) and full-speed (12 Mbps)
7operation.
8
9Currently only device mode is supported.
10
11Binding details
12-----
13
14Required properties:
15- compatible: "samsung,s3c6400-hsotg" should be used for all currently
16 supported SoC,
17- interrupt-parent: phandle for the interrupt controller to which the
18 interrupt signal of the HSOTG block is routed,
19- interrupts: specifier of interrupt signal of interrupt controller,
20 according to bindings of interrupt controller,
21- clocks: contains an array of clock specifiers:
22 - first entry: OTG clock
23- clock-names: contains array of clock names:
24 - first entry: must be "otg"
25- vusb_d-supply: phandle to voltage regulator of digital section,
26- vusb_a-supply: phandle to voltage regulator of analog section.
27
28Example
29-----
30
31 hsotg@12480000 {
32 compatible = "samsung,s3c6400-hsotg";
33 reg = <0x12480000 0x20000>;
34 interrupts = <0 71 0>;
35 clocks = <&clock 305>;
36 clock-names = "otg";
37 vusb_d-supply = <&vusb_reg>;
38 vusb_a-supply = <&vusbdac_reg>;
39 };
40
diff --git a/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt b/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt
index d7e272671c7e..1bd37faba05b 100644
--- a/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt
+++ b/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt
@@ -15,7 +15,7 @@ Optional properties:
15 15
16- vcc-supply: phandle to the regulator that provides RESET to the PHY. 16- vcc-supply: phandle to the regulator that provides RESET to the PHY.
17 17
18- reset-supply: phandle to the regulator that provides power to the PHY. 18- reset-gpios: Should specify the GPIO for reset.
19 19
20Example: 20Example:
21 21
@@ -25,10 +25,9 @@ Example:
25 clocks = <&osc 0>; 25 clocks = <&osc 0>;
26 clock-names = "main_clk"; 26 clock-names = "main_clk";
27 vcc-supply = <&hsusb1_vcc_regulator>; 27 vcc-supply = <&hsusb1_vcc_regulator>;
28 reset-supply = <&hsusb1_reset_regulator>; 28 reset-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
29 }; 29 };
30 30
31hsusb1_phy is a NOP USB PHY device that gets its clock from an oscillator 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. 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 33hsusb1_vcc_regulator provides power to the PHY and GPIO 7 controls RESET.
34controls RESET.
diff --git a/Documentation/devicetree/bindings/usb/usb-phy.txt b/Documentation/devicetree/bindings/usb/usb-phy.txt
index 61496f5cb095..c0245c888982 100644
--- a/Documentation/devicetree/bindings/usb/usb-phy.txt
+++ b/Documentation/devicetree/bindings/usb/usb-phy.txt
@@ -5,6 +5,8 @@ OMAP USB2 PHY
5Required properties: 5Required properties:
6 - compatible: Should be "ti,omap-usb2" 6 - compatible: Should be "ti,omap-usb2"
7 - reg : Address and length of the register set for the device. 7 - reg : Address and length of the register set for the device.
8 - #phy-cells: determine the number of cells that should be given in the
9 phandle while referencing this phy.
8 10
9Optional properties: 11Optional properties:
10 - ctrl-module : phandle of the control module used by PHY driver to power on 12 - ctrl-module : phandle of the control module used by PHY driver to power on
@@ -16,6 +18,7 @@ usb2phy@4a0ad080 {
16 compatible = "ti,omap-usb2"; 18 compatible = "ti,omap-usb2";
17 reg = <0x4a0ad080 0x58>; 19 reg = <0x4a0ad080 0x58>;
18 ctrl-module = <&omap_control_usb>; 20 ctrl-module = <&omap_control_usb>;
21 #phy-cells = <0>;
19}; 22};
20 23
21OMAP USB3 PHY 24OMAP USB3 PHY
@@ -25,6 +28,8 @@ Required properties:
25 - reg : Address and length of the register set for the device. 28 - reg : Address and length of the register set for the device.
26 - reg-names: The names of the register addresses corresponding to the registers 29 - reg-names: The names of the register addresses corresponding to the registers
27 filled in "reg". 30 filled in "reg".
31 - #phy-cells: determine the number of cells that should be given in the
32 phandle while referencing this phy.
28 33
29Optional properties: 34Optional properties:
30 - ctrl-module : phandle of the control module used by PHY driver to power on 35 - ctrl-module : phandle of the control module used by PHY driver to power on
@@ -39,4 +44,5 @@ usb3phy@4a084400 {
39 <0x4a084c00 0x40>; 44 <0x4a084c00 0x40>;
40 reg-names = "phy_rx", "phy_tx", "pll_ctrl"; 45 reg-names = "phy_rx", "phy_tx", "pll_ctrl";
41 ctrl-module = <&omap_control_usb>; 46 ctrl-module = <&omap_control_usb>;
47 #phy-cells = <0>;
42}; 48};
diff --git a/Documentation/devicetree/bindings/usb/usb-xhci.txt b/Documentation/devicetree/bindings/usb/usb-xhci.txt
new file mode 100644
index 000000000000..5752df0e17a2
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/usb-xhci.txt
@@ -0,0 +1,14 @@
1USB xHCI controllers
2
3Required properties:
4 - compatible: should be "xhci-platform".
5 - reg: should contain address and length of the standard XHCI
6 register set for the device.
7 - interrupts: one XHCI interrupt should be described here.
8
9Example:
10 usb@f0931000 {
11 compatible = "xhci-platform";
12 reg = <0xf0931000 0x8c8>;
13 interrupts = <0x0 0x4e 0x0>;
14 };
diff --git a/Documentation/devicetree/bindings/usb/usb3503.txt b/Documentation/devicetree/bindings/usb/usb3503.txt
index 8c5be48b43c8..a018da4a7ad7 100644
--- a/Documentation/devicetree/bindings/usb/usb3503.txt
+++ b/Documentation/devicetree/bindings/usb/usb3503.txt
@@ -1,8 +1,11 @@
1SMSC USB3503 High-Speed Hub Controller 1SMSC USB3503 High-Speed Hub Controller
2 2
3Required properties: 3Required properties:
4- compatible: Should be "smsc,usb3503". 4- compatible: Should be "smsc,usb3503" or "smsc,usb3503a".
5- reg: Specifies the i2c slave address, it should be 0x08. 5
6Optional properties:
7- reg: Specifies the i2c slave address, it is required and should be 0x08
8 if I2C is used.
6- connect-gpios: Should specify GPIO for connect. 9- connect-gpios: Should specify GPIO for connect.
7- disabled-ports: Should specify the ports unused. 10- disabled-ports: Should specify the ports unused.
8 '1' or '2' or '3' are availe for this property to describe the port 11 '1' or '2' or '3' are availe for this property to describe the port
diff --git a/Documentation/devicetree/bindings/usb/ux500-usb.txt b/Documentation/devicetree/bindings/usb/ux500-usb.txt
index 330d6ec15401..439a41c79afa 100644
--- a/Documentation/devicetree/bindings/usb/ux500-usb.txt
+++ b/Documentation/devicetree/bindings/usb/ux500-usb.txt
@@ -15,7 +15,7 @@ Optional properties:
15Example: 15Example:
16 16
17usb_per5@a03e0000 { 17usb_per5@a03e0000 {
18 compatible = "stericsson,db8500-musb", "mentor,musb"; 18 compatible = "stericsson,db8500-musb";
19 reg = <0xa03e0000 0x10000>; 19 reg = <0xa03e0000 0x10000>;
20 interrupts = <0 23 0x4>; 20 interrupts = <0 23 0x4>;
21 interrupt-names = "mc"; 21 interrupt-names = "mc";
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
index 366ce9b87240..ce95ed1c6d3e 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -7,14 +7,20 @@ ad Avionic Design GmbH
7adi Analog Devices, Inc. 7adi Analog Devices, Inc.
8aeroflexgaisler Aeroflex Gaisler AB 8aeroflexgaisler Aeroflex Gaisler AB
9ak Asahi Kasei Corp. 9ak Asahi Kasei Corp.
10altr Altera Corp.
10amcc Applied Micro Circuits Corporation (APM, formally AMCC) 11amcc Applied Micro Circuits Corporation (APM, formally AMCC)
11apm Applied Micro Circuits Corporation (APM) 12apm Applied Micro Circuits Corporation (APM)
12arm ARM Ltd. 13arm ARM Ltd.
13atmel Atmel Corporation 14atmel Atmel Corporation
15auo AU Optronics Corporation
16avago Avago Technologies
14bosch Bosch Sensortec GmbH 17bosch Bosch Sensortec GmbH
15brcm Broadcom Corporation 18brcm Broadcom Corporation
19capella Capella Microsystems, Inc
16cavium Cavium, Inc. 20cavium Cavium, Inc.
21cdns Cadence Design Systems Inc.
17chrp Common Hardware Reference Platform 22chrp Common Hardware Reference Platform
23chunghwa Chunghwa Picture Tubes Ltd.
18cirrus Cirrus Logic, Inc. 24cirrus Cirrus Logic, Inc.
19cortina Cortina Systems, Inc. 25cortina Cortina Systems, Inc.
20dallas Maxim Integrated Products (formerly Dallas Semiconductor) 26dallas Maxim Integrated Products (formerly Dallas Semiconductor)
@@ -36,12 +42,15 @@ linux Linux-specific binding
36lsi LSI Corp. (LSI Logic) 42lsi LSI Corp. (LSI Logic)
37marvell Marvell Technology Group Ltd. 43marvell Marvell Technology Group Ltd.
38maxim Maxim Integrated Products 44maxim Maxim Integrated Products
45microchip Microchip Technology Inc.
39mosaixtech Mosaix Technologies, Inc. 46mosaixtech Mosaix Technologies, Inc.
40national National Semiconductor 47national National Semiconductor
41nintendo Nintendo 48nintendo Nintendo
42nvidia NVIDIA 49nvidia NVIDIA
43nxp NXP Semiconductors 50nxp NXP Semiconductors
44onnn ON Semiconductor Corp. 51onnn ON Semiconductor Corp.
52panasonic Panasonic Corporation
53phytec PHYTEC Messtechnik GmbH
45picochip Picochip Ltd 54picochip Picochip Ltd
46powervr PowerVR (deprecated, use img) 55powervr PowerVR (deprecated, use img)
47qca Qualcomm Atheros, Inc. 56qca Qualcomm Atheros, Inc.
@@ -61,12 +70,12 @@ snps Synopsys, Inc.
61st STMicroelectronics 70st STMicroelectronics
62ste ST-Ericsson 71ste ST-Ericsson
63stericsson ST-Ericsson 72stericsson ST-Ericsson
64toumaz Toumaz
65ti Texas Instruments 73ti Texas Instruments
66toshiba Toshiba Corporation 74toshiba Toshiba Corporation
75toumaz Toumaz
67v3 V3 Semiconductor 76v3 V3 Semiconductor
68via VIA Technologies, Inc. 77via VIA Technologies, Inc.
78winbond Winbond Electronics corp.
69wlf Wolfson Microelectronics 79wlf Wolfson Microelectronics
70wm Wondermedia Technologies, Inc. 80wm Wondermedia Technologies, Inc.
71winbond Winbond Electronics corp.
72xlnx Xilinx 81xlnx Xilinx
diff --git a/Documentation/devicetree/bindings/video/exynos_dp.txt b/Documentation/devicetree/bindings/video/exynos_dp.txt
index 84f10c16cb38..3289d76a21d0 100644
--- a/Documentation/devicetree/bindings/video/exynos_dp.txt
+++ b/Documentation/devicetree/bindings/video/exynos_dp.txt
@@ -6,10 +6,10 @@ We use two nodes:
6 -dptx-phy node(defined inside dp-controller node) 6 -dptx-phy node(defined inside dp-controller node)
7 7
8For the DP-PHY initialization, we use the dptx-phy node. 8For the DP-PHY initialization, we use the dptx-phy node.
9Required properties for dptx-phy: 9Required properties for dptx-phy: deprecated, use phys and phy-names
10 -reg: 10 -reg: deprecated
11 Base address of DP PHY register. 11 Base address of DP PHY register.
12 -samsung,enable-mask: 12 -samsung,enable-mask: deprecated
13 The bit-mask used to enable/disable DP PHY. 13 The bit-mask used to enable/disable DP PHY.
14 14
15For the Panel initialization, we read data from dp-controller node. 15For the Panel initialization, we read data from dp-controller node.
@@ -27,6 +27,10 @@ Required properties for dp-controller:
27 from common clock binding: Shall be "dp". 27 from common clock binding: Shall be "dp".
28 -interrupt-parent: 28 -interrupt-parent:
29 phandle to Interrupt combiner node. 29 phandle to Interrupt combiner node.
30 -phys:
31 from general PHY binding: the phandle for the PHY device.
32 -phy-names:
33 from general PHY binding: Should be "dp".
30 -samsung,color-space: 34 -samsung,color-space:
31 input video data format. 35 input video data format.
32 COLOR_RGB = 0, COLOR_YCBCR422 = 1, COLOR_YCBCR444 = 2 36 COLOR_RGB = 0, COLOR_YCBCR422 = 1, COLOR_YCBCR444 = 2
@@ -68,11 +72,8 @@ SOC specific portion:
68 clocks = <&clock 342>; 72 clocks = <&clock 342>;
69 clock-names = "dp"; 73 clock-names = "dp";
70 74
71 dptx-phy { 75 phys = <&dp_phy>;
72 reg = <0x10040720>; 76 phy-names = "dp";
73 samsung,enable-mask = <1>;
74 };
75
76 }; 77 };
77 78
78Board Specific portion: 79Board Specific portion:
diff --git a/Documentation/devicetree/bindings/video/exynos_hdmi.txt b/Documentation/devicetree/bindings/video/exynos_hdmi.txt
index 323983be3c30..50decf8e1b90 100644
--- a/Documentation/devicetree/bindings/video/exynos_hdmi.txt
+++ b/Documentation/devicetree/bindings/video/exynos_hdmi.txt
@@ -12,7 +12,19 @@ Required properties:
12 a) phandle of the gpio controller node. 12 a) phandle of the gpio controller node.
13 b) pin number within the gpio controller. 13 b) pin number within the gpio controller.
14 c) optional flags and pull up/down. 14 c) optional flags and pull up/down.
15 15- clocks: list of clock IDs from SoC clock driver.
16 a) hdmi: Gate of HDMI IP bus clock.
17 b) sclk_hdmi: Gate of HDMI special clock.
18 c) sclk_pixel: Pixel special clock, one of the two possible inputs of
19 HDMI clock mux.
20 d) sclk_hdmiphy: HDMI PHY clock output, one of two possible inputs of
21 HDMI clock mux.
22 e) mout_hdmi: It is required by the driver to switch between the 2
23 parents i.e. sclk_pixel and sclk_hdmiphy. If hdmiphy is stable
24 after configuration, parent is set to sclk_hdmiphy else
25 sclk_pixel.
26- clock-names: aliases as per driver requirements for above clock IDs:
27 "hdmi", "sclk_hdmi", "sclk_pixel", "sclk_hdmiphy" and "mout_hdmi".
16Example: 28Example:
17 29
18 hdmi { 30 hdmi {
diff --git a/Documentation/devicetree/bindings/video/exynos_mixer.txt b/Documentation/devicetree/bindings/video/exynos_mixer.txt
index 3334b0a8e343..7bfde9c9d658 100644
--- a/Documentation/devicetree/bindings/video/exynos_mixer.txt
+++ b/Documentation/devicetree/bindings/video/exynos_mixer.txt
@@ -10,6 +10,10 @@ Required properties:
10- reg: physical base address of the mixer and length of memory mapped 10- reg: physical base address of the mixer and length of memory mapped
11 region. 11 region.
12- interrupts: interrupt number to the cpu. 12- interrupts: interrupt number to the cpu.
13- clocks: list of clock IDs from SoC clock driver.
14 a) mixer: Gate of Mixer IP bus clock.
15 b) sclk_hdmi: HDMI Special clock, one of the two possible inputs of
16 mixer mux.
13 17
14Example: 18Example:
15 19
diff --git a/Documentation/devicetree/bindings/video/simple-framebuffer.txt b/Documentation/devicetree/bindings/video/simple-framebuffer.txt
index 3ea460583111..70c26f3a5b9a 100644
--- a/Documentation/devicetree/bindings/video/simple-framebuffer.txt
+++ b/Documentation/devicetree/bindings/video/simple-framebuffer.txt
@@ -12,6 +12,7 @@ Required properties:
12- stride: The number of bytes in each line of the framebuffer. 12- stride: The number of bytes in each line of the framebuffer.
13- format: The format of the framebuffer surface. Valid values are: 13- format: The format of the framebuffer surface. Valid values are:
14 - r5g6b5 (16-bit pixels, d[15:11]=r, d[10:5]=g, d[4:0]=b). 14 - r5g6b5 (16-bit pixels, d[15:11]=r, d[10:5]=g, d[4:0]=b).
15 - a8b8g8r8 (32-bit pixels, d[31:24]=a, d[23:16]=b, d[15:8]=g, d[7:0]=r).
15 16
16Example: 17Example:
17 18
diff --git a/Documentation/devicetree/bindings/watchdog/sun4i-wdt.txt b/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt
index ecd650adff31..e39cb266c8f4 100644
--- a/Documentation/devicetree/bindings/watchdog/sun4i-wdt.txt
+++ b/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt
@@ -1,8 +1,9 @@
1Allwinner sun4i Watchdog timer 1Allwinner SoCs Watchdog timer
2 2
3Required properties: 3Required properties:
4 4
5- compatible : should be "allwinner,sun4i-wdt" 5- compatible : should be "allwinner,<soc-family>-wdt", the currently supported
6 SoC families being sun4i and sun6i
6- reg : Specifies base physical address and size of the registers. 7- reg : Specifies base physical address and size of the registers.
7 8
8Example: 9Example:
diff --git a/Documentation/dma-buf-sharing.txt b/Documentation/dma-buf-sharing.txt
index 0b23261561d2..505e71172ae7 100644
--- a/Documentation/dma-buf-sharing.txt
+++ b/Documentation/dma-buf-sharing.txt
@@ -321,7 +321,7 @@ Access to a dma_buf from the kernel context involves three steps:
321 321
322 When the importer is done accessing the range specified in begin_cpu_access, 322 When the importer is done accessing the range specified in begin_cpu_access,
323 it needs to announce this to the exporter (to facilitate cache flushing and 323 it needs to announce this to the exporter (to facilitate cache flushing and
324 unpinning of any pinned resources). The result of of any dma_buf kmap calls 324 unpinning of any pinned resources). The result of any dma_buf kmap calls
325 after end_cpu_access is undefined. 325 after end_cpu_access is undefined.
326 326
327 Interface: 327 Interface:
@@ -407,6 +407,18 @@ Being able to mmap an export dma-buf buffer object has 2 main use-cases:
407 interesting ways depending upong the exporter (if userspace starts depending 407 interesting ways depending upong the exporter (if userspace starts depending
408 upon this implicit synchronization). 408 upon this implicit synchronization).
409 409
410Other Interfaces Exposed to Userspace on the dma-buf FD
411------------------------------------------------------
412
413- Since kernel 3.12 the dma-buf FD supports the llseek system call, but only
414 with offset=0 and whence=SEEK_END|SEEK_SET. SEEK_SET is supported to allow
415 the usual size discover pattern size = SEEK_END(0); SEEK_SET(0). Every other
416 llseek operation will report -EINVAL.
417
418 If llseek on dma-buf FDs isn't support the kernel will report -ESPIPE for all
419 cases. Userspace can use this to detect support for discovering the dma-buf
420 size using llseek.
421
410Miscellaneous notes 422Miscellaneous notes
411------------------- 423-------------------
412 424
diff --git a/Documentation/dmatest.txt b/Documentation/dmatest.txt
index 132a094c7bc3..a2b5663eae26 100644
--- a/Documentation/dmatest.txt
+++ b/Documentation/dmatest.txt
@@ -16,15 +16,16 @@ be built as module or inside kernel. Let's consider those cases.
16 Part 2 - When dmatest is built as a module... 16 Part 2 - When dmatest is built as a module...
17 17
18After mounting debugfs and loading the module, the /sys/kernel/debug/dmatest 18After mounting debugfs and loading the module, the /sys/kernel/debug/dmatest
19folder with nodes will be created. They are the same as module parameters with 19folder with nodes will be created. There are two important files located. First
20addition of the 'run' node that controls run and stop phases of the test. 20is the 'run' node that controls run and stop phases of the test, and the second
21one, 'results', is used to get the test case results.
21 22
22Note that in this case test will not run on load automatically. 23Note that in this case test will not run on load automatically.
23 24
24Example of usage: 25Example of usage:
25 % echo dma0chan0 > /sys/kernel/debug/dmatest/channel 26 % echo dma0chan0 > /sys/module/dmatest/parameters/channel
26 % echo 2000 > /sys/kernel/debug/dmatest/timeout 27 % echo 2000 > /sys/module/dmatest/parameters/timeout
27 % echo 1 > /sys/kernel/debug/dmatest/iterations 28 % echo 1 > /sys/module/dmatest/parameters/iterations
28 % echo 1 > /sys/kernel/debug/dmatest/run 29 % echo 1 > /sys/kernel/debug/dmatest/run
29 30
30Hint: available channel list could be extracted by running the following 31Hint: available channel list could be extracted by running the following
@@ -55,8 +56,8 @@ for the first performed test. After user gets a control, the test could be
55re-run with the same or different parameters. For the details see the above 56re-run with the same or different parameters. For the details see the above
56section "Part 2 - When dmatest is built as a module..." 57section "Part 2 - When dmatest is built as a module..."
57 58
58In both cases the module parameters are used as initial values for the test case. 59In both cases the module parameters are used as the actual values for the test
59You always could check them at run-time by running 60case. You always could check them at run-time by running
60 % grep -H . /sys/module/dmatest/parameters/* 61 % grep -H . /sys/module/dmatest/parameters/*
61 62
62 Part 4 - Gathering the test results 63 Part 4 - Gathering the test results
diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt
index b4671459857f..5bdc8cb5fc28 100644
--- a/Documentation/driver-model/devres.txt
+++ b/Documentation/driver-model/devres.txt
@@ -237,6 +237,12 @@ MEM
237 devm_kzalloc() 237 devm_kzalloc()
238 devm_kfree() 238 devm_kfree()
239 239
240IIO
241 devm_iio_device_alloc()
242 devm_iio_device_free()
243 devm_iio_trigger_alloc()
244 devm_iio_trigger_free()
245
240IO region 246IO region
241 devm_request_region() 247 devm_request_region()
242 devm_request_mem_region() 248 devm_request_mem_region()
@@ -277,6 +283,7 @@ REGULATOR
277 devm_regulator_get() 283 devm_regulator_get()
278 devm_regulator_put() 284 devm_regulator_put()
279 devm_regulator_bulk_get() 285 devm_regulator_bulk_get()
286 devm_regulator_register()
280 287
281CLOCK 288CLOCK
282 devm_clk_get() 289 devm_clk_get()
@@ -293,3 +300,9 @@ PWM
293PHY 300PHY
294 devm_usb_get_phy() 301 devm_usb_get_phy()
295 devm_usb_put_phy() 302 devm_usb_put_phy()
303
304SLAVE DMA ENGINE
305 devm_acpi_dma_controller_register()
306
307SPI
308 devm_spi_register_master()
diff --git a/Documentation/early-userspace/README b/Documentation/early-userspace/README
index 661a73fad399..93e63a9af30b 100644
--- a/Documentation/early-userspace/README
+++ b/Documentation/early-userspace/README
@@ -83,8 +83,7 @@ Where's this all leading?
83 83
84The klibc distribution contains some of the necessary software to make 84The klibc distribution contains some of the necessary software to make
85early userspace useful. The klibc distribution is currently 85early userspace useful. The klibc distribution is currently
86maintained separately from the kernel, but this may change early in 86maintained separately from the kernel.
87the 2.7 era (it missed the boat for 2.5).
88 87
89You can obtain somewhat infrequent snapshots of klibc from 88You can obtain somewhat infrequent snapshots of klibc from
90ftp://ftp.kernel.org/pub/linux/libs/klibc/ 89ftp://ftp.kernel.org/pub/linux/libs/klibc/
diff --git a/Documentation/x86/efi-stub.txt b/Documentation/efi-stub.txt
index 44e6bb6ead10..44e6bb6ead10 100644
--- a/Documentation/x86/efi-stub.txt
+++ b/Documentation/efi-stub.txt
diff --git a/Documentation/extcon/porting-android-switch-class b/Documentation/extcon/porting-android-switch-class
index eb0fa5f4fe88..5377f6317961 100644
--- a/Documentation/extcon/porting-android-switch-class
+++ b/Documentation/extcon/porting-android-switch-class
@@ -25,8 +25,10 @@ MyungJoo Ham <myungjoo.ham@samsung.com>
25 @print_state: no change but type change (switch_dev->extcon_dev) 25 @print_state: no change but type change (switch_dev->extcon_dev)
26 26
27- switch_dev_register(sdev, dev) 27- switch_dev_register(sdev, dev)
28 => extcon_dev_register(edev, dev) 28 => extcon_dev_register(edev)
29 : no change but type change (sdev->edev) 29 : type change (sdev->edev)
30 : remove second param('dev'). if edev has parent device, should store
31 'dev' to 'edev.dev.parent' before registering extcon device
30- switch_dev_unregister(sdev) 32- switch_dev_unregister(sdev)
31 => extcon_dev_unregister(edev) 33 => extcon_dev_unregister(edev)
32 : no change but type change (sdev->edev) 34 : no change but type change (sdev->edev)
diff --git a/Documentation/fb/fbcon.txt b/Documentation/fb/fbcon.txt
index 99ea58e65eff..4a9739abc860 100644
--- a/Documentation/fb/fbcon.txt
+++ b/Documentation/fb/fbcon.txt
@@ -150,7 +150,7 @@ C. Boot options
150 150
151C. Attaching, Detaching and Unloading 151C. Attaching, Detaching and Unloading
152 152
153Before going on on how to attach, detach and unload the framebuffer console, an 153Before going on how to attach, detach and unload the framebuffer console, an
154illustration of the dependencies may help. 154illustration of the dependencies may help.
155 155
156The console layer, as with most subsystems, needs a driver that interfaces with 156The console layer, as with most subsystems, needs a driver that interfaces with
diff --git a/Documentation/fb/viafb.modes b/Documentation/fb/viafb.modes
index 02e5b487f00e..2a547da2e5cc 100644
--- a/Documentation/fb/viafb.modes
+++ b/Documentation/fb/viafb.modes
@@ -571,7 +571,7 @@ mode "640x480-60"
571# 160 chars 800 lines 571# 160 chars 800 lines
572# Blank Time 4.798 us 0.564 ms 572# Blank Time 4.798 us 0.564 ms
573# 50 chars 28 lines 573# 50 chars 28 lines
574# Polarity negtive positive 574# Polarity negative positive
575# 575#
576 mode "1280x800-60" 576 mode "1280x800-60"
577# D: 83.500 MHz, H: 49.702 kHz, V: 60.00 Hz 577# D: 83.500 MHz, H: 49.702 kHz, V: 60.00 Hz
diff --git a/Documentation/fb/viafb.txt b/Documentation/fb/viafb.txt
index 444e34b52ae1..1cb2462a71ce 100644
--- a/Documentation/fb/viafb.txt
+++ b/Documentation/fb/viafb.txt
@@ -32,7 +32,7 @@
32 Start viafb with default settings: 32 Start viafb with default settings:
33 #modprobe viafb 33 #modprobe viafb
34 34
35 Start viafb with with user options: 35 Start viafb with user options:
36 #modprobe viafb viafb_mode=800x600 viafb_bpp=16 viafb_refresh=60 36 #modprobe viafb viafb_mode=800x600 viafb_bpp=16 viafb_refresh=60
37 viafb_active_dev=CRT+DVI viafb_dvi_port=DVP1 37 viafb_active_dev=CRT+DVI viafb_dvi_port=DVP1
38 viafb_mode1=1024x768 viafb_bpp=16 viafb_refresh1=60 38 viafb_mode1=1024x768 viafb_bpp=16 viafb_refresh1=60
diff --git a/Documentation/filesystems/btrfs.txt b/Documentation/filesystems/btrfs.txt
index b349d57b76ea..9dae59407437 100644
--- a/Documentation/filesystems/btrfs.txt
+++ b/Documentation/filesystems/btrfs.txt
@@ -87,7 +87,7 @@ Unless otherwise specified, all options default to off.
87 87
88 device=<devicepath> 88 device=<devicepath>
89 Specify a device during mount so that ioctls on the control device 89 Specify a device during mount so that ioctls on the control device
90 can be avoided. Especialy useful when trying to mount a multi-device 90 can be avoided. Especially useful when trying to mount a multi-device
91 setup as root. May be specified multiple times for multiple devices. 91 setup as root. May be specified multiple times for multiple devices.
92 92
93 discard 93 discard
diff --git a/Documentation/filesystems/caching/backend-api.txt b/Documentation/filesystems/caching/backend-api.txt
index d78bab9622c6..277d1e810670 100644
--- a/Documentation/filesystems/caching/backend-api.txt
+++ b/Documentation/filesystems/caching/backend-api.txt
@@ -299,6 +299,15 @@ performed on the denizens of the cache. These are held in a structure of type:
299 enough space in the cache to permit this. 299 enough space in the cache to permit this.
300 300
301 301
302 (*) Check coherency state of an object [mandatory]:
303
304 int (*check_consistency)(struct fscache_object *object)
305
306 This method is called to have the cache check the saved auxiliary data of
307 the object against the netfs's idea of the state. 0 should be returned
308 if they're consistent and -ESTALE otherwise. -ENOMEM and -ERESTARTSYS
309 may also be returned.
310
302 (*) Update object [mandatory]: 311 (*) Update object [mandatory]:
303 312
304 int (*update_object)(struct fscache_object *object) 313 int (*update_object)(struct fscache_object *object)
diff --git a/Documentation/filesystems/caching/netfs-api.txt b/Documentation/filesystems/caching/netfs-api.txt
index 97e6c0ecc5ef..aed6b94160b1 100644
--- a/Documentation/filesystems/caching/netfs-api.txt
+++ b/Documentation/filesystems/caching/netfs-api.txt
@@ -29,15 +29,16 @@ This document contains the following sections:
29 (6) Index registration 29 (6) Index registration
30 (7) Data file registration 30 (7) Data file registration
31 (8) Miscellaneous object registration 31 (8) Miscellaneous object registration
32 (9) Setting the data file size 32 (9) Setting the data file size
33 (10) Page alloc/read/write 33 (10) Page alloc/read/write
34 (11) Page uncaching 34 (11) Page uncaching
35 (12) Index and data file update 35 (12) Index and data file consistency
36 (13) Miscellaneous cookie operations 36 (13) Cookie enablement
37 (14) Cookie unregistration 37 (14) Miscellaneous cookie operations
38 (15) Index invalidation 38 (15) Cookie unregistration
39 (16) Data file invalidation 39 (16) Index invalidation
40 (17) FS-Cache specific page flags. 40 (17) Data file invalidation
41 (18) FS-Cache specific page flags.
41 42
42 43
43============================= 44=============================
@@ -334,7 +335,8 @@ the path to the file:
334 struct fscache_cookie * 335 struct fscache_cookie *
335 fscache_acquire_cookie(struct fscache_cookie *parent, 336 fscache_acquire_cookie(struct fscache_cookie *parent,
336 const struct fscache_object_def *def, 337 const struct fscache_object_def *def,
337 void *netfs_data); 338 void *netfs_data,
339 bool enable);
338 340
339This function creates an index entry in the index represented by parent, 341This function creates an index entry in the index represented by parent,
340filling in the index entry by calling the operations pointed to by def. 342filling in the index entry by calling the operations pointed to by def.
@@ -350,6 +352,10 @@ object needs to be created somewhere down the hierarchy. Furthermore, an index
350may be created in several different caches independently at different times. 352may be created in several different caches independently at different times.
351This is all handled transparently, and the netfs doesn't see any of it. 353This is all handled transparently, and the netfs doesn't see any of it.
352 354
355A cookie will be created in the disabled state if enabled is false. A cookie
356must be enabled to do anything with it. A disabled cookie can be enabled by
357calling fscache_enable_cookie() (see below).
358
353For example, with AFS, a cell would be added to the primary index. This index 359For example, with AFS, a cell would be added to the primary index. This index
354entry would have a dependent inode containing a volume location index for the 360entry would have a dependent inode containing a volume location index for the
355volume mappings within this cell: 361volume mappings within this cell:
@@ -357,7 +363,7 @@ volume mappings within this cell:
357 cell->cache = 363 cell->cache =
358 fscache_acquire_cookie(afs_cache_netfs.primary_index, 364 fscache_acquire_cookie(afs_cache_netfs.primary_index,
359 &afs_cell_cache_index_def, 365 &afs_cell_cache_index_def,
360 cell); 366 cell, true);
361 367
362Then when a volume location was accessed, it would be entered into the cell's 368Then when a volume location was accessed, it would be entered into the cell's
363index and an inode would be allocated that acts as a volume type and hash chain 369index and an inode would be allocated that acts as a volume type and hash chain
@@ -366,7 +372,7 @@ combination:
366 vlocation->cache = 372 vlocation->cache =
367 fscache_acquire_cookie(cell->cache, 373 fscache_acquire_cookie(cell->cache,
368 &afs_vlocation_cache_index_def, 374 &afs_vlocation_cache_index_def,
369 vlocation); 375 vlocation, true);
370 376
371And then a particular flavour of volume (R/O for example) could be added to 377And then a particular flavour of volume (R/O for example) could be added to
372that index, creating another index for vnodes (AFS inode equivalents): 378that index, creating another index for vnodes (AFS inode equivalents):
@@ -374,7 +380,7 @@ that index, creating another index for vnodes (AFS inode equivalents):
374 volume->cache = 380 volume->cache =
375 fscache_acquire_cookie(vlocation->cache, 381 fscache_acquire_cookie(vlocation->cache,
376 &afs_volume_cache_index_def, 382 &afs_volume_cache_index_def,
377 volume); 383 volume, true);
378 384
379 385
380====================== 386======================
@@ -388,7 +394,7 @@ the object definition should be something other than index type.
388 vnode->cache = 394 vnode->cache =
389 fscache_acquire_cookie(volume->cache, 395 fscache_acquire_cookie(volume->cache,
390 &afs_vnode_cache_object_def, 396 &afs_vnode_cache_object_def,
391 vnode); 397 vnode, true);
392 398
393 399
394================================= 400=================================
@@ -404,7 +410,7 @@ it would be some other type of object such as a data file.
404 xattr->cache = 410 xattr->cache =
405 fscache_acquire_cookie(vnode->cache, 411 fscache_acquire_cookie(vnode->cache,
406 &afs_xattr_cache_object_def, 412 &afs_xattr_cache_object_def,
407 xattr); 413 xattr, true);
408 414
409Miscellaneous objects might be used to store extended attributes or directory 415Miscellaneous objects might be used to store extended attributes or directory
410entries for example. 416entries for example.
@@ -433,7 +439,7 @@ to the caller. The attribute adjustment excludes read and write operations.
433 439
434 440
435===================== 441=====================
436PAGE READ/ALLOC/WRITE 442PAGE ALLOC/READ/WRITE
437===================== 443=====================
438 444
439And the sixth step is to store and retrieve pages in the cache. There are 445And the sixth step is to store and retrieve pages in the cache. There are
@@ -499,7 +505,7 @@ Else if there's a copy of the page resident in the cache:
499 (*) An argument that's 0 on success or negative for an error code. 505 (*) An argument that's 0 on success or negative for an error code.
500 506
501 If an error occurs, it should be assumed that the page contains no usable 507 If an error occurs, it should be assumed that the page contains no usable
502 data. 508 data. fscache_readpages_cancel() may need to be called.
503 509
504 end_io_func() will be called in process context if the read is results in 510 end_io_func() will be called in process context if the read is results in
505 an error, but it might be called in interrupt context if the read is 511 an error, but it might be called in interrupt context if the read is
@@ -623,6 +629,22 @@ some of the pages being read and some being allocated. Those pages will have
623been marked appropriately and will need uncaching. 629been marked appropriately and will need uncaching.
624 630
625 631
632CANCELLATION OF UNREAD PAGES
633----------------------------
634
635If one or more pages are passed to fscache_read_or_alloc_pages() but not then
636read from the cache and also not read from the underlying filesystem then
637those pages will need to have any marks and reservations removed. This can be
638done by calling:
639
640 void fscache_readpages_cancel(struct fscache_cookie *cookie,
641 struct list_head *pages);
642
643prior to returning to the caller. The cookie argument should be as passed to
644fscache_read_or_alloc_pages(). Every page in the pages list will be examined
645and any that have PG_fscache set will be uncached.
646
647
626============== 648==============
627PAGE UNCACHING 649PAGE UNCACHING
628============== 650==============
@@ -690,9 +712,18 @@ written to the cache and for the cache to finish with the page generally. No
690error is returned. 712error is returned.
691 713
692 714
693========================== 715===============================
694INDEX AND DATA FILE UPDATE 716INDEX AND DATA FILE CONSISTENCY
695========================== 717===============================
718
719To find out whether auxiliary data for an object is up to data within the
720cache, the following function can be called:
721
722 int fscache_check_consistency(struct fscache_cookie *cookie)
723
724This will call back to the netfs to check whether the auxiliary data associated
725with a cookie is correct. It returns 0 if it is and -ESTALE if it isn't; it
726may also return -ENOMEM and -ERESTARTSYS.
696 727
697To request an update of the index data for an index or other object, the 728To request an update of the index data for an index or other object, the
698following function should be called: 729following function should be called:
@@ -708,6 +739,47 @@ Note that partial updates may happen automatically at other times, such as when
708data blocks are added to a data file object. 739data blocks are added to a data file object.
709 740
710 741
742=================
743COOKIE ENABLEMENT
744=================
745
746Cookies exist in one of two states: enabled and disabled. If a cookie is
747disabled, it ignores all attempts to acquire child cookies; check, update or
748invalidate its state; allocate, read or write backing pages - though it is
749still possible to uncache pages and relinquish the cookie.
750
751The initial enablement state is set by fscache_acquire_cookie(), but the cookie
752can be enabled or disabled later. To disable a cookie, call:
753
754 void fscache_disable_cookie(struct fscache_cookie *cookie,
755 bool invalidate);
756
757If the cookie is not already disabled, this locks the cookie against other
758enable and disable ops, marks the cookie as being disabled, discards or
759invalidates any backing objects and waits for cessation of activity on any
760associated object before unlocking the cookie.
761
762All possible failures are handled internally. The caller should consider
763calling fscache_uncache_all_inode_pages() afterwards to make sure all page
764markings are cleared up.
765
766Cookies can be enabled or reenabled with:
767
768 void fscache_enable_cookie(struct fscache_cookie *cookie,
769 bool (*can_enable)(void *data),
770 void *data)
771
772If the cookie is not already enabled, this locks the cookie against other
773enable and disable ops, invokes can_enable() and, if the cookie is not an index
774cookie, will begin the procedure of acquiring backing objects.
775
776The optional can_enable() function is passed the data argument and returns a
777ruling as to whether or not enablement should actually be permitted to begin.
778
779All possible failures are handled internally. The cookie will only be marked
780as enabled if provisional backing objects are allocated.
781
782
711=============================== 783===============================
712MISCELLANEOUS COOKIE OPERATIONS 784MISCELLANEOUS COOKIE OPERATIONS
713=============================== 785===============================
@@ -753,7 +825,7 @@ COOKIE UNREGISTRATION
753To get rid of a cookie, this function should be called. 825To get rid of a cookie, this function should be called.
754 826
755 void fscache_relinquish_cookie(struct fscache_cookie *cookie, 827 void fscache_relinquish_cookie(struct fscache_cookie *cookie,
756 int retire); 828 bool retire);
757 829
758If retire is non-zero, then the object will be marked for recycling, and all 830If retire is non-zero, then the object will be marked for recycling, and all
759copies of it will be removed from all active caches in which it is present. 831copies of it will be removed from all active caches in which it is present.
diff --git a/Documentation/filesystems/cifs.txt b/Documentation/filesystems/cifs.txt
deleted file mode 100644
index 49cc923a93e3..000000000000
--- a/Documentation/filesystems/cifs.txt
+++ /dev/null
@@ -1,51 +0,0 @@
1 This is the client VFS module for the Common Internet File System
2 (CIFS) protocol which is the successor to the Server Message Block
3 (SMB) protocol, the native file sharing mechanism for most early
4 PC operating systems. CIFS is fully supported by current network
5 file servers such as Windows 2000, Windows 2003 (including
6 Windows XP) as well by Samba (which provides excellent CIFS
7 server support for Linux and many other operating systems), so
8 this network filesystem client can mount to a wide variety of
9 servers. The smbfs module should be used instead of this cifs module
10 for mounting to older SMB servers such as OS/2. The smbfs and cifs
11 modules can coexist and do not conflict. The CIFS VFS filesystem
12 module is designed to work well with servers that implement the
13 newer versions (dialects) of the SMB/CIFS protocol such as Samba,
14 the program written by Andrew Tridgell that turns any Unix host
15 into a SMB/CIFS file server.
16
17 The intent of this module is to provide the most advanced network
18 file system function for CIFS compliant servers, including better
19 POSIX compliance, secure per-user session establishment, high
20 performance safe distributed caching (oplock), optional packet
21 signing, large files, Unicode support and other internationalization
22 improvements. Since both Samba server and this filesystem client support
23 the CIFS Unix extensions, the combination can provide a reasonable
24 alternative to NFSv4 for fileserving in some Linux to Linux environments,
25 not just in Linux to Windows environments.
26
27 This filesystem has an optional mount utility (mount.cifs) that can
28 be obtained from the project page and installed in the path in the same
29 directory with the other mount helpers (such as mount.smbfs).
30 Mounting using the cifs filesystem without installing the mount helper
31 requires specifying the server's ip address.
32
33 For Linux 2.4:
34 mount //anything/here /mnt_target -o
35 user=username,pass=password,unc=//ip_address_of_server/sharename
36
37 For Linux 2.5:
38 mount //ip_address_of_server/sharename /mnt_target -o user=username, pass=password
39
40
41 For more information on the module see the project page at
42
43 http://us1.samba.org/samba/Linux_CIFS_client.html
44
45 For more information on CIFS see:
46
47 http://www.snia.org/tech_activities/CIFS
48
49 or the Samba site:
50
51 http://www.samba.org
diff --git a/Documentation/filesystems/cifs/AUTHORS b/Documentation/filesystems/cifs/AUTHORS
new file mode 100644
index 000000000000..ca4a67a0bb1e
--- /dev/null
+++ b/Documentation/filesystems/cifs/AUTHORS
@@ -0,0 +1,56 @@
1Original Author
2===============
3Steve French (sfrench@samba.org)
4
5The author wishes to express his appreciation and thanks to:
6Andrew Tridgell (Samba team) for his early suggestions about smb/cifs VFS
7improvements. Thanks to IBM for allowing me time and test resources to pursue
8this project, to Jim McDonough from IBM (and the Samba Team) for his help, to
9the IBM Linux JFS team for explaining many esoteric Linux filesystem features.
10Jeremy Allison of the Samba team has done invaluable work in adding the server
11side of the original CIFS Unix extensions and reviewing and implementing
12portions of the newer CIFS POSIX extensions into the Samba 3 file server. Thank
13Dave Boutcher of IBM Rochester (author of the OS/400 smb/cifs filesystem client)
14for proving years ago that very good smb/cifs clients could be done on Unix-like
15operating systems. Volker Lendecke, Andrew Tridgell, Urban Widmark, John
16Newbigin and others for their work on the Linux smbfs module. Thanks to
17the other members of the Storage Network Industry Association CIFS Technical
18Workgroup for their work specifying this highly complex protocol and finally
19thanks to the Samba team for their technical advice and encouragement.
20
21Patch Contributors
22------------------
23Zwane Mwaikambo
24Andi Kleen
25Amrut Joshi
26Shobhit Dayal
27Sergey Vlasov
28Richard Hughes
29Yury Umanets
30Mark Hamzy (for some of the early cifs IPv6 work)
31Domen Puncer
32Jesper Juhl (in particular for lots of whitespace/formatting cleanup)
33Vince Negri and Dave Stahl (for finding an important caching bug)
34Adrian Bunk (kcalloc cleanups)
35Miklos Szeredi
36Kazeon team for various fixes especially for 2.4 version.
37Asser Ferno (Change Notify support)
38Shaggy (Dave Kleikamp) for innumerable small fs suggestions and some good cleanup
39Gunter Kukkukk (testing and suggestions for support of old servers)
40Igor Mammedov (DFS support)
41Jeff Layton (many, many fixes, as well as great work on the cifs Kerberos code)
42Scott Lovenberg
43
44Test case and Bug Report contributors
45-------------------------------------
46Thanks to those in the community who have submitted detailed bug reports
47and debug of problems they have found: Jochen Dolze, David Blaine,
48Rene Scharfe, Martin Josefsson, Alexander Wild, Anthony Liguori,
49Lars Muller, Urban Widmark, Massimiliano Ferrero, Howard Owen,
50Olaf Kirch, Kieron Briggs, Nick Millington and others. Also special
51mention to the Stanford Checker (SWAT) which pointed out many minor
52bugs in error paths. Valuable suggestions also have come from Al Viro
53and Dave Miller.
54
55And thanks to the IBM LTC and Power test teams and SuSE testers for
56finding multiple bugs during excellent stress test runs.
diff --git a/Documentation/filesystems/cifs/CHANGES b/Documentation/filesystems/cifs/CHANGES
new file mode 100644
index 000000000000..bc0025cdd1c9
--- /dev/null
+++ b/Documentation/filesystems/cifs/CHANGES
@@ -0,0 +1,1065 @@
1Version 1.62
2------------
3Add sockopt=TCP_NODELAY mount option. EA (xattr) routines hardened
4to more strictly handle corrupt frames.
5
6Version 1.61
7------------
8Fix append problem to Samba servers (files opened with O_APPEND could
9have duplicated data). Fix oops in cifs_lookup. Workaround problem
10mounting to OS/400 Netserve. Fix oops in cifs_get_tcp_session.
11Disable use of server inode numbers when server only
12partially supports them (e.g. for one server querying inode numbers on
13FindFirst fails but QPathInfo queries works). Fix oops with dfs in
14cifs_put_smb_ses. Fix mmap to work on directio mounts (needed
15for OpenOffice when on forcedirectio mount e.g.)
16
17Version 1.60
18-------------
19Fix memory leak in reconnect. Fix oops in DFS mount error path.
20Set s_maxbytes to smaller (the max that vfs can handle) so that
21sendfile will now work over cifs mounts again. Add noforcegid
22and noforceuid mount parameters. Fix small mem leak when using
23ntlmv2. Fix 2nd mount to same server but with different port to
24be allowed (rather than reusing the 1st port) - only when the
25user explicitly overrides the port on the 2nd mount.
26
27Version 1.59
28------------
29Client uses server inode numbers (which are persistent) rather than
30client generated ones by default (mount option "serverino" turned
31on by default if server supports it). Add forceuid and forcegid
32mount options (so that when negotiating unix extensions specifying
33which uid mounted does not immediately force the server's reported
34uids to be overridden). Add support for scope mount parm. Improve
35hard link detection to use same inode for both. Do not set
36read-only dos attribute on directories (for chmod) since Windows
37explorer special cases this attribute bit for directories for
38a different purpose.
39
40Version 1.58
41------------
42Guard against buffer overruns in various UCS-2 to UTF-8 string conversions
43when the UTF-8 string is composed of unusually long (more than 4 byte) converted
44characters. Add support for mounting root of a share which redirects immediately
45to DFS target. Convert string conversion functions from Unicode to more
46accurately mark string length before allocating memory (which may help the
47rare cases where a UTF-8 string is much larger than the UCS2 string that
48we converted from). Fix endianness of the vcnum field used during
49session setup to distinguish multiple mounts to same server from different
50userids. Raw NTLMSSP fixed (it requires /proc/fs/cifs/experimental
51flag to be set to 2, and mount must enable krb5 to turn on extended security).
52Performance of file create to Samba improved (posix create on lookup
53removes 1 of 2 network requests sent on file create)
54
55Version 1.57
56------------
57Improve support for multiple security contexts to the same server. We
58used to use the same "vcnumber" for all connections which could cause
59the server to treat subsequent connections, especially those that
60are authenticated as guest, as reconnections, invalidating the earlier
61user's smb session. This fix allows cifs to mount multiple times to the
62same server with different userids without risking invalidating earlier
63established security contexts. fsync now sends SMB Flush operation
64to better ensure that we wait for server to write all of the data to
65server disk (not just write it over the network). Add new mount
66parameter to allow user to disable sending the (slow) SMB flush on
67fsync if desired (fsync still flushes all cached write data to the server).
68Posix file open support added (turned off after one attempt if server
69fails to support it properly, as with Samba server versions prior to 3.3.2)
70Fix "redzone overwritten" bug in cifs_put_tcon (CIFSTcon may allocate too
71little memory for the "nativeFileSystem" field returned by the server
72during mount). Endian convert inode numbers if necessary (makes it easier
73to compare inode numbers on network files from big endian systems).
74
75Version 1.56
76------------
77Add "forcemandatorylock" mount option to allow user to use mandatory
78rather than posix (advisory) byte range locks, even though server would
79support posix byte range locks. Fix query of root inode when prefixpath
80specified and user does not have access to query information about the
81top of the share. Fix problem in 2.6.28 resolving DFS paths to
82Samba servers (worked to Windows). Fix rmdir so that pending search
83(readdir) requests do not get invalid results which include the now
84removed directory. Fix oops in cifs_dfs_ref.c when prefixpath is not reachable
85when using DFS. Add better file create support to servers which support
86the CIFS POSIX protocol extensions (this adds support for new flags
87on create, and improves semantics for write of locked ranges).
88
89Version 1.55
90------------
91Various fixes to make delete of open files behavior more predictable
92(when delete of an open file fails we mark the file as "delete-on-close"
93in a way that more servers accept, but only if we can first rename the
94file to a temporary name). Add experimental support for more safely
95handling fcntl(F_SETLEASE). Convert cifs to using blocking tcp
96sends, and also let tcp autotune the socket send and receive buffers.
97This reduces the number of EAGAIN errors returned by TCP/IP in
98high stress workloads (and the number of retries on socket writes
99when sending large SMBWriteX requests). Fix case in which a portion of
100data can in some cases not get written to the file on the server before the
101file is closed. Fix DFS parsing to properly handle path consumed field,
102and to handle certain codepage conversions better. Fix mount and
103umount race that can cause oops in mount or umount or reconnect.
104
105Version 1.54
106------------
107Fix premature write failure on congested networks (we would give up
108on EAGAIN from the socket too quickly on large writes).
109Cifs_mkdir and cifs_create now respect the setgid bit on parent dir.
110Fix endian problems in acl (mode from/to cifs acl) on bigendian
111architectures. Fix problems with preserving timestamps on copying open
112files (e.g. "cp -a") to Windows servers. For mkdir and create honor setgid bit
113on parent directory when server supports Unix Extensions but not POSIX
114create. Update cifs.upcall version to handle new Kerberos sec flags
115(this requires update of cifs.upcall program from Samba). Fix memory leak
116on dns_upcall (resolving DFS referralls). Fix plain text password
117authentication (requires setting SecurityFlags to 0x30030 to enable
118lanman and plain text though). Fix writes to be at correct offset when
119file is open with O_APPEND and file is on a directio (forcediretio) mount.
120Fix bug in rewinding readdir directory searches. Add nodfs mount option.
121
122Version 1.53
123------------
124DFS support added (Microsoft Distributed File System client support needed
125for referrals which enable a hierarchical name space among servers).
126Disable temporary caching of mode bits to servers which do not support
127storing of mode (e.g. Windows servers, when client mounts without cifsacl
128mount option) and add new "dynperm" mount option to enable temporary caching
129of mode (enable old behavior). Fix hang on mount caused when server crashes
130tcp session during negotiate protocol.
131
132Version 1.52
133------------
134Fix oops on second mount to server when null auth is used.
135Enable experimental Kerberos support. Return writebehind errors on flush
136and sync so that events like out of disk space get reported properly on
137cached files. Fix setxattr failure to certain Samba versions. Fix mount
138of second share to disconnected server session (autoreconnect on this).
139Add ability to modify cifs acls for handling chmod (when mounted with
140cifsacl flag). Fix prefixpath path separator so we can handle mounts
141with prefixpaths longer than one directory (one path component) when
142mounted to Windows servers. Fix slow file open when cifsacl
143enabled. Fix memory leak in FindNext when the SMB call returns -EBADF.
144
145
146Version 1.51
147------------
148Fix memory leak in statfs when mounted to very old servers (e.g.
149Windows 9x). Add new feature "POSIX open" which allows servers
150which support the current POSIX Extensions to provide better semantics
151(e.g. delete for open files opened with posix open). Take into
152account umask on posix mkdir not just older style mkdir. Add
153ability to mount to IPC$ share (which allows CIFS named pipes to be
154opened, read and written as if they were files). When 1st tree
155connect fails (e.g. due to signing negotiation failure) fix
156leak that causes cifsd not to stop and rmmod to fail to cleanup
157cifs_request_buffers pool. Fix problem with POSIX Open/Mkdir on
158bigendian architectures. Fix possible memory corruption when
159EAGAIN returned on kern_recvmsg. Return better error if server
160requires packet signing but client has disabled it. When mounted
161with cifsacl mount option - mode bits are approximated based
162on the contents of the ACL of the file or directory. When cifs
163mount helper is missing convert make sure that UNC name
164has backslash (not forward slash) between ip address of server
165and the share name.
166
167Version 1.50
168------------
169Fix NTLMv2 signing. NFS server mounted over cifs works (if cifs mount is
170done with "serverino" mount option). Add support for POSIX Unlink
171(helps with certain sharing violation cases when server such as
172Samba supports newer POSIX CIFS Protocol Extensions). Add "nounix"
173mount option to allow disabling the CIFS Unix Extensions for just
174that mount. Fix hang on spinlock in find_writable_file (race when
175reopening file after session crash). Byte range unlock request to
176windows server could unlock more bytes (on server copy of file)
177than intended if start of unlock request is well before start of
178a previous byte range lock that we issued.
179
180Version 1.49
181------------
182IPv6 support. Enable ipv6 addresses to be passed on mount (put the ipv6
183address after the "ip=" mount option, at least until mount.cifs is fixed to
184handle DNS host to ipv6 name translation). Accept override of uid or gid
185on mount even when Unix Extensions are negotiated (it used to be ignored
186when Unix Extensions were ignored). This allows users to override the
187default uid and gid for files when they are certain that the uids or
188gids on the server do not match those of the client. Make "sec=none"
189mount override username (so that null user connection is attempted)
190to match what documentation said. Support for very large reads, over 127K,
191available to some newer servers (such as Samba 3.0.26 and later but
192note that it also requires setting CIFSMaxBufSize at module install
193time to a larger value which may hurt performance in some cases).
194Make sign option force signing (or fail if server does not support it).
195
196Version 1.48
197------------
198Fix mtime bouncing around from local idea of last write times to remote time.
199Fix hang (in i_size_read) when simultaneous size update of same remote file
200on smp system corrupts sequence number. Do not reread unnecessarily partial page
201(which we are about to overwrite anyway) when writing out file opened rw.
202When DOS attribute of file on non-Unix server's file changes on the server side
203from read-only back to read-write, reflect this change in default file mode
204(we had been leaving a file's mode read-only until the inode were reloaded).
205Allow setting of attribute back to ATTR_NORMAL (removing readonly dos attribute
206when archive dos attribute not set and we are changing mode back to writeable
207on server which does not support the Unix Extensions). Remove read only dos
208attribute on chmod when adding any write permission (ie on any of
209user/group/other (not all of user/group/other ie 0222) when
210mounted to windows. Add support for POSIX MkDir (slight performance
211enhancement and eliminates the network race between the mkdir and set
212path info of the mode).
213
214
215Version 1.47
216------------
217Fix oops in list_del during mount caused by unaligned string.
218Fix file corruption which could occur on some large file
219copies caused by writepages page i/o completion bug.
220Seek to SEEK_END forces check for update of file size for non-cached
221files. Allow file size to be updated on remote extend of locally open,
222non-cached file. Fix reconnect to newer Samba servers (or other servers
223which support the CIFS Unix/POSIX extensions) so that we again tell the
224server the Unix/POSIX cifs capabilities which we support (SetFSInfo).
225Add experimental support for new POSIX Open/Mkdir (which returns
226stat information on the open, and allows setting the mode).
227
228Version 1.46
229------------
230Support deep tree mounts. Better support OS/2, Win9x (DOS) time stamps.
231Allow null user to be specified on mount ("username="). Do not return
232EINVAL on readdir when filldir fails due to overwritten blocksize
233(fixes FC problem). Return error in rename 2nd attempt retry (ie report
234if rename by handle also fails, after rename by path fails, we were
235not reporting whether the retry worked or not). Fix NTLMv2 to
236work to Windows servers (mount with option "sec=ntlmv2").
237
238Version 1.45
239------------
240Do not time out lockw calls when using posix extensions. Do not
241time out requests if server still responding reasonably fast
242on requests on other threads. Improve POSIX locking emulation,
243(lock cancel now works, and unlock of merged range works even
244to Windows servers now). Fix oops on mount to lanman servers
245(win9x, os/2 etc.) when null password. Do not send listxattr
246(SMB to query all EAs) if nouser_xattr specified. Fix SE Linux
247problem (instantiate inodes/dentries in right order for readdir).
248
249Version 1.44
250------------
251Rewritten sessionsetup support, including support for legacy SMB
252session setup needed for OS/2 and older servers such as Windows 95 and 98.
253Fix oops on ls to OS/2 servers. Add support for level 1 FindFirst
254so we can do search (ls etc.) to OS/2. Do not send NTCreateX
255or recent levels of FindFirst unless server says it supports NT SMBs
256(instead use legacy equivalents from LANMAN dialect). Fix to allow
257NTLMv2 authentication support (now can use stronger password hashing
258on mount if corresponding /proc/fs/cifs/SecurityFlags is set (0x4004).
259Allow override of global cifs security flags on mount via "sec=" option(s).
260
261Version 1.43
262------------
263POSIX locking to servers which support CIFS POSIX Extensions
264(disabled by default controlled by proc/fs/cifs/Experimental).
265Handle conversion of long share names (especially Asian languages)
266to Unicode during mount. Fix memory leak in sess struct on reconnect.
267Fix rare oops after acpi suspend. Fix O_TRUNC opens to overwrite on
268cifs open which helps rare case when setpathinfo fails or server does
269not support it.
270
271Version 1.42
272------------
273Fix slow oplock break when mounted to different servers at the same time and
274the tids match and we try to find matching fid on wrong server. Fix read
275looping when signing required by server (2.6.16 kernel only). Fix readdir
276vs. rename race which could cause each to hang. Return . and .. even
277if server does not. Allow searches to skip first three entries and
278begin at any location. Fix oops in find_writeable_file.
279
280Version 1.41
281------------
282Fix NTLMv2 security (can be enabled in /proc/fs/cifs) so customers can
283configure stronger authentication. Fix sfu symlinks so they can
284be followed (not just recognized). Fix wraparound of bcc on
285read responses when buffer size over 64K and also fix wrap of
286max smb buffer size when CIFSMaxBufSize over 64K. Fix oops in
287cifs_user_read and cifs_readpages (when EAGAIN on send of smb
288on socket is returned over and over). Add POSIX (advisory) byte range
289locking support (requires server with newest CIFS UNIX Extensions
290to the protocol implemented). Slow down negprot slightly in port 139
291RFC1001 case to give session_init time on buggy servers.
292
293Version 1.40
294------------
295Use fsuid (fsgid) more consistently instead of uid (gid). Improve performance
296of readpages by eliminating one extra memcpy. Allow update of file size
297from remote server even if file is open for write as long as mount is
298directio. Recognize share mode security and send NTLM encrypted password
299on tree connect if share mode negotiated.
300
301Version 1.39
302------------
303Defer close of a file handle slightly if pending writes depend on that handle
304(this reduces the EBADF bad file handle errors that can be logged under heavy
305stress on writes). Modify cifs Kconfig options to expose CONFIG_CIFS_STATS2
306Fix SFU style symlinks and mknod needed for servers which do not support the
307CIFS Unix Extensions. Fix setfacl/getfacl on bigendian. Timeout negative
308dentries so files that the client sees as deleted but that later get created
309on the server will be recognized. Add client side permission check on setattr.
310Timeout stuck requests better (where server has never responded or sent corrupt
311responses)
312
313Version 1.38
314------------
315Fix tcp socket retransmission timeouts (e.g. on ENOSPACE from the socket)
316to be smaller at first (but increasing) so large write performance performance
317over GigE is better. Do not hang thread on illegal byte range lock response
318from Windows (Windows can send an RFC1001 size which does not match smb size) by
319allowing an SMBs TCP length to be up to a few bytes longer than it should be.
320wsize and rsize can now be larger than negotiated buffer size if server
321supports large readx/writex, even when directio mount flag not specified.
322Write size will in many cases now be 16K instead of 4K which greatly helps
323file copy performance on lightly loaded networks. Fix oops in dnotify
324when experimental config flag enabled. Make cifsFYI more granular.
325
326Version 1.37
327------------
328Fix readdir caching when unlink removes file in current search buffer,
329and this is followed by a rewind search to just before the deleted entry.
330Do not attempt to set ctime unless atime and/or mtime change requested
331(most servers throw it away anyway). Fix length check of received smbs
332to be more accurate. Fix big endian problem with mapchars mount option,
333and with a field returned by statfs.
334
335Version 1.36
336------------
337Add support for mounting to older pre-CIFS servers such as Windows9x and ME.
338For these older servers, add option for passing netbios name of server in
339on mount (servernetbiosname). Add suspend support for power management, to
340avoid cifsd thread preventing software suspend from working.
341Add mount option for disabling the default behavior of sending byte range lock
342requests to the server (necessary for certain applications which break with
343mandatory lock behavior such as Evolution), and also mount option for
344requesting case insensitive matching for path based requests (requesting
345case sensitive is the default).
346
347Version 1.35
348------------
349Add writepage performance improvements. Fix path name conversions
350for long filenames on mounts which were done with "mapchars" mount option
351specified. Ensure multiplex ids do not collide. Fix case in which
352rmmod can oops if done soon after last unmount. Fix truncated
353search (readdir) output when resume filename was a long filename.
354Fix filename conversion when mapchars mount option was specified and
355filename was a long filename.
356
357Version 1.34
358------------
359Fix error mapping of the TOO_MANY_LINKS (hardlinks) case.
360Do not oops if root user kills cifs oplock kernel thread or
361kills the cifsd thread (NB: killing the cifs kernel threads is not
362recommended, unmount and rmmod cifs will kill them when they are
363no longer needed). Fix readdir to ASCII servers (ie older servers
364which do not support Unicode) and also require asterisk.
365Fix out of memory case in which data could be written one page
366off in the page cache.
367
368Version 1.33
369------------
370Fix caching problem, in which readdir of directory containing a file
371which was cached could cause the file's time stamp to be updated
372without invalidating the readahead data (so we could get stale
373file data on the client for that file even as the server copy changed).
374Cleanup response processing so cifsd can not loop when abnormally
375terminated.
376
377
378Version 1.32
379------------
380Fix oops in ls when Transact2 FindFirst (or FindNext) returns more than one
381transact response for an SMB request and search entry split across two frames.
382Add support for lsattr (getting ext2/ext3/reiserfs attr flags from the server)
383as new protocol extensions. Do not send Get/Set calls for POSIX ACLs
384unless server explicitly claims to support them in CIFS Unix extensions
385POSIX ACL capability bit. Fix packet signing when multiuser mounting with
386different users from the same client to the same server. Fix oops in
387cifs_close. Add mount option for remapping reserved characters in
388filenames (also allow recognizing files with created by SFU which have any
389of these seven reserved characters, except backslash, to be recognized).
390Fix invalid transact2 message (we were sometimes trying to interpret
391oplock breaks as SMB responses). Add ioctl for checking that the
392current uid matches the uid of the mounter (needed by umount.cifs).
393Reduce the number of large buffer allocations in cifs response processing
394(significantly reduces memory pressure under heavy stress with multiple
395processes accessing the same server at the same time).
396
397Version 1.31
398------------
399Fix updates of DOS attributes and time fields so that files on NT4 servers
400do not get marked delete on close. Display sizes of cifs buffer pools in
401cifs stats. Fix oops in unmount when cifsd thread being killed by
402shutdown. Add generic readv/writev and aio support. Report inode numbers
403consistently in readdir and lookup (when serverino mount option is
404specified use the inode number that the server reports - for both lookup
405and readdir, otherwise by default the locally generated inode number is used
406for inodes created in either path since servers are not always able to
407provide unique inode numbers when exporting multiple volumes from under one
408sharename).
409
410Version 1.30
411------------
412Allow new nouser_xattr mount parm to disable xattr support for user namespace.
413Do not flag user_xattr mount parm in dmesg. Retry failures setting file time
414(mostly affects NT4 servers) by retry with handle based network operation.
415Add new POSIX Query FS Info for returning statfs info more accurately.
416Handle passwords with multiple commas in them.
417
418Version 1.29
419------------
420Fix default mode in sysfs of cifs module parms. Remove old readdir routine.
421Fix capabilities flags for large readx so as to allow reads larger than 64K.
422
423Version 1.28
424------------
425Add module init parm for large SMB buffer size (to allow it to be changed
426from its default of 16K) which is especially useful for large file copy
427when mounting with the directio mount option. Fix oops after
428returning from mount when experimental ExtendedSecurity enabled and
429SpnegoNegotiated returning invalid error. Fix case to retry better when
430peek returns from 1 to 3 bytes on socket which should have more data.
431Fixed path based calls (such as cifs lookup) to handle path names
432longer than 530 (now can handle PATH_MAX). Fix pass through authentication
433from Samba server to DC (Samba required dummy LM password).
434
435Version 1.27
436------------
437Turn off DNOTIFY (directory change notification support) by default
438(unless built with the experimental flag) to fix hang with KDE
439file browser. Fix DNOTIFY flag mappings. Fix hang (in wait_event
440waiting on an SMB response) in SendReceive when session dies but
441reconnects quickly from another task. Add module init parms for
442minimum number of large and small network buffers in the buffer pools,
443and for the maximum number of simultaneous requests.
444
445Version 1.26
446------------
447Add setfacl support to allow setting of ACLs remotely to Samba 3.10 and later
448and other POSIX CIFS compliant servers. Fix error mapping for getfacl
449to EOPNOTSUPP when server does not support posix acls on the wire. Fix
450improperly zeroed buffer in CIFS Unix extensions set times call.
451
452Version 1.25
453------------
454Fix internationalization problem in cifs readdir with filenames that map to
455longer UTF-8 strings than the string on the wire was in Unicode. Add workaround
456for readdir to netapp servers. Fix search rewind (seek into readdir to return
457non-consecutive entries). Do not do readdir when server negotiates
458buffer size to small to fit filename. Add support for reading POSIX ACLs from
459the server (add also acl and noacl mount options).
460
461Version 1.24
462------------
463Optionally allow using server side inode numbers, rather than client generated
464ones by specifying mount option "serverino" - this is required for some apps
465to work which double check hardlinked files and have persistent inode numbers.
466
467Version 1.23
468------------
469Multiple bigendian fixes. On little endian systems (for reconnect after
470network failure) fix tcp session reconnect code so we do not try first
471to reconnect on reverse of port 445. Treat reparse points (NTFS junctions)
472as directories rather than symlinks because we can do follow link on them.
473
474Version 1.22
475------------
476Add config option to enable XATTR (extended attribute) support, mapping
477xattr names in the "user." namespace space to SMB/CIFS EAs. Lots of
478minor fixes pointed out by the Stanford SWAT checker (mostly missing
479or out of order NULL pointer checks in little used error paths).
480
481Version 1.21
482------------
483Add new mount parm to control whether mode check (generic_permission) is done
484on the client. If Unix extensions are enabled and the uids on the client
485and server do not match, client permission checks are meaningless on
486server uids that do not exist on the client (this does not affect the
487normal ACL check which occurs on the server). Fix default uid
488on mknod to match create and mkdir. Add optional mount parm to allow
489override of the default uid behavior (in which the server sets the uid
490and gid of newly created files). Normally for network filesystem mounts
491user want the server to set the uid/gid on newly created files (rather than
492using uid of the client processes you would in a local filesystem).
493
494Version 1.20
495------------
496Make transaction counts more consistent. Merge /proc/fs/cifs/SimultaneousOps
497info into /proc/fs/cifs/DebugData. Fix oops in rare oops in readdir
498(in build_wildcard_path_from_dentry). Fix mknod to pass type field
499(block/char/fifo) properly. Remove spurious mount warning log entry when
500credentials passed as mount argument. Set major/minor device number in
501inode for block and char devices when unix extensions enabled.
502
503Version 1.19
504------------
505Fix /proc/fs/cifs/Stats and DebugData display to handle larger
506amounts of return data. Properly limit requests to MAX_REQ (50
507is the usual maximum active multiplex SMB/CIFS requests per server).
508Do not kill cifsd (and thus hurt the other SMB session) when more than one
509session to the same server (but with different userids) exists and one
510of the two user's smb sessions is being removed while leaving the other.
511Do not loop reconnecting in cifsd demultiplex thread when admin
512kills the thread without going through unmount.
513
514Version 1.18
515------------
516Do not rename hardlinked files (since that should be a noop). Flush
517cached write behind data when reopening a file after session abend,
518except when already in write. Grab per socket sem during reconnect
519to avoid oops in sendmsg if overlapping with reconnect. Do not
520reset cached inode file size on readdir for files open for write on
521client.
522
523
524Version 1.17
525------------
526Update number of blocks in file so du command is happier (in Linux a fake
527blocksize of 512 is required for calculating number of blocks in inode).
528Fix prepare write of partial pages to read in data from server if possible.
529Fix race on tcpStatus field between unmount and reconnection code, causing
530cifsd process sometimes to hang around forever. Improve out of memory
531checks in cifs_filldir
532
533Version 1.16
534------------
535Fix incorrect file size in file handle based setattr on big endian hardware.
536Fix oops in build_path_from_dentry when out of memory. Add checks for invalid
537and closing file structs in writepage/partialpagewrite. Add statistics
538for each mounted share (new menuconfig option). Fix endianness problem in
539volume information displayed in /proc/fs/cifs/DebugData (only affects
540affects big endian architectures). Prevent renames while constructing
541path names for open, mkdir and rmdir.
542
543Version 1.15
544------------
545Change to mempools for alloc smb request buffers and multiplex structs
546to better handle low memory problems (and potential deadlocks).
547
548Version 1.14
549------------
550Fix incomplete listings of large directories on Samba servers when Unix
551extensions enabled. Fix oops when smb_buffer can not be allocated. Fix
552rename deadlock when writing out dirty pages at same time.
553
554Version 1.13
555------------
556Fix open of files in which O_CREATE can cause the mode to change in
557some cases. Fix case in which retry of write overlaps file close.
558Fix PPC64 build error. Reduce excessive stack usage in smb password
559hashing. Fix overwrite of Linux user's view of file mode to Windows servers.
560
561Version 1.12
562------------
563Fixes for large file copy, signal handling, socket retry, buffer
564allocation and low memory situations.
565
566Version 1.11
567------------
568Better port 139 support to Windows servers (RFC1001/RFC1002 Session_Initialize)
569also now allowing support for specifying client netbiosname. NT4 support added.
570
571Version 1.10
572------------
573Fix reconnection (and certain failed mounts) to properly wake up the
574blocked users thread so it does not seem hung (in some cases was blocked
575until the cifs receive timeout expired). Fix spurious error logging
576to kernel log when application with open network files killed.
577
578Version 1.09
579------------
580Fix /proc/fs module unload warning message (that could be logged
581to the kernel log). Fix intermittent failure in connectathon
582test7 (hardlink count not immediately refreshed in case in which
583inode metadata can be incorrectly kept cached when time near zero)
584
585Version 1.08
586------------
587Allow file_mode and dir_mode (specified at mount time) to be enforced
588locally (the server already enforced its own ACLs too) for servers
589that do not report the correct mode (do not support the
590CIFS Unix Extensions).
591
592Version 1.07
593------------
594Fix some small memory leaks in some unmount error paths. Fix major leak
595of cache pages in readpages causing multiple read oriented stress
596testcases (including fsx, and even large file copy) to fail over time.
597
598Version 1.06
599------------
600Send NTCreateX with ATTR_POSIX if Linux/Unix extensions negotiated with server.
601This allows files that differ only in case and improves performance of file
602creation and file open to such servers. Fix semaphore conflict which causes
603slow delete of open file to Samba (which unfortunately can cause an oplock
604break to self while vfs_unlink held i_sem) which can hang for 20 seconds.
605
606Version 1.05
607------------
608fixes to cifs_readpages for fsx test case
609
610Version 1.04
611------------
612Fix caching data integrity bug when extending file size especially when no
613oplock on file. Fix spurious logging of valid already parsed mount options
614that are parsed outside of the cifs vfs such as nosuid.
615
616
617Version 1.03
618------------
619Connect to server when port number override not specified, and tcp port
620unitialized. Reset search to restart at correct file when kernel routine
621filldir returns error during large directory searches (readdir).
622
623Version 1.02
624------------
625Fix caching problem when files opened by multiple clients in which
626page cache could contain stale data, and write through did
627not occur often enough while file was still open when read ahead
628(read oplock) not allowed. Treat "sep=" when first mount option
629as an override of comma as the default separator between mount
630options.
631
632Version 1.01
633------------
634Allow passwords longer than 16 bytes. Allow null password string.
635
636Version 1.00
637------------
638Gracefully clean up failed mounts when attempting to mount to servers such as
639Windows 98 that terminate tcp sessions during protocol negotiation. Handle
640embedded commas in mount parsing of passwords.
641
642Version 0.99
643------------
644Invalidate local inode cached pages on oplock break and when last file
645instance is closed so that the client does not continue using stale local
646copy rather than later modified server copy of file. Do not reconnect
647when server drops the tcp session prematurely before negotiate
648protocol response. Fix oops in reopen_file when dentry freed. Allow
649the support for CIFS Unix Extensions to be disabled via proc interface.
650
651Version 0.98
652------------
653Fix hang in commit_write during reconnection of open files under heavy load.
654Fix unload_nls oops in a mount failure path. Serialize writes to same socket
655which also fixes any possible races when cifs signatures are enabled in SMBs
656being sent out of signature sequence number order.
657
658Version 0.97
659------------
660Fix byte range locking bug (endian problem) causing bad offset and
661length.
662
663Version 0.96
664------------
665Fix oops (in send_sig) caused by CIFS unmount code trying to
666wake up the demultiplex thread after it had exited. Do not log
667error on harmless oplock release of closed handle.
668
669Version 0.95
670------------
671Fix unsafe global variable usage and password hash failure on gcc 3.3.1
672Fix problem reconnecting secondary mounts to same server after session
673failure. Fix invalid dentry - race in mkdir when directory gets created
674by another client between the lookup and mkdir.
675
676Version 0.94
677------------
678Fix to list processing in reopen_files. Fix reconnection when server hung
679but tcpip session still alive. Set proper timeout on socket read.
680
681Version 0.93
682------------
683Add missing mount options including iocharset. SMP fixes in write and open.
684Fix errors in reconnecting after TCP session failure. Fix module unloading
685of default nls codepage
686
687Version 0.92
688------------
689Active smb transactions should never go negative (fix double FreeXid). Fix
690list processing in file routines. Check return code on kmalloc in open.
691Fix spinlock usage for SMP.
692
693Version 0.91
694------------
695Fix oops in reopen_files when invalid dentry. drop dentry on server rename
696and on revalidate errors. Fix cases where pid is now tgid. Fix return code
697on create hard link when server does not support them.
698
699Version 0.90
700------------
701Fix scheduling while atomic error in getting inode info on newly created file.
702Fix truncate of existing files opened with O_CREAT but not O_TRUNC set.
703
704Version 0.89
705------------
706Fix oops on write to dead tcp session. Remove error log write for case when file open
707O_CREAT but not O_EXCL
708
709Version 0.88
710------------
711Fix non-POSIX behavior on rename of open file and delete of open file by taking
712advantage of trans2 SetFileInfo rename facility if available on target server.
713Retry on ENOSPC and EAGAIN socket errors.
714
715Version 0.87
716------------
717Fix oops on big endian readdir. Set blksize to be even power of two (2**blkbits) to fix
718allocation size miscalculation. After oplock token lost do not read through
719cache.
720
721Version 0.86
722------------
723Fix oops on empty file readahead. Fix for file size handling for locally cached files.
724
725Version 0.85
726------------
727Fix oops in mkdir when server fails to return inode info. Fix oops in reopen_files
728during auto reconnection to server after server recovered from failure.
729
730Version 0.84
731------------
732Finish support for Linux 2.5 open/create changes, which removes the
733redundant NTCreate/QPathInfo/close that was sent during file create.
734Enable oplock by default. Enable packet signing by default (needed to
735access many recent Windows servers)
736
737Version 0.83
738------------
739Fix oops when mounting to long server names caused by inverted parms to kmalloc.
740Fix MultiuserMount (/proc/fs/cifs configuration setting) so that when enabled
741we will choose a cifs user session (smb uid) that better matches the local
742uid if a) the mount uid does not match the current uid and b) we have another
743session to the same server (ip address) for a different mount which
744matches the current local uid.
745
746Version 0.82
747------------
748Add support for mknod of block or character devices. Fix oplock
749code (distributed caching) to properly send response to oplock
750break from server.
751
752Version 0.81
753------------
754Finish up CIFS packet digital signing for the default
755NTLM security case. This should help Windows 2003
756network interoperability since it is common for
757packet signing to be required now. Fix statfs (stat -f)
758which recently started returning errors due to
759invalid value (-1 instead of 0) being set in the
760struct kstatfs f_ffiles field.
761
762Version 0.80
763-----------
764Fix oops on stopping oplock thread when removing cifs when
765built as module.
766
767Version 0.79
768------------
769Fix mount options for ro (readonly), uid, gid and file and directory mode.
770
771Version 0.78
772------------
773Fix errors displayed on failed mounts to be more understandable.
774Fixed various incorrect or misleading smb to posix error code mappings.
775
776Version 0.77
777------------
778Fix display of NTFS DFS junctions to display as symlinks.
779They are the network equivalent. Fix oops in
780cifs_partialpagewrite caused by missing spinlock protection
781of openfile linked list. Allow writebehind caching errors to
782be returned to the application at file close.
783
784Version 0.76
785------------
786Clean up options displayed in /proc/mounts by show_options to
787be more consistent with other filesystems.
788
789Version 0.75
790------------
791Fix delete of readonly file to Windows servers. Reflect
792presence or absence of read only dos attribute in mode
793bits for servers that do not support CIFS Unix extensions.
794Fix shortened results on readdir of large directories to
795servers supporting CIFS Unix extensions (caused by
796incorrect resume key).
797
798Version 0.74
799------------
800Fix truncate bug (set file size) that could cause hangs e.g. running fsx
801
802Version 0.73
803------------
804unload nls if mount fails.
805
806Version 0.72
807------------
808Add resume key support to search (readdir) code to workaround
809Windows bug. Add /proc/fs/cifs/LookupCacheEnable which
810allows disabling caching of attribute information for
811lookups.
812
813Version 0.71
814------------
815Add more oplock handling (distributed caching code). Remove
816dead code. Remove excessive stack space utilization from
817symlink routines.
818
819Version 0.70
820------------
821Fix oops in get dfs referral (triggered when null path sent in to
822mount). Add support for overriding rsize at mount time.
823
824Version 0.69
825------------
826Fix buffer overrun in readdir which caused intermittent kernel oopses.
827Fix writepage code to release kmap on write data. Allow "-ip=" new
828mount option to be passed in on parameter distinct from the first part
829(server name portion of) the UNC name. Allow override of the
830tcp port of the target server via new mount option "-port="
831
832Version 0.68
833------------
834Fix search handle leak on rewind. Fix setuid and gid so that they are
835reflected in the local inode immediately. Cleanup of whitespace
836to make 2.4 and 2.5 versions more consistent.
837
838
839Version 0.67
840------------
841Fix signal sending so that captive thread (cifsd) exits on umount
842(which was causing the warning in kmem_cache_free of the request buffers
843at rmmod time). This had broken as a sideeffect of the recent global
844kernel change to daemonize. Fix memory leak in readdir code which
845showed up in "ls -R" (and applications that did search rewinding).
846
847Version 0.66
848------------
849Reconnect tids and fids after session reconnection (still do not
850reconnect byte range locks though). Fix problem caching
851lookup information for directory inodes, improving performance,
852especially in deep directory trees. Fix various build warnings.
853
854Version 0.65
855------------
856Finish fixes to commit write for caching/readahead consistency. fsx
857now works to Samba servers. Fix oops caused when readahead
858was interrupted by a signal.
859
860Version 0.64
861------------
862Fix data corruption (in partial page after truncate) that caused fsx to
863fail to Windows servers. Cleaned up some extraneous error logging in
864common error paths. Add generic sendfile support.
865
866Version 0.63
867------------
868Fix memory leak in AllocMidQEntry.
869Finish reconnection logic, so connection with server can be dropped
870(or server rebooted) and the cifs client will reconnect.
871
872Version 0.62
873------------
874Fix temporary socket leak when bad userid or password specified
875(or other SMBSessSetup failure). Increase maximum buffer size to slightly
876over 16K to allow negotiation of up to Samba and Windows server default read
877sizes. Add support for readpages
878
879Version 0.61
880------------
881Fix oops when username not passed in on mount. Extensive fixes and improvements
882to error logging (strip redundant newlines, change debug macros to ensure newline
883passed in and to be more consistent). Fix writepage wrong file handle problem,
884a readonly file handle could be incorrectly used to attempt to write out
885file updates through the page cache to multiply open files. This could cause
886the iozone benchmark to fail on the fwrite test. Fix bug mounting two different
887shares to the same Windows server when using different usernames
888(doing this to Samba servers worked but Windows was rejecting it) - now it is
889possible to use different userids when connecting to the same server from a
890Linux client. Fix oops when treeDisconnect called during unmount on
891previously freed socket.
892
893Version 0.60
894------------
895Fix oops in readpages caused by not setting address space operations in inode in
896rare code path.
897
898Version 0.59
899------------
900Includes support for deleting of open files and renaming over existing files (per POSIX
901requirement). Add readlink support for Windows junction points (directory symlinks).
902
903Version 0.58
904------------
905Changed read and write to go through pagecache. Added additional address space operations.
906Memory mapped operations now working.
907
908Version 0.57
909------------
910Added writepage code for additional memory mapping support. Fixed leak in xids causing
911the simultaneous operations counter (/proc/fs/cifs/SimultaneousOps) to increase on
912every stat call. Additional formatting cleanup.
913
914Version 0.56
915------------
916Fix bigendian bug in order of time conversion. Merge 2.5 to 2.4 version. Formatting cleanup.
917
918Version 0.55
919------------
920Fixes from Zwane Mwaikambo for adding missing return code checking in a few places.
921Also included a modified version of his fix to protect global list manipulation of
922the smb session and tree connection and mid related global variables.
923
924Version 0.54
925------------
926Fix problem with captive thread hanging around at unmount time. Adjust to 2.5.42-pre
927changes to superblock layout. Remove wasteful allocation of smb buffers (now the send
928buffer is reused for responses). Add more oplock handling. Additional minor cleanup.
929
930Version 0.53
931------------
932More stylistic updates to better match kernel style. Add additional statistics
933for filesystem which can be viewed via /proc/fs/cifs. Add more pieces of NTLMv2
934and CIFS Packet Signing enablement.
935
936Version 0.52
937------------
938Replace call to sleep_on with safer wait_on_event.
939Make stylistic changes to better match kernel style recommendations.
940Remove most typedef usage (except for the PDUs themselves).
941
942Version 0.51
943------------
944Update mount so the -unc mount option is no longer required (the ip address can be specified
945in a UNC style device name. Implementation of readpage/writepage started.
946
947Version 0.50
948------------
949Fix intermittent problem with incorrect smb header checking on badly
950fragmented tcp responses
951
952Version 0.49
953------------
954Fixes to setting of allocation size and file size.
955
956Version 0.48
957------------
958Various 2.5.38 fixes. Now works on 2.5.38
959
960Version 0.47
961------------
962Prepare for 2.5 kernel merge. Remove ifdefs.
963
964Version 0.46
965------------
966Socket buffer management fixes. Fix dual free.
967
968Version 0.45
969------------
970Various big endian fixes for hardlinks and symlinks and also for dfs.
971
972Version 0.44
973------------
974Various big endian fixes for servers with Unix extensions such as Samba
975
976Version 0.43
977------------
978Various FindNext fixes for incorrect filenames on large directory searches on big endian
979clients. basic posix file i/o tests now work on big endian machines, not just le
980
981Version 0.42
982------------
983SessionSetup and NegotiateProtocol now work from Big Endian machines.
984Various Big Endian fixes found during testing on the Linux on 390. Various fixes for compatibility with older
985versions of 2.4 kernel (now builds and works again on kernels at least as early as 2.4.7).
986
987Version 0.41
988------------
989Various minor fixes for Connectathon Posix "basic" file i/o test suite. Directory caching fixed so hardlinked
990files now return the correct number of links on fstat as they are repeatedly linked and unlinked.
991
992Version 0.40
993------------
994Implemented "Raw" (i.e. not encapsulated in SPNEGO) NTLMSSP (i.e. the Security Provider Interface used to negotiate
995session advanced session authentication). Raw NTLMSSP is preferred by Windows 2000 Professional and Windows XP.
996Began implementing support for SPNEGO encapsulation of NTLMSSP based session authentication blobs
997(which is the mechanism preferred by Windows 2000 server in the absence of Kerberos).
998
999Version 0.38
1000------------
1001Introduced optional mount helper utility mount.cifs and made coreq changes to cifs vfs to enable
1002it. Fixed a few bugs in the DFS code (e.g. bcc two bytes too short and incorrect uid in PDU).
1003
1004Version 0.37
1005------------
1006Rewrote much of connection and mount/unmount logic to handle bugs with
1007multiple uses to same share, multiple users to same server etc.
1008
1009Version 0.36
1010------------
1011Fixed major problem with dentry corruption (missing call to dput)
1012
1013Version 0.35
1014------------
1015Rewrite of readdir code to fix bug. Various fixes for bigendian machines.
1016Begin adding oplock support. Multiusermount and oplockEnabled flags added to /proc/fs/cifs
1017although corresponding function not fully implemented in the vfs yet
1018
1019Version 0.34
1020------------
1021Fixed dentry caching bug, misc. cleanup
1022
1023Version 0.33
1024------------
1025Fixed 2.5 support to handle build and configure changes as well as misc. 2.5 changes. Now can build
1026on current 2.5 beta version (2.5.24) of the Linux kernel as well as on 2.4 Linux kernels.
1027Support for STATUS codes (newer 32 bit NT error codes) added. DFS support begun to be added.
1028
1029Version 0.32
1030------------
1031Unix extensions (symlink, readlink, hardlink, chmod and some chgrp and chown) implemented
1032and tested against Samba 2.2.5
1033
1034
1035Version 0.31
1036------------
10371) Fixed lockrange to be correct (it was one byte too short)
1038
10392) Fixed GETLK (i.e. the fcntl call to test a range of bytes in a file to see if locked) to correctly
1040show range as locked when there is a conflict with an existing lock.
1041
10423) default file perms are now 2767 (indicating support for mandatory locks) instead of 777 for directories
1043in most cases. Eventually will offer optional ability to query server for the correct perms.
1044
10453) Fixed eventual trap when mounting twice to different shares on the same server when the first succeeded
1046but the second one was invalid and failed (the second one was incorrectly disconnecting the tcp and smb
1047session)
1048
10494) Fixed error logging of valid mount options
1050
10515) Removed logging of password field.
1052
10536) Moved negotiate, treeDisconnect and uloggoffX (only tConx and SessSetup remain in connect.c) to cifssmb.c
1054and cleaned them up and made them more consistent with other cifs functions.
1055
10567) Server support for Unix extensions is now fully detected and FindFirst is implemented both ways
1057(with or without Unix extensions) but FindNext and QueryPathInfo with the Unix extensions are not completed,
1058nor is the symlink support using the Unix extensions
1059
10608) Started adding the readlink and follow_link code
1061
1062Version 0.3
1063-----------
1064Initial drop
1065
diff --git a/Documentation/filesystems/cifs/README b/Documentation/filesystems/cifs/README
new file mode 100644
index 000000000000..2d5622f60e11
--- /dev/null
+++ b/Documentation/filesystems/cifs/README
@@ -0,0 +1,753 @@
1The CIFS VFS support for Linux supports many advanced network filesystem
2features such as hierarchical dfs like namespace, hardlinks, locking and more.
3It was designed to comply with the SNIA CIFS Technical Reference (which
4supersedes the 1992 X/Open SMB Standard) as well as to perform best practice
5practical interoperability with Windows 2000, Windows XP, Samba and equivalent
6servers. This code was developed in participation with the Protocol Freedom
7Information Foundation.
8
9Please see
10 http://protocolfreedom.org/ and
11 http://samba.org/samba/PFIF/
12for more details.
13
14
15For questions or bug reports please contact:
16 sfrench@samba.org (sfrench@us.ibm.com)
17
18Build instructions:
19==================
20For Linux 2.4:
211) Get the kernel source (e.g.from http://www.kernel.org)
22and download the cifs vfs source (see the project page
23at http://us1.samba.org/samba/Linux_CIFS_client.html)
24and change directory into the top of the kernel directory
25then patch the kernel (e.g. "patch -p1 < cifs_24.patch")
26to add the cifs vfs to your kernel configure options if
27it has not already been added (e.g. current SuSE and UL
28users do not need to apply the cifs_24.patch since the cifs vfs is
29already in the kernel configure menu) and then
30mkdir linux/fs/cifs and then copy the current cifs vfs files from
31the cifs download to your kernel build directory e.g.
32
33 cp <cifs_download_dir>/fs/cifs/* to <kernel_download_dir>/fs/cifs
34
352) make menuconfig (or make xconfig)
363) select cifs from within the network filesystem choices
374) save and exit
385) make dep
396) make modules (or "make" if CIFS VFS not to be built as a module)
40
41For Linux 2.6:
421) Download the kernel (e.g. from http://www.kernel.org)
43and change directory into the top of the kernel directory tree
44(e.g. /usr/src/linux-2.5.73)
452) make menuconfig (or make xconfig)
463) select cifs from within the network filesystem choices
474) save and exit
485) make
49
50
51Installation instructions:
52=========================
53If you have built the CIFS vfs as module (successfully) simply
54type "make modules_install" (or if you prefer, manually copy the file to
55the modules directory e.g. /lib/modules/2.4.10-4GB/kernel/fs/cifs/cifs.o).
56
57If you have built the CIFS vfs into the kernel itself, follow the instructions
58for your distribution on how to install a new kernel (usually you
59would simply type "make install").
60
61If you do not have the utility mount.cifs (in the Samba 3.0 source tree and on
62the CIFS VFS web site) copy it to the same directory in which mount.smbfs and
63similar files reside (usually /sbin). Although the helper software is not
64required, mount.cifs is recommended. Eventually the Samba 3.0 utility program
65"net" may also be helpful since it may someday provide easier mount syntax for
66users who are used to Windows e.g.
67 net use <mount point> <UNC name or cifs URL>
68Note that running the Winbind pam/nss module (logon service) on all of your
69Linux clients is useful in mapping Uids and Gids consistently across the
70domain to the proper network user. The mount.cifs mount helper can be
71trivially built from Samba 3.0 or later source e.g. by executing:
72
73 gcc samba/source/client/mount.cifs.c -o mount.cifs
74
75If cifs is built as a module, then the size and number of network buffers
76and maximum number of simultaneous requests to one server can be configured.
77Changing these from their defaults is not recommended. By executing modinfo
78 modinfo kernel/fs/cifs/cifs.ko
79on kernel/fs/cifs/cifs.ko the list of configuration changes that can be made
80at module initialization time (by running insmod cifs.ko) can be seen.
81
82Allowing User Mounts
83====================
84To permit users to mount and unmount over directories they own is possible
85with the cifs vfs. A way to enable such mounting is to mark the mount.cifs
86utility as suid (e.g. "chmod +s /sbin/mount.cifs). To enable users to
87umount shares they mount requires
881) mount.cifs version 1.4 or later
892) an entry for the share in /etc/fstab indicating that a user may
90unmount it e.g.
91//server/usersharename /mnt/username cifs user 0 0
92
93Note that when the mount.cifs utility is run suid (allowing user mounts),
94in order to reduce risks, the "nosuid" mount flag is passed in on mount to
95disallow execution of an suid program mounted on the remote target.
96When mount is executed as root, nosuid is not passed in by default,
97and execution of suid programs on the remote target would be enabled
98by default. This can be changed, as with nfs and other filesystems,
99by simply specifying "nosuid" among the mount options. For user mounts
100though to be able to pass the suid flag to mount requires rebuilding
101mount.cifs with the following flag:
102
103 gcc samba/source/client/mount.cifs.c -DCIFS_ALLOW_USR_SUID -o mount.cifs
104
105There is a corresponding manual page for cifs mounting in the Samba 3.0 and
106later source tree in docs/manpages/mount.cifs.8
107
108Allowing User Unmounts
109======================
110To permit users to ummount directories that they have user mounted (see above),
111the utility umount.cifs may be used. It may be invoked directly, or if
112umount.cifs is placed in /sbin, umount can invoke the cifs umount helper
113(at least for most versions of the umount utility) for umount of cifs
114mounts, unless umount is invoked with -i (which will avoid invoking a umount
115helper). As with mount.cifs, to enable user unmounts umount.cifs must be marked
116as suid (e.g. "chmod +s /sbin/umount.cifs") or equivalent (some distributions
117allow adding entries to a file to the /etc/permissions file to achieve the
118equivalent suid effect). For this utility to succeed the target path
119must be a cifs mount, and the uid of the current user must match the uid
120of the user who mounted the resource.
121
122Also note that the customary way of allowing user mounts and unmounts is
123(instead of using mount.cifs and unmount.cifs as suid) to add a line
124to the file /etc/fstab for each //server/share you wish to mount, but
125this can become unwieldy when potential mount targets include many
126or unpredictable UNC names.
127
128Samba Considerations
129====================
130To get the maximum benefit from the CIFS VFS, we recommend using a server that
131supports the SNIA CIFS Unix Extensions standard (e.g. Samba 2.2.5 or later or
132Samba 3.0) but the CIFS vfs works fine with a wide variety of CIFS servers.
133Note that uid, gid and file permissions will display default values if you do
134not have a server that supports the Unix extensions for CIFS (such as Samba
1352.2.5 or later). To enable the Unix CIFS Extensions in the Samba server, add
136the line:
137
138 unix extensions = yes
139
140to your smb.conf file on the server. Note that the following smb.conf settings
141are also useful (on the Samba server) when the majority of clients are Unix or
142Linux:
143
144 case sensitive = yes
145 delete readonly = yes
146 ea support = yes
147
148Note that server ea support is required for supporting xattrs from the Linux
149cifs client, and that EA support is present in later versions of Samba (e.g.
1503.0.6 and later (also EA support works in all versions of Windows, at least to
151shares on NTFS filesystems). Extended Attribute (xattr) support is an optional
152feature of most Linux filesystems which may require enabling via
153make menuconfig. Client support for extended attributes (user xattr) can be
154disabled on a per-mount basis by specifying "nouser_xattr" on mount.
155
156The CIFS client can get and set POSIX ACLs (getfacl, setfacl) to Samba servers
157version 3.10 and later. Setting POSIX ACLs requires enabling both XATTR and
158then POSIX support in the CIFS configuration options when building the cifs
159module. POSIX ACL support can be disabled on a per mount basic by specifying
160"noacl" on mount.
161
162Some administrators may want to change Samba's smb.conf "map archive" and
163"create mask" parameters from the default. Unless the create mask is changed
164newly created files can end up with an unnecessarily restrictive default mode,
165which may not be what you want, although if the CIFS Unix extensions are
166enabled on the server and client, subsequent setattr calls (e.g. chmod) can
167fix the mode. Note that creating special devices (mknod) remotely
168may require specifying a mkdev function to Samba if you are not using
169Samba 3.0.6 or later. For more information on these see the manual pages
170("man smb.conf") on the Samba server system. Note that the cifs vfs,
171unlike the smbfs vfs, does not read the smb.conf on the client system
172(the few optional settings are passed in on mount via -o parameters instead).
173Note that Samba 2.2.7 or later includes a fix that allows the CIFS VFS to delete
174open files (required for strict POSIX compliance). Windows Servers already
175supported this feature. Samba server does not allow symlinks that refer to files
176outside of the share, so in Samba versions prior to 3.0.6, most symlinks to
177files with absolute paths (ie beginning with slash) such as:
178 ln -s /mnt/foo bar
179would be forbidden. Samba 3.0.6 server or later includes the ability to create
180such symlinks safely by converting unsafe symlinks (ie symlinks to server
181files that are outside of the share) to a samba specific format on the server
182that is ignored by local server applications and non-cifs clients and that will
183not be traversed by the Samba server). This is opaque to the Linux client
184application using the cifs vfs. Absolute symlinks will work to Samba 3.0.5 or
185later, but only for remote clients using the CIFS Unix extensions, and will
186be invisbile to Windows clients and typically will not affect local
187applications running on the same server as Samba.
188
189Use instructions:
190================
191Once the CIFS VFS support is built into the kernel or installed as a module
192(cifs.o), you can use mount syntax like the following to access Samba or Windows
193servers:
194
195 mount -t cifs //9.53.216.11/e$ /mnt -o user=myname,pass=mypassword
196
197Before -o the option -v may be specified to make the mount.cifs
198mount helper display the mount steps more verbosely.
199After -o the following commonly used cifs vfs specific options
200are supported:
201
202 user=<username>
203 pass=<password>
204 domain=<domain name>
205
206Other cifs mount options are described below. Use of TCP names (in addition to
207ip addresses) is available if the mount helper (mount.cifs) is installed. If
208you do not trust the server to which are mounted, or if you do not have
209cifs signing enabled (and the physical network is insecure), consider use
210of the standard mount options "noexec" and "nosuid" to reduce the risk of
211running an altered binary on your local system (downloaded from a hostile server
212or altered by a hostile router).
213
214Although mounting using format corresponding to the CIFS URL specification is
215not possible in mount.cifs yet, it is possible to use an alternate format
216for the server and sharename (which is somewhat similar to NFS style mount
217syntax) instead of the more widely used UNC format (i.e. \\server\share):
218 mount -t cifs tcp_name_of_server:share_name /mnt -o user=myname,pass=mypasswd
219
220When using the mount helper mount.cifs, passwords may be specified via alternate
221mechanisms, instead of specifying it after -o using the normal "pass=" syntax
222on the command line:
2231) By including it in a credential file. Specify credentials=filename as one
224of the mount options. Credential files contain two lines
225 username=someuser
226 password=your_password
2272) By specifying the password in the PASSWD environment variable (similarly
228the user name can be taken from the USER environment variable).
2293) By specifying the password in a file by name via PASSWD_FILE
2304) By specifying the password in a file by file descriptor via PASSWD_FD
231
232If no password is provided, mount.cifs will prompt for password entry
233
234Restrictions
235============
236Servers must support either "pure-TCP" (port 445 TCP/IP CIFS connections) or RFC
2371001/1002 support for "Netbios-Over-TCP/IP." This is not likely to be a
238problem as most servers support this.
239
240Valid filenames differ between Windows and Linux. Windows typically restricts
241filenames which contain certain reserved characters (e.g.the character :
242which is used to delimit the beginning of a stream name by Windows), while
243Linux allows a slightly wider set of valid characters in filenames. Windows
244servers can remap such characters when an explicit mapping is specified in
245the Server's registry. Samba starting with version 3.10 will allow such
246filenames (ie those which contain valid Linux characters, which normally
247would be forbidden for Windows/CIFS semantics) as long as the server is
248configured for Unix Extensions (and the client has not disabled
249/proc/fs/cifs/LinuxExtensionsEnabled).
250
251
252CIFS VFS Mount Options
253======================
254A partial list of the supported mount options follows:
255 user The user name to use when trying to establish
256 the CIFS session.
257 password The user password. If the mount helper is
258 installed, the user will be prompted for password
259 if not supplied.
260 ip The ip address of the target server
261 unc The target server Universal Network Name (export) to
262 mount.
263 domain Set the SMB/CIFS workgroup name prepended to the
264 username during CIFS session establishment
265 forceuid Set the default uid for inodes to the uid
266 passed in on mount. For mounts to servers
267 which do support the CIFS Unix extensions, such as a
268 properly configured Samba server, the server provides
269 the uid, gid and mode so this parameter should not be
270 specified unless the server and clients uid and gid
271 numbering differ. If the server and client are in the
272 same domain (e.g. running winbind or nss_ldap) and
273 the server supports the Unix Extensions then the uid
274 and gid can be retrieved from the server (and uid
275 and gid would not have to be specifed on the mount.
276 For servers which do not support the CIFS Unix
277 extensions, the default uid (and gid) returned on lookup
278 of existing files will be the uid (gid) of the person
279 who executed the mount (root, except when mount.cifs
280 is configured setuid for user mounts) unless the "uid="
281 (gid) mount option is specified. Also note that permission
282 checks (authorization checks) on accesses to a file occur
283 at the server, but there are cases in which an administrator
284 may want to restrict at the client as well. For those
285 servers which do not report a uid/gid owner
286 (such as Windows), permissions can also be checked at the
287 client, and a crude form of client side permission checking
288 can be enabled by specifying file_mode and dir_mode on
289 the client. (default)
290 forcegid (similar to above but for the groupid instead of uid) (default)
291 noforceuid Fill in file owner information (uid) by requesting it from
292 the server if possible. With this option, the value given in
293 the uid= option (on mount) will only be used if the server
294 can not support returning uids on inodes.
295 noforcegid (similar to above but for the group owner, gid, instead of uid)
296 uid Set the default uid for inodes, and indicate to the
297 cifs kernel driver which local user mounted. If the server
298 supports the unix extensions the default uid is
299 not used to fill in the owner fields of inodes (files)
300 unless the "forceuid" parameter is specified.
301 gid Set the default gid for inodes (similar to above).
302 file_mode If CIFS Unix extensions are not supported by the server
303 this overrides the default mode for file inodes.
304 fsc Enable local disk caching using FS-Cache (off by default). This
305 option could be useful to improve performance on a slow link,
306 heavily loaded server and/or network where reading from the
307 disk is faster than reading from the server (over the network).
308 This could also impact scalability positively as the
309 number of calls to the server are reduced. However, local
310 caching is not suitable for all workloads for e.g. read-once
311 type workloads. So, you need to consider carefully your
312 workload/scenario before using this option. Currently, local
313 disk caching is functional for CIFS files opened as read-only.
314 dir_mode If CIFS Unix extensions are not supported by the server
315 this overrides the default mode for directory inodes.
316 port attempt to contact the server on this tcp port, before
317 trying the usual ports (port 445, then 139).
318 iocharset Codepage used to convert local path names to and from
319 Unicode. Unicode is used by default for network path
320 names if the server supports it. If iocharset is
321 not specified then the nls_default specified
322 during the local client kernel build will be used.
323 If server does not support Unicode, this parameter is
324 unused.
325 rsize default read size (usually 16K). The client currently
326 can not use rsize larger than CIFSMaxBufSize. CIFSMaxBufSize
327 defaults to 16K and may be changed (from 8K to the maximum
328 kmalloc size allowed by your kernel) at module install time
329 for cifs.ko. Setting CIFSMaxBufSize to a very large value
330 will cause cifs to use more memory and may reduce performance
331 in some cases. To use rsize greater than 127K (the original
332 cifs protocol maximum) also requires that the server support
333 a new Unix Capability flag (for very large read) which some
334 newer servers (e.g. Samba 3.0.26 or later) do. rsize can be
335 set from a minimum of 2048 to a maximum of 130048 (127K or
336 CIFSMaxBufSize, whichever is smaller)
337 wsize default write size (default 57344)
338 maximum wsize currently allowed by CIFS is 57344 (fourteen
339 4096 byte pages)
340 actimeo=n attribute cache timeout in seconds (default 1 second).
341 After this timeout, the cifs client requests fresh attribute
342 information from the server. This option allows to tune the
343 attribute cache timeout to suit the workload needs. Shorter
344 timeouts mean better the cache coherency, but increased number
345 of calls to the server. Longer timeouts mean reduced number
346 of calls to the server at the expense of less stricter cache
347 coherency checks (i.e. incorrect attribute cache for a short
348 period of time).
349 rw mount the network share read-write (note that the
350 server may still consider the share read-only)
351 ro mount network share read-only
352 version used to distinguish different versions of the
353 mount helper utility (not typically needed)
354 sep if first mount option (after the -o), overrides
355 the comma as the separator between the mount
356 parms. e.g.
357 -o user=myname,password=mypassword,domain=mydom
358 could be passed instead with period as the separator by
359 -o sep=.user=myname.password=mypassword.domain=mydom
360 this might be useful when comma is contained within username
361 or password or domain. This option is less important
362 when the cifs mount helper cifs.mount (version 1.1 or later)
363 is used.
364 nosuid Do not allow remote executables with the suid bit
365 program to be executed. This is only meaningful for mounts
366 to servers such as Samba which support the CIFS Unix Extensions.
367 If you do not trust the servers in your network (your mount
368 targets) it is recommended that you specify this option for
369 greater security.
370 exec Permit execution of binaries on the mount.
371 noexec Do not permit execution of binaries on the mount.
372 dev Recognize block devices on the remote mount.
373 nodev Do not recognize devices on the remote mount.
374 suid Allow remote files on this mountpoint with suid enabled to
375 be executed (default for mounts when executed as root,
376 nosuid is default for user mounts).
377 credentials Although ignored by the cifs kernel component, it is used by
378 the mount helper, mount.cifs. When mount.cifs is installed it
379 opens and reads the credential file specified in order
380 to obtain the userid and password arguments which are passed to
381 the cifs vfs.
382 guest Although ignored by the kernel component, the mount.cifs
383 mount helper will not prompt the user for a password
384 if guest is specified on the mount options. If no
385 password is specified a null password will be used.
386 perm Client does permission checks (vfs_permission check of uid
387 and gid of the file against the mode and desired operation),
388 Note that this is in addition to the normal ACL check on the
389 target machine done by the server software.
390 Client permission checking is enabled by default.
391 noperm Client does not do permission checks. This can expose
392 files on this mount to access by other users on the local
393 client system. It is typically only needed when the server
394 supports the CIFS Unix Extensions but the UIDs/GIDs on the
395 client and server system do not match closely enough to allow
396 access by the user doing the mount, but it may be useful with
397 non CIFS Unix Extension mounts for cases in which the default
398 mode is specified on the mount but is not to be enforced on the
399 client (e.g. perhaps when MultiUserMount is enabled)
400 Note that this does not affect the normal ACL check on the
401 target machine done by the server software (of the server
402 ACL against the user name provided at mount time).
403 serverino Use server's inode numbers instead of generating automatically
404 incrementing inode numbers on the client. Although this will
405 make it easier to spot hardlinked files (as they will have
406 the same inode numbers) and inode numbers may be persistent,
407 note that the server does not guarantee that the inode numbers
408 are unique if multiple server side mounts are exported under a
409 single share (since inode numbers on the servers might not
410 be unique if multiple filesystems are mounted under the same
411 shared higher level directory). Note that some older
412 (e.g. pre-Windows 2000) do not support returning UniqueIDs
413 or the CIFS Unix Extensions equivalent and for those
414 this mount option will have no effect. Exporting cifs mounts
415 under nfsd requires this mount option on the cifs mount.
416 This is now the default if server supports the
417 required network operation.
418 noserverino Client generates inode numbers (rather than using the actual one
419 from the server). These inode numbers will vary after
420 unmount or reboot which can confuse some applications,
421 but not all server filesystems support unique inode
422 numbers.
423 setuids If the CIFS Unix extensions are negotiated with the server
424 the client will attempt to set the effective uid and gid of
425 the local process on newly created files, directories, and
426 devices (create, mkdir, mknod). If the CIFS Unix Extensions
427 are not negotiated, for newly created files and directories
428 instead of using the default uid and gid specified on
429 the mount, cache the new file's uid and gid locally which means
430 that the uid for the file can change when the inode is
431 reloaded (or the user remounts the share).
432 nosetuids The client will not attempt to set the uid and gid on
433 on newly created files, directories, and devices (create,
434 mkdir, mknod) which will result in the server setting the
435 uid and gid to the default (usually the server uid of the
436 user who mounted the share). Letting the server (rather than
437 the client) set the uid and gid is the default. If the CIFS
438 Unix Extensions are not negotiated then the uid and gid for
439 new files will appear to be the uid (gid) of the mounter or the
440 uid (gid) parameter specified on the mount.
441 netbiosname When mounting to servers via port 139, specifies the RFC1001
442 source name to use to represent the client netbios machine
443 name when doing the RFC1001 netbios session initialize.
444 direct Do not do inode data caching on files opened on this mount.
445 This precludes mmapping files on this mount. In some cases
446 with fast networks and little or no caching benefits on the
447 client (e.g. when the application is doing large sequential
448 reads bigger than page size without rereading the same data)
449 this can provide better performance than the default
450 behavior which caches reads (readahead) and writes
451 (writebehind) through the local Linux client pagecache
452 if oplock (caching token) is granted and held. Note that
453 direct allows write operations larger than page size
454 to be sent to the server.
455 strictcache Use for switching on strict cache mode. In this mode the
456 client read from the cache all the time it has Oplock Level II,
457 otherwise - read from the server. All written data are stored
458 in the cache, but if the client doesn't have Exclusive Oplock,
459 it writes the data to the server.
460 rwpidforward Forward pid of a process who opened a file to any read or write
461 operation on that file. This prevent applications like WINE
462 from failing on read and write if we use mandatory brlock style.
463 acl Allow setfacl and getfacl to manage posix ACLs if server
464 supports them. (default)
465 noacl Do not allow setfacl and getfacl calls on this mount
466 user_xattr Allow getting and setting user xattrs (those attributes whose
467 name begins with "user." or "os2.") as OS/2 EAs (extended
468 attributes) to the server. This allows support of the
469 setfattr and getfattr utilities. (default)
470 nouser_xattr Do not allow getfattr/setfattr to get/set/list xattrs
471 mapchars Translate six of the seven reserved characters (not backslash)
472 *?<>|:
473 to the remap range (above 0xF000), which also
474 allows the CIFS client to recognize files created with
475 such characters by Windows's POSIX emulation. This can
476 also be useful when mounting to most versions of Samba
477 (which also forbids creating and opening files
478 whose names contain any of these seven characters).
479 This has no effect if the server does not support
480 Unicode on the wire.
481 nomapchars Do not translate any of these seven characters (default).
482 nocase Request case insensitive path name matching (case
483 sensitive is the default if the server supports it).
484 (mount option "ignorecase" is identical to "nocase")
485 posixpaths If CIFS Unix extensions are supported, attempt to
486 negotiate posix path name support which allows certain
487 characters forbidden in typical CIFS filenames, without
488 requiring remapping. (default)
489 noposixpaths If CIFS Unix extensions are supported, do not request
490 posix path name support (this may cause servers to
491 reject creatingfile with certain reserved characters).
492 nounix Disable the CIFS Unix Extensions for this mount (tree
493 connection). This is rarely needed, but it may be useful
494 in order to turn off multiple settings all at once (ie
495 posix acls, posix locks, posix paths, symlink support
496 and retrieving uids/gids/mode from the server) or to
497 work around a bug in server which implement the Unix
498 Extensions.
499 nobrl Do not send byte range lock requests to the server.
500 This is necessary for certain applications that break
501 with cifs style mandatory byte range locks (and most
502 cifs servers do not yet support requesting advisory
503 byte range locks).
504 forcemandatorylock Even if the server supports posix (advisory) byte range
505 locking, send only mandatory lock requests. For some
506 (presumably rare) applications, originally coded for
507 DOS/Windows, which require Windows style mandatory byte range
508 locking, they may be able to take advantage of this option,
509 forcing the cifs client to only send mandatory locks
510 even if the cifs server would support posix advisory locks.
511 "forcemand" is accepted as a shorter form of this mount
512 option.
513 nostrictsync If this mount option is set, when an application does an
514 fsync call then the cifs client does not send an SMB Flush
515 to the server (to force the server to write all dirty data
516 for this file immediately to disk), although cifs still sends
517 all dirty (cached) file data to the server and waits for the
518 server to respond to the write. Since SMB Flush can be
519 very slow, and some servers may be reliable enough (to risk
520 delaying slightly flushing the data to disk on the server),
521 turning on this option may be useful to improve performance for
522 applications that fsync too much, at a small risk of server
523 crash. If this mount option is not set, by default cifs will
524 send an SMB flush request (and wait for a response) on every
525 fsync call.
526 nodfs Disable DFS (global name space support) even if the
527 server claims to support it. This can help work around
528 a problem with parsing of DFS paths with Samba server
529 versions 3.0.24 and 3.0.25.
530 remount remount the share (often used to change from ro to rw mounts
531 or vice versa)
532 cifsacl Report mode bits (e.g. on stat) based on the Windows ACL for
533 the file. (EXPERIMENTAL)
534 servern Specify the server 's netbios name (RFC1001 name) to use
535 when attempting to setup a session to the server.
536 This is needed for mounting to some older servers (such
537 as OS/2 or Windows 98 and Windows ME) since they do not
538 support a default server name. A server name can be up
539 to 15 characters long and is usually uppercased.
540 sfu When the CIFS Unix Extensions are not negotiated, attempt to
541 create device files and fifos in a format compatible with
542 Services for Unix (SFU). In addition retrieve bits 10-12
543 of the mode via the SETFILEBITS extended attribute (as
544 SFU does). In the future the bottom 9 bits of the
545 mode also will be emulated using queries of the security
546 descriptor (ACL).
547 mfsymlinks Enable support for Minshall+French symlinks
548 (see http://wiki.samba.org/index.php/UNIX_Extensions#Minshall.2BFrench_symlinks)
549 This option is ignored when specified together with the
550 'sfu' option. Minshall+French symlinks are used even if
551 the server supports the CIFS Unix Extensions.
552 sign Must use packet signing (helps avoid unwanted data modification
553 by intermediate systems in the route). Note that signing
554 does not work with lanman or plaintext authentication.
555 seal Must seal (encrypt) all data on this mounted share before
556 sending on the network. Requires support for Unix Extensions.
557 Note that this differs from the sign mount option in that it
558 causes encryption of data sent over this mounted share but other
559 shares mounted to the same server are unaffected.
560 locallease This option is rarely needed. Fcntl F_SETLEASE is
561 used by some applications such as Samba and NFSv4 server to
562 check to see whether a file is cacheable. CIFS has no way
563 to explicitly request a lease, but can check whether a file
564 is cacheable (oplocked). Unfortunately, even if a file
565 is not oplocked, it could still be cacheable (ie cifs client
566 could grant fcntl leases if no other local processes are using
567 the file) for cases for example such as when the server does not
568 support oplocks and the user is sure that the only updates to
569 the file will be from this client. Specifying this mount option
570 will allow the cifs client to check for leases (only) locally
571 for files which are not oplocked instead of denying leases
572 in that case. (EXPERIMENTAL)
573 sec Security mode. Allowed values are:
574 none attempt to connection as a null user (no name)
575 krb5 Use Kerberos version 5 authentication
576 krb5i Use Kerberos authentication and packet signing
577 ntlm Use NTLM password hashing (default)
578 ntlmi Use NTLM password hashing with signing (if
579 /proc/fs/cifs/PacketSigningEnabled on or if
580 server requires signing also can be the default)
581 ntlmv2 Use NTLMv2 password hashing
582 ntlmv2i Use NTLMv2 password hashing with packet signing
583 lanman (if configured in kernel config) use older
584 lanman hash
585hard Retry file operations if server is not responding
586soft Limit retries to unresponsive servers (usually only
587 one retry) before returning an error. (default)
588
589The mount.cifs mount helper also accepts a few mount options before -o
590including:
591
592 -S take password from stdin (equivalent to setting the environment
593 variable "PASSWD_FD=0"
594 -V print mount.cifs version
595 -? display simple usage information
596
597With most 2.6 kernel versions of modutils, the version of the cifs kernel
598module can be displayed via modinfo.
599
600Misc /proc/fs/cifs Flags and Debug Info
601=======================================
602Informational pseudo-files:
603DebugData Displays information about active CIFS sessions and
604 shares, features enabled as well as the cifs.ko
605 version.
606Stats Lists summary resource usage information as well as per
607 share statistics, if CONFIG_CIFS_STATS in enabled
608 in the kernel configuration.
609
610Configuration pseudo-files:
611PacketSigningEnabled If set to one, cifs packet signing is enabled
612 and will be used if the server requires
613 it. If set to two, cifs packet signing is
614 required even if the server considers packet
615 signing optional. (default 1)
616SecurityFlags Flags which control security negotiation and
617 also packet signing. Authentication (may/must)
618 flags (e.g. for NTLM and/or NTLMv2) may be combined with
619 the signing flags. Specifying two different password
620 hashing mechanisms (as "must use") on the other hand
621 does not make much sense. Default flags are
622 0x07007
623 (NTLM, NTLMv2 and packet signing allowed). The maximum
624 allowable flags if you want to allow mounts to servers
625 using weaker password hashes is 0x37037 (lanman,
626 plaintext, ntlm, ntlmv2, signing allowed). Some
627 SecurityFlags require the corresponding menuconfig
628 options to be enabled (lanman and plaintext require
629 CONFIG_CIFS_WEAK_PW_HASH for example). Enabling
630 plaintext authentication currently requires also
631 enabling lanman authentication in the security flags
632 because the cifs module only supports sending
633 laintext passwords using the older lanman dialect
634 form of the session setup SMB. (e.g. for authentication
635 using plain text passwords, set the SecurityFlags
636 to 0x30030):
637
638 may use packet signing 0x00001
639 must use packet signing 0x01001
640 may use NTLM (most common password hash) 0x00002
641 must use NTLM 0x02002
642 may use NTLMv2 0x00004
643 must use NTLMv2 0x04004
644 may use Kerberos security 0x00008
645 must use Kerberos 0x08008
646 may use lanman (weak) password hash 0x00010
647 must use lanman password hash 0x10010
648 may use plaintext passwords 0x00020
649 must use plaintext passwords 0x20020
650 (reserved for future packet encryption) 0x00040
651
652cifsFYI If set to non-zero value, additional debug information
653 will be logged to the system error log. This field
654 contains three flags controlling different classes of
655 debugging entries. The maximum value it can be set
656 to is 7 which enables all debugging points (default 0).
657 Some debugging statements are not compiled into the
658 cifs kernel unless CONFIG_CIFS_DEBUG2 is enabled in the
659 kernel configuration. cifsFYI may be set to one or
660 nore of the following flags (7 sets them all):
661
662 log cifs informational messages 0x01
663 log return codes from cifs entry points 0x02
664 log slow responses (ie which take longer than 1 second)
665 CONFIG_CIFS_STATS2 must be enabled in .config 0x04
666
667
668traceSMB If set to one, debug information is logged to the
669 system error log with the start of smb requests
670 and responses (default 0)
671LookupCacheEnable If set to one, inode information is kept cached
672 for one second improving performance of lookups
673 (default 1)
674OplockEnabled If set to one, safe distributed caching enabled.
675 (default 1)
676LinuxExtensionsEnabled If set to one then the client will attempt to
677 use the CIFS "UNIX" extensions which are optional
678 protocol enhancements that allow CIFS servers
679 to return accurate UID/GID information as well
680 as support symbolic links. If you use servers
681 such as Samba that support the CIFS Unix
682 extensions but do not want to use symbolic link
683 support and want to map the uid and gid fields
684 to values supplied at mount (rather than the
685 actual values, then set this to zero. (default 1)
686
687These experimental features and tracing can be enabled by changing flags in
688/proc/fs/cifs (after the cifs module has been installed or built into the
689kernel, e.g. insmod cifs). To enable a feature set it to 1 e.g. to enable
690tracing to the kernel message log type:
691
692 echo 7 > /proc/fs/cifs/cifsFYI
693
694cifsFYI functions as a bit mask. Setting it to 1 enables additional kernel
695logging of various informational messages. 2 enables logging of non-zero
696SMB return codes while 4 enables logging of requests that take longer
697than one second to complete (except for byte range lock requests).
698Setting it to 4 requires defining CONFIG_CIFS_STATS2 manually in the
699source code (typically by setting it in the beginning of cifsglob.h),
700and setting it to seven enables all three. Finally, tracing
701the start of smb requests and responses can be enabled via:
702
703 echo 1 > /proc/fs/cifs/traceSMB
704
705Per share (per client mount) statistics are available in /proc/fs/cifs/Stats
706if the kernel was configured with cifs statistics enabled. The statistics
707represent the number of successful (ie non-zero return code from the server)
708SMB responses to some of the more common commands (open, delete, mkdir etc.).
709Also recorded is the total bytes read and bytes written to the server for
710that share. Note that due to client caching effects this can be less than the
711number of bytes read and written by the application running on the client.
712The statistics for the number of total SMBs and oplock breaks are different in
713that they represent all for that share, not just those for which the server
714returned success.
715
716Also note that "cat /proc/fs/cifs/DebugData" will display information about
717the active sessions and the shares that are mounted.
718
719Enabling Kerberos (extended security) works but requires version 1.2 or later
720of the helper program cifs.upcall to be present and to be configured in the
721/etc/request-key.conf file. The cifs.upcall helper program is from the Samba
722project(http://www.samba.org). NTLM and NTLMv2 and LANMAN support do not
723require this helper. Note that NTLMv2 security (which does not require the
724cifs.upcall helper program), instead of using Kerberos, is sufficient for
725some use cases.
726
727DFS support allows transparent redirection to shares in an MS-DFS name space.
728In addition, DFS support for target shares which are specified as UNC
729names which begin with host names (rather than IP addresses) requires
730a user space helper (such as cifs.upcall) to be present in order to
731translate host names to ip address, and the user space helper must also
732be configured in the file /etc/request-key.conf. Samba, Windows servers and
733many NAS appliances support DFS as a way of constructing a global name
734space to ease network configuration and improve reliability.
735
736To use cifs Kerberos and DFS support, the Linux keyutils package should be
737installed and something like the following lines should be added to the
738/etc/request-key.conf file:
739
740create cifs.spnego * * /usr/local/sbin/cifs.upcall %k
741create dns_resolver * * /usr/local/sbin/cifs.upcall %k
742
743CIFS kernel module parameters
744=============================
745These module parameters can be specified or modified either during the time of
746module loading or during the runtime by using the interface
747 /proc/module/cifs/parameters/<param>
748
749i.e. echo "value" > /sys/module/cifs/parameters/<param>
750
7511. enable_oplocks - Enable or disable oplocks. Oplocks are enabled by default.
752 [Y/y/1]. To disable use any of [N/n/0].
753
diff --git a/Documentation/filesystems/cifs/TODO b/Documentation/filesystems/cifs/TODO
new file mode 100644
index 000000000000..355abcdcda98
--- /dev/null
+++ b/Documentation/filesystems/cifs/TODO
@@ -0,0 +1,129 @@
1Version 1.53 May 20, 2008
2
3A Partial List of Missing Features
4==================================
5
6Contributions are welcome. There are plenty of opportunities
7for visible, important contributions to this module. Here
8is a partial list of the known problems and missing features:
9
10a) Support for SecurityDescriptors(Windows/CIFS ACLs) for chmod/chgrp/chown
11so that these operations can be supported to Windows servers
12
13b) Mapping POSIX ACLs (and eventually NFSv4 ACLs) to CIFS
14SecurityDescriptors
15
16c) Better pam/winbind integration (e.g. to handle uid mapping
17better)
18
19d) Cleanup now unneeded SessSetup code in
20fs/cifs/connect.c and add back in NTLMSSP code if any servers
21need it
22
23e) fix NTLMv2 signing when two mounts with different users to same
24server.
25
26f) Directory entry caching relies on a 1 second timer, rather than
27using FindNotify or equivalent. - (started)
28
29g) quota support (needs minor kernel change since quota calls
30to make it to network filesystems or deviceless filesystems)
31
32h) investigate sync behavior (including syncpage) and check
33for proper behavior of intr/nointr
34
35i) improve support for very old servers (OS/2 and Win9x for example)
36Including support for changing the time remotely (utimes command).
37
38j) hook lower into the sockets api (as NFS/SunRPC does) to avoid the
39extra copy in/out of the socket buffers in some cases.
40
41k) Better optimize open (and pathbased setfilesize) to reduce the
42oplock breaks coming from windows srv. Piggyback identical file
43opens on top of each other by incrementing reference count rather
44than resending (helps reduce server resource utilization and avoid
45spurious oplock breaks).
46
47l) Improve performance of readpages by sending more than one read
48at a time when 8 pages or more are requested. In conjuntion
49add support for async_cifs_readpages.
50
51m) Add support for storing symlink info to Windows servers
52in the Extended Attribute format their SFU clients would recognize.
53
54n) Finish fcntl D_NOTIFY support so kde and gnome file list windows
55will autorefresh (partially complete by Asser). Needs minor kernel
56vfs change to support removing D_NOTIFY on a file.
57
58o) Add GUI tool to configure /proc/fs/cifs settings and for display of
59the CIFS statistics (started)
60
61p) implement support for security and trusted categories of xattrs
62(requires minor protocol extension) to enable better support for SELINUX
63
64q) Implement O_DIRECT flag on open (already supported on mount)
65
66r) Create UID mapping facility so server UIDs can be mapped on a per
67mount or a per server basis to client UIDs or nobody if no mapping
68exists. This is helpful when Unix extensions are negotiated to
69allow better permission checking when UIDs differ on the server
70and client. Add new protocol request to the CIFS protocol
71standard for asking the server for the corresponding name of a
72particular uid.
73
74s) Add support for CIFS Unix and also the newer POSIX extensions to the
75server side for Samba 4.
76
77t) In support for OS/2 (LANMAN 1.2 and LANMAN2.1 based SMB servers)
78need to add ability to set time to server (utimes command)
79
80u) DOS attrs - returned as pseudo-xattr in Samba format (check VFAT and NTFS for this too)
81
82v) mount check for unmatched uids
83
84w) Add support for new vfs entry point for fallocate
85
86x) Fix Samba 3 server to handle Linux kernel aio so dbench with lots of
87processes can proceed better in parallel (on the server)
88
89y) Fix Samba 3 to handle reads/writes over 127K (and remove the cifs mount
90restriction of wsize max being 127K)
91
92KNOWN BUGS (updated April 24, 2007)
93====================================
94See http://bugzilla.samba.org - search on product "CifsVFS" for
95current bug list.
96
971) existing symbolic links (Windows reparse points) are recognized but
98can not be created remotely. They are implemented for Samba and those that
99support the CIFS Unix extensions, although earlier versions of Samba
100overly restrict the pathnames.
1012) follow_link and readdir code does not follow dfs junctions
102but recognizes them
1033) create of new files to FAT partitions on Windows servers can
104succeed but still return access denied (appears to be Windows
105server not cifs client problem) and has not been reproduced recently.
106NTFS partitions do not have this problem.
1074) Unix/POSIX capabilities are reset after reconnection, and affect
108a few fields in the tree connection but we do do not know which
109superblocks to apply these changes to. We should probably walk
110the list of superblocks to set these. Also need to check the
111flags on the second mount to the same share, and see if we
112can do the same trick that NFS does to remount duplicate shares.
113
114Misc testing to do
115==================
1161) check out max path names and max path name components against various server
117types. Try nested symlinks (8 deep). Return max path name in stat -f information
118
1192) Modify file portion of ltp so it can run against a mounted network
120share and run it against cifs vfs in automated fashion.
121
1223) Additional performance testing and optimization using iozone and similar -
123there are some easy changes that can be done to parallelize sequential writes,
124and when signing is disabled to request larger read sizes (larger than
125negotiated size) and send larger write sizes to modern servers.
126
1274) More exhaustively test against less common servers. More testing
128against Windows 9x, Windows ME servers.
129
diff --git a/Documentation/filesystems/cifs/cifs.txt b/Documentation/filesystems/cifs/cifs.txt
new file mode 100644
index 000000000000..2fac91ac96cf
--- /dev/null
+++ b/Documentation/filesystems/cifs/cifs.txt
@@ -0,0 +1,31 @@
1 This is the client VFS module for the Common Internet File System
2 (CIFS) protocol which is the successor to the Server Message Block
3 (SMB) protocol, the native file sharing mechanism for most early
4 PC operating systems. New and improved versions of CIFS are now
5 called SMB2 and SMB3. These dialects are also supported by the
6 CIFS VFS module. CIFS is fully supported by network
7 file servers such as Windows 2000, 2003, 2008 and 2012
8 as well by Samba (which provides excellent CIFS
9 server support for Linux and many other operating systems), so
10 this network filesystem client can mount to a wide variety of
11 servers.
12
13 The intent of this module is to provide the most advanced network
14 file system function for CIFS compliant servers, including better
15 POSIX compliance, secure per-user session establishment, high
16 performance safe distributed caching (oplock), optional packet
17 signing, large files, Unicode support and other internationalization
18 improvements. Since both Samba server and this filesystem client support
19 the CIFS Unix extensions, the combination can provide a reasonable
20 alternative to NFSv4 for fileserving in some Linux to Linux environments,
21 not just in Linux to Windows environments.
22
23 This filesystem has an mount utility (mount.cifs) that can be obtained from
24
25 https://ftp.samba.org/pub/linux-cifs/cifs-utils/
26
27 It must be installed in the directory with the other mount helpers.
28
29 For more information on the module see the project wiki page at
30
31 https://wiki.samba.org/index.php/LinuxCIFS_utils
diff --git a/Documentation/filesystems/cifs/winucase_convert.pl b/Documentation/filesystems/cifs/winucase_convert.pl
new file mode 100755
index 000000000000..322a9c833f23
--- /dev/null
+++ b/Documentation/filesystems/cifs/winucase_convert.pl
@@ -0,0 +1,62 @@
1#!/usr/bin/perl -w
2#
3# winucase_convert.pl -- convert "Windows 8 Upper Case Mapping Table.txt" to
4# a two-level set of C arrays.
5#
6# Copyright 2013: Jeff Layton <jlayton@redhat.com>
7#
8# This program is free software: you can redistribute it and/or modify
9# it under the terms of the GNU General Public License as published by
10# the Free Software Foundation, either version 3 of the License, or
11# (at your option) any later version.
12#
13# This program is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16# GNU General Public License for more details.
17#
18# You should have received a copy of the GNU General Public License
19# along with this program. If not, see <http://www.gnu.org/licenses/>.
20#
21
22while(<>) {
23 next if (!/^0x(..)(..)\t0x(....)\t/);
24 $firstchar = hex($1);
25 $secondchar = hex($2);
26 $uppercase = hex($3);
27
28 $top[$firstchar][$secondchar] = $uppercase;
29}
30
31for ($i = 0; $i < 256; $i++) {
32 next if (!$top[$i]);
33
34 printf("static const wchar_t t2_%2.2x[256] = {", $i);
35 for ($j = 0; $j < 256; $j++) {
36 if (($j % 8) == 0) {
37 print "\n\t";
38 } else {
39 print " ";
40 }
41 printf("0x%4.4x,", $top[$i][$j] ? $top[$i][$j] : 0);
42 }
43 print "\n};\n\n";
44}
45
46printf("static const wchar_t *const toplevel[256] = {", $i);
47for ($i = 0; $i < 256; $i++) {
48 if (($i % 8) == 0) {
49 print "\n\t";
50 } elsif ($top[$i]) {
51 print " ";
52 } else {
53 print " ";
54 }
55
56 if ($top[$i]) {
57 printf("t2_%2.2x,", $i);
58 } else {
59 print "NULL,";
60 }
61}
62print "\n};\n\n";
diff --git a/Documentation/filesystems/ext3.txt b/Documentation/filesystems/ext3.txt
index 293855e95000..7ed0d17d6721 100644
--- a/Documentation/filesystems/ext3.txt
+++ b/Documentation/filesystems/ext3.txt
@@ -26,11 +26,12 @@ journal=inum When a journal already exists, this option is ignored.
26 Otherwise, it specifies the number of the inode which 26 Otherwise, it specifies the number of the inode which
27 will represent the ext3 file system's journal file. 27 will represent the ext3 file system's journal file.
28 28
29journal_path=path
29journal_dev=devnum When the external journal device's major/minor numbers 30journal_dev=devnum When the external journal device's major/minor numbers
30 have changed, this option allows the user to specify 31 have changed, these options allow the user to specify
31 the new journal location. The journal device is 32 the new journal location. The journal device is
32 identified through its new major/minor numbers encoded 33 identified through either its new major/minor numbers
33 in devnum. 34 encoded in devnum, or via a path to the device.
34 35
35norecovery Don't load the journal on mounting. Note that this forces 36norecovery Don't load the journal on mounting. Note that this forces
36noload mount of inconsistent filesystem, which can lead to 37noload mount of inconsistent filesystem, which can lead to
diff --git a/Documentation/filesystems/ext4.txt b/Documentation/filesystems/ext4.txt
index f7cbf574a875..919a3293aaa4 100644
--- a/Documentation/filesystems/ext4.txt
+++ b/Documentation/filesystems/ext4.txt
@@ -2,7 +2,7 @@
2Ext4 Filesystem 2Ext4 Filesystem
3=============== 3===============
4 4
5Ext4 is an an advanced level of the ext3 filesystem which incorporates 5Ext4 is an advanced level of the ext3 filesystem which incorporates
6scalability and reliability enhancements for supporting large filesystems 6scalability and reliability enhancements for supporting large filesystems
7(64 bit) in keeping with increasing disk capacities and state-of-the-art 7(64 bit) in keeping with increasing disk capacities and state-of-the-art
8feature requirements. 8feature requirements.
@@ -144,11 +144,12 @@ journal_async_commit Commit block can be written to disk without waiting
144 mount the device. This will enable 'journal_checksum' 144 mount the device. This will enable 'journal_checksum'
145 internally. 145 internally.
146 146
147journal_path=path
147journal_dev=devnum When the external journal device's major/minor numbers 148journal_dev=devnum When the external journal device's major/minor numbers
148 have changed, this option allows the user to specify 149 have changed, these options allow the user to specify
149 the new journal location. The journal device is 150 the new journal location. The journal device is
150 identified through its new major/minor numbers encoded 151 identified through either its new major/minor numbers
151 in devnum. 152 encoded in devnum, or via a path to the device.
152 153
153norecovery Don't load the journal on mounting. Note that 154norecovery Don't load the journal on mounting. Note that
154noload if the filesystem was not unmounted cleanly, 155noload if the filesystem was not unmounted cleanly,
diff --git a/Documentation/filesystems/f2fs.txt b/Documentation/filesystems/f2fs.txt
index b91e2f26b672..a3fe811bbdbc 100644
--- a/Documentation/filesystems/f2fs.txt
+++ b/Documentation/filesystems/f2fs.txt
@@ -18,8 +18,8 @@ according to its internal geometry or flash memory management scheme, namely FTL
18F2FS and its tools support various parameters not only for configuring on-disk 18F2FS and its tools support various parameters not only for configuring on-disk
19layout, but also for selecting allocation and cleaning algorithms. 19layout, but also for selecting allocation and cleaning algorithms.
20 20
21The file system formatting tool, "mkfs.f2fs", is available from the following 21The following git tree provides the file system formatting tool (mkfs.f2fs),
22git tree: 22a consistency checking tool (fsck.f2fs), and a debugging tool (dump.f2fs).
23>> git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git 23>> git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git
24 24
25For reporting bugs and sending patches, please use the following mailing list: 25For reporting bugs and sending patches, please use the following mailing list:
@@ -119,6 +119,7 @@ active_logs=%u Support configuring the number of active logs. In the
119 Default number is 6. 119 Default number is 6.
120disable_ext_identify Disable the extension list configured by mkfs, so f2fs 120disable_ext_identify Disable the extension list configured by mkfs, so f2fs
121 does not aware of cold files such as media files. 121 does not aware of cold files such as media files.
122inline_xattr Enable the inline xattrs feature.
122 123
123================================================================================ 124================================================================================
124DEBUGFS ENTRIES 125DEBUGFS ENTRIES
@@ -133,6 +134,44 @@ f2fs. Each file shows the whole f2fs information.
133 - current memory footprint consumed by f2fs. 134 - current memory footprint consumed by f2fs.
134 135
135================================================================================ 136================================================================================
137SYSFS ENTRIES
138================================================================================
139
140Information about mounted f2f2 file systems can be found in
141/sys/fs/f2fs. Each mounted filesystem will have a directory in
142/sys/fs/f2fs based on its device name (i.e., /sys/fs/f2fs/sda).
143The files in each per-device directory are shown in table below.
144
145Files in /sys/fs/f2fs/<devname>
146(see also Documentation/ABI/testing/sysfs-fs-f2fs)
147..............................................................................
148 File Content
149
150 gc_max_sleep_time This tuning parameter controls the maximum sleep
151 time for the garbage collection thread. Time is
152 in milliseconds.
153
154 gc_min_sleep_time This tuning parameter controls the minimum sleep
155 time for the garbage collection thread. Time is
156 in milliseconds.
157
158 gc_no_gc_sleep_time This tuning parameter controls the default sleep
159 time for the garbage collection thread. Time is
160 in milliseconds.
161
162 gc_idle This parameter controls the selection of victim
163 policy for garbage collection. Setting gc_idle = 0
164 (default) will disable this option. Setting
165 gc_idle = 1 will select the Cost Benefit approach
166 & setting gc_idle = 2 will select the greedy aproach.
167
168 reclaim_segments This parameter controls the number of prefree
169 segments to be reclaimed. If the number of prefree
170 segments is larger than this number, f2fs tries to
171 conduct checkpoint to reclaim the prefree segments
172 to free segments. By default, 100 segments, 200MB.
173
174================================================================================
136USAGE 175USAGE
137================================================================================ 176================================================================================
138 177
@@ -149,8 +188,12 @@ USAGE
149 # mkfs.f2fs -l label /dev/block_device 188 # mkfs.f2fs -l label /dev/block_device
150 # mount -t f2fs /dev/block_device /mnt/f2fs 189 # mount -t f2fs /dev/block_device /mnt/f2fs
151 190
152Format options 191mkfs.f2fs
153-------------- 192---------
193The mkfs.f2fs is for the use of formatting a partition as the f2fs filesystem,
194which builds a basic on-disk layout.
195
196The options consist of:
154-l [label] : Give a volume label, up to 512 unicode name. 197-l [label] : Give a volume label, up to 512 unicode name.
155-a [0 or 1] : Split start location of each area for heap-based allocation. 198-a [0 or 1] : Split start location of each area for heap-based allocation.
156 1 is set by default, which performs this. 199 1 is set by default, which performs this.
@@ -164,6 +207,37 @@ Format options
164-t [0 or 1] : Disable discard command or not. 207-t [0 or 1] : Disable discard command or not.
165 1 is set by default, which conducts discard. 208 1 is set by default, which conducts discard.
166 209
210fsck.f2fs
211---------
212The fsck.f2fs is a tool to check the consistency of an f2fs-formatted
213partition, which examines whether the filesystem metadata and user-made data
214are cross-referenced correctly or not.
215Note that, initial version of the tool does not fix any inconsistency.
216
217The options consist of:
218 -d debug level [default:0]
219
220dump.f2fs
221---------
222The dump.f2fs shows the information of specific inode and dumps SSA and SIT to
223file. Each file is dump_ssa and dump_sit.
224
225The dump.f2fs is used to debug on-disk data structures of the f2fs filesystem.
226It shows on-disk inode information reconized by a given inode number, and is
227able to dump all the SSA and SIT entries into predefined files, ./dump_ssa and
228./dump_sit respectively.
229
230The options consist of:
231 -d debug level [default:0]
232 -i inode no (hex)
233 -s [SIT dump segno from #1~#2 (decimal), for all 0~-1]
234 -a [SSA dump segno from #1~#2 (decimal), for all 0~-1]
235
236Examples:
237# dump.f2fs -i [ino] /dev/sdx
238# dump.f2fs -s 0~-1 /dev/sdx (SIT dump)
239# dump.f2fs -a 0~-1 /dev/sdx (SSA dump)
240
167================================================================================ 241================================================================================
168DESIGN 242DESIGN
169================================================================================ 243================================================================================
diff --git a/Documentation/filesystems/nfs/Exporting b/Documentation/filesystems/nfs/Exporting
index 09994c247289..e543b1a619cc 100644
--- a/Documentation/filesystems/nfs/Exporting
+++ b/Documentation/filesystems/nfs/Exporting
@@ -93,7 +93,7 @@ For a filesystem to be exportable it must:
93 2/ make sure that d_splice_alias is used rather than d_add 93 2/ make sure that d_splice_alias is used rather than d_add
94 when ->lookup finds an inode for a given parent and name. 94 when ->lookup finds an inode for a given parent and name.
95 95
96 If inode is NULL, d_splice_alias(inode, dentry) is eqivalent to 96 If inode is NULL, d_splice_alias(inode, dentry) is equivalent to
97 97
98 d_add(dentry, inode), NULL 98 d_add(dentry, inode), NULL
99 99
diff --git a/Documentation/filesystems/nfs/pnfs.txt b/Documentation/filesystems/nfs/pnfs.txt
index 52ae07f5f578..adc81a35fe2d 100644
--- a/Documentation/filesystems/nfs/pnfs.txt
+++ b/Documentation/filesystems/nfs/pnfs.txt
@@ -12,7 +12,7 @@ struct pnfs_layout_hdr
12---------------------- 12----------------------
13The on-the-wire command LAYOUTGET corresponds to struct 13The on-the-wire command LAYOUTGET corresponds to struct
14pnfs_layout_segment, usually referred to by the variable name lseg. 14pnfs_layout_segment, usually referred to by the variable name lseg.
15Each nfs_inode may hold a pointer to a cache of of these layout 15Each nfs_inode may hold a pointer to a cache of these layout
16segments in nfsi->layout, of type struct pnfs_layout_hdr. 16segments in nfsi->layout, of type struct pnfs_layout_hdr.
17 17
18We reference the header for the inode pointing to it, across each 18We reference the header for the inode pointing to it, across each
diff --git a/Documentation/filesystems/porting b/Documentation/filesystems/porting
index 206a1bdc7321..f0890581f7f6 100644
--- a/Documentation/filesystems/porting
+++ b/Documentation/filesystems/porting
@@ -451,3 +451,7 @@ in your dentry operations instead.
451-- 451--
452[mandatory] 452[mandatory]
453 ->readdir() is gone now; switch to ->iterate() 453 ->readdir() is gone now; switch to ->iterate()
454[mandatory]
455 vfs_follow_link has been removed. Filesystems must use nd_set_link
456 from ->follow_link for normal symlinks, or nd_jump_link for magic
457 /proc/<pid> style links.
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt
index fcc22c982a25..823c95faebd2 100644
--- a/Documentation/filesystems/proc.txt
+++ b/Documentation/filesystems/proc.txt
@@ -854,16 +854,15 @@ Committed_AS: The amount of memory presently allocated on the system.
854 The committed memory is a sum of all of the memory which 854 The committed memory is a sum of all of the memory which
855 has been allocated by processes, even if it has not been 855 has been allocated by processes, even if it has not been
856 "used" by them as of yet. A process which malloc()'s 1G 856 "used" by them as of yet. A process which malloc()'s 1G
857 of memory, but only touches 300M of it will only show up 857 of memory, but only touches 300M of it will show up as
858 as using 300M of memory even if it has the address space 858 using 1G. This 1G is memory which has been "committed" to
859 allocated for the entire 1G. This 1G is memory which has 859 by the VM and can be used at any time by the allocating
860 been "committed" to by the VM and can be used at any time 860 application. With strict overcommit enabled on the system
861 by the allocating application. With strict overcommit 861 (mode 2 in 'vm.overcommit_memory'),allocations which would
862 enabled on the system (mode 2 in 'vm.overcommit_memory'), 862 exceed the CommitLimit (detailed above) will not be permitted.
863 allocations which would exceed the CommitLimit (detailed 863 This is useful if one needs to guarantee that processes will
864 above) will not be permitted. This is useful if one needs 864 not fail due to lack of memory once that memory has been
865 to guarantee that processes will not fail due to lack of 865 successfully allocated.
866 memory once that memory has been successfully allocated.
867VmallocTotal: total size of vmalloc memory area 866VmallocTotal: total size of vmalloc memory area
868 VmallocUsed: amount of vmalloc area which is used 867 VmallocUsed: amount of vmalloc area which is used
869VmallocChunk: largest contiguous block of vmalloc area which is free 868VmallocChunk: largest contiguous block of vmalloc area which is free
diff --git a/Documentation/filesystems/qnx6.txt b/Documentation/filesystems/qnx6.txt
index 99e90184a72f..408679789136 100644
--- a/Documentation/filesystems/qnx6.txt
+++ b/Documentation/filesystems/qnx6.txt
@@ -149,7 +149,7 @@ Bitmap system area
149------------------ 149------------------
150 150
151The bitmap itself is divided into three parts. 151The bitmap itself is divided into three parts.
152First the system area, that is split into two halfs. 152First the system area, that is split into two halves.
153Then userspace. 153Then userspace.
154 154
155The requirement for a static, fixed preallocated system area comes from how 155The requirement for a static, fixed preallocated system area comes from how
diff --git a/Documentation/filesystems/ramfs-rootfs-initramfs.txt b/Documentation/filesystems/ramfs-rootfs-initramfs.txt
index 59b4a0962e0f..b176928e6963 100644
--- a/Documentation/filesystems/ramfs-rootfs-initramfs.txt
+++ b/Documentation/filesystems/ramfs-rootfs-initramfs.txt
@@ -79,6 +79,10 @@ to just make sure certain lists can't become empty.
79Most systems just mount another filesystem over rootfs and ignore it. The 79Most systems just mount another filesystem over rootfs and ignore it. The
80amount of space an empty instance of ramfs takes up is tiny. 80amount of space an empty instance of ramfs takes up is tiny.
81 81
82If CONFIG_TMPFS is enabled, rootfs will use tmpfs instead of ramfs by
83default. To force ramfs, add "rootfstype=ramfs" to the kernel command
84line.
85
82What is initramfs? 86What is initramfs?
83------------------ 87------------------
84 88
diff --git a/Documentation/filesystems/relay.txt b/Documentation/filesystems/relay.txt
index 510b722667ac..33e2f3694733 100644
--- a/Documentation/filesystems/relay.txt
+++ b/Documentation/filesystems/relay.txt
@@ -31,7 +31,7 @@ Semantics
31 31
32Each relay channel has one buffer per CPU, each buffer has one or more 32Each relay channel has one buffer per CPU, each buffer has one or more
33sub-buffers. Messages are written to the first sub-buffer until it is 33sub-buffers. Messages are written to the first sub-buffer until it is
34too full to contain a new message, in which case it it is written to 34too full to contain a new message, in which case it is written to
35the next (if available). Messages are never split across sub-buffers. 35the next (if available). Messages are never split across sub-buffers.
36At this point, userspace can be notified so it empties the first 36At this point, userspace can be notified so it empties the first
37sub-buffer, while the kernel continues writing to the next. 37sub-buffer, while the kernel continues writing to the next.
diff --git a/Documentation/filesystems/sysfs-tagging.txt b/Documentation/filesystems/sysfs-tagging.txt
index caaaf1266d8f..eb843e49c5a3 100644
--- a/Documentation/filesystems/sysfs-tagging.txt
+++ b/Documentation/filesystems/sysfs-tagging.txt
@@ -24,7 +24,7 @@ flag between KOBJ_NS_TYPE_NONE and KOBJ_NS_TYPES, and s_ns will
24point to the namespace to which it belongs. 24point to the namespace to which it belongs.
25 25
26Each sysfs superblock's sysfs_super_info contains an array void 26Each sysfs superblock's sysfs_super_info contains an array void
27*ns[KOBJ_NS_TYPES]. When a a task in a tagging namespace 27*ns[KOBJ_NS_TYPES]. When a task in a tagging namespace
28kobj_nstype first mounts sysfs, a new superblock is created. It 28kobj_nstype first mounts sysfs, a new superblock is created. It
29will be differentiated from other sysfs mounts by having its 29will be differentiated from other sysfs mounts by having its
30s_fs_info->ns[kobj_nstype] set to the new namespace. Note that 30s_fs_info->ns[kobj_nstype] set to the new namespace. Note that
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt
index f93a88250a44..deb48b5fd883 100644
--- a/Documentation/filesystems/vfs.txt
+++ b/Documentation/filesystems/vfs.txt
@@ -359,11 +359,9 @@ struct inode_operations {
359 ssize_t (*listxattr) (struct dentry *, char *, size_t); 359 ssize_t (*listxattr) (struct dentry *, char *, size_t);
360 int (*removexattr) (struct dentry *, const char *); 360 int (*removexattr) (struct dentry *, const char *);
361 void (*update_time)(struct inode *, struct timespec *, int); 361 void (*update_time)(struct inode *, struct timespec *, int);
362 int (*atomic_open)(struct inode *, struct dentry *, 362 int (*atomic_open)(struct inode *, struct dentry *, struct file *,
363 unsigned open_flag, umode_t create_mode, int *opened);
363 int (*tmpfile) (struct inode *, struct dentry *, umode_t); 364 int (*tmpfile) (struct inode *, struct dentry *, umode_t);
364} ____cacheline_aligned;
365 struct file *, unsigned open_flag,
366 umode_t create_mode, int *opened);
367}; 365};
368 366
369Again, all methods are called without any locks being held, unless 367Again, all methods are called without any locks being held, unless
@@ -470,9 +468,11 @@ otherwise noted.
470 method the filesystem can look up, possibly create and open the file in 468 method the filesystem can look up, possibly create and open the file in
471 one atomic operation. If it cannot perform this (e.g. the file type 469 one atomic operation. If it cannot perform this (e.g. the file type
472 turned out to be wrong) it may signal this by returning 1 instead of 470 turned out to be wrong) it may signal this by returning 1 instead of
473 usual 0 or -ve . This method is only called if the last 471 usual 0 or -ve . This method is only called if the last component is
474 component is negative or needs lookup. Cached positive dentries are 472 negative or needs lookup. Cached positive dentries are still handled by
475 still handled by f_op->open(). 473 f_op->open(). If the file was created, the FILE_CREATED flag should be
474 set in "opened". In case of O_EXCL the method must only succeed if the
475 file didn't exist and hence FILE_CREATED shall always be set on success.
476 476
477 tmpfile: called in the end of O_TMPFILE open(). Optional, equivalent to 477 tmpfile: called in the end of O_TMPFILE open(). Optional, equivalent to
478 atomically creating, opening and unlinking a file in given directory. 478 atomically creating, opening and unlinking a file in given directory.
diff --git a/Documentation/filesystems/xfs.txt b/Documentation/filesystems/xfs.txt
index 12525b17d9ed..5be51fd888bd 100644
--- a/Documentation/filesystems/xfs.txt
+++ b/Documentation/filesystems/xfs.txt
@@ -135,7 +135,7 @@ default behaviour.
135 If the memory cost of 8 log buffers is too high on small 135 If the memory cost of 8 log buffers is too high on small
136 systems, then it may be reduced at some cost to performance 136 systems, then it may be reduced at some cost to performance
137 on metadata intensive workloads. The logbsize option below 137 on metadata intensive workloads. The logbsize option below
138 controls the size of each buffer and so is also relevent to 138 controls the size of each buffer and so is also relevant to
139 this case. 139 this case.
140 140
141 logbsize=value 141 logbsize=value
diff --git a/Documentation/fmc/carrier.txt b/Documentation/fmc/carrier.txt
index 173f6d65c88d..5e4f1dd3e98b 100644
--- a/Documentation/fmc/carrier.txt
+++ b/Documentation/fmc/carrier.txt
@@ -213,7 +213,7 @@ The individual methods perform the following tasks:
213 methods: for example the SPEC driver may define that its carrier 213 methods: for example the SPEC driver may define that its carrier
214 I2C memory is seen at offset 1M and the internal SPI flash is seen 214 I2C memory is seen at offset 1M and the internal SPI flash is seen
215 at offset 16M. This multiplexing of several flash memories in the 215 at offset 16M. This multiplexing of several flash memories in the
216 same address space is is carrier-specific and should only be used 216 same address space is carrier-specific and should only be used
217 by a driver that has verified the `carrier_name' field. 217 by a driver that has verified the `carrier_name' field.
218 218
219 219
diff --git a/Documentation/hid/uhid.txt b/Documentation/hid/uhid.txt
index 3c741214dfbb..dc35a2b75eee 100644
--- a/Documentation/hid/uhid.txt
+++ b/Documentation/hid/uhid.txt
@@ -149,11 +149,13 @@ needs. Only UHID_OUTPUT and UHID_OUTPUT_EV have payloads.
149 is of type "struct uhid_data_req". 149 is of type "struct uhid_data_req".
150 This may be received even though you haven't received UHID_OPEN, yet. 150 This may be received even though you haven't received UHID_OPEN, yet.
151 151
152 UHID_OUTPUT_EV: 152 UHID_OUTPUT_EV (obsolete):
153 Same as UHID_OUTPUT but this contains a "struct input_event" as payload. This 153 Same as UHID_OUTPUT but this contains a "struct input_event" as payload. This
154 is called for force-feedback, LED or similar events which are received through 154 is called for force-feedback, LED or similar events which are received through
155 an input device by the HID subsystem. You should convert this into raw reports 155 an input device by the HID subsystem. You should convert this into raw reports
156 and send them to your device similar to events of type UHID_OUTPUT. 156 and send them to your device similar to events of type UHID_OUTPUT.
157 This is no longer sent by newer kernels. Instead, HID core converts it into a
158 raw output report and sends it via UHID_OUTPUT.
157 159
158 UHID_FEATURE: 160 UHID_FEATURE:
159 This event is sent if the kernel driver wants to perform a feature request as 161 This event is sent if the kernel driver wants to perform a feature request as
diff --git a/Documentation/hwmon/abituguru-datasheet b/Documentation/hwmon/abituguru-datasheet
index 8d2be8a0b1e3..86c0b1251c81 100644
--- a/Documentation/hwmon/abituguru-datasheet
+++ b/Documentation/hwmon/abituguru-datasheet
@@ -299,7 +299,7 @@ Byte 1:
299min threshold (scale as bank 0x26) 299min threshold (scale as bank 0x26)
300 300
301 301
302Warning for the adventerous 302Warning for the adventurous
303=========================== 303===========================
304 304
305A word of caution to those who want to experiment and see if they can figure 305A word of caution to those who want to experiment and see if they can figure
diff --git a/Documentation/hwmon/ads1015 b/Documentation/hwmon/ads1015
index f6fe9c203733..063b80d857b1 100644
--- a/Documentation/hwmon/ads1015
+++ b/Documentation/hwmon/ads1015
@@ -6,6 +6,10 @@ Supported chips:
6 Prefix: 'ads1015' 6 Prefix: 'ads1015'
7 Datasheet: Publicly available at the Texas Instruments website : 7 Datasheet: Publicly available at the Texas Instruments website :
8 http://focus.ti.com/lit/ds/symlink/ads1015.pdf 8 http://focus.ti.com/lit/ds/symlink/ads1015.pdf
9 * Texas Instruments ADS1115
10 Prefix: 'ads1115'
11 Datasheet: Publicly available at the Texas Instruments website :
12 http://focus.ti.com/lit/ds/symlink/ads1115.pdf
9 13
10Authors: 14Authors:
11 Dirk Eibach, Guntermann & Drunck GmbH <eibach@gdsys.de> 15 Dirk Eibach, Guntermann & Drunck GmbH <eibach@gdsys.de>
@@ -13,9 +17,9 @@ Authors:
13Description 17Description
14----------- 18-----------
15 19
16This driver implements support for the Texas Instruments ADS1015. 20This driver implements support for the Texas Instruments ADS1015/ADS1115.
17 21
18This device is a 12-bit A-D converter with 4 inputs. 22This device is a 12/16-bit A-D converter with 4 inputs.
19 23
20The inputs can be used single ended or in certain differential combinations. 24The inputs can be used single ended or in certain differential combinations.
21 25
diff --git a/Documentation/hwmon/htu21 b/Documentation/hwmon/htu21
new file mode 100644
index 000000000000..f39a215fb6ae
--- /dev/null
+++ b/Documentation/hwmon/htu21
@@ -0,0 +1,46 @@
1Kernel driver htu21
2===================
3
4Supported chips:
5 * Measurement Specialties HTU21D
6 Prefix: 'htu21'
7 Addresses scanned: none
8 Datasheet: Publicly available at the Measurement Specialties website
9 http://www.meas-spec.com/downloads/HTU21D.pdf
10
11
12Author:
13 William Markezana <william.markezana@meas-spec.com>
14
15Description
16-----------
17
18The HTU21D is a humidity and temperature sensor in a DFN package of
19only 3 x 3 mm footprint and 0.9 mm height.
20
21The devices communicate with the I2C protocol. All sensors are set to the
22same I2C address 0x40, so an entry with I2C_BOARD_INFO("htu21", 0x40) can
23be used in the board setup code.
24
25This driver does not auto-detect devices. You will have to instantiate the
26devices explicitly. Please see Documentation/i2c/instantiating-devices
27for details.
28
29sysfs-Interface
30---------------
31
32temp1_input - temperature input
33humidity1_input - humidity input
34
35Notes
36-----
37
38The driver uses the default resolution settings of 12 bit for humidity and 14
39bit for temperature, which results in typical measurement times of 11 ms for
40humidity and 44 ms for temperature. To keep self heating below 0.1 degree
41Celsius, the device should not be active for more than 10% of the time. For
42this reason, the driver performs no more than two measurements per second and
43reports cached information if polled more frequently.
44
45Different resolutions, the on-chip heater, using the CRC checksum and reading
46the serial number are not supported yet.
diff --git a/Documentation/hwmon/k10temp b/Documentation/hwmon/k10temp
index 90956b618025..4dfdc8f83633 100644
--- a/Documentation/hwmon/k10temp
+++ b/Documentation/hwmon/k10temp
@@ -12,6 +12,7 @@ Supported chips:
12* AMD Family 12h processors: "Llano" (E2/A4/A6/A8-Series) 12* AMD Family 12h processors: "Llano" (E2/A4/A6/A8-Series)
13* AMD Family 14h processors: "Brazos" (C/E/G/Z-Series) 13* AMD Family 14h processors: "Brazos" (C/E/G/Z-Series)
14* AMD Family 15h processors: "Bulldozer" (FX-Series), "Trinity" 14* AMD Family 15h processors: "Bulldozer" (FX-Series), "Trinity"
15* AMD Family 16h processors: "Kabini"
15 16
16 Prefix: 'k10temp' 17 Prefix: 'k10temp'
17 Addresses scanned: PCI space 18 Addresses scanned: PCI space
diff --git a/Documentation/hwmon/lm25066 b/Documentation/hwmon/lm25066
index c1b57d72efc3..b34c3de5c1bc 100644
--- a/Documentation/hwmon/lm25066
+++ b/Documentation/hwmon/lm25066
@@ -8,6 +8,11 @@ Supported chips:
8 Datasheets: 8 Datasheets:
9 http://www.ti.com/lit/gpn/lm25056 9 http://www.ti.com/lit/gpn/lm25056
10 http://www.ti.com/lit/gpn/lm25056a 10 http://www.ti.com/lit/gpn/lm25056a
11 * TI LM25063
12 Prefix: 'lm25063'
13 Addresses scanned: -
14 Datasheet:
15 To be announced
11 * National Semiconductor LM25066 16 * National Semiconductor LM25066
12 Prefix: 'lm25066' 17 Prefix: 'lm25066'
13 Addresses scanned: - 18 Addresses scanned: -
@@ -32,7 +37,7 @@ Description
32----------- 37-----------
33 38
34This driver supports hardware montoring for National Semiconductor / TI LM25056, 39This driver supports hardware montoring for National Semiconductor / TI LM25056,
35LM25066, LM5064, and LM5064 Power Management, Monitoring, Control, and 40LM25063, LM25066, LM5064, and LM5066 Power Management, Monitoring, Control, and
36Protection ICs. 41Protection ICs.
37 42
38The driver is a client driver to the core PMBus driver. Please see 43The driver is a client driver to the core PMBus driver. Please see
@@ -64,8 +69,12 @@ in1_input Measured input voltage.
64in1_average Average measured input voltage. 69in1_average Average measured input voltage.
65in1_min Minimum input voltage. 70in1_min Minimum input voltage.
66in1_max Maximum input voltage. 71in1_max Maximum input voltage.
72in1_crit Critical high input voltage (LM25063 only).
73in1_lcrit Critical low input voltage (LM25063 only).
67in1_min_alarm Input voltage low alarm. 74in1_min_alarm Input voltage low alarm.
68in1_max_alarm Input voltage high alarm. 75in1_max_alarm Input voltage high alarm.
76in1_lcrit_alarm Input voltage critical low alarm (LM25063 only).
77in1_crit_alarm Input voltage critical high alarm. (LM25063 only).
69 78
70in2_label "vmon" 79in2_label "vmon"
71in2_input Measured voltage on VAUX pin 80in2_input Measured voltage on VAUX pin
@@ -80,12 +89,16 @@ in3_input Measured output voltage.
80in3_average Average measured output voltage. 89in3_average Average measured output voltage.
81in3_min Minimum output voltage. 90in3_min Minimum output voltage.
82in3_min_alarm Output voltage low alarm. 91in3_min_alarm Output voltage low alarm.
92in3_highest Historical minimum output voltage (LM25063 only).
93in3_lowest Historical maximum output voltage (LM25063 only).
83 94
84curr1_label "iin" 95curr1_label "iin"
85curr1_input Measured input current. 96curr1_input Measured input current.
86curr1_average Average measured input current. 97curr1_average Average measured input current.
87curr1_max Maximum input current. 98curr1_max Maximum input current.
99curr1_crit Critical input current (LM25063 only).
88curr1_max_alarm Input current high alarm. 100curr1_max_alarm Input current high alarm.
101curr1_crit_alarm Input current critical high alarm (LM25063 only).
89 102
90power1_label "pin" 103power1_label "pin"
91power1_input Measured input power. 104power1_input Measured input power.
@@ -95,6 +108,11 @@ power1_alarm Input power alarm
95power1_input_highest Historical maximum power. 108power1_input_highest Historical maximum power.
96power1_reset_history Write any value to reset maximum power history. 109power1_reset_history Write any value to reset maximum power history.
97 110
111power2_label "pout". LM25063 only.
112power2_input Measured output power.
113power2_max Maximum output power limit.
114power2_crit Critical output power limit.
115
98temp1_input Measured temperature. 116temp1_input Measured temperature.
99temp1_max Maximum temperature. 117temp1_max Maximum temperature.
100temp1_crit Critical high temperature. 118temp1_crit Critical high temperature.
diff --git a/Documentation/hwmon/ltc2978 b/Documentation/hwmon/ltc2978
index dc0d08c61305..a0546fc42273 100644
--- a/Documentation/hwmon/ltc2978
+++ b/Documentation/hwmon/ltc2978
@@ -6,10 +6,15 @@ Supported chips:
6 Prefix: 'ltc2974' 6 Prefix: 'ltc2974'
7 Addresses scanned: - 7 Addresses scanned: -
8 Datasheet: http://www.linear.com/product/ltc2974 8 Datasheet: http://www.linear.com/product/ltc2974
9 * Linear Technology LTC2978 9 * Linear Technology LTC2977
10 Prefix: 'ltc2977'
11 Addresses scanned: -
12 Datasheet: http://www.linear.com/product/ltc2977
13 * Linear Technology LTC2978, LTC2978A
10 Prefix: 'ltc2978' 14 Prefix: 'ltc2978'
11 Addresses scanned: - 15 Addresses scanned: -
12 Datasheet: http://www.linear.com/product/ltc2978 16 Datasheet: http://www.linear.com/product/ltc2978
17 http://www.linear.com/product/ltc2978a
13 * Linear Technology LTC3880 18 * Linear Technology LTC3880
14 Prefix: 'ltc3880' 19 Prefix: 'ltc3880'
15 Addresses scanned: - 20 Addresses scanned: -
@@ -26,8 +31,9 @@ Description
26----------- 31-----------
27 32
28LTC2974 is a quad digital power supply manager. LTC2978 is an octal power supply 33LTC2974 is a quad digital power supply manager. LTC2978 is an octal power supply
29monitor. LTC3880 is a dual output poly-phase step-down DC/DC controller. LTC3883 34monitor. LTC2977 is a pin compatible replacement for LTC2978. LTC3880 is a dual
30is a single phase step-down DC/DC controller. 35output poly-phase step-down DC/DC controller. LTC3883 is a single phase
36step-down DC/DC controller.
31 37
32 38
33Usage Notes 39Usage Notes
@@ -49,21 +55,25 @@ Sysfs attributes
49in1_label "vin" 55in1_label "vin"
50in1_input Measured input voltage. 56in1_input Measured input voltage.
51in1_min Minimum input voltage. 57in1_min Minimum input voltage.
52in1_max Maximum input voltage. LTC2974 and LTC2978 only. 58in1_max Maximum input voltage.
53in1_lcrit Critical minimum input voltage. LTC2974 and LTC2978 59 LTC2974, LTC2977, and LTC2978 only.
54 only. 60in1_lcrit Critical minimum input voltage.
61 LTC2974, LTC2977, and LTC2978 only.
55in1_crit Critical maximum input voltage. 62in1_crit Critical maximum input voltage.
56in1_min_alarm Input voltage low alarm. 63in1_min_alarm Input voltage low alarm.
57in1_max_alarm Input voltage high alarm. LTC2974 and LTC2978 only. 64in1_max_alarm Input voltage high alarm.
58in1_lcrit_alarm Input voltage critical low alarm. LTC2974 and LTC2978 65 LTC2974, LTC2977, and LTC2978 only.
59 only. 66in1_lcrit_alarm Input voltage critical low alarm.
67 LTC2974, LTC2977, and LTC2978 only.
60in1_crit_alarm Input voltage critical high alarm. 68in1_crit_alarm Input voltage critical high alarm.
61in1_lowest Lowest input voltage. LTC2974 and LTC2978 only. 69in1_lowest Lowest input voltage.
70 LTC2974, LTC2977, and LTC2978 only.
62in1_highest Highest input voltage. 71in1_highest Highest input voltage.
63in1_reset_history Reset input voltage history. 72in1_reset_history Reset input voltage history.
64 73
65in[N]_label "vout[1-8]". 74in[N]_label "vout[1-8]".
66 LTC2974: N=2-5 75 LTC2974: N=2-5
76 LTC2977: N=2-9
67 LTC2978: N=2-9 77 LTC2978: N=2-9
68 LTC3880: N=2-3 78 LTC3880: N=2-3
69 LTC3883: N=2 79 LTC3883: N=2
@@ -83,21 +93,23 @@ in[N]_reset_history Reset output voltage history.
83temp[N]_input Measured temperature. 93temp[N]_input Measured temperature.
84 On LTC2974, temp[1-4] report external temperatures, 94 On LTC2974, temp[1-4] report external temperatures,
85 and temp5 reports the chip temperature. 95 and temp5 reports the chip temperature.
86 On LTC2978, only one temperature measurement is 96 On LTC2977 and LTC2978, only one temperature measurement
87 supported and reports the chip temperature. 97 is supported and reports the chip temperature.
88 On LTC3880, temp1 and temp2 report external 98 On LTC3880, temp1 and temp2 report external
89 temperatures, and temp3 reports the chip temperature. 99 temperatures, and temp3 reports the chip temperature.
90 On LTC3883, temp1 reports an external temperature, 100 On LTC3883, temp1 reports an external temperature,
91 and temp2 reports the chip temperature. 101 and temp2 reports the chip temperature.
92temp[N]_min Mimimum temperature. LTC2974 and LTC2978 only. 102temp[N]_min Mimimum temperature. LTC2974, LCT2977, and LTC2978 only.
93temp[N]_max Maximum temperature. 103temp[N]_max Maximum temperature.
94temp[N]_lcrit Critical low temperature. 104temp[N]_lcrit Critical low temperature.
95temp[N]_crit Critical high temperature. 105temp[N]_crit Critical high temperature.
96temp[N]_min_alarm Temperature low alarm. LTC2974 and LTC2978 only. 106temp[N]_min_alarm Temperature low alarm.
107 LTC2974, LTC2977, and LTC2978 only.
97temp[N]_max_alarm Temperature high alarm. 108temp[N]_max_alarm Temperature high alarm.
98temp[N]_lcrit_alarm Temperature critical low alarm. 109temp[N]_lcrit_alarm Temperature critical low alarm.
99temp[N]_crit_alarm Temperature critical high alarm. 110temp[N]_crit_alarm Temperature critical high alarm.
100temp[N]_lowest Lowest measured temperature. LTC2974 and LTC2978 only. 111temp[N]_lowest Lowest measured temperature.
112 LTC2974, LTC2977, and LTC2978 only.
101 Not supported for chip temperature sensor on LTC2974. 113 Not supported for chip temperature sensor on LTC2974.
102temp[N]_highest Highest measured temperature. Not supported for chip 114temp[N]_highest Highest measured temperature. Not supported for chip
103 temperature sensor on LTC2974. 115 temperature sensor on LTC2974.
@@ -109,6 +121,7 @@ power1_input Measured input power.
109 121
110power[N]_label "pout[1-4]". 122power[N]_label "pout[1-4]".
111 LTC2974: N=1-4 123 LTC2974: N=1-4
124 LTC2977: Not supported
112 LTC2978: Not supported 125 LTC2978: Not supported
113 LTC3880: N=1-2 126 LTC3880: N=1-2
114 LTC3883: N=2 127 LTC3883: N=2
@@ -123,6 +136,7 @@ curr1_reset_history Reset input current history. LTC3883 only.
123 136
124curr[N]_label "iout[1-4]". 137curr[N]_label "iout[1-4]".
125 LTC2974: N=1-4 138 LTC2974: N=1-4
139 LTC2977: not supported
126 LTC2978: not supported 140 LTC2978: not supported
127 LTC3880: N=2-3 141 LTC3880: N=2-3
128 LTC3883: N=2 142 LTC3883: N=2
diff --git a/Documentation/hwmon/submitting-patches b/Documentation/hwmon/submitting-patches
index 46286460462b..3d1bac399a22 100644
--- a/Documentation/hwmon/submitting-patches
+++ b/Documentation/hwmon/submitting-patches
@@ -1,7 +1,7 @@
1 How to Get Your Patch Accepted Into the Hwmon Subsystem 1 How to Get Your Patch Accepted Into the Hwmon Subsystem
2 ------------------------------------------------------- 2 -------------------------------------------------------
3 3
4This text is is a collection of suggestions for people writing patches or 4This text is a collection of suggestions for people writing patches or
5drivers for the hwmon subsystem. Following these suggestions will greatly 5drivers for the hwmon subsystem. Following these suggestions will greatly
6increase the chances of your change being accepted. 6increase the chances of your change being accepted.
7 7
diff --git a/Documentation/hwmon/w83791d b/Documentation/hwmon/w83791d
index 90387c3540f7..f4021a285460 100644
--- a/Documentation/hwmon/w83791d
+++ b/Documentation/hwmon/w83791d
@@ -17,7 +17,7 @@ Credits:
17 Philip Edelbrock <phil@netroedge.com>, 17 Philip Edelbrock <phil@netroedge.com>,
18 and Mark Studebaker <mdsxyz123@yahoo.com> 18 and Mark Studebaker <mdsxyz123@yahoo.com>
19 w83792d.c: 19 w83792d.c:
20 Chunhao Huang <DZShen@Winbond.com.tw>, 20 Shane Huang (Winbond),
21 Rudolf Marek <r.marek@assembler.cz> 21 Rudolf Marek <r.marek@assembler.cz>
22 22
23Additional contributors: 23Additional contributors:
diff --git a/Documentation/hwmon/w83792d b/Documentation/hwmon/w83792d
index 8a023ce0b72e..53f7b6866fec 100644
--- a/Documentation/hwmon/w83792d
+++ b/Documentation/hwmon/w83792d
@@ -7,8 +7,7 @@ Supported chips:
7 Addresses scanned: I2C 0x2c - 0x2f 7 Addresses scanned: I2C 0x2c - 0x2f
8 Datasheet: http://www.winbond.com.tw 8 Datasheet: http://www.winbond.com.tw
9 9
10Author: Chunhao Huang 10Author: Shane Huang (Winbond)
11Contact: DZShen <DZShen@Winbond.com.tw>
12 11
13 12
14Module Parameters 13Module Parameters
diff --git a/Documentation/hwspinlock.txt b/Documentation/hwspinlock.txt
index a903ee5e9776..62f7d4ea6e26 100644
--- a/Documentation/hwspinlock.txt
+++ b/Documentation/hwspinlock.txt
@@ -241,7 +241,7 @@ int hwspinlock_example2(void)
241 locks). 241 locks).
242 Should be called from a process context (this function might sleep). 242 Should be called from a process context (this function might sleep).
243 Returns the address of hwspinlock on success, or NULL on error (e.g. 243 Returns the address of hwspinlock on success, or NULL on error (e.g.
244 if the hwspinlock is sill in use). 244 if the hwspinlock is still in use).
245 245
2465. Important structs 2465. Important structs
247 247
diff --git a/Documentation/i2c/busses/i2c-piix4 b/Documentation/i2c/busses/i2c-piix4
index a370b2047cf3..c097e0f020fe 100644
--- a/Documentation/i2c/busses/i2c-piix4
+++ b/Documentation/i2c/busses/i2c-piix4
@@ -73,9 +73,10 @@ this driver on those mainboards.
73The ServerWorks Southbridges, the Intel 440MX, and the Victory66 are 73The ServerWorks Southbridges, the Intel 440MX, and the Victory66 are
74identical to the PIIX4 in I2C/SMBus support. 74identical to the PIIX4 in I2C/SMBus support.
75 75
76The AMD SB700 and SP5100 chipsets implement two PIIX4-compatible SMBus 76The AMD SB700, SB800, SP5100 and Hudson-2 chipsets implement two
77controllers. If your BIOS initializes the secondary controller, it will 77PIIX4-compatible SMBus controllers. If your BIOS initializes the
78be detected by this driver as an "Auxiliary SMBus Host Controller". 78secondary controller, it will be detected by this driver as
79an "Auxiliary SMBus Host Controller".
79 80
80If you own Force CPCI735 motherboard or other OSB4 based systems you may need 81If you own Force CPCI735 motherboard or other OSB4 based systems you may need
81to change the SMBus Interrupt Select register so the SMBus controller uses 82to change the SMBus Interrupt Select register so the SMBus controller uses
diff --git a/Documentation/i2c/instantiating-devices b/Documentation/i2c/instantiating-devices
index 22182660dda7..c70e7a7638d1 100644
--- a/Documentation/i2c/instantiating-devices
+++ b/Documentation/i2c/instantiating-devices
@@ -19,7 +19,7 @@ i2c_board_info which is registered by calling i2c_register_board_info().
19 19
20Example (from omap2 h4): 20Example (from omap2 h4):
21 21
22static struct i2c_board_info __initdata h4_i2c_board_info[] = { 22static struct i2c_board_info h4_i2c_board_info[] __initdata = {
23 { 23 {
24 I2C_BOARD_INFO("isp1301_omap", 0x2d), 24 I2C_BOARD_INFO("isp1301_omap", 0x2d),
25 .irq = OMAP_GPIO_IRQ(125), 25 .irq = OMAP_GPIO_IRQ(125),
diff --git a/Documentation/i2c/upgrading-clients b/Documentation/i2c/upgrading-clients
index d6991625c407..8e5fbd88c7d1 100644
--- a/Documentation/i2c/upgrading-clients
+++ b/Documentation/i2c/upgrading-clients
@@ -196,8 +196,8 @@ static int example_probe(struct i2c_client *i2c_client,
196 196
197Update the detach method, by changing the name to _remove and 197Update the detach method, by changing the name to _remove and
198to delete the i2c_detach_client call. It is possible that you 198to delete the i2c_detach_client call. It is possible that you
199can also remove the ret variable as it is not not needed for 199can also remove the ret variable as it is not needed for any
200any of the core functions. 200of the core functions.
201 201
202- static int example_detach(struct i2c_client *client) 202- static int example_detach(struct i2c_client *client)
203+ static int example_remove(struct i2c_client *client) 203+ static int example_remove(struct i2c_client *client)
diff --git a/Documentation/input/gamepad.txt b/Documentation/input/gamepad.txt
new file mode 100644
index 000000000000..8002c894c6b0
--- /dev/null
+++ b/Documentation/input/gamepad.txt
@@ -0,0 +1,156 @@
1 Linux Gamepad API
2----------------------------------------------------------------------------
3
41. Intro
5~~~~~~~~
6Linux provides many different input drivers for gamepad hardware. To avoid
7having user-space deal with different button-mappings for each gamepad, this
8document defines how gamepads are supposed to report their data.
9
102. Geometry
11~~~~~~~~~~~
12As "gamepad" we define devices which roughly look like this:
13
14 ____________________________ __
15 / [__ZL__] [__ZR__] \ |
16 / [__ TL __] [__ TR __] \ | Front Triggers
17 __/________________________________\__ __|
18 / _ \ |
19 / /\ __ (N) \ |
20 / || __ |MO| __ _ _ \ | Main Pad
21 | <===DP===> |SE| |ST| (W) -|- (E) | |
22 \ || ___ ___ _ / |
23 /\ \/ / \ / \ (S) /\ __|
24 / \________ | LS | ____ | RS | ________/ \ |
25 | / \ \___/ / \ \___/ / \ | | Control Sticks
26 | / \_____/ \_____/ \ | __|
27 | / \ |
28 \_____/ \_____/
29
30 |________|______| |______|___________|
31 D-Pad Left Right Action Pad
32 Stick Stick
33
34 |_____________|
35 Menu Pad
36
37Most gamepads have the following features:
38 - Action-Pad
39 4 buttons in diamonds-shape (on the right side). The buttons are
40 differently labeled on most devices so we define them as NORTH,
41 SOUTH, WEST and EAST.
42 - D-Pad (Direction-pad)
43 4 buttons (on the left side) that point up, down, left and right.
44 - Menu-Pad
45 Different constellations, but most-times 2 buttons: SELECT - START
46 Furthermore, many gamepads have a fancy branded button that is used as
47 special system-button. It often looks different to the other buttons and
48 is used to pop up system-menus or system-settings.
49 - Analog-Sticks
50 Analog-sticks provide freely moveable sticks to control directions. Not
51 all devices have both or any, but they are present at most times.
52 Analog-sticks may also provide a digital button if you press them.
53 - Triggers
54 Triggers are located on the upper-side of the pad in vertical direction.
55 Not all devices provide them, but the upper buttons are normally named
56 Left- and Right-Triggers, the lower buttons Z-Left and Z-Right.
57 - Rumble
58 Many devices provide force-feedback features. But are mostly just
59 simple rumble motors.
60
613. Detection
62~~~~~~~~~~~~
63All gamepads that follow the protocol described here map BTN_GAMEPAD. This is
64an alias for BTN_SOUTH/BTN_A. It can be used to identify a gamepad as such.
65However, not all gamepads provide all features, so you need to test for all
66features that you need, first. How each feature is mapped is described below.
67
68Legacy drivers often don't comply to these rules. As we cannot change them
69for backwards-compatibility reasons, you need to provide fixup mappings in
70user-space yourself. Some of them might also provide module-options that
71change the mappings so you can adivce users to set these.
72
73All new gamepads are supposed to comply with this mapping. Please report any
74bugs, if they don't.
75
76There are a lot of less-featured/less-powerful devices out there, which re-use
77the buttons from this protocol. However, they try to do this in a compatible
78fashion. For example, the "Nintendo Wii Nunchuk" provides two trigger buttons
79and one analog stick. It reports them as if it were a gamepad with only one
80analog stick and two trigger buttons on the right side.
81But that means, that if you only support "real" gamepads, you must test
82devices for _all_ reported events that you need. Otherwise, you will also get
83devices that report a small subset of the events.
84
85No other devices, that do not look/feel like a gamepad, shall report these
86events.
87
884. Events
89~~~~~~~~~
90Gamepads report the following events:
91
92Action-Pad:
93 Every gamepad device has at least 2 action buttons. This means, that every
94 device reports BTN_SOUTH (which BTN_GAMEPAD is an alias for). Regardless
95 of the labels on the buttons, the codes are sent according to the
96 physical position of the buttons.
97 Please note that 2- and 3-button pads are fairly rare and old. You might
98 want to filter gamepads that do not report all four.
99 2-Button Pad:
100 If only 2 action-buttons are present, they are reported as BTN_SOUTH and
101 BTN_EAST. For vertical layouts, the upper button is BTN_EAST. For
102 horizontal layouts, the button more on the right is BTN_EAST.
103 3-Button Pad:
104 If only 3 action-buttons are present, they are reported as (from left
105 to right): BTN_WEST, BTN_SOUTH, BTN_EAST
106 If the buttons are aligned perfectly vertically, they are reported as
107 (from top down): BTN_WEST, BTN_SOUTH, BTN_EAST
108 4-Button Pad:
109 If all 4 action-buttons are present, they can be aligned in two
110 different formations. If diamond-shaped, they are reported as BTN_NORTH,
111 BTN_WEST, BTN_SOUTH, BTN_EAST according to their physical location.
112 If rectangular-shaped, the upper-left button is BTN_NORTH, lower-left
113 is BTN_WEST, lower-right is BTN_SOUTH and upper-right is BTN_EAST.
114
115D-Pad:
116 Every gamepad provides a D-Pad with four directions: Up, Down, Left, Right
117 Some of these are available as digital buttons, some as analog buttons. Some
118 may even report both. The kernel does not convert between these so
119 applications should support both and choose what is more appropriate if
120 both are reported.
121 Digital buttons are reported as:
122 BTN_DPAD_*
123 Analog buttons are reported as:
124 ABS_HAT0X and ABS_HAT0Y
125
126Analog-Sticks:
127 The left analog-stick is reported as ABS_X, ABS_Y. The right analog stick is
128 reported as ABS_RX, ABS_RY. Zero, one or two sticks may be present.
129 If analog-sticks provide digital buttons, they are mapped accordingly as
130 BTN_THUMBL (first/left) and BTN_THUMBR (second/right).
131
132Triggers:
133 Trigger buttons can be available as digital or analog buttons or both. User-
134 space must correctly deal with any situation and choose the most appropriate
135 mode.
136 Upper trigger buttons are reported as BTN_TR or ABS_HAT1X (right) and BTN_TL
137 or ABS_HAT1Y (left). Lower trigger buttons are reported as BTN_TR2 or
138 ABS_HAT2X (right/ZR) and BTN_TL2 or ABS_HAT2Y (left/ZL).
139 If only one trigger-button combination is present (upper+lower), they are
140 reported as "right" triggers (BTN_TR/ABS_HAT1X).
141
142Menu-Pad:
143 Menu buttons are always digital and are mapped according to their location
144 instead of their labels. That is:
145 1-button Pad: Mapped as BTN_START
146 2-button Pad: Left button mapped as BTN_SELECT, right button mapped as
147 BTN_START
148 Many pads also have a third button which is branded or has a special symbol
149 and meaning. Such buttons are mapped as BTN_MODE. Examples are the Nintendo
150 "HOME" button, the XBox "X"-button or Sony "P" button.
151
152Rumble:
153 Rumble is adverticed as FF_RUMBLE.
154
155----------------------------------------------------------------------------
156 Written 2013 by David Herrmann <dh.herrmann@gmail.com>
diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt
index 2a5f0e14efa3..7cbfa3c4fc3d 100644
--- a/Documentation/ioctl/ioctl-number.txt
+++ b/Documentation/ioctl/ioctl-number.txt
@@ -138,6 +138,7 @@ Code Seq#(hex) Include File Comments
138'H' C0-DF net/bluetooth/cmtp/cmtp.h conflict! 138'H' C0-DF net/bluetooth/cmtp/cmtp.h conflict!
139'H' C0-DF net/bluetooth/bnep/bnep.h conflict! 139'H' C0-DF net/bluetooth/bnep/bnep.h conflict!
140'H' F1 linux/hid-roccat.h <mailto:erazor_de@users.sourceforge.net> 140'H' F1 linux/hid-roccat.h <mailto:erazor_de@users.sourceforge.net>
141'H' F8-FA sound/firewire.h
141'I' all linux/isdn.h conflict! 142'I' all linux/isdn.h conflict!
142'I' 00-0F drivers/isdn/divert/isdn_divert.h conflict! 143'I' 00-0F drivers/isdn/divert/isdn_divert.h conflict!
143'I' 40-4F linux/mISDNif.h conflict! 144'I' 40-4F linux/mISDNif.h conflict!
diff --git a/Documentation/kbuild/kconfig-language.txt b/Documentation/kbuild/kconfig-language.txt
index c858f8419eba..c420676c6fe3 100644
--- a/Documentation/kbuild/kconfig-language.txt
+++ b/Documentation/kbuild/kconfig-language.txt
@@ -147,6 +147,7 @@ applicable everywhere (see syntax).
147 - "modules" 147 - "modules"
148 This declares the symbol to be used as the MODULES symbol, which 148 This declares the symbol to be used as the MODULES symbol, which
149 enables the third modular state for all config symbols. 149 enables the third modular state for all config symbols.
150 At most one symbol may have the "modules" option set.
150 151
151 - "env"=<value> 152 - "env"=<value>
152 This imports the environment variable into Kconfig. It behaves like 153 This imports the environment variable into Kconfig. It behaves like
diff --git a/Documentation/kbuild/kconfig.txt b/Documentation/kbuild/kconfig.txt
index e349f293cc98..8ef6dbb6a462 100644
--- a/Documentation/kbuild/kconfig.txt
+++ b/Documentation/kbuild/kconfig.txt
@@ -175,11 +175,9 @@ Searching in menuconfig:
175 /^hotplug 175 /^hotplug
176 176
177 When searching, symbols are sorted thus: 177 When searching, symbols are sorted thus:
178 - exact match first: an exact match is when the search matches 178 - first, exact matches, sorted alphabetically (an exact match
179 the complete symbol name; 179 is when the search matches the complete symbol name);
180 - alphabetical order: when two symbols do not match exactly, 180 - then, other matches, sorted alphabetically.
181 they are sorted in alphabetical order (in the user's current
182 locale).
183 For example: ^ATH.K matches: 181 For example: ^ATH.K matches:
184 ATH5K ATH9K ATH5K_AHB ATH5K_DEBUG [...] ATH6KL ATH6KL_DEBUG 182 ATH5K ATH9K ATH5K_AHB ATH5K_DEBUG [...] ATH6KL ATH6KL_DEBUG
185 [...] ATH9K_AHB ATH9K_BTCOEX_SUPPORT ATH9K_COMMON [...] 183 [...] ATH9K_AHB ATH9K_BTCOEX_SUPPORT ATH9K_COMMON [...]
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 15356aca938c..fd3ecedc084d 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -235,10 +235,61 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
235 Format: To spoof as Windows 98: ="Microsoft Windows" 235 Format: To spoof as Windows 98: ="Microsoft Windows"
236 236
237 acpi_osi= [HW,ACPI] Modify list of supported OS interface strings 237 acpi_osi= [HW,ACPI] Modify list of supported OS interface strings
238 acpi_osi="string1" # add string1 -- only one string 238 acpi_osi="string1" # add string1
239 acpi_osi="!string2" # remove built-in string2 239 acpi_osi="!string2" # remove string2
240 acpi_osi=!* # remove all strings
241 acpi_osi=! # disable all built-in OS vendor
242 strings
240 acpi_osi= # disable all strings 243 acpi_osi= # disable all strings
241 244
245 'acpi_osi=!' can be used in combination with single or
246 multiple 'acpi_osi="string1"' to support specific OS
247 vendor string(s). Note that such command can only
248 affect the default state of the OS vendor strings, thus
249 it cannot affect the default state of the feature group
250 strings and the current state of the OS vendor strings,
251 specifying it multiple times through kernel command line
252 is meaningless. This command is useful when one do not
253 care about the state of the feature group strings which
254 should be controlled by the OSPM.
255 Examples:
256 1. 'acpi_osi=! acpi_osi="Windows 2000"' is equivalent
257 to 'acpi_osi="Windows 2000" acpi_osi=!', they all
258 can make '_OSI("Windows 2000")' TRUE.
259
260 'acpi_osi=' cannot be used in combination with other
261 'acpi_osi=' command lines, the _OSI method will not
262 exist in the ACPI namespace. NOTE that such command can
263 only affect the _OSI support state, thus specifying it
264 multiple times through kernel command line is also
265 meaningless.
266 Examples:
267 1. 'acpi_osi=' can make 'CondRefOf(_OSI, Local1)'
268 FALSE.
269
270 'acpi_osi=!*' can be used in combination with single or
271 multiple 'acpi_osi="string1"' to support specific
272 string(s). Note that such command can affect the
273 current state of both the OS vendor strings and the
274 feature group strings, thus specifying it multiple times
275 through kernel command line is meaningful. But it may
276 still not able to affect the final state of a string if
277 there are quirks related to this string. This command
278 is useful when one want to control the state of the
279 feature group strings to debug BIOS issues related to
280 the OSPM features.
281 Examples:
282 1. 'acpi_osi="Module Device" acpi_osi=!*' can make
283 '_OSI("Module Device")' FALSE.
284 2. 'acpi_osi=!* acpi_osi="Module Device"' can make
285 '_OSI("Module Device")' TRUE.
286 3. 'acpi_osi=! acpi_osi=!* acpi_osi="Windows 2000"' is
287 equivalent to
288 'acpi_osi=!* acpi_osi=! acpi_osi="Windows 2000"'
289 and
290 'acpi_osi=!* acpi_osi="Windows 2000" acpi_osi=!',
291 they all will make '_OSI("Windows 2000")' TRUE.
292
242 acpi_pm_good [X86] 293 acpi_pm_good [X86]
243 Override the pmtimer bug detection: force the kernel 294 Override the pmtimer bug detection: force the kernel
244 to assume that this machine's pmtimer latches its value 295 to assume that this machine's pmtimer latches its value
@@ -429,6 +480,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
429 Format: <io>,<irq>,<mode> 480 Format: <io>,<irq>,<mode>
430 See header of drivers/net/hamradio/baycom_ser_hdx.c. 481 See header of drivers/net/hamradio/baycom_ser_hdx.c.
431 482
483 blkdevparts= Manual partition parsing of block device(s) for
484 embedded devices based on command line input.
485 See Documentation/block/cmdline-partition.txt
486
432 boot_delay= Milliseconds to delay each printk during boot. 487 boot_delay= Milliseconds to delay each printk during boot.
433 Values larger than 10 seconds (10000) are changed to 488 Values larger than 10 seconds (10000) are changed to
434 no delay (0). 489 no delay (0).
@@ -792,6 +847,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
792 847
793 earlyprintk= [X86,SH,BLACKFIN,ARM] 848 earlyprintk= [X86,SH,BLACKFIN,ARM]
794 earlyprintk=vga 849 earlyprintk=vga
850 earlyprintk=efi
795 earlyprintk=xen 851 earlyprintk=xen
796 earlyprintk=serial[,ttySn[,baudrate]] 852 earlyprintk=serial[,ttySn[,baudrate]]
797 earlyprintk=serial[,0x...[,baudrate]] 853 earlyprintk=serial[,0x...[,baudrate]]
@@ -805,7 +861,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
805 Append ",keep" to not disable it when the real console 861 Append ",keep" to not disable it when the real console
806 takes over. 862 takes over.
807 863
808 Only vga or serial or usb debug port at a time. 864 Only one of vga, efi, serial, or usb debug port can
865 be used at a time.
809 866
810 Currently only ttyS0 and ttyS1 may be specified by 867 Currently only ttyS0 and ttyS1 may be specified by
811 name. Other I/O ports may be explicitly specified 868 name. Other I/O ports may be explicitly specified
@@ -819,8 +876,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
819 Interaction with the standard serial driver is not 876 Interaction with the standard serial driver is not
820 very good. 877 very good.
821 878
822 The VGA output is eventually overwritten by the real 879 The VGA and EFI output is eventually overwritten by
823 console. 880 the real console.
824 881
825 The xen output can only be used by Xen PV guests. 882 The xen output can only be used by Xen PV guests.
826 883
@@ -1306,7 +1363,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
1306 pages. In the event, a node is too small to have both 1363 pages. In the event, a node is too small to have both
1307 kernelcore and Movable pages, kernelcore pages will 1364 kernelcore and Movable pages, kernelcore pages will
1308 take priority and other nodes will have a larger number 1365 take priority and other nodes will have a larger number
1309 of kernelcore pages. The Movable zone is used for the 1366 of Movable pages. The Movable zone is used for the
1310 allocation of pages that may be reclaimed or moved 1367 allocation of pages that may be reclaimed or moved
1311 by the page migration subsystem. This means that 1368 by the page migration subsystem. This means that
1312 HugeTLB pages may not be allocated from this zone. 1369 HugeTLB pages may not be allocated from this zone.
@@ -1847,6 +1904,18 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
1847 will be sent. 1904 will be sent.
1848 The default is to send the implementation identification 1905 The default is to send the implementation identification
1849 information. 1906 information.
1907
1908 nfs.recover_lost_locks =
1909 [NFSv4] Attempt to recover locks that were lost due
1910 to a lease timeout on the server. Please note that
1911 doing this risks data corruption, since there are
1912 no guarantees that the file will remain unchanged
1913 after the locks are lost.
1914 If you want to enable the kernel legacy behaviour of
1915 attempting to recover these locks, then set this
1916 parameter to '1'.
1917 The default parameter value of '0' causes the kernel
1918 not to attempt recovery of lost locks.
1850 1919
1851 nfsd.nfs4_disable_idmapping= 1920 nfsd.nfs4_disable_idmapping=
1852 [NFSv4] When set to the default of '1', the NFSv4 1921 [NFSv4] When set to the default of '1', the NFSv4
@@ -2532,7 +2601,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2532 ramdisk_size= [RAM] Sizes of RAM disks in kilobytes 2601 ramdisk_size= [RAM] Sizes of RAM disks in kilobytes
2533 See Documentation/blockdev/ramdisk.txt. 2602 See Documentation/blockdev/ramdisk.txt.
2534 2603
2535 rcu_nocbs= [KNL,BOOT] 2604 rcu_nocbs= [KNL]
2536 In kernels built with CONFIG_RCU_NOCB_CPU=y, set 2605 In kernels built with CONFIG_RCU_NOCB_CPU=y, set
2537 the specified list of CPUs to be no-callback CPUs. 2606 the specified list of CPUs to be no-callback CPUs.
2538 Invocation of these CPUs' RCU callbacks will 2607 Invocation of these CPUs' RCU callbacks will
@@ -2545,7 +2614,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2545 real-time workloads. It can also improve energy 2614 real-time workloads. It can also improve energy
2546 efficiency for asymmetric multiprocessors. 2615 efficiency for asymmetric multiprocessors.
2547 2616
2548 rcu_nocb_poll [KNL,BOOT] 2617 rcu_nocb_poll [KNL]
2549 Rather than requiring that offloaded CPUs 2618 Rather than requiring that offloaded CPUs
2550 (specified by rcu_nocbs= above) explicitly 2619 (specified by rcu_nocbs= above) explicitly
2551 awaken the corresponding "rcuoN" kthreads, 2620 awaken the corresponding "rcuoN" kthreads,
@@ -2556,126 +2625,145 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2556 energy efficiency by requiring that the kthreads 2625 energy efficiency by requiring that the kthreads
2557 periodically wake up to do the polling. 2626 periodically wake up to do the polling.
2558 2627
2559 rcutree.blimit= [KNL,BOOT] 2628 rcutree.blimit= [KNL]
2560 Set maximum number of finished RCU callbacks to process 2629 Set maximum number of finished RCU callbacks to process
2561 in one batch. 2630 in one batch.
2562 2631
2563 rcutree.fanout_leaf= [KNL,BOOT] 2632 rcutree.rcu_fanout_leaf= [KNL]
2564 Increase the number of CPUs assigned to each 2633 Increase the number of CPUs assigned to each
2565 leaf rcu_node structure. Useful for very large 2634 leaf rcu_node structure. Useful for very large
2566 systems. 2635 systems.
2567 2636
2568 rcutree.jiffies_till_first_fqs= [KNL,BOOT] 2637 rcutree.jiffies_till_first_fqs= [KNL]
2569 Set delay from grace-period initialization to 2638 Set delay from grace-period initialization to
2570 first attempt to force quiescent states. 2639 first attempt to force quiescent states.
2571 Units are jiffies, minimum value is zero, 2640 Units are jiffies, minimum value is zero,
2572 and maximum value is HZ. 2641 and maximum value is HZ.
2573 2642
2574 rcutree.jiffies_till_next_fqs= [KNL,BOOT] 2643 rcutree.jiffies_till_next_fqs= [KNL]
2575 Set delay between subsequent attempts to force 2644 Set delay between subsequent attempts to force
2576 quiescent states. Units are jiffies, minimum 2645 quiescent states. Units are jiffies, minimum
2577 value is one, and maximum value is HZ. 2646 value is one, and maximum value is HZ.
2578 2647
2579 rcutree.qhimark= [KNL,BOOT] 2648 rcutree.qhimark= [KNL]
2580 Set threshold of queued 2649 Set threshold of queued
2581 RCU callbacks over which batch limiting is disabled. 2650 RCU callbacks over which batch limiting is disabled.
2582 2651
2583 rcutree.qlowmark= [KNL,BOOT] 2652 rcutree.qlowmark= [KNL]
2584 Set threshold of queued RCU callbacks below which 2653 Set threshold of queued RCU callbacks below which
2585 batch limiting is re-enabled. 2654 batch limiting is re-enabled.
2586 2655
2587 rcutree.rcu_cpu_stall_suppress= [KNL,BOOT] 2656 rcutree.rcu_idle_gp_delay= [KNL]
2588 Suppress RCU CPU stall warning messages.
2589
2590 rcutree.rcu_cpu_stall_timeout= [KNL,BOOT]
2591 Set timeout for RCU CPU stall warning messages.
2592
2593 rcutree.rcu_idle_gp_delay= [KNL,BOOT]
2594 Set wakeup interval for idle CPUs that have 2657 Set wakeup interval for idle CPUs that have
2595 RCU callbacks (RCU_FAST_NO_HZ=y). 2658 RCU callbacks (RCU_FAST_NO_HZ=y).
2596 2659
2597 rcutree.rcu_idle_lazy_gp_delay= [KNL,BOOT] 2660 rcutree.rcu_idle_lazy_gp_delay= [KNL]
2598 Set wakeup interval for idle CPUs that have 2661 Set wakeup interval for idle CPUs that have
2599 only "lazy" RCU callbacks (RCU_FAST_NO_HZ=y). 2662 only "lazy" RCU callbacks (RCU_FAST_NO_HZ=y).
2600 Lazy RCU callbacks are those which RCU can 2663 Lazy RCU callbacks are those which RCU can
2601 prove do nothing more than free memory. 2664 prove do nothing more than free memory.
2602 2665
2603 rcutorture.fqs_duration= [KNL,BOOT] 2666 rcutorture.fqs_duration= [KNL]
2604 Set duration of force_quiescent_state bursts. 2667 Set duration of force_quiescent_state bursts.
2605 2668
2606 rcutorture.fqs_holdoff= [KNL,BOOT] 2669 rcutorture.fqs_holdoff= [KNL]
2607 Set holdoff time within force_quiescent_state bursts. 2670 Set holdoff time within force_quiescent_state bursts.
2608 2671
2609 rcutorture.fqs_stutter= [KNL,BOOT] 2672 rcutorture.fqs_stutter= [KNL]
2610 Set wait time between force_quiescent_state bursts. 2673 Set wait time between force_quiescent_state bursts.
2611 2674
2612 rcutorture.irqreader= [KNL,BOOT] 2675 rcutorture.gp_exp= [KNL]
2613 Test RCU readers from irq handlers. 2676 Use expedited update-side primitives.
2677
2678 rcutorture.gp_normal= [KNL]
2679 Use normal (non-expedited) update-side primitives.
2680 If both gp_exp and gp_normal are set, do both.
2681 If neither gp_exp nor gp_normal are set, still
2682 do both.
2614 2683
2615 rcutorture.n_barrier_cbs= [KNL,BOOT] 2684 rcutorture.n_barrier_cbs= [KNL]
2616 Set callbacks/threads for rcu_barrier() testing. 2685 Set callbacks/threads for rcu_barrier() testing.
2617 2686
2618 rcutorture.nfakewriters= [KNL,BOOT] 2687 rcutorture.nfakewriters= [KNL]
2619 Set number of concurrent RCU writers. These just 2688 Set number of concurrent RCU writers. These just
2620 stress RCU, they don't participate in the actual 2689 stress RCU, they don't participate in the actual
2621 test, hence the "fake". 2690 test, hence the "fake".
2622 2691
2623 rcutorture.nreaders= [KNL,BOOT] 2692 rcutorture.nreaders= [KNL]
2624 Set number of RCU readers. 2693 Set number of RCU readers.
2625 2694
2626 rcutorture.onoff_holdoff= [KNL,BOOT] 2695 rcutorture.object_debug= [KNL]
2696 Enable debug-object double-call_rcu() testing.
2697
2698 rcutorture.onoff_holdoff= [KNL]
2627 Set time (s) after boot for CPU-hotplug testing. 2699 Set time (s) after boot for CPU-hotplug testing.
2628 2700
2629 rcutorture.onoff_interval= [KNL,BOOT] 2701 rcutorture.onoff_interval= [KNL]
2630 Set time (s) between CPU-hotplug operations, or 2702 Set time (s) between CPU-hotplug operations, or
2631 zero to disable CPU-hotplug testing. 2703 zero to disable CPU-hotplug testing.
2632 2704
2633 rcutorture.shuffle_interval= [KNL,BOOT] 2705 rcutorture.rcutorture_runnable= [BOOT]
2706 Start rcutorture running at boot time.
2707
2708 rcutorture.shuffle_interval= [KNL]
2634 Set task-shuffle interval (s). Shuffling tasks 2709 Set task-shuffle interval (s). Shuffling tasks
2635 allows some CPUs to go into dyntick-idle mode 2710 allows some CPUs to go into dyntick-idle mode
2636 during the rcutorture test. 2711 during the rcutorture test.
2637 2712
2638 rcutorture.shutdown_secs= [KNL,BOOT] 2713 rcutorture.shutdown_secs= [KNL]
2639 Set time (s) after boot system shutdown. This 2714 Set time (s) after boot system shutdown. This
2640 is useful for hands-off automated testing. 2715 is useful for hands-off automated testing.
2641 2716
2642 rcutorture.stall_cpu= [KNL,BOOT] 2717 rcutorture.stall_cpu= [KNL]
2643 Duration of CPU stall (s) to test RCU CPU stall 2718 Duration of CPU stall (s) to test RCU CPU stall
2644 warnings, zero to disable. 2719 warnings, zero to disable.
2645 2720
2646 rcutorture.stall_cpu_holdoff= [KNL,BOOT] 2721 rcutorture.stall_cpu_holdoff= [KNL]
2647 Time to wait (s) after boot before inducing stall. 2722 Time to wait (s) after boot before inducing stall.
2648 2723
2649 rcutorture.stat_interval= [KNL,BOOT] 2724 rcutorture.stat_interval= [KNL]
2650 Time (s) between statistics printk()s. 2725 Time (s) between statistics printk()s.
2651 2726
2652 rcutorture.stutter= [KNL,BOOT] 2727 rcutorture.stutter= [KNL]
2653 Time (s) to stutter testing, for example, specifying 2728 Time (s) to stutter testing, for example, specifying
2654 five seconds causes the test to run for five seconds, 2729 five seconds causes the test to run for five seconds,
2655 wait for five seconds, and so on. This tests RCU's 2730 wait for five seconds, and so on. This tests RCU's
2656 ability to transition abruptly to and from idle. 2731 ability to transition abruptly to and from idle.
2657 2732
2658 rcutorture.test_boost= [KNL,BOOT] 2733 rcutorture.test_boost= [KNL]
2659 Test RCU priority boosting? 0=no, 1=maybe, 2=yes. 2734 Test RCU priority boosting? 0=no, 1=maybe, 2=yes.
2660 "Maybe" means test if the RCU implementation 2735 "Maybe" means test if the RCU implementation
2661 under test support RCU priority boosting. 2736 under test support RCU priority boosting.
2662 2737
2663 rcutorture.test_boost_duration= [KNL,BOOT] 2738 rcutorture.test_boost_duration= [KNL]
2664 Duration (s) of each individual boost test. 2739 Duration (s) of each individual boost test.
2665 2740
2666 rcutorture.test_boost_interval= [KNL,BOOT] 2741 rcutorture.test_boost_interval= [KNL]
2667 Interval (s) between each boost test. 2742 Interval (s) between each boost test.
2668 2743
2669 rcutorture.test_no_idle_hz= [KNL,BOOT] 2744 rcutorture.test_no_idle_hz= [KNL]
2670 Test RCU's dyntick-idle handling. See also the 2745 Test RCU's dyntick-idle handling. See also the
2671 rcutorture.shuffle_interval parameter. 2746 rcutorture.shuffle_interval parameter.
2672 2747
2673 rcutorture.torture_type= [KNL,BOOT] 2748 rcutorture.torture_type= [KNL]
2674 Specify the RCU implementation to test. 2749 Specify the RCU implementation to test.
2675 2750
2676 rcutorture.verbose= [KNL,BOOT] 2751 rcutorture.verbose= [KNL]
2677 Enable additional printk() statements. 2752 Enable additional printk() statements.
2678 2753
2754 rcupdate.rcu_expedited= [KNL]
2755 Use expedited grace-period primitives, for
2756 example, synchronize_rcu_expedited() instead
2757 of synchronize_rcu(). This reduces latency,
2758 but can increase CPU utilization, degrade
2759 real-time latency, and degrade energy efficiency.
2760
2761 rcupdate.rcu_cpu_stall_suppress= [KNL]
2762 Suppress RCU CPU stall warning messages.
2763
2764 rcupdate.rcu_cpu_stall_timeout= [KNL]
2765 Set timeout for RCU CPU stall warning messages.
2766
2679 rdinit= [KNL] 2767 rdinit= [KNL]
2680 Format: <full_path> 2768 Format: <full_path>
2681 Run specified binary instead of /init from the ramdisk, 2769 Run specified binary instead of /init from the ramdisk,
@@ -2953,7 +3041,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2953 improve throughput, but will also increase the 3041 improve throughput, but will also increase the
2954 amount of memory reserved for use by the client. 3042 amount of memory reserved for use by the client.
2955 3043
2956 swapaccount[=0|1] 3044 swapaccount=[0|1]
2957 [KNL] Enable accounting of swap in memory resource 3045 [KNL] Enable accounting of swap in memory resource
2958 controller if no parameter or 1 is given or disable 3046 controller if no parameter or 1 is given or disable
2959 it if 0 is given (See Documentation/cgroups/memory.txt) 3047 it if 0 is given (See Documentation/cgroups/memory.txt)
@@ -3322,6 +3410,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
3322 them quite hard to use for exploits but 3410 them quite hard to use for exploits but
3323 might break your system. 3411 might break your system.
3324 3412
3413 vt.color= [VT] Default text color.
3414 Format: 0xYX, X = foreground, Y = background.
3415 Default: 0x07 = light gray on black.
3416
3325 vt.cur_default= [VT] Default cursor shape. 3417 vt.cur_default= [VT] Default cursor shape.
3326 Format: 0xCCBBAA, where AA, BB, and CC are the same as 3418 Format: 0xCCBBAA, where AA, BB, and CC are the same as
3327 the parameters of the <Esc>[?A;B;Cc escape sequence; 3419 the parameters of the <Esc>[?A;B;Cc escape sequence;
@@ -3361,6 +3453,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
3361 overridden by individual drivers. 0 will hide 3453 overridden by individual drivers. 0 will hide
3362 cursors, 1 will display them. 3454 cursors, 1 will display them.
3363 3455
3456 vt.italic= [VT] Default color for italic text; 0-15.
3457 Default: 2 = green.
3458
3459 vt.underline= [VT] Default color for underlined text; 0-15.
3460 Default: 3 = cyan.
3461
3364 watchdog timers [HW,WDT] For information on watchdog timers, 3462 watchdog timers [HW,WDT] For information on watchdog timers,
3365 see Documentation/watchdog/watchdog-parameters.txt 3463 see Documentation/watchdog/watchdog-parameters.txt
3366 or other driver-specific files in the 3464 or other driver-specific files in the
@@ -3394,11 +3492,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
3394 default x2apic cluster mode on platforms 3492 default x2apic cluster mode on platforms
3395 supporting x2apic. 3493 supporting x2apic.
3396 3494
3397 x86_mrst_timer= [X86-32,APBT] 3495 x86_intel_mid_timer= [X86-32,APBT]
3398 Choose timer option for x86 Moorestown MID platform. 3496 Choose timer option for x86 Intel MID platform.
3399 Two valid options are apbt timer only and lapic timer 3497 Two valid options are apbt timer only and lapic timer
3400 plus one apbt timer for broadcast timer. 3498 plus one apbt timer for broadcast timer.
3401 x86_mrst_timer=apbt_only | lapic_and_apbt 3499 x86_intel_mid_timer=apbt_only | lapic_and_apbt
3402 3500
3403 xen_emul_unplug= [HW,X86,XEN] 3501 xen_emul_unplug= [HW,X86,XEN]
3404 Unplug Xen emulated devices 3502 Unplug Xen emulated devices
@@ -3412,6 +3510,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
3412 the unplug protocol 3510 the unplug protocol
3413 never -- do not unplug even if version check succeeds 3511 never -- do not unplug even if version check succeeds
3414 3512
3513 xen_nopvspin [X86,XEN]
3514 Disables the ticketlock slowpath using Xen PV
3515 optimizations.
3516
3415 xirc2ps_cs= [NET,PCMCIA] 3517 xirc2ps_cs= [NET,PCMCIA]
3416 Format: 3518 Format:
3417 <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]] 3519 <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
diff --git a/Documentation/kernel-per-CPU-kthreads.txt b/Documentation/kernel-per-CPU-kthreads.txt
index 32351bfabf20..827104fb9364 100644
--- a/Documentation/kernel-per-CPU-kthreads.txt
+++ b/Documentation/kernel-per-CPU-kthreads.txt
@@ -181,12 +181,17 @@ To reduce its OS jitter, do any of the following:
181 make sure that this is safe on your particular system. 181 make sure that this is safe on your particular system.
182 d. It is not possible to entirely get rid of OS jitter 182 d. It is not possible to entirely get rid of OS jitter
183 from vmstat_update() on CONFIG_SMP=y systems, but you 183 from vmstat_update() on CONFIG_SMP=y systems, but you
184 can decrease its frequency by writing a large value to 184 can decrease its frequency by writing a large value
185 /proc/sys/vm/stat_interval. The default value is HZ, 185 to /proc/sys/vm/stat_interval. The default value is
186 for an interval of one second. Of course, larger values 186 HZ, for an interval of one second. Of course, larger
187 will make your virtual-memory statistics update more 187 values will make your virtual-memory statistics update
188 slowly. Of course, you can also run your workload at 188 more slowly. Of course, you can also run your workload
189 a real-time priority, thus preempting vmstat_update(). 189 at a real-time priority, thus preempting vmstat_update(),
190 but if your workload is CPU-bound, this is a bad idea.
191 However, there is an RFC patch from Christoph Lameter
192 (based on an earlier one from Gilad Ben-Yossef) that
193 reduces or even eliminates vmstat overhead for some
194 workloads at https://lkml.org/lkml/2013/9/4/379.
190 e. If running on high-end powerpc servers, build with 195 e. If running on high-end powerpc servers, build with
191 CONFIG_PPC_RTAS_DAEMON=n. This prevents the RTAS 196 CONFIG_PPC_RTAS_DAEMON=n. This prevents the RTAS
192 daemon from running on each CPU every second or so. 197 daemon from running on each CPU every second or so.
diff --git a/Documentation/kmemcheck.txt b/Documentation/kmemcheck.txt
index c28f82895d6b..9398a501fdb9 100644
--- a/Documentation/kmemcheck.txt
+++ b/Documentation/kmemcheck.txt
@@ -91,9 +91,9 @@ information from the kmemcheck warnings, which is extremely valuable in
91debugging a problem. This option is not mandatory, however, because it slows 91debugging a problem. This option is not mandatory, however, because it slows
92down the compilation process and produces a much bigger kernel image. 92down the compilation process and produces a much bigger kernel image.
93 93
94Now the kmemcheck menu should be visible (under "Kernel hacking" / "kmemcheck: 94Now the kmemcheck menu should be visible (under "Kernel hacking" / "Memory
95trap use of uninitialized memory"). Here follows a description of the 95Debugging" / "kmemcheck: trap use of uninitialized memory"). Here follows
96kmemcheck configuration variables: 96a description of the kmemcheck configuration variables:
97 97
98 o CONFIG_KMEMCHECK 98 o CONFIG_KMEMCHECK
99 99
diff --git a/Documentation/ko_KR/HOWTO b/Documentation/ko_KR/HOWTO
index 2f48f205fedc..680e64635958 100644
--- a/Documentation/ko_KR/HOWTO
+++ b/Documentation/ko_KR/HOWTO
@@ -182,8 +182,8 @@ Documentation/DocBook/ 디렉토리 내에서 만들어지며 PDF, Postscript, H
182프로젝트를 봐야 한다. 182프로젝트를 봐야 한다.
183 http://kernelnewbies.org 183 http://kernelnewbies.org
184그곳은 거의 모든 종류의 기본적인 커널 개발 질문들(질문하기 전에 먼저 184그곳은 거의 모든 종류의 기본적인 커널 개발 질문들(질문하기 전에 먼저
185아카이브를 찾아봐라. 과거에 이미 답변되었을 수도 있다)을 할수있는 도움이 185아카이브를 찾아봐라. 과거에 이미 답변되었을 수도 있다)을 할 있는 도움이
186될만한 메일링 리스트가 있다. 또한 실시간으로 질문 할수 있는 IRC 채널도 186될만한 메일링 리스트가 있다. 또한 실시간으로 질문 할 수 있는 IRC 채널도
187가지고 있으며 리눅스 커널 개발을 배우는 데 유용한 문서들을 보유하고 있다. 187가지고 있으며 리눅스 커널 개발을 배우는 데 유용한 문서들을 보유하고 있다.
188 188
189웹사이트는 코드구성, 서브시스템들, 그리고 현재 프로젝트들 189웹사이트는 코드구성, 서브시스템들, 그리고 현재 프로젝트들
@@ -245,7 +245,7 @@ Documentation/DocBook/ 디렉토리 내에서 만들어지며 PDF, Postscript, H
245 것을 기억해라. 왜냐하면 변경이 자체내에서만 발생하고 추가된 코드가 245 것을 기억해라. 왜냐하면 변경이 자체내에서만 발생하고 추가된 코드가
246 드라이버 외부의 다른 부분에는 영향을 주지 않으므로 그런 변경은 246 드라이버 외부의 다른 부분에는 영향을 주지 않으므로 그런 변경은
247 회귀(역자주: 이전에는 존재하지 않았지만 새로운 기능추가나 변경으로 인해 247 회귀(역자주: 이전에는 존재하지 않았지만 새로운 기능추가나 변경으로 인해
248 생겨난 버그)를 일으킬 만한 위험을 가지고 있지 않기 때문이다. -rc1이 248 생겨난 버그)를 일으킬 만한 위험을 가지고 있지 않기 때문이다. -rc1이
249 배포된 이후에 git를 사용하여 패치들을 Linus에게 보낼수 있지만 패치들은 249 배포된 이후에 git를 사용하여 패치들을 Linus에게 보낼수 있지만 패치들은
250 공식적인 메일링 리스트로 보내서 검토를 받을 필요가 있다. 250 공식적인 메일링 리스트로 보내서 검토를 받을 필요가 있다.
251 - 새로운 -rc는 Linus가 현재 git tree가 테스트 하기에 충분히 안정된 상태에 251 - 새로운 -rc는 Linus가 현재 git tree가 테스트 하기에 충분히 안정된 상태에
@@ -455,7 +455,7 @@ bugme-janitor 메일링 리스트(bugzilla에 모든 변화들이 여기서 메
455 - 의견 455 - 의견
456 - 변경을 위한 요구 456 - 변경을 위한 요구
457 - 당위성을 위한 요구 457 - 당위성을 위한 요구
458 - 458 -
459 459
460기억하라. 이것들은 여러분의 패치가 커널로 들어가기 위한 과정이다. 여러분의 460기억하라. 이것들은 여러분의 패치가 커널로 들어가기 위한 과정이다. 여러분의
461패치들은 비판과 다른 의견을 받을 수 있고 그것들을 기술적인 레벨로 평가하고 461패치들은 비판과 다른 의견을 받을 수 있고 그것들을 기술적인 레벨로 평가하고
@@ -472,7 +472,7 @@ bugme-janitor 메일링 리스트(bugzilla에 모든 변화들이 여기서 메
472가능한한 가장 좋은 기술적인 해답을 찾고 있는 커뮤니티에서는 항상 472가능한한 가장 좋은 기술적인 해답을 찾고 있는 커뮤니티에서는 항상
473어떤 패치가 얼마나 좋은지에 관하여 다른 의견들이 있을 수 있다. 여러분은 473어떤 패치가 얼마나 좋은지에 관하여 다른 의견들이 있을 수 있다. 여러분은
474협조적이어야 하고 기꺼이 여러분의 생각을 커널 내에 맞추어야 한다. 아니면 474협조적이어야 하고 기꺼이 여러분의 생각을 커널 내에 맞추어야 한다. 아니면
475적어도 여러분의 것이 가치있다는 것을 명하여야 한다. 잘못된 것도 여러분이 475적어도 여러분의 것이 가치있다는 것을 명하여야 한다. 잘못된 것도 여러분이
476올바른 방향의 해결책으로 이끌어갈 의지가 있다면 받아들여질 것이라는 점을 476올바른 방향의 해결책으로 이끌어갈 의지가 있다면 받아들여질 것이라는 점을
477기억하라. 477기억하라.
478 478
@@ -488,21 +488,21 @@ bugme-janitor 메일링 리스트(bugzilla에 모든 변화들이 여기서 메
488커널 커뮤니티는 가장 전통적인 회사의 개발 환경과는 다르다. 여기에 여러분들의 488커널 커뮤니티는 가장 전통적인 회사의 개발 환경과는 다르다. 여기에 여러분들의
489문제를 피하기 위한 목록이 있다. 489문제를 피하기 위한 목록이 있다.
490 여러분들이 제안한 변경들에 관하여 말할 때 좋은 것들 : 490 여러분들이 제안한 변경들에 관하여 말할 때 좋은 것들 :
491 - "이것은 여러 문제들을 해합니다." 491 - "이것은 여러 문제들을 해합니다."
492 - "이것은 2000 라인의 코드를 거합니다." 492 - "이것은 2000 라인의 코드를 니다."
493 - "이것은 내가 말하려는 것에 관해 설명하는 패치입니다." 493 - "이것은 내가 말하려는 것에 관해 설명하는 패치입니다."
494 - "나는 5개의 다른 아키텍쳐에서 그것을 테스트했로..." 494 - "나는 5개의 다른 아키텍쳐에서 그것을 테스트 했으..."
495 - "여기에 일련의 작은 패치들이 있로..." 495 - "여기에 일련의 작은 패치들이 있..."
496 - "이것은 일반적인 머신에서 성능을 향상으로..." 496 - "이것은 일반적인 머신에서 성능을 향상으로..."
497 497
498 여러분들이 말할 때 피해야 할 좋지 않은 것들 : 498 여러분들이 말할 때 피해야 할 좋지 않은 것들 :
499 - "우리를 그것을 AIT/ptx/Solaris에서 이러한 방법으로 했다. 그러므로 그것은 좋은 것임에 틀립없다..." 499 - "우리는 그것을 AIX/ptx/Solaris에서 이러한 방법으로 했다. 그러므로 그것은 좋은 것임에 틀림없다..."
500 - "나는 20년동안 이것을 해왔다. 그러므로..." 500 - "나는 20년동안 이것을 해왔다. 그러므로..."
501 - "이것은 돈을 벌기위해 나의 회사가 필요로 하는 것이다." 501 - "이것은 돈을 벌기위해 나의 회사가 필요로 하는 것이다."
502 - "이것은 우리의 엔터프라이즈 상품 라인을 위한 것이다." 502 - "이것은 우리의 엔터프라이즈 상품 라인을 위한 것이다."
503 - "여기에 나의 생각을 말하고 있는 1000 페이지 설계 문서가 있다." 503 - "여기에 나의 생각을 말하고 있는 1000 페이지 설계 문서가 있다."
504 - "나는 6달동안 이것을 했으니..." 504 - "나는 6달동안 이것을 했으니..."
505 - "여기에 5000라인 짜리 패치가 있으니..." 505 - "여기에 5000 라인 짜리 패치가 있으니..."
506 - "나는 현재 뒤죽박죽인 것을 재작성했다. 그리고 여기에..." 506 - "나는 현재 뒤죽박죽인 것을 재작성했다. 그리고 여기에..."
507 - "나는 마감시한을 가지고 있으므로 이 패치는 지금 적용될 필요가 있다." 507 - "나는 마감시한을 가지고 있으므로 이 패치는 지금 적용될 필요가 있다."
508 508
@@ -574,6 +574,7 @@ Pat이라는 이름을 가진 여자가 있을 수도 있는 것이다. 리눅
574또한 완성되지 않았고 "나중에 수정될 것이다." 와 같은 것들을 포함하는 574또한 완성되지 않았고 "나중에 수정될 것이다." 와 같은 것들을 포함하는
575패치들은 받아들여지지 않을 것이라는 점을 유념하라. 575패치들은 받아들여지지 않을 것이라는 점을 유념하라.
576 576
577
577변경을 정당화해라 578변경을 정당화해라
578----------------- 579-----------------
579 580
diff --git a/Documentation/ko_KR/stable_api_nonsense.txt b/Documentation/ko_KR/stable_api_nonsense.txt
index 8f2b0e1d98c4..51f85ade4190 100644
--- a/Documentation/ko_KR/stable_api_nonsense.txt
+++ b/Documentation/ko_KR/stable_api_nonsense.txt
@@ -106,12 +106,12 @@ Greg Kroah-Hartman <greg@kroah.com>
106--------------------------------- 106---------------------------------
107 107
108리눅스 커널 드라이버를 계속해서 메인 커널 트리에 반영하지 않고 108리눅스 커널 드라이버를 계속해서 메인 커널 트리에 반영하지 않고
109유지보수하려고 하는 사들과 이 문제를 논의하게 되면 훨씬 더 109유지보수하려고 하는 사들과 이 문제를 논의하게 되면 훨씬 더
110"논란의 여지가 많은" 주제가 될 것이다. 110"논란의 여지가 많은" 주제가 될 것이다.
111 111
112리눅스 커널 개발은 끊임없이 빠른 속도로 이루어지고 있으며 결코 112리눅스 커널 개발은 끊임없이 빠른 속도로 이루어지고 있으며 결코
113느슨해진 적이 없다. 커널 개발자들이 현재 인터페이스들에서 버그를 113느슨해진 적이 없다. 커널 개발자들이 현재 인터페이스들에서 버그를
114발견하거나 무엇인가 할수 있는 더 좋은 방법을 찾게 되었다고 하자. 114발견하거나 무엇인가 할 수 있는 더 좋은 방법을 찾게 되었다고 하자.
115그들이 발견한 것을 실행한다면 아마도 더 잘 동작하도록 현재 인터페이스들을 115그들이 발견한 것을 실행한다면 아마도 더 잘 동작하도록 현재 인터페이스들을
116수정하게 될 것이다. 그들이 그런 일을 하게되면 함수 이름들은 변하게 되고, 116수정하게 될 것이다. 그들이 그런 일을 하게되면 함수 이름들은 변하게 되고,
117구조체들은 늘어나거나 줄어들게 되고, 함수 파라미터들은 재작업될 것이다. 117구조체들은 늘어나거나 줄어들게 되고, 함수 파라미터들은 재작업될 것이다.
@@ -174,7 +174,7 @@ GPL을 따르는 배포 드라이버에 관해 얘기하고 있다는 것을 상
174동작하는 것을 보장한다. 174동작하는 것을 보장한다.
175 175
176메인 커널 트리에 여러분의 드라이버를 반영하면 얻게 되는 장점들은 다음과 같다. 176메인 커널 트리에 여러분의 드라이버를 반영하면 얻게 되는 장점들은 다음과 같다.
177 - 관리 드는 비용(원래 개발자의)은 줄어줄면서 드라이버의 질은 향상될 것이다. 177 - 관리 드는 비용(원래 개발자의)은 줄어줄면서 드라이버의 질은 향상될 것이다.
178 - 다른 개발자들이 여러분의 드라이버에 기능들을 추가 할 것이다. 178 - 다른 개발자들이 여러분의 드라이버에 기능들을 추가 할 것이다.
179 - 다른 사람들은 여러분의 드라이버에 버그를 발견하고 수정할 것이다. 179 - 다른 사람들은 여러분의 드라이버에 버그를 발견하고 수정할 것이다.
180 - 다른 사람들은 여러분의 드라이버의 개선점을 찾을 줄 것이다. 180 - 다른 사람들은 여러분의 드라이버의 개선점을 찾을 줄 것이다.
diff --git a/Documentation/laptops/asus-laptop.txt b/Documentation/laptops/asus-laptop.txt
index 69f9fb3701e0..79a1bc675a8d 100644
--- a/Documentation/laptops/asus-laptop.txt
+++ b/Documentation/laptops/asus-laptop.txt
@@ -8,8 +8,8 @@ http://acpi4asus.sf.net/
8 8
9 This driver provides support for extra features of ACPI-compatible ASUS laptops. 9 This driver provides support for extra features of ACPI-compatible ASUS laptops.
10 It may also support some MEDION, JVC or VICTOR laptops (such as MEDION 9675 or 10 It may also support some MEDION, JVC or VICTOR laptops (such as MEDION 9675 or
11 VICTOR XP7210 for example). It makes all the extra buttons generate standard 11 VICTOR XP7210 for example). It makes all the extra buttons generate input
12 ACPI events that go through /proc/acpi/events and input events (like keyboards). 12 events (like keyboards).
13 On some models adds support for changing the display brightness and output, 13 On some models adds support for changing the display brightness and output,
14 switching the LCD backlight on and off, and most importantly, allows you to 14 switching the LCD backlight on and off, and most importantly, allows you to
15 blink those fancy LEDs intended for reporting mail and wireless status. 15 blink those fancy LEDs intended for reporting mail and wireless status.
@@ -55,8 +55,8 @@ Usage
55 DSDT) to me. 55 DSDT) to me.
56 56
57 That's all, now, all the events generated by the hotkeys of your laptop 57 That's all, now, all the events generated by the hotkeys of your laptop
58 should be reported in your /proc/acpi/event entry. You can check with 58 should be reported via netlink events. You can check with
59 "acpi_listen". 59 "acpi_genl monitor" (part of the acpica project).
60 60
61 Hotkeys are also reported as input keys (like keyboards) you can check 61 Hotkeys are also reported as input keys (like keyboards) you can check
62 which key are supported using "xev" under X11. 62 which key are supported using "xev" under X11.
diff --git a/Documentation/laptops/sony-laptop.txt b/Documentation/laptops/sony-laptop.txt
index 0d5ac7f5287e..978b1e615155 100644
--- a/Documentation/laptops/sony-laptop.txt
+++ b/Documentation/laptops/sony-laptop.txt
@@ -12,10 +12,10 @@ Fn keys (hotkeys):
12------------------ 12------------------
13Some models report hotkeys through the SNC or SPIC devices, such events are 13Some models report hotkeys through the SNC or SPIC devices, such events are
14reported both through the ACPI subsystem as acpi events and through the INPUT 14reported both through the ACPI subsystem as acpi events and through the INPUT
15subsystem. See the logs of acpid or /proc/acpi/event and 15subsystem. See the logs of /proc/bus/input/devices to find out what those
16/proc/bus/input/devices to find out what those events are and which input 16events are and which input devices are created by the driver.
17devices are created by the driver. Additionally, loading the driver with the 17Additionally, loading the driver with the debug option will report all events
18debug option will report all events in the kernel log. 18in the kernel log.
19 19
20The "scancodes" passed to the input system (that can be remapped with udev) 20The "scancodes" passed to the input system (that can be remapped with udev)
21are indexes to the table "sony_laptop_input_keycode_map" in the sony-laptop.c 21are indexes to the table "sony_laptop_input_keycode_map" in the sony-laptop.c
diff --git a/Documentation/laptops/thinkpad-acpi.txt b/Documentation/laptops/thinkpad-acpi.txt
index cf7bc6cb9719..fc04c14de4bb 100644
--- a/Documentation/laptops/thinkpad-acpi.txt
+++ b/Documentation/laptops/thinkpad-acpi.txt
@@ -1,7 +1,7 @@
1 ThinkPad ACPI Extras Driver 1 ThinkPad ACPI Extras Driver
2 2
3 Version 0.24 3 Version 0.25
4 December 11th, 2009 4 October 16th, 2013
5 5
6 Borislav Deianov <borislav@users.sf.net> 6 Borislav Deianov <borislav@users.sf.net>
7 Henrique de Moraes Holschuh <hmh@hmh.eng.br> 7 Henrique de Moraes Holschuh <hmh@hmh.eng.br>
@@ -329,20 +329,6 @@ sysfs notes:
329 329
330 This attribute has poll()/select() support. 330 This attribute has poll()/select() support.
331 331
332 hotkey_report_mode:
333 Returns the state of the procfs ACPI event report mode
334 filter for hot keys. If it is set to 1 (the default),
335 all hot key presses are reported both through the input
336 layer and also as ACPI events through procfs (but not
337 through netlink). If it is set to 2, hot key presses
338 are reported only through the input layer.
339
340 This attribute is read-only in kernels 2.6.23 or later,
341 and read-write on earlier kernels.
342
343 May return -EPERM (write access locked out by module
344 parameter) or -EACCES (read-only).
345
346 wakeup_reason: 332 wakeup_reason:
347 Set to 1 if the system is waking up because the user 333 Set to 1 if the system is waking up because the user
348 requested a bay ejection. Set to 2 if the system is 334 requested a bay ejection. Set to 2 if the system is
@@ -518,24 +504,21 @@ SW_TABLET_MODE Tablet ThinkPads HKEY events 0x5009 and 0x500A
518Non hotkey ACPI HKEY event map: 504Non hotkey ACPI HKEY event map:
519------------------------------- 505-------------------------------
520 506
521Events that are not propagated by the driver, except for legacy
522compatibility purposes when hotkey_report_mode is set to 1:
523
5240x5001 Lid closed
5250x5002 Lid opened
5260x5009 Tablet swivel: switched to tablet mode
5270x500A Tablet swivel: switched to normal mode
5280x7000 Radio Switch may have changed state
529
530Events that are never propagated by the driver: 507Events that are never propagated by the driver:
531 508
5320x2304 System is waking up from suspend to undock 5090x2304 System is waking up from suspend to undock
5330x2305 System is waking up from suspend to eject bay 5100x2305 System is waking up from suspend to eject bay
5340x2404 System is waking up from hibernation to undock 5110x2404 System is waking up from hibernation to undock
5350x2405 System is waking up from hibernation to eject bay 5120x2405 System is waking up from hibernation to eject bay
5130x5001 Lid closed
5140x5002 Lid opened
5150x5009 Tablet swivel: switched to tablet mode
5160x500A Tablet swivel: switched to normal mode
5360x5010 Brightness level changed/control event 5170x5010 Brightness level changed/control event
5370x6000 KEYBOARD: Numlock key pressed 5180x6000 KEYBOARD: Numlock key pressed
5380x6005 KEYBOARD: Fn key pressed (TO BE VERIFIED) 5190x6005 KEYBOARD: Fn key pressed (TO BE VERIFIED)
5200x7000 Radio Switch may have changed state
521
539 522
540Events that are propagated by the driver to userspace: 523Events that are propagated by the driver to userspace:
541 524
@@ -574,50 +557,6 @@ operating system is to force either an immediate suspend or hibernate
574cycle, or a system shutdown. Obviously, something is very wrong if this 557cycle, or a system shutdown. Obviously, something is very wrong if this
575happens. 558happens.
576 559
577Compatibility notes:
578
579ibm-acpi and thinkpad-acpi 0.15 (mainline kernels before 2.6.23) never
580supported the input layer, and sent events over the procfs ACPI event
581interface.
582
583To avoid sending duplicate events over the input layer and the ACPI
584event interface, thinkpad-acpi 0.16 implements a module parameter
585(hotkey_report_mode), and also a sysfs device attribute with the same
586name.
587
588Make no mistake here: userspace is expected to switch to using the input
589layer interface of thinkpad-acpi, together with the ACPI netlink event
590interface in kernels 2.6.23 and later, or with the ACPI procfs event
591interface in kernels 2.6.22 and earlier.
592
593If no hotkey_report_mode module parameter is specified (or it is set to
594zero), the driver defaults to mode 1 (see below), and on kernels 2.6.22
595and earlier, also allows one to change the hotkey_report_mode through
596sysfs. In kernels 2.6.23 and later, where the netlink ACPI event
597interface is available, hotkey_report_mode cannot be changed through
598sysfs (it is read-only).
599
600If the hotkey_report_mode module parameter is set to 1 or 2, it cannot
601be changed later through sysfs (any writes will return -EPERM to signal
602that hotkey_report_mode was locked. On 2.6.23 and later, where
603hotkey_report_mode cannot be changed at all, writes will return -EACCES).
604
605hotkey_report_mode set to 1 makes the driver export through the procfs
606ACPI event interface all hot key presses (which are *also* sent to the
607input layer). This is a legacy compatibility behaviour, and it is also
608the default mode of operation for the driver.
609
610hotkey_report_mode set to 2 makes the driver filter out the hot key
611presses from the procfs ACPI event interface, so these events will only
612be sent through the input layer. Userspace that has been updated to use
613the thinkpad-acpi input layer interface should set hotkey_report_mode to
6142.
615
616Hot key press events are never sent to the ACPI netlink event interface.
617Really up-to-date userspace under kernel 2.6.23 and later is to use the
618netlink interface and the input layer interface, and don't bother at all
619with hotkey_report_mode.
620
621 560
622Brightness hotkey notes: 561Brightness hotkey notes:
623 562
@@ -802,6 +741,9 @@ compiled with the CONFIG_THINKPAD_ACPI_UNSAFE_LEDS option enabled.
802Distributions must never enable this option. Individual users that 741Distributions must never enable this option. Individual users that
803are aware of the consequences are welcome to enabling it. 742are aware of the consequences are welcome to enabling it.
804 743
744Audio mute and microphone mute LEDs are supported, but currently not
745visible to userspace. They are used by the snd-hda-intel audio driver.
746
805procfs notes: 747procfs notes:
806 748
807The available commands are: 749The available commands are:
diff --git a/Documentation/leds/leds-lm3556.txt b/Documentation/leds/leds-lm3556.txt
index d9eb91b51913..62278e871b50 100644
--- a/Documentation/leds/leds-lm3556.txt
+++ b/Documentation/leds/leds-lm3556.txt
@@ -71,7 +71,7 @@ To register the chip at address 0x63 on specific adapter, set the platform data
71according to include/linux/platform_data/leds-lm3556.h, set the i2c board info 71according to include/linux/platform_data/leds-lm3556.h, set the i2c board info
72 72
73Example: 73Example:
74 static struct i2c_board_info __initdata board_i2c_ch4[] = { 74 static struct i2c_board_info board_i2c_ch4[] __initdata = {
75 { 75 {
76 I2C_BOARD_INFO(LM3556_NAME, 0x63), 76 I2C_BOARD_INFO(LM3556_NAME, 0x63),
77 .platform_data = &lm3556_pdata, 77 .platform_data = &lm3556_pdata,
diff --git a/Documentation/leds/leds-lp3944.txt b/Documentation/leds/leds-lp3944.txt
index c6eda18b15ef..e88ac3b60c08 100644
--- a/Documentation/leds/leds-lp3944.txt
+++ b/Documentation/leds/leds-lp3944.txt
@@ -37,7 +37,7 @@ registered using the i2c_board_info mechanism.
37To register the chip at address 0x60 on adapter 0, set the platform data 37To register the chip at address 0x60 on adapter 0, set the platform data
38according to include/linux/leds-lp3944.h, set the i2c board info: 38according to include/linux/leds-lp3944.h, set the i2c board info:
39 39
40 static struct i2c_board_info __initdata a910_i2c_board_info[] = { 40 static struct i2c_board_info a910_i2c_board_info[] __initdata = {
41 { 41 {
42 I2C_BOARD_INFO("lp3944", 0x60), 42 I2C_BOARD_INFO("lp3944", 0x60),
43 .platform_data = &a910_lp3944_leds, 43 .platform_data = &a910_lp3944_leds,
diff --git a/Documentation/leds/leds-lp5521.txt b/Documentation/leds/leds-lp5521.txt
index 79e4c2e6e5e8..d08d8c179f85 100644
--- a/Documentation/leds/leds-lp5521.txt
+++ b/Documentation/leds/leds-lp5521.txt
@@ -18,7 +18,25 @@ All three channels can be also controlled using the engine micro programs.
18More details of the instructions can be found from the public data sheet. 18More details of the instructions can be found from the public data sheet.
19 19
20LP5521 has the internal program memory for running various LED patterns. 20LP5521 has the internal program memory for running various LED patterns.
21For the details, please refer to 'firmware' section in leds-lp55xx.txt 21There are two ways to run LED patterns.
22
231) Legacy interface - enginex_mode and enginex_load
24 Control interface for the engines:
25 x is 1 .. 3
26 enginex_mode : disabled, load, run
27 enginex_load : store program (visible only in engine load mode)
28
29 Example (start to blink the channel 2 led):
30 cd /sys/class/leds/lp5521:channel2/device
31 echo "load" > engine3_mode
32 echo "037f4d0003ff6000" > engine3_load
33 echo "run" > engine3_mode
34
35 To stop the engine:
36 echo "disabled" > engine3_mode
37
382) Firmware interface - LP55xx common interface
39 For the details, please refer to 'firmware' section in leds-lp55xx.txt
22 40
23sysfs contains a selftest entry. 41sysfs contains a selftest entry.
24The test communicates with the chip and checks that 42The test communicates with the chip and checks that
diff --git a/Documentation/leds/leds-lp5523.txt b/Documentation/leds/leds-lp5523.txt
index 899fdad509fe..5b3e91d4ac59 100644
--- a/Documentation/leds/leds-lp5523.txt
+++ b/Documentation/leds/leds-lp5523.txt
@@ -28,7 +28,26 @@ If both fields are NULL, 'lp5523' is used by default.
28/sys/class/leds/lp5523:channelN (N: 0 ~ 8) 28/sys/class/leds/lp5523:channelN (N: 0 ~ 8)
29 29
30LP5523 has the internal program memory for running various LED patterns. 30LP5523 has the internal program memory for running various LED patterns.
31For the details, please refer to 'firmware' section in leds-lp55xx.txt 31There are two ways to run LED patterns.
32
331) Legacy interface - enginex_mode, enginex_load and enginex_leds
34 Control interface for the engines:
35 x is 1 .. 3
36 enginex_mode : disabled, load, run
37 enginex_load : microcode load (visible only in load mode)
38 enginex_leds : led mux control (visible only in load mode)
39
40 cd /sys/class/leds/lp5523:channel2/device
41 echo "load" > engine3_mode
42 echo "9d80400004ff05ff437f0000" > engine3_load
43 echo "111111111" > engine3_leds
44 echo "run" > engine3_mode
45
46 To stop the engine:
47 echo "disabled" > engine3_mode
48
492) Firmware interface - LP55xx common interface
50 For the details, please refer to 'firmware' section in leds-lp55xx.txt
32 51
33Selftest uses always the current from the platform data. 52Selftest uses always the current from the platform data.
34 53
diff --git a/Documentation/leds/leds-lp55xx.txt b/Documentation/leds/leds-lp55xx.txt
index eec8fa2ffe4e..82713ff92eb3 100644
--- a/Documentation/leds/leds-lp55xx.txt
+++ b/Documentation/leds/leds-lp55xx.txt
@@ -1,11 +1,11 @@
1LP5521/LP5523/LP55231 Common Driver 1LP5521/LP5523/LP55231/LP5562/LP8501 Common Driver
2=================================== 2=================================================
3 3
4Authors: Milo(Woogyom) Kim <milo.kim@ti.com> 4Authors: Milo(Woogyom) Kim <milo.kim@ti.com>
5 5
6Description 6Description
7----------- 7-----------
8LP5521, LP5523/55231 and LP5562 have common features as below. 8LP5521, LP5523/55231, LP5562 and LP8501 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
@@ -109,6 +109,30 @@ As soon as 'loading' is set to 0, registered callback is called.
109Inside the callback, the selected engine is loaded and memory is updated. 109Inside the callback, the selected engine is loaded and memory is updated.
110To run programmed pattern, 'run_engine' attribute should be enabled. 110To run programmed pattern, 'run_engine' attribute should be enabled.
111 111
112The pattern sqeuence of LP8501 is same as LP5523.
113However pattern data is specific.
114Ex 1) Engine 1 is used
115echo 1 > /sys/bus/i2c/devices/xxxx/select_engine
116echo 1 > /sys/class/firmware/lp8501/loading
117echo "9d0140ff7e0040007e00a001c000" > /sys/class/firmware/lp8501/data
118echo 0 > /sys/class/firmware/lp8501/loading
119echo 1 > /sys/bus/i2c/devices/xxxx/run_engine
120
121Ex 2) Engine 2 and 3 are used at the same time
122echo 2 > /sys/bus/i2c/devices/xxxx/select_engine
123sleep 1
124echo 1 > /sys/class/firmware/lp8501/loading
125echo "9d0140ff7e0040007e00a001c000" > /sys/class/firmware/lp8501/data
126echo 0 > /sys/class/firmware/lp8501/loading
127sleep 1
128echo 3 > /sys/bus/i2c/devices/xxxx/select_engine
129sleep 1
130echo 1 > /sys/class/firmware/lp8501/loading
131echo "9d0340ff7e0040007e00a001c000" > /sys/class/firmware/lp8501/data
132echo 0 > /sys/class/firmware/lp8501/loading
133sleep 1
134echo 1 > /sys/class/leds/d1/device/run_engine
135
112( 'run_engine' and 'firmware_cb' ) 136( 'run_engine' and 'firmware_cb' )
113The sequence of running the program data is common. 137The sequence of running the program data is common.
114But each device has own specific register addresses for commands. 138But each device has own specific register addresses for commands.
diff --git a/Documentation/memory-barriers.txt b/Documentation/memory-barriers.txt
index fa5d8a9ae205..c8c42e64e953 100644
--- a/Documentation/memory-barriers.txt
+++ b/Documentation/memory-barriers.txt
@@ -531,9 +531,10 @@ dependency barrier to make it work correctly. Consider the following bit of
531code: 531code:
532 532
533 q = &a; 533 q = &a;
534 if (p) 534 if (p) {
535 <data dependency barrier>
535 q = &b; 536 q = &b;
536 <data dependency barrier> 537 }
537 x = *q; 538 x = *q;
538 539
539This will not have the desired effect because there is no actual data 540This will not have the desired effect because there is no actual data
@@ -542,9 +543,10 @@ attempting to predict the outcome in advance. In such a case what's actually
542required is: 543required is:
543 544
544 q = &a; 545 q = &a;
545 if (p) 546 if (p) {
547 <read barrier>
546 q = &b; 548 q = &b;
547 <read barrier> 549 }
548 x = *q; 550 x = *q;
549 551
550 552
diff --git a/Documentation/memory-hotplug.txt b/Documentation/memory-hotplug.txt
index 8e5eacbdcfa3..58340d50f8a6 100644
--- a/Documentation/memory-hotplug.txt
+++ b/Documentation/memory-hotplug.txt
@@ -163,7 +163,7 @@ a recent addition and not present on older kernels.
163 at read: contains online/offline state of memory. 163 at read: contains online/offline state of memory.
164 at write: user can specify "online_kernel", 164 at write: user can specify "online_kernel",
165 "online_movable", "online", "offline" command 165 "online_movable", "online", "offline" command
166 which will be performed on al sections in the block. 166 which will be performed on all sections in the block.
167'phys_device' : read-only: designed to show the name of physical memory 167'phys_device' : read-only: designed to show the name of physical memory
168 device. This is not well implemented now. 168 device. This is not well implemented now.
169'removable' : read-only: contains an integer value indicating 169'removable' : read-only: contains an integer value indicating
@@ -210,13 +210,15 @@ If memory device is found, memory hotplug code will be called.
210 210
2114.2 Notify memory hot-add event by hand 2114.2 Notify memory hot-add event by hand
212------------ 212------------
213In some environments, especially virtualized environment, firmware will not 213On powerpc, the firmware does not notify a memory hotplug event to the kernel.
214notify memory hotplug event to the kernel. For such environment, "probe" 214Therefore, "probe" interface is supported to notify the event to the kernel.
215interface is supported. This interface depends on CONFIG_ARCH_MEMORY_PROBE. 215This interface depends on CONFIG_ARCH_MEMORY_PROBE.
216 216
217Now, CONFIG_ARCH_MEMORY_PROBE is supported only by powerpc but it does not 217CONFIG_ARCH_MEMORY_PROBE is supported on powerpc only. On x86, this config
218contain highly architecture codes. Please add config if you need "probe" 218option is disabled by default since ACPI notifies a memory hotplug event to
219interface. 219the kernel, which performs its hotplug operation as the result. Please
220enable this option if you need the "probe" interface for testing purposes
221on x86.
220 222
221Probe interface is located at 223Probe interface is located at
222/sys/devices/system/memory/probe 224/sys/devices/system/memory/probe
diff --git a/Documentation/mic/mic_overview.txt b/Documentation/mic/mic_overview.txt
new file mode 100644
index 000000000000..b41929224804
--- /dev/null
+++ b/Documentation/mic/mic_overview.txt
@@ -0,0 +1,51 @@
1An Intel MIC X100 device is a PCIe form factor add-in coprocessor
2card based on the Intel Many Integrated Core (MIC) architecture
3that runs a Linux OS. It is a PCIe endpoint in a platform and therefore
4implements the three required standard address spaces i.e. configuration,
5memory and I/O. The host OS loads a device driver as is typical for
6PCIe devices. The card itself runs a bootstrap after reset that
7transfers control to the card OS downloaded from the host driver. The
8host driver supports OSPM suspend and resume operations. It shuts down
9the card during suspend and reboots the card OS during resume.
10The card OS as shipped by Intel is a Linux kernel with modifications
11for the X100 devices.
12
13Since it is a PCIe card, it does not have the ability to host hardware
14devices for networking, storage and console. We provide these devices
15on X100 coprocessors thus enabling a self-bootable equivalent environment
16for applications. A key benefit of our solution is that it leverages
17the standard virtio framework for network, disk and console devices,
18though in our case the virtio framework is used across a PCIe bus.
19
20Here is a block diagram of the various components described above. The
21virtio backends are situated on the host rather than the card given better
22single threaded performance for the host compared to MIC, the ability of
23the host to initiate DMA's to/from the card using the MIC DMA engine and
24the fact that the virtio block storage backend can only be on the host.
25
26 |
27 +----------+ | +----------+
28 | Card OS | | | Host OS |
29 +----------+ | +----------+
30 |
31+-------+ +--------+ +------+ | +---------+ +--------+ +--------+
32| Virtio| |Virtio | |Virtio| | |Virtio | |Virtio | |Virtio |
33| Net | |Console | |Block | | |Net | |Console | |Block |
34| Driver| |Driver | |Driver| | |backend | |backend | |backend |
35+-------+ +--------+ +------+ | +---------+ +--------+ +--------+
36 | | | | | | |
37 | | | |User | | |
38 | | | |------|------------|---------|-------
39 +-------------------+ |Kernel +--------------------------+
40 | | | Virtio over PCIe IOCTLs |
41 | | +--------------------------+
42 +--------------+ | |
43 |Intel MIC | | +---------------+
44 |Card Driver | | |Intel MIC |
45 +--------------+ | |Host Driver |
46 | | +---------------+
47 | | |
48 +-------------------------------------------------------------+
49 | |
50 | PCIe Bus |
51 +-------------------------------------------------------------+
diff --git a/Documentation/mic/mpssd/.gitignore b/Documentation/mic/mpssd/.gitignore
new file mode 100644
index 000000000000..8b7c72f07c92
--- /dev/null
+++ b/Documentation/mic/mpssd/.gitignore
@@ -0,0 +1 @@
mpssd
diff --git a/Documentation/mic/mpssd/Makefile b/Documentation/mic/mpssd/Makefile
new file mode 100644
index 000000000000..eb860a7d152e
--- /dev/null
+++ b/Documentation/mic/mpssd/Makefile
@@ -0,0 +1,19 @@
1#
2# Makefile - Intel MIC User Space Tools.
3# Copyright(c) 2013, Intel Corporation.
4#
5ifdef DEBUG
6CFLAGS += $(USERWARNFLAGS) -I. -g -Wall -DDEBUG=$(DEBUG)
7else
8CFLAGS += $(USERWARNFLAGS) -I. -g -Wall
9endif
10
11mpssd: mpssd.o sysfs.o
12 $(CC) $(CFLAGS) -o $@ $^ -lpthread
13
14install:
15 install mpssd /usr/sbin/mpssd
16 install micctrl /usr/sbin/micctrl
17
18clean:
19 rm -f mpssd *.o
diff --git a/Documentation/mic/mpssd/micctrl b/Documentation/mic/mpssd/micctrl
new file mode 100755
index 000000000000..8f2629b41c5f
--- /dev/null
+++ b/Documentation/mic/mpssd/micctrl
@@ -0,0 +1,173 @@
1#!/bin/bash
2# Intel MIC Platform Software Stack (MPSS)
3#
4# Copyright(c) 2013 Intel Corporation.
5#
6# This program is free software; you can redistribute it and/or modify
7# it under the terms of the GNU General Public License, version 2, as
8# published by the Free Software Foundation.
9#
10# This program is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# General Public License for more details.
14#
15# The full GNU General Public License is included in this distribution in
16# the file called "COPYING".
17#
18# Intel MIC User Space Tools.
19#
20# micctrl - Controls MIC boot/start/stop.
21#
22# chkconfig: 2345 95 05
23# description: start MPSS stack processing.
24#
25### BEGIN INIT INFO
26# Provides: micctrl
27### END INIT INFO
28
29# Source function library.
30. /etc/init.d/functions
31
32sysfs="/sys/class/mic"
33
34_status()
35{
36 f=$sysfs/$1
37 echo -e $1 state: "`cat $f/state`" shutdown_status: "`cat $f/shutdown_status`"
38}
39
40status()
41{
42 if [ "`echo $1 | head -c3`" == "mic" ]; then
43 _status $1
44 return $?
45 fi
46 for f in $sysfs/*
47 do
48 _status `basename $f`
49 RETVAL=$?
50 [ $RETVAL -ne 0 ] && return $RETVAL
51 done
52 return 0
53}
54
55_reset()
56{
57 f=$sysfs/$1
58 echo reset > $f/state
59}
60
61reset()
62{
63 if [ "`echo $1 | head -c3`" == "mic" ]; then
64 _reset $1
65 return $?
66 fi
67 for f in $sysfs/*
68 do
69 _reset `basename $f`
70 RETVAL=$?
71 [ $RETVAL -ne 0 ] && return $RETVAL
72 done
73 return 0
74}
75
76_boot()
77{
78 f=$sysfs/$1
79 echo "linux" > $f/bootmode
80 echo "mic/uos.img" > $f/firmware
81 echo "mic/$1.image" > $f/ramdisk
82 echo "boot" > $f/state
83}
84
85boot()
86{
87 if [ "`echo $1 | head -c3`" == "mic" ]; then
88 _boot $1
89 return $?
90 fi
91 for f in $sysfs/*
92 do
93 _boot `basename $f`
94 RETVAL=$?
95 [ $RETVAL -ne 0 ] && return $RETVAL
96 done
97 return 0
98}
99
100_shutdown()
101{
102 f=$sysfs/$1
103 echo shutdown > $f/state
104}
105
106shutdown()
107{
108 if [ "`echo $1 | head -c3`" == "mic" ]; then
109 _shutdown $1
110 return $?
111 fi
112 for f in $sysfs/*
113 do
114 _shutdown `basename $f`
115 RETVAL=$?
116 [ $RETVAL -ne 0 ] && return $RETVAL
117 done
118 return 0
119}
120
121_wait()
122{
123 f=$sysfs/$1
124 while [ "`cat $f/state`" != "offline" -a "`cat $f/state`" != "online" ]
125 do
126 sleep 1
127 echo -e "Waiting for $1 to go offline"
128 done
129}
130
131wait()
132{
133 if [ "`echo $1 | head -c3`" == "mic" ]; then
134 _wait $1
135 return $?
136 fi
137 # Wait for the cards to go offline
138 for f in $sysfs/*
139 do
140 _wait `basename $f`
141 RETVAL=$?
142 [ $RETVAL -ne 0 ] && return $RETVAL
143 done
144 return 0
145}
146
147if [ ! -d "$sysfs" ]; then
148 echo -e $"Module unloaded "
149 exit 3
150fi
151
152case $1 in
153 -s)
154 status $2
155 ;;
156 -r)
157 reset $2
158 ;;
159 -b)
160 boot $2
161 ;;
162 -S)
163 shutdown $2
164 ;;
165 -w)
166 wait $2
167 ;;
168 *)
169 echo $"Usage: $0 {-s (status) |-r (reset) |-b (boot) |-S (shutdown) |-w (wait)}"
170 exit 2
171esac
172
173exit $?
diff --git a/Documentation/mic/mpssd/mpss b/Documentation/mic/mpssd/mpss
new file mode 100755
index 000000000000..3136c68dad0b
--- /dev/null
+++ b/Documentation/mic/mpssd/mpss
@@ -0,0 +1,202 @@
1#!/bin/bash
2# Intel MIC Platform Software Stack (MPSS)
3#
4# Copyright(c) 2013 Intel Corporation.
5#
6# This program is free software; you can redistribute it and/or modify
7# it under the terms of the GNU General Public License, version 2, as
8# published by the Free Software Foundation.
9#
10# This program is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# General Public License for more details.
14#
15# The full GNU General Public License is included in this distribution in
16# the file called "COPYING".
17#
18# Intel MIC User Space Tools.
19#
20# mpss Start mpssd.
21#
22# chkconfig: 2345 95 05
23# description: start MPSS stack processing.
24#
25### BEGIN INIT INFO
26# Provides: mpss
27# Required-Start:
28# Required-Stop:
29# Short-Description: MPSS stack control
30# Description: MPSS stack control
31### END INIT INFO
32
33# Source function library.
34. /etc/init.d/functions
35
36exec=/usr/sbin/mpssd
37sysfs="/sys/class/mic"
38
39start()
40{
41 [ -x $exec ] || exit 5
42
43 if [ "`ps -e | awk '{print $4}' | grep mpssd | head -1`" = "mpssd" ]; then
44 echo -e $"MPSSD already running! "
45 success
46 echo
47 return 0
48 fi
49
50 echo -e $"Starting MPSS Stack"
51 echo -e $"Loading MIC_HOST Module"
52
53 # Ensure the driver is loaded
54 if [ ! -d "$sysfs" ]; then
55 modprobe mic_host
56 RETVAL=$?
57 if [ $RETVAL -ne 0 ]; then
58 failure
59 echo
60 return $RETVAL
61 fi
62 fi
63
64 # Start the daemon
65 echo -n $"Starting MPSSD "
66 $exec
67 RETVAL=$?
68 if [ $RETVAL -ne 0 ]; then
69 failure
70 echo
71 return $RETVAL
72 fi
73 success
74 echo
75
76 sleep 5
77
78 # Boot the cards
79 micctrl -b
80
81 # Wait till ping works
82 for f in $sysfs/*
83 do
84 count=100
85 ipaddr=`cat $f/cmdline`
86 ipaddr=${ipaddr#*address,}
87 ipaddr=`echo $ipaddr | cut -d, -f1 | cut -d\; -f1`
88 while [ $count -ge 0 ]
89 do
90 echo -e "Pinging "`basename $f`" "
91 ping -c 1 $ipaddr &> /dev/null
92 RETVAL=$?
93 if [ $RETVAL -eq 0 ]; then
94 success
95 break
96 fi
97 sleep 1
98 count=`expr $count - 1`
99 done
100 [ $RETVAL -ne 0 ] && failure || success
101 echo
102 done
103 return $RETVAL
104}
105
106stop()
107{
108 echo -e $"Shutting down MPSS Stack: "
109
110 # Bail out if module is unloaded
111 if [ ! -d "$sysfs" ]; then
112 echo -n $"Module unloaded "
113 success
114 echo
115 return 0
116 fi
117
118 # Shut down the cards.
119 micctrl -S
120
121 # Wait for the cards to go offline
122 for f in $sysfs/*
123 do
124 while [ "`cat $f/state`" != "offline" ]
125 do
126 sleep 1
127 echo -e "Waiting for "`basename $f`" to go offline"
128 done
129 done
130
131 # Display the status of the cards
132 micctrl -s
133
134 # Kill MPSSD now
135 echo -n $"Killing MPSSD"
136 killall -9 mpssd 2>/dev/null
137 RETVAL=$?
138 [ $RETVAL -ne 0 ] && failure || success
139 echo
140 return $RETVAL
141}
142
143restart()
144{
145 stop
146 sleep 5
147 start
148}
149
150status()
151{
152 micctrl -s
153 if [ "`ps -e | awk '{print $4}' | grep mpssd | head -n 1`" = "mpssd" ]; then
154 echo "mpssd is running"
155 else
156 echo "mpssd is stopped"
157 fi
158 return 0
159}
160
161unload()
162{
163 if [ ! -d "$sysfs" ]; then
164 echo -n $"No MIC_HOST Module: "
165 success
166 echo
167 return
168 fi
169
170 stop
171
172 sleep 5
173 echo -n $"Removing MIC_HOST Module: "
174 modprobe -r mic_host
175 RETVAL=$?
176 [ $RETVAL -ne 0 ] && failure || success
177 echo
178 return $RETVAL
179}
180
181case $1 in
182 start)
183 start
184 ;;
185 stop)
186 stop
187 ;;
188 restart)
189 restart
190 ;;
191 status)
192 status
193 ;;
194 unload)
195 unload
196 ;;
197 *)
198 echo $"Usage: $0 {start|stop|restart|status|unload}"
199 exit 2
200esac
201
202exit $?
diff --git a/Documentation/mic/mpssd/mpssd.c b/Documentation/mic/mpssd/mpssd.c
new file mode 100644
index 000000000000..0c980ad40b17
--- /dev/null
+++ b/Documentation/mic/mpssd/mpssd.c
@@ -0,0 +1,1721 @@
1/*
2 * Intel MIC Platform Software Stack (MPSS)
3 *
4 * Copyright(c) 2013 Intel Corporation.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License, version 2, as
8 * published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License for more details.
14 *
15 * The full GNU General Public License is included in this distribution in
16 * the file called "COPYING".
17 *
18 * Intel MIC User Space Tools.
19 */
20
21#define _GNU_SOURCE
22
23#include <stdlib.h>
24#include <fcntl.h>
25#include <getopt.h>
26#include <assert.h>
27#include <unistd.h>
28#include <stdbool.h>
29#include <signal.h>
30#include <poll.h>
31#include <features.h>
32#include <sys/types.h>
33#include <sys/stat.h>
34#include <sys/mman.h>
35#include <sys/socket.h>
36#include <linux/virtio_ring.h>
37#include <linux/virtio_net.h>
38#include <linux/virtio_console.h>
39#include <linux/virtio_blk.h>
40#include <linux/version.h>
41#include "mpssd.h"
42#include <linux/mic_ioctl.h>
43#include <linux/mic_common.h>
44
45static void init_mic(struct mic_info *mic);
46
47static FILE *logfp;
48static struct mic_info mic_list;
49
50#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
51
52#define min_t(type, x, y) ({ \
53 type __min1 = (x); \
54 type __min2 = (y); \
55 __min1 < __min2 ? __min1 : __min2; })
56
57/* align addr on a size boundary - adjust address up/down if needed */
58#define _ALIGN_DOWN(addr, size) ((addr)&(~((size)-1)))
59#define _ALIGN_UP(addr, size) _ALIGN_DOWN(addr + size - 1, size)
60
61/* align addr on a size boundary - adjust address up if needed */
62#define _ALIGN(addr, size) _ALIGN_UP(addr, size)
63
64/* to align the pointer to the (next) page boundary */
65#define PAGE_ALIGN(addr) _ALIGN(addr, PAGE_SIZE)
66
67#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
68
69#define GSO_ENABLED 1
70#define MAX_GSO_SIZE (64 * 1024)
71#define ETH_H_LEN 14
72#define MAX_NET_PKT_SIZE (_ALIGN_UP(MAX_GSO_SIZE + ETH_H_LEN, 64))
73#define MIC_DEVICE_PAGE_END 0x1000
74
75#ifndef VIRTIO_NET_HDR_F_DATA_VALID
76#define VIRTIO_NET_HDR_F_DATA_VALID 2 /* Csum is valid */
77#endif
78
79static struct {
80 struct mic_device_desc dd;
81 struct mic_vqconfig vqconfig[2];
82 __u32 host_features, guest_acknowledgements;
83 struct virtio_console_config cons_config;
84} virtcons_dev_page = {
85 .dd = {
86 .type = VIRTIO_ID_CONSOLE,
87 .num_vq = ARRAY_SIZE(virtcons_dev_page.vqconfig),
88 .feature_len = sizeof(virtcons_dev_page.host_features),
89 .config_len = sizeof(virtcons_dev_page.cons_config),
90 },
91 .vqconfig[0] = {
92 .num = htole16(MIC_VRING_ENTRIES),
93 },
94 .vqconfig[1] = {
95 .num = htole16(MIC_VRING_ENTRIES),
96 },
97};
98
99static struct {
100 struct mic_device_desc dd;
101 struct mic_vqconfig vqconfig[2];
102 __u32 host_features, guest_acknowledgements;
103 struct virtio_net_config net_config;
104} virtnet_dev_page = {
105 .dd = {
106 .type = VIRTIO_ID_NET,
107 .num_vq = ARRAY_SIZE(virtnet_dev_page.vqconfig),
108 .feature_len = sizeof(virtnet_dev_page.host_features),
109 .config_len = sizeof(virtnet_dev_page.net_config),
110 },
111 .vqconfig[0] = {
112 .num = htole16(MIC_VRING_ENTRIES),
113 },
114 .vqconfig[1] = {
115 .num = htole16(MIC_VRING_ENTRIES),
116 },
117#if GSO_ENABLED
118 .host_features = htole32(
119 1 << VIRTIO_NET_F_CSUM |
120 1 << VIRTIO_NET_F_GSO |
121 1 << VIRTIO_NET_F_GUEST_TSO4 |
122 1 << VIRTIO_NET_F_GUEST_TSO6 |
123 1 << VIRTIO_NET_F_GUEST_ECN |
124 1 << VIRTIO_NET_F_GUEST_UFO),
125#else
126 .host_features = 0,
127#endif
128};
129
130static const char *mic_config_dir = "/etc/sysconfig/mic";
131static const char *virtblk_backend = "VIRTBLK_BACKEND";
132static struct {
133 struct mic_device_desc dd;
134 struct mic_vqconfig vqconfig[1];
135 __u32 host_features, guest_acknowledgements;
136 struct virtio_blk_config blk_config;
137} virtblk_dev_page = {
138 .dd = {
139 .type = VIRTIO_ID_BLOCK,
140 .num_vq = ARRAY_SIZE(virtblk_dev_page.vqconfig),
141 .feature_len = sizeof(virtblk_dev_page.host_features),
142 .config_len = sizeof(virtblk_dev_page.blk_config),
143 },
144 .vqconfig[0] = {
145 .num = htole16(MIC_VRING_ENTRIES),
146 },
147 .host_features =
148 htole32(1<<VIRTIO_BLK_F_SEG_MAX),
149 .blk_config = {
150 .seg_max = htole32(MIC_VRING_ENTRIES - 2),
151 .capacity = htole64(0),
152 }
153};
154
155static char *myname;
156
157static int
158tap_configure(struct mic_info *mic, char *dev)
159{
160 pid_t pid;
161 char *ifargv[7];
162 char ipaddr[IFNAMSIZ];
163 int ret = 0;
164
165 pid = fork();
166 if (pid == 0) {
167 ifargv[0] = "ip";
168 ifargv[1] = "link";
169 ifargv[2] = "set";
170 ifargv[3] = dev;
171 ifargv[4] = "up";
172 ifargv[5] = NULL;
173 mpsslog("Configuring %s\n", dev);
174 ret = execvp("ip", ifargv);
175 if (ret < 0) {
176 mpsslog("%s execvp failed errno %s\n",
177 mic->name, strerror(errno));
178 return ret;
179 }
180 }
181 if (pid < 0) {
182 mpsslog("%s fork failed errno %s\n",
183 mic->name, strerror(errno));
184 return ret;
185 }
186
187 ret = waitpid(pid, NULL, 0);
188 if (ret < 0) {
189 mpsslog("%s waitpid failed errno %s\n",
190 mic->name, strerror(errno));
191 return ret;
192 }
193
194 snprintf(ipaddr, IFNAMSIZ, "172.31.%d.254/24", mic->id);
195
196 pid = fork();
197 if (pid == 0) {
198 ifargv[0] = "ip";
199 ifargv[1] = "addr";
200 ifargv[2] = "add";
201 ifargv[3] = ipaddr;
202 ifargv[4] = "dev";
203 ifargv[5] = dev;
204 ifargv[6] = NULL;
205 mpsslog("Configuring %s ipaddr %s\n", dev, ipaddr);
206 ret = execvp("ip", ifargv);
207 if (ret < 0) {
208 mpsslog("%s execvp failed errno %s\n",
209 mic->name, strerror(errno));
210 return ret;
211 }
212 }
213 if (pid < 0) {
214 mpsslog("%s fork failed errno %s\n",
215 mic->name, strerror(errno));
216 return ret;
217 }
218
219 ret = waitpid(pid, NULL, 0);
220 if (ret < 0) {
221 mpsslog("%s waitpid failed errno %s\n",
222 mic->name, strerror(errno));
223 return ret;
224 }
225 mpsslog("MIC name %s %s %d DONE!\n",
226 mic->name, __func__, __LINE__);
227 return 0;
228}
229
230static int tun_alloc(struct mic_info *mic, char *dev)
231{
232 struct ifreq ifr;
233 int fd, err;
234#if GSO_ENABLED
235 unsigned offload;
236#endif
237 fd = open("/dev/net/tun", O_RDWR);
238 if (fd < 0) {
239 mpsslog("Could not open /dev/net/tun %s\n", strerror(errno));
240 goto done;
241 }
242
243 memset(&ifr, 0, sizeof(ifr));
244
245 ifr.ifr_flags = IFF_TAP | IFF_NO_PI | IFF_VNET_HDR;
246 if (*dev)
247 strncpy(ifr.ifr_name, dev, IFNAMSIZ);
248
249 err = ioctl(fd, TUNSETIFF, (void *)&ifr);
250 if (err < 0) {
251 mpsslog("%s %s %d TUNSETIFF failed %s\n",
252 mic->name, __func__, __LINE__, strerror(errno));
253 close(fd);
254 return err;
255 }
256#if GSO_ENABLED
257 offload = TUN_F_CSUM | TUN_F_TSO4 | TUN_F_TSO6 |
258 TUN_F_TSO_ECN | TUN_F_UFO;
259
260 err = ioctl(fd, TUNSETOFFLOAD, offload);
261 if (err < 0) {
262 mpsslog("%s %s %d TUNSETOFFLOAD failed %s\n",
263 mic->name, __func__, __LINE__, strerror(errno));
264 close(fd);
265 return err;
266 }
267#endif
268 strcpy(dev, ifr.ifr_name);
269 mpsslog("Created TAP %s\n", dev);
270done:
271 return fd;
272}
273
274#define NET_FD_VIRTIO_NET 0
275#define NET_FD_TUN 1
276#define MAX_NET_FD 2
277
278static void set_dp(struct mic_info *mic, int type, void *dp)
279{
280 switch (type) {
281 case VIRTIO_ID_CONSOLE:
282 mic->mic_console.console_dp = dp;
283 return;
284 case VIRTIO_ID_NET:
285 mic->mic_net.net_dp = dp;
286 return;
287 case VIRTIO_ID_BLOCK:
288 mic->mic_virtblk.block_dp = dp;
289 return;
290 }
291 mpsslog("%s %s %d not found\n", mic->name, __func__, type);
292 assert(0);
293}
294
295static void *get_dp(struct mic_info *mic, int type)
296{
297 switch (type) {
298 case VIRTIO_ID_CONSOLE:
299 return mic->mic_console.console_dp;
300 case VIRTIO_ID_NET:
301 return mic->mic_net.net_dp;
302 case VIRTIO_ID_BLOCK:
303 return mic->mic_virtblk.block_dp;
304 }
305 mpsslog("%s %s %d not found\n", mic->name, __func__, type);
306 assert(0);
307 return NULL;
308}
309
310static struct mic_device_desc *get_device_desc(struct mic_info *mic, int type)
311{
312 struct mic_device_desc *d;
313 int i;
314 void *dp = get_dp(mic, type);
315
316 for (i = mic_aligned_size(struct mic_bootparam); i < PAGE_SIZE;
317 i += mic_total_desc_size(d)) {
318 d = dp + i;
319
320 /* End of list */
321 if (d->type == 0)
322 break;
323
324 if (d->type == -1)
325 continue;
326
327 mpsslog("%s %s d-> type %d d %p\n",
328 mic->name, __func__, d->type, d);
329
330 if (d->type == (__u8)type)
331 return d;
332 }
333 mpsslog("%s %s %d not found\n", mic->name, __func__, type);
334 assert(0);
335 return NULL;
336}
337
338/* See comments in vhost.c for explanation of next_desc() */
339static unsigned next_desc(struct vring_desc *desc)
340{
341 unsigned int next;
342
343 if (!(le16toh(desc->flags) & VRING_DESC_F_NEXT))
344 return -1U;
345 next = le16toh(desc->next);
346 return next;
347}
348
349/* Sum up all the IOVEC length */
350static ssize_t
351sum_iovec_len(struct mic_copy_desc *copy)
352{
353 ssize_t sum = 0;
354 int i;
355
356 for (i = 0; i < copy->iovcnt; i++)
357 sum += copy->iov[i].iov_len;
358 return sum;
359}
360
361static inline void verify_out_len(struct mic_info *mic,
362 struct mic_copy_desc *copy)
363{
364 if (copy->out_len != sum_iovec_len(copy)) {
365 mpsslog("%s %s %d BUG copy->out_len 0x%x len 0x%zx\n",
366 mic->name, __func__, __LINE__,
367 copy->out_len, sum_iovec_len(copy));
368 assert(copy->out_len == sum_iovec_len(copy));
369 }
370}
371
372/* Display an iovec */
373static void
374disp_iovec(struct mic_info *mic, struct mic_copy_desc *copy,
375 const char *s, int line)
376{
377 int i;
378
379 for (i = 0; i < copy->iovcnt; i++)
380 mpsslog("%s %s %d copy->iov[%d] addr %p len 0x%zx\n",
381 mic->name, s, line, i,
382 copy->iov[i].iov_base, copy->iov[i].iov_len);
383}
384
385static inline __u16 read_avail_idx(struct mic_vring *vr)
386{
387 return ACCESS_ONCE(vr->info->avail_idx);
388}
389
390static inline void txrx_prepare(int type, bool tx, struct mic_vring *vr,
391 struct mic_copy_desc *copy, ssize_t len)
392{
393 copy->vr_idx = tx ? 0 : 1;
394 copy->update_used = true;
395 if (type == VIRTIO_ID_NET)
396 copy->iov[1].iov_len = len - sizeof(struct virtio_net_hdr);
397 else
398 copy->iov[0].iov_len = len;
399}
400
401/* Central API which triggers the copies */
402static int
403mic_virtio_copy(struct mic_info *mic, int fd,
404 struct mic_vring *vr, struct mic_copy_desc *copy)
405{
406 int ret;
407
408 ret = ioctl(fd, MIC_VIRTIO_COPY_DESC, copy);
409 if (ret) {
410 mpsslog("%s %s %d errno %s ret %d\n",
411 mic->name, __func__, __LINE__,
412 strerror(errno), ret);
413 }
414 return ret;
415}
416
417/*
418 * This initialization routine requires at least one
419 * vring i.e. vr0. vr1 is optional.
420 */
421static void *
422init_vr(struct mic_info *mic, int fd, int type,
423 struct mic_vring *vr0, struct mic_vring *vr1, int num_vq)
424{
425 int vr_size;
426 char *va;
427
428 vr_size = PAGE_ALIGN(vring_size(MIC_VRING_ENTRIES,
429 MIC_VIRTIO_RING_ALIGN) + sizeof(struct _mic_vring_info));
430 va = mmap(NULL, MIC_DEVICE_PAGE_END + vr_size * num_vq,
431 PROT_READ, MAP_SHARED, fd, 0);
432 if (MAP_FAILED == va) {
433 mpsslog("%s %s %d mmap failed errno %s\n",
434 mic->name, __func__, __LINE__,
435 strerror(errno));
436 goto done;
437 }
438 set_dp(mic, type, va);
439 vr0->va = (struct mic_vring *)&va[MIC_DEVICE_PAGE_END];
440 vr0->info = vr0->va +
441 vring_size(MIC_VRING_ENTRIES, MIC_VIRTIO_RING_ALIGN);
442 vring_init(&vr0->vr,
443 MIC_VRING_ENTRIES, vr0->va, MIC_VIRTIO_RING_ALIGN);
444 mpsslog("%s %s vr0 %p vr0->info %p vr_size 0x%x vring 0x%x ",
445 __func__, mic->name, vr0->va, vr0->info, vr_size,
446 vring_size(MIC_VRING_ENTRIES, MIC_VIRTIO_RING_ALIGN));
447 mpsslog("magic 0x%x expected 0x%x\n",
448 vr0->info->magic, MIC_MAGIC + type);
449 assert(vr0->info->magic == MIC_MAGIC + type);
450 if (vr1) {
451 vr1->va = (struct mic_vring *)
452 &va[MIC_DEVICE_PAGE_END + vr_size];
453 vr1->info = vr1->va + vring_size(MIC_VRING_ENTRIES,
454 MIC_VIRTIO_RING_ALIGN);
455 vring_init(&vr1->vr,
456 MIC_VRING_ENTRIES, vr1->va, MIC_VIRTIO_RING_ALIGN);
457 mpsslog("%s %s vr1 %p vr1->info %p vr_size 0x%x vring 0x%x ",
458 __func__, mic->name, vr1->va, vr1->info, vr_size,
459 vring_size(MIC_VRING_ENTRIES, MIC_VIRTIO_RING_ALIGN));
460 mpsslog("magic 0x%x expected 0x%x\n",
461 vr1->info->magic, MIC_MAGIC + type + 1);
462 assert(vr1->info->magic == MIC_MAGIC + type + 1);
463 }
464done:
465 return va;
466}
467
468static void
469wait_for_card_driver(struct mic_info *mic, int fd, int type)
470{
471 struct pollfd pollfd;
472 int err;
473 struct mic_device_desc *desc = get_device_desc(mic, type);
474
475 pollfd.fd = fd;
476 mpsslog("%s %s Waiting .... desc-> type %d status 0x%x\n",
477 mic->name, __func__, type, desc->status);
478 while (1) {
479 pollfd.events = POLLIN;
480 pollfd.revents = 0;
481 err = poll(&pollfd, 1, -1);
482 if (err < 0) {
483 mpsslog("%s %s poll failed %s\n",
484 mic->name, __func__, strerror(errno));
485 continue;
486 }
487
488 if (pollfd.revents) {
489 mpsslog("%s %s Waiting... desc-> type %d status 0x%x\n",
490 mic->name, __func__, type, desc->status);
491 if (desc->status & VIRTIO_CONFIG_S_DRIVER_OK) {
492 mpsslog("%s %s poll.revents %d\n",
493 mic->name, __func__, pollfd.revents);
494 mpsslog("%s %s desc-> type %d status 0x%x\n",
495 mic->name, __func__, type,
496 desc->status);
497 break;
498 }
499 }
500 }
501}
502
503/* Spin till we have some descriptors */
504static void
505spin_for_descriptors(struct mic_info *mic, struct mic_vring *vr)
506{
507 __u16 avail_idx = read_avail_idx(vr);
508
509 while (avail_idx == le16toh(ACCESS_ONCE(vr->vr.avail->idx))) {
510#ifdef DEBUG
511 mpsslog("%s %s waiting for desc avail %d info_avail %d\n",
512 mic->name, __func__,
513 le16toh(vr->vr.avail->idx), vr->info->avail_idx);
514#endif
515 sched_yield();
516 }
517}
518
519static void *
520virtio_net(void *arg)
521{
522 static __u8 vnet_hdr[2][sizeof(struct virtio_net_hdr)];
523 static __u8 vnet_buf[2][MAX_NET_PKT_SIZE] __aligned(64);
524 struct iovec vnet_iov[2][2] = {
525 { { .iov_base = vnet_hdr[0], .iov_len = sizeof(vnet_hdr[0]) },
526 { .iov_base = vnet_buf[0], .iov_len = sizeof(vnet_buf[0]) } },
527 { { .iov_base = vnet_hdr[1], .iov_len = sizeof(vnet_hdr[1]) },
528 { .iov_base = vnet_buf[1], .iov_len = sizeof(vnet_buf[1]) } },
529 };
530 struct iovec *iov0 = vnet_iov[0], *iov1 = vnet_iov[1];
531 struct mic_info *mic = (struct mic_info *)arg;
532 char if_name[IFNAMSIZ];
533 struct pollfd net_poll[MAX_NET_FD];
534 struct mic_vring tx_vr, rx_vr;
535 struct mic_copy_desc copy;
536 struct mic_device_desc *desc;
537 int err;
538
539 snprintf(if_name, IFNAMSIZ, "mic%d", mic->id);
540 mic->mic_net.tap_fd = tun_alloc(mic, if_name);
541 if (mic->mic_net.tap_fd < 0)
542 goto done;
543
544 if (tap_configure(mic, if_name))
545 goto done;
546 mpsslog("MIC name %s id %d\n", mic->name, mic->id);
547
548 net_poll[NET_FD_VIRTIO_NET].fd = mic->mic_net.virtio_net_fd;
549 net_poll[NET_FD_VIRTIO_NET].events = POLLIN;
550 net_poll[NET_FD_TUN].fd = mic->mic_net.tap_fd;
551 net_poll[NET_FD_TUN].events = POLLIN;
552
553 if (MAP_FAILED == init_vr(mic, mic->mic_net.virtio_net_fd,
554 VIRTIO_ID_NET, &tx_vr, &rx_vr,
555 virtnet_dev_page.dd.num_vq)) {
556 mpsslog("%s init_vr failed %s\n",
557 mic->name, strerror(errno));
558 goto done;
559 }
560
561 copy.iovcnt = 2;
562 desc = get_device_desc(mic, VIRTIO_ID_NET);
563
564 while (1) {
565 ssize_t len;
566
567 net_poll[NET_FD_VIRTIO_NET].revents = 0;
568 net_poll[NET_FD_TUN].revents = 0;
569
570 /* Start polling for data from tap and virtio net */
571 err = poll(net_poll, 2, -1);
572 if (err < 0) {
573 mpsslog("%s poll failed %s\n",
574 __func__, strerror(errno));
575 continue;
576 }
577 if (!(desc->status & VIRTIO_CONFIG_S_DRIVER_OK))
578 wait_for_card_driver(mic, mic->mic_net.virtio_net_fd,
579 VIRTIO_ID_NET);
580 /*
581 * Check if there is data to be read from TUN and write to
582 * virtio net fd if there is.
583 */
584 if (net_poll[NET_FD_TUN].revents & POLLIN) {
585 copy.iov = iov0;
586 len = readv(net_poll[NET_FD_TUN].fd,
587 copy.iov, copy.iovcnt);
588 if (len > 0) {
589 struct virtio_net_hdr *hdr
590 = (struct virtio_net_hdr *)vnet_hdr[0];
591
592 /* Disable checksums on the card since we are on
593 a reliable PCIe link */
594 hdr->flags |= VIRTIO_NET_HDR_F_DATA_VALID;
595#ifdef DEBUG
596 mpsslog("%s %s %d hdr->flags 0x%x ", mic->name,
597 __func__, __LINE__, hdr->flags);
598 mpsslog("copy.out_len %d hdr->gso_type 0x%x\n",
599 copy.out_len, hdr->gso_type);
600#endif
601#ifdef DEBUG
602 disp_iovec(mic, copy, __func__, __LINE__);
603 mpsslog("%s %s %d read from tap 0x%lx\n",
604 mic->name, __func__, __LINE__,
605 len);
606#endif
607 spin_for_descriptors(mic, &tx_vr);
608 txrx_prepare(VIRTIO_ID_NET, 1, &tx_vr, &copy,
609 len);
610
611 err = mic_virtio_copy(mic,
612 mic->mic_net.virtio_net_fd, &tx_vr,
613 &copy);
614 if (err < 0) {
615 mpsslog("%s %s %d mic_virtio_copy %s\n",
616 mic->name, __func__, __LINE__,
617 strerror(errno));
618 }
619 if (!err)
620 verify_out_len(mic, &copy);
621#ifdef DEBUG
622 disp_iovec(mic, copy, __func__, __LINE__);
623 mpsslog("%s %s %d wrote to net 0x%lx\n",
624 mic->name, __func__, __LINE__,
625 sum_iovec_len(&copy));
626#endif
627 /* Reinitialize IOV for next run */
628 iov0[1].iov_len = MAX_NET_PKT_SIZE;
629 } else if (len < 0) {
630 disp_iovec(mic, &copy, __func__, __LINE__);
631 mpsslog("%s %s %d read failed %s ", mic->name,
632 __func__, __LINE__, strerror(errno));
633 mpsslog("cnt %d sum %zd\n",
634 copy.iovcnt, sum_iovec_len(&copy));
635 }
636 }
637
638 /*
639 * Check if there is data to be read from virtio net and
640 * write to TUN if there is.
641 */
642 if (net_poll[NET_FD_VIRTIO_NET].revents & POLLIN) {
643 while (rx_vr.info->avail_idx !=
644 le16toh(rx_vr.vr.avail->idx)) {
645 copy.iov = iov1;
646 txrx_prepare(VIRTIO_ID_NET, 0, &rx_vr, &copy,
647 MAX_NET_PKT_SIZE
648 + sizeof(struct virtio_net_hdr));
649
650 err = mic_virtio_copy(mic,
651 mic->mic_net.virtio_net_fd, &rx_vr,
652 &copy);
653 if (!err) {
654#ifdef DEBUG
655 struct virtio_net_hdr *hdr
656 = (struct virtio_net_hdr *)
657 vnet_hdr[1];
658
659 mpsslog("%s %s %d hdr->flags 0x%x, ",
660 mic->name, __func__, __LINE__,
661 hdr->flags);
662 mpsslog("out_len %d gso_type 0x%x\n",
663 copy.out_len,
664 hdr->gso_type);
665#endif
666 /* Set the correct output iov_len */
667 iov1[1].iov_len = copy.out_len -
668 sizeof(struct virtio_net_hdr);
669 verify_out_len(mic, &copy);
670#ifdef DEBUG
671 disp_iovec(mic, copy, __func__,
672 __LINE__);
673 mpsslog("%s %s %d ",
674 mic->name, __func__, __LINE__);
675 mpsslog("read from net 0x%lx\n",
676 sum_iovec_len(copy));
677#endif
678 len = writev(net_poll[NET_FD_TUN].fd,
679 copy.iov, copy.iovcnt);
680 if (len != sum_iovec_len(&copy)) {
681 mpsslog("Tun write failed %s ",
682 strerror(errno));
683 mpsslog("len 0x%zx ", len);
684 mpsslog("read_len 0x%zx\n",
685 sum_iovec_len(&copy));
686 } else {
687#ifdef DEBUG
688 disp_iovec(mic, &copy, __func__,
689 __LINE__);
690 mpsslog("%s %s %d ",
691 mic->name, __func__,
692 __LINE__);
693 mpsslog("wrote to tap 0x%lx\n",
694 len);
695#endif
696 }
697 } else {
698 mpsslog("%s %s %d mic_virtio_copy %s\n",
699 mic->name, __func__, __LINE__,
700 strerror(errno));
701 break;
702 }
703 }
704 }
705 if (net_poll[NET_FD_VIRTIO_NET].revents & POLLERR)
706 mpsslog("%s: %s: POLLERR\n", __func__, mic->name);
707 }
708done:
709 pthread_exit(NULL);
710}
711
712/* virtio_console */
713#define VIRTIO_CONSOLE_FD 0
714#define MONITOR_FD (VIRTIO_CONSOLE_FD + 1)
715#define MAX_CONSOLE_FD (MONITOR_FD + 1) /* must be the last one + 1 */
716#define MAX_BUFFER_SIZE PAGE_SIZE
717
718static void *
719virtio_console(void *arg)
720{
721 static __u8 vcons_buf[2][PAGE_SIZE];
722 struct iovec vcons_iov[2] = {
723 { .iov_base = vcons_buf[0], .iov_len = sizeof(vcons_buf[0]) },
724 { .iov_base = vcons_buf[1], .iov_len = sizeof(vcons_buf[1]) },
725 };
726 struct iovec *iov0 = &vcons_iov[0], *iov1 = &vcons_iov[1];
727 struct mic_info *mic = (struct mic_info *)arg;
728 int err;
729 struct pollfd console_poll[MAX_CONSOLE_FD];
730 int pty_fd;
731 char *pts_name;
732 ssize_t len;
733 struct mic_vring tx_vr, rx_vr;
734 struct mic_copy_desc copy;
735 struct mic_device_desc *desc;
736
737 pty_fd = posix_openpt(O_RDWR);
738 if (pty_fd < 0) {
739 mpsslog("can't open a pseudoterminal master device: %s\n",
740 strerror(errno));
741 goto _return;
742 }
743 pts_name = ptsname(pty_fd);
744 if (pts_name == NULL) {
745 mpsslog("can't get pts name\n");
746 goto _close_pty;
747 }
748 printf("%s console message goes to %s\n", mic->name, pts_name);
749 mpsslog("%s console message goes to %s\n", mic->name, pts_name);
750 err = grantpt(pty_fd);
751 if (err < 0) {
752 mpsslog("can't grant access: %s %s\n",
753 pts_name, strerror(errno));
754 goto _close_pty;
755 }
756 err = unlockpt(pty_fd);
757 if (err < 0) {
758 mpsslog("can't unlock a pseudoterminal: %s %s\n",
759 pts_name, strerror(errno));
760 goto _close_pty;
761 }
762 console_poll[MONITOR_FD].fd = pty_fd;
763 console_poll[MONITOR_FD].events = POLLIN;
764
765 console_poll[VIRTIO_CONSOLE_FD].fd = mic->mic_console.virtio_console_fd;
766 console_poll[VIRTIO_CONSOLE_FD].events = POLLIN;
767
768 if (MAP_FAILED == init_vr(mic, mic->mic_console.virtio_console_fd,
769 VIRTIO_ID_CONSOLE, &tx_vr, &rx_vr,
770 virtcons_dev_page.dd.num_vq)) {
771 mpsslog("%s init_vr failed %s\n",
772 mic->name, strerror(errno));
773 goto _close_pty;
774 }
775
776 copy.iovcnt = 1;
777 desc = get_device_desc(mic, VIRTIO_ID_CONSOLE);
778
779 for (;;) {
780 console_poll[MONITOR_FD].revents = 0;
781 console_poll[VIRTIO_CONSOLE_FD].revents = 0;
782 err = poll(console_poll, MAX_CONSOLE_FD, -1);
783 if (err < 0) {
784 mpsslog("%s %d: poll failed: %s\n", __func__, __LINE__,
785 strerror(errno));
786 continue;
787 }
788 if (!(desc->status & VIRTIO_CONFIG_S_DRIVER_OK))
789 wait_for_card_driver(mic,
790 mic->mic_console.virtio_console_fd,
791 VIRTIO_ID_CONSOLE);
792
793 if (console_poll[MONITOR_FD].revents & POLLIN) {
794 copy.iov = iov0;
795 len = readv(pty_fd, copy.iov, copy.iovcnt);
796 if (len > 0) {
797#ifdef DEBUG
798 disp_iovec(mic, copy, __func__, __LINE__);
799 mpsslog("%s %s %d read from tap 0x%lx\n",
800 mic->name, __func__, __LINE__,
801 len);
802#endif
803 spin_for_descriptors(mic, &tx_vr);
804 txrx_prepare(VIRTIO_ID_CONSOLE, 1, &tx_vr,
805 &copy, len);
806
807 err = mic_virtio_copy(mic,
808 mic->mic_console.virtio_console_fd,
809 &tx_vr, &copy);
810 if (err < 0) {
811 mpsslog("%s %s %d mic_virtio_copy %s\n",
812 mic->name, __func__, __LINE__,
813 strerror(errno));
814 }
815 if (!err)
816 verify_out_len(mic, &copy);
817#ifdef DEBUG
818 disp_iovec(mic, copy, __func__, __LINE__);
819 mpsslog("%s %s %d wrote to net 0x%lx\n",
820 mic->name, __func__, __LINE__,
821 sum_iovec_len(copy));
822#endif
823 /* Reinitialize IOV for next run */
824 iov0->iov_len = PAGE_SIZE;
825 } else if (len < 0) {
826 disp_iovec(mic, &copy, __func__, __LINE__);
827 mpsslog("%s %s %d read failed %s ",
828 mic->name, __func__, __LINE__,
829 strerror(errno));
830 mpsslog("cnt %d sum %zd\n",
831 copy.iovcnt, sum_iovec_len(&copy));
832 }
833 }
834
835 if (console_poll[VIRTIO_CONSOLE_FD].revents & POLLIN) {
836 while (rx_vr.info->avail_idx !=
837 le16toh(rx_vr.vr.avail->idx)) {
838 copy.iov = iov1;
839 txrx_prepare(VIRTIO_ID_CONSOLE, 0, &rx_vr,
840 &copy, PAGE_SIZE);
841
842 err = mic_virtio_copy(mic,
843 mic->mic_console.virtio_console_fd,
844 &rx_vr, &copy);
845 if (!err) {
846 /* Set the correct output iov_len */
847 iov1->iov_len = copy.out_len;
848 verify_out_len(mic, &copy);
849#ifdef DEBUG
850 disp_iovec(mic, copy, __func__,
851 __LINE__);
852 mpsslog("%s %s %d ",
853 mic->name, __func__, __LINE__);
854 mpsslog("read from net 0x%lx\n",
855 sum_iovec_len(copy));
856#endif
857 len = writev(pty_fd,
858 copy.iov, copy.iovcnt);
859 if (len != sum_iovec_len(&copy)) {
860 mpsslog("Tun write failed %s ",
861 strerror(errno));
862 mpsslog("len 0x%zx ", len);
863 mpsslog("read_len 0x%zx\n",
864 sum_iovec_len(&copy));
865 } else {
866#ifdef DEBUG
867 disp_iovec(mic, copy, __func__,
868 __LINE__);
869 mpsslog("%s %s %d ",
870 mic->name, __func__,
871 __LINE__);
872 mpsslog("wrote to tap 0x%lx\n",
873 len);
874#endif
875 }
876 } else {
877 mpsslog("%s %s %d mic_virtio_copy %s\n",
878 mic->name, __func__, __LINE__,
879 strerror(errno));
880 break;
881 }
882 }
883 }
884 if (console_poll[NET_FD_VIRTIO_NET].revents & POLLERR)
885 mpsslog("%s: %s: POLLERR\n", __func__, mic->name);
886 }
887_close_pty:
888 close(pty_fd);
889_return:
890 pthread_exit(NULL);
891}
892
893static void
894add_virtio_device(struct mic_info *mic, struct mic_device_desc *dd)
895{
896 char path[PATH_MAX];
897 int fd, err;
898
899 snprintf(path, PATH_MAX, "/dev/mic%d", mic->id);
900 fd = open(path, O_RDWR);
901 if (fd < 0) {
902 mpsslog("Could not open %s %s\n", path, strerror(errno));
903 return;
904 }
905
906 err = ioctl(fd, MIC_VIRTIO_ADD_DEVICE, dd);
907 if (err < 0) {
908 mpsslog("Could not add %d %s\n", dd->type, strerror(errno));
909 close(fd);
910 return;
911 }
912 switch (dd->type) {
913 case VIRTIO_ID_NET:
914 mic->mic_net.virtio_net_fd = fd;
915 mpsslog("Added VIRTIO_ID_NET for %s\n", mic->name);
916 break;
917 case VIRTIO_ID_CONSOLE:
918 mic->mic_console.virtio_console_fd = fd;
919 mpsslog("Added VIRTIO_ID_CONSOLE for %s\n", mic->name);
920 break;
921 case VIRTIO_ID_BLOCK:
922 mic->mic_virtblk.virtio_block_fd = fd;
923 mpsslog("Added VIRTIO_ID_BLOCK for %s\n", mic->name);
924 break;
925 }
926}
927
928static bool
929set_backend_file(struct mic_info *mic)
930{
931 FILE *config;
932 char buff[PATH_MAX], *line, *evv, *p;
933
934 snprintf(buff, PATH_MAX, "%s/mpssd%03d.conf", mic_config_dir, mic->id);
935 config = fopen(buff, "r");
936 if (config == NULL)
937 return false;
938 do { /* look for "virtblk_backend=XXXX" */
939 line = fgets(buff, PATH_MAX, config);
940 if (line == NULL)
941 break;
942 if (*line == '#')
943 continue;
944 p = strchr(line, '\n');
945 if (p)
946 *p = '\0';
947 } while (strncmp(line, virtblk_backend, strlen(virtblk_backend)) != 0);
948 fclose(config);
949 if (line == NULL)
950 return false;
951 evv = strchr(line, '=');
952 if (evv == NULL)
953 return false;
954 mic->mic_virtblk.backend_file = malloc(strlen(evv) + 1);
955 if (mic->mic_virtblk.backend_file == NULL) {
956 mpsslog("%s %d can't allocate memory\n", mic->name, mic->id);
957 return false;
958 }
959 strcpy(mic->mic_virtblk.backend_file, evv + 1);
960 return true;
961}
962
963#define SECTOR_SIZE 512
964static bool
965set_backend_size(struct mic_info *mic)
966{
967 mic->mic_virtblk.backend_size = lseek(mic->mic_virtblk.backend, 0,
968 SEEK_END);
969 if (mic->mic_virtblk.backend_size < 0) {
970 mpsslog("%s: can't seek: %s\n",
971 mic->name, mic->mic_virtblk.backend_file);
972 return false;
973 }
974 virtblk_dev_page.blk_config.capacity =
975 mic->mic_virtblk.backend_size / SECTOR_SIZE;
976 if ((mic->mic_virtblk.backend_size % SECTOR_SIZE) != 0)
977 virtblk_dev_page.blk_config.capacity++;
978
979 virtblk_dev_page.blk_config.capacity =
980 htole64(virtblk_dev_page.blk_config.capacity);
981
982 return true;
983}
984
985static bool
986open_backend(struct mic_info *mic)
987{
988 if (!set_backend_file(mic))
989 goto _error_exit;
990 mic->mic_virtblk.backend = open(mic->mic_virtblk.backend_file, O_RDWR);
991 if (mic->mic_virtblk.backend < 0) {
992 mpsslog("%s: can't open: %s\n", mic->name,
993 mic->mic_virtblk.backend_file);
994 goto _error_free;
995 }
996 if (!set_backend_size(mic))
997 goto _error_close;
998 mic->mic_virtblk.backend_addr = mmap(NULL,
999 mic->mic_virtblk.backend_size,
1000 PROT_READ|PROT_WRITE, MAP_SHARED,
1001 mic->mic_virtblk.backend, 0L);
1002 if (mic->mic_virtblk.backend_addr == MAP_FAILED) {
1003 mpsslog("%s: can't map: %s %s\n",
1004 mic->name, mic->mic_virtblk.backend_file,
1005 strerror(errno));
1006 goto _error_close;
1007 }
1008 return true;
1009
1010 _error_close:
1011 close(mic->mic_virtblk.backend);
1012 _error_free:
1013 free(mic->mic_virtblk.backend_file);
1014 _error_exit:
1015 return false;
1016}
1017
1018static void
1019close_backend(struct mic_info *mic)
1020{
1021 munmap(mic->mic_virtblk.backend_addr, mic->mic_virtblk.backend_size);
1022 close(mic->mic_virtblk.backend);
1023 free(mic->mic_virtblk.backend_file);
1024}
1025
1026static bool
1027start_virtblk(struct mic_info *mic, struct mic_vring *vring)
1028{
1029 if (((unsigned long)&virtblk_dev_page.blk_config % 8) != 0) {
1030 mpsslog("%s: blk_config is not 8 byte aligned.\n",
1031 mic->name);
1032 return false;
1033 }
1034 add_virtio_device(mic, &virtblk_dev_page.dd);
1035 if (MAP_FAILED == init_vr(mic, mic->mic_virtblk.virtio_block_fd,
1036 VIRTIO_ID_BLOCK, vring, NULL,
1037 virtblk_dev_page.dd.num_vq)) {
1038 mpsslog("%s init_vr failed %s\n",
1039 mic->name, strerror(errno));
1040 return false;
1041 }
1042 return true;
1043}
1044
1045static void
1046stop_virtblk(struct mic_info *mic)
1047{
1048 int vr_size, ret;
1049
1050 vr_size = PAGE_ALIGN(vring_size(MIC_VRING_ENTRIES,
1051 MIC_VIRTIO_RING_ALIGN) + sizeof(struct _mic_vring_info));
1052 ret = munmap(mic->mic_virtblk.block_dp,
1053 MIC_DEVICE_PAGE_END + vr_size * virtblk_dev_page.dd.num_vq);
1054 if (ret < 0)
1055 mpsslog("%s munmap errno %d\n", mic->name, errno);
1056 close(mic->mic_virtblk.virtio_block_fd);
1057}
1058
1059static __u8
1060header_error_check(struct vring_desc *desc)
1061{
1062 if (le32toh(desc->len) != sizeof(struct virtio_blk_outhdr)) {
1063 mpsslog("%s() %d: length is not sizeof(virtio_blk_outhd)\n",
1064 __func__, __LINE__);
1065 return -EIO;
1066 }
1067 if (!(le16toh(desc->flags) & VRING_DESC_F_NEXT)) {
1068 mpsslog("%s() %d: alone\n",
1069 __func__, __LINE__);
1070 return -EIO;
1071 }
1072 if (le16toh(desc->flags) & VRING_DESC_F_WRITE) {
1073 mpsslog("%s() %d: not read\n",
1074 __func__, __LINE__);
1075 return -EIO;
1076 }
1077 return 0;
1078}
1079
1080static int
1081read_header(int fd, struct virtio_blk_outhdr *hdr, __u32 desc_idx)
1082{
1083 struct iovec iovec;
1084 struct mic_copy_desc copy;
1085
1086 iovec.iov_len = sizeof(*hdr);
1087 iovec.iov_base = hdr;
1088 copy.iov = &iovec;
1089 copy.iovcnt = 1;
1090 copy.vr_idx = 0; /* only one vring on virtio_block */
1091 copy.update_used = false; /* do not update used index */
1092 return ioctl(fd, MIC_VIRTIO_COPY_DESC, &copy);
1093}
1094
1095static int
1096transfer_blocks(int fd, struct iovec *iovec, __u32 iovcnt)
1097{
1098 struct mic_copy_desc copy;
1099
1100 copy.iov = iovec;
1101 copy.iovcnt = iovcnt;
1102 copy.vr_idx = 0; /* only one vring on virtio_block */
1103 copy.update_used = false; /* do not update used index */
1104 return ioctl(fd, MIC_VIRTIO_COPY_DESC, &copy);
1105}
1106
1107static __u8
1108status_error_check(struct vring_desc *desc)
1109{
1110 if (le32toh(desc->len) != sizeof(__u8)) {
1111 mpsslog("%s() %d: length is not sizeof(status)\n",
1112 __func__, __LINE__);
1113 return -EIO;
1114 }
1115 return 0;
1116}
1117
1118static int
1119write_status(int fd, __u8 *status)
1120{
1121 struct iovec iovec;
1122 struct mic_copy_desc copy;
1123
1124 iovec.iov_base = status;
1125 iovec.iov_len = sizeof(*status);
1126 copy.iov = &iovec;
1127 copy.iovcnt = 1;
1128 copy.vr_idx = 0; /* only one vring on virtio_block */
1129 copy.update_used = true; /* Update used index */
1130 return ioctl(fd, MIC_VIRTIO_COPY_DESC, &copy);
1131}
1132
1133static void *
1134virtio_block(void *arg)
1135{
1136 struct mic_info *mic = (struct mic_info *)arg;
1137 int ret;
1138 struct pollfd block_poll;
1139 struct mic_vring vring;
1140 __u16 avail_idx;
1141 __u32 desc_idx;
1142 struct vring_desc *desc;
1143 struct iovec *iovec, *piov;
1144 __u8 status;
1145 __u32 buffer_desc_idx;
1146 struct virtio_blk_outhdr hdr;
1147 void *fos;
1148
1149 for (;;) { /* forever */
1150 if (!open_backend(mic)) { /* No virtblk */
1151 for (mic->mic_virtblk.signaled = 0;
1152 !mic->mic_virtblk.signaled;)
1153 sleep(1);
1154 continue;
1155 }
1156
1157 /* backend file is specified. */
1158 if (!start_virtblk(mic, &vring))
1159 goto _close_backend;
1160 iovec = malloc(sizeof(*iovec) *
1161 le32toh(virtblk_dev_page.blk_config.seg_max));
1162 if (!iovec) {
1163 mpsslog("%s: can't alloc iovec: %s\n",
1164 mic->name, strerror(ENOMEM));
1165 goto _stop_virtblk;
1166 }
1167
1168 block_poll.fd = mic->mic_virtblk.virtio_block_fd;
1169 block_poll.events = POLLIN;
1170 for (mic->mic_virtblk.signaled = 0;
1171 !mic->mic_virtblk.signaled;) {
1172 block_poll.revents = 0;
1173 /* timeout in 1 sec to see signaled */
1174 ret = poll(&block_poll, 1, 1000);
1175 if (ret < 0) {
1176 mpsslog("%s %d: poll failed: %s\n",
1177 __func__, __LINE__,
1178 strerror(errno));
1179 continue;
1180 }
1181
1182 if (!(block_poll.revents & POLLIN)) {
1183#ifdef DEBUG
1184 mpsslog("%s %d: block_poll.revents=0x%x\n",
1185 __func__, __LINE__, block_poll.revents);
1186#endif
1187 continue;
1188 }
1189
1190 /* POLLIN */
1191 while (vring.info->avail_idx !=
1192 le16toh(vring.vr.avail->idx)) {
1193 /* read header element */
1194 avail_idx =
1195 vring.info->avail_idx &
1196 (vring.vr.num - 1);
1197 desc_idx = le16toh(
1198 vring.vr.avail->ring[avail_idx]);
1199 desc = &vring.vr.desc[desc_idx];
1200#ifdef DEBUG
1201 mpsslog("%s() %d: avail_idx=%d ",
1202 __func__, __LINE__,
1203 vring.info->avail_idx);
1204 mpsslog("vring.vr.num=%d desc=%p\n",
1205 vring.vr.num, desc);
1206#endif
1207 status = header_error_check(desc);
1208 ret = read_header(
1209 mic->mic_virtblk.virtio_block_fd,
1210 &hdr, desc_idx);
1211 if (ret < 0) {
1212 mpsslog("%s() %d %s: ret=%d %s\n",
1213 __func__, __LINE__,
1214 mic->name, ret,
1215 strerror(errno));
1216 break;
1217 }
1218 /* buffer element */
1219 piov = iovec;
1220 status = 0;
1221 fos = mic->mic_virtblk.backend_addr +
1222 (hdr.sector * SECTOR_SIZE);
1223 buffer_desc_idx = next_desc(desc);
1224 desc_idx = buffer_desc_idx;
1225 for (desc = &vring.vr.desc[buffer_desc_idx];
1226 desc->flags & VRING_DESC_F_NEXT;
1227 desc_idx = next_desc(desc),
1228 desc = &vring.vr.desc[desc_idx]) {
1229 piov->iov_len = desc->len;
1230 piov->iov_base = fos;
1231 piov++;
1232 fos += desc->len;
1233 }
1234 /* Returning NULLs for VIRTIO_BLK_T_GET_ID. */
1235 if (hdr.type & ~(VIRTIO_BLK_T_OUT |
1236 VIRTIO_BLK_T_GET_ID)) {
1237 /*
1238 VIRTIO_BLK_T_IN - does not do
1239 anything. Probably for documenting.
1240 VIRTIO_BLK_T_SCSI_CMD - for
1241 virtio_scsi.
1242 VIRTIO_BLK_T_FLUSH - turned off in
1243 config space.
1244 VIRTIO_BLK_T_BARRIER - defined but not
1245 used in anywhere.
1246 */
1247 mpsslog("%s() %d: type %x ",
1248 __func__, __LINE__,
1249 hdr.type);
1250 mpsslog("is not supported\n");
1251 status = -ENOTSUP;
1252
1253 } else {
1254 ret = transfer_blocks(
1255 mic->mic_virtblk.virtio_block_fd,
1256 iovec,
1257 piov - iovec);
1258 if (ret < 0 &&
1259 status != 0)
1260 status = ret;
1261 }
1262 /* write status and update used pointer */
1263 if (status != 0)
1264 status = status_error_check(desc);
1265 ret = write_status(
1266 mic->mic_virtblk.virtio_block_fd,
1267 &status);
1268#ifdef DEBUG
1269 mpsslog("%s() %d: write status=%d on desc=%p\n",
1270 __func__, __LINE__,
1271 status, desc);
1272#endif
1273 }
1274 }
1275 free(iovec);
1276_stop_virtblk:
1277 stop_virtblk(mic);
1278_close_backend:
1279 close_backend(mic);
1280 } /* forever */
1281
1282 pthread_exit(NULL);
1283}
1284
1285static void
1286reset(struct mic_info *mic)
1287{
1288#define RESET_TIMEOUT 120
1289 int i = RESET_TIMEOUT;
1290 setsysfs(mic->name, "state", "reset");
1291 while (i) {
1292 char *state;
1293 state = readsysfs(mic->name, "state");
1294 if (!state)
1295 goto retry;
1296 mpsslog("%s: %s %d state %s\n",
1297 mic->name, __func__, __LINE__, state);
1298
1299 /*
1300 * If the shutdown was initiated by OSPM, the state stays
1301 * in "suspended" which is also a valid condition for reset.
1302 */
1303 if ((!strcmp(state, "offline")) ||
1304 (!strcmp(state, "suspended"))) {
1305 free(state);
1306 break;
1307 }
1308 free(state);
1309retry:
1310 sleep(1);
1311 i--;
1312 }
1313}
1314
1315static int
1316get_mic_shutdown_status(struct mic_info *mic, char *shutdown_status)
1317{
1318 if (!strcmp(shutdown_status, "nop"))
1319 return MIC_NOP;
1320 if (!strcmp(shutdown_status, "crashed"))
1321 return MIC_CRASHED;
1322 if (!strcmp(shutdown_status, "halted"))
1323 return MIC_HALTED;
1324 if (!strcmp(shutdown_status, "poweroff"))
1325 return MIC_POWER_OFF;
1326 if (!strcmp(shutdown_status, "restart"))
1327 return MIC_RESTART;
1328 mpsslog("%s: BUG invalid status %s\n", mic->name, shutdown_status);
1329 /* Invalid state */
1330 assert(0);
1331};
1332
1333static int get_mic_state(struct mic_info *mic, char *state)
1334{
1335 if (!strcmp(state, "offline"))
1336 return MIC_OFFLINE;
1337 if (!strcmp(state, "online"))
1338 return MIC_ONLINE;
1339 if (!strcmp(state, "shutting_down"))
1340 return MIC_SHUTTING_DOWN;
1341 if (!strcmp(state, "reset_failed"))
1342 return MIC_RESET_FAILED;
1343 if (!strcmp(state, "suspending"))
1344 return MIC_SUSPENDING;
1345 if (!strcmp(state, "suspended"))
1346 return MIC_SUSPENDED;
1347 mpsslog("%s: BUG invalid state %s\n", mic->name, state);
1348 /* Invalid state */
1349 assert(0);
1350};
1351
1352static void mic_handle_shutdown(struct mic_info *mic)
1353{
1354#define SHUTDOWN_TIMEOUT 60
1355 int i = SHUTDOWN_TIMEOUT, ret, stat = 0;
1356 char *shutdown_status;
1357 while (i) {
1358 shutdown_status = readsysfs(mic->name, "shutdown_status");
1359 if (!shutdown_status)
1360 continue;
1361 mpsslog("%s: %s %d shutdown_status %s\n",
1362 mic->name, __func__, __LINE__, shutdown_status);
1363 switch (get_mic_shutdown_status(mic, shutdown_status)) {
1364 case MIC_RESTART:
1365 mic->restart = 1;
1366 case MIC_HALTED:
1367 case MIC_POWER_OFF:
1368 case MIC_CRASHED:
1369 free(shutdown_status);
1370 goto reset;
1371 default:
1372 break;
1373 }
1374 free(shutdown_status);
1375 sleep(1);
1376 i--;
1377 }
1378reset:
1379 ret = kill(mic->pid, SIGTERM);
1380 mpsslog("%s: %s %d kill pid %d ret %d\n",
1381 mic->name, __func__, __LINE__,
1382 mic->pid, ret);
1383 if (!ret) {
1384 ret = waitpid(mic->pid, &stat,
1385 WIFSIGNALED(stat));
1386 mpsslog("%s: %s %d waitpid ret %d pid %d\n",
1387 mic->name, __func__, __LINE__,
1388 ret, mic->pid);
1389 }
1390 if (ret == mic->pid)
1391 reset(mic);
1392}
1393
1394static void *
1395mic_config(void *arg)
1396{
1397 struct mic_info *mic = (struct mic_info *)arg;
1398 char *state = NULL;
1399 char pathname[PATH_MAX];
1400 int fd, ret;
1401 struct pollfd ufds[1];
1402 char value[4096];
1403
1404 snprintf(pathname, PATH_MAX - 1, "%s/%s/%s",
1405 MICSYSFSDIR, mic->name, "state");
1406
1407 fd = open(pathname, O_RDONLY);
1408 if (fd < 0) {
1409 mpsslog("%s: opening file %s failed %s\n",
1410 mic->name, pathname, strerror(errno));
1411 goto error;
1412 }
1413
1414 do {
1415 ret = read(fd, value, sizeof(value));
1416 if (ret < 0) {
1417 mpsslog("%s: Failed to read sysfs entry '%s': %s\n",
1418 mic->name, pathname, strerror(errno));
1419 goto close_error1;
1420 }
1421retry:
1422 state = readsysfs(mic->name, "state");
1423 if (!state)
1424 goto retry;
1425 mpsslog("%s: %s %d state %s\n",
1426 mic->name, __func__, __LINE__, state);
1427 switch (get_mic_state(mic, state)) {
1428 case MIC_SHUTTING_DOWN:
1429 mic_handle_shutdown(mic);
1430 goto close_error;
1431 case MIC_SUSPENDING:
1432 mic->boot_on_resume = 1;
1433 setsysfs(mic->name, "state", "suspend");
1434 mic_handle_shutdown(mic);
1435 goto close_error;
1436 case MIC_OFFLINE:
1437 if (mic->boot_on_resume) {
1438 setsysfs(mic->name, "state", "boot");
1439 mic->boot_on_resume = 0;
1440 }
1441 break;
1442 default:
1443 break;
1444 }
1445 free(state);
1446
1447 ufds[0].fd = fd;
1448 ufds[0].events = POLLERR | POLLPRI;
1449 ret = poll(ufds, 1, -1);
1450 if (ret < 0) {
1451 mpsslog("%s: poll failed %s\n",
1452 mic->name, strerror(errno));
1453 goto close_error1;
1454 }
1455 } while (1);
1456close_error:
1457 free(state);
1458close_error1:
1459 close(fd);
1460error:
1461 init_mic(mic);
1462 pthread_exit(NULL);
1463}
1464
1465static void
1466set_cmdline(struct mic_info *mic)
1467{
1468 char buffer[PATH_MAX];
1469 int len;
1470
1471 len = snprintf(buffer, PATH_MAX,
1472 "clocksource=tsc highres=off nohz=off ");
1473 len += snprintf(buffer + len, PATH_MAX,
1474 "cpufreq_on;corec6_off;pc3_off;pc6_off ");
1475 len += snprintf(buffer + len, PATH_MAX,
1476 "ifcfg=static;address,172.31.%d.1;netmask,255.255.255.0",
1477 mic->id);
1478
1479 setsysfs(mic->name, "cmdline", buffer);
1480 mpsslog("%s: Command line: \"%s\"\n", mic->name, buffer);
1481 snprintf(buffer, PATH_MAX, "172.31.%d.1", mic->id);
1482 mpsslog("%s: IPADDR: \"%s\"\n", mic->name, buffer);
1483}
1484
1485static void
1486set_log_buf_info(struct mic_info *mic)
1487{
1488 int fd;
1489 off_t len;
1490 char system_map[] = "/lib/firmware/mic/System.map";
1491 char *map, *temp, log_buf[17] = {'\0'};
1492
1493 fd = open(system_map, O_RDONLY);
1494 if (fd < 0) {
1495 mpsslog("%s: Opening System.map failed: %d\n",
1496 mic->name, errno);
1497 return;
1498 }
1499 len = lseek(fd, 0, SEEK_END);
1500 if (len < 0) {
1501 mpsslog("%s: Reading System.map size failed: %d\n",
1502 mic->name, errno);
1503 close(fd);
1504 return;
1505 }
1506 map = mmap(NULL, len, PROT_READ, MAP_PRIVATE, fd, 0);
1507 if (map == MAP_FAILED) {
1508 mpsslog("%s: mmap of System.map failed: %d\n",
1509 mic->name, errno);
1510 close(fd);
1511 return;
1512 }
1513 temp = strstr(map, "__log_buf");
1514 if (!temp) {
1515 mpsslog("%s: __log_buf not found: %d\n", mic->name, errno);
1516 munmap(map, len);
1517 close(fd);
1518 return;
1519 }
1520 strncpy(log_buf, temp - 19, 16);
1521 setsysfs(mic->name, "log_buf_addr", log_buf);
1522 mpsslog("%s: log_buf_addr: %s\n", mic->name, log_buf);
1523 temp = strstr(map, "log_buf_len");
1524 if (!temp) {
1525 mpsslog("%s: log_buf_len not found: %d\n", mic->name, errno);
1526 munmap(map, len);
1527 close(fd);
1528 return;
1529 }
1530 strncpy(log_buf, temp - 19, 16);
1531 setsysfs(mic->name, "log_buf_len", log_buf);
1532 mpsslog("%s: log_buf_len: %s\n", mic->name, log_buf);
1533 munmap(map, len);
1534 close(fd);
1535}
1536
1537static void init_mic(struct mic_info *mic);
1538
1539static void
1540change_virtblk_backend(int x, siginfo_t *siginfo, void *p)
1541{
1542 struct mic_info *mic;
1543
1544 for (mic = mic_list.next; mic != NULL; mic = mic->next)
1545 mic->mic_virtblk.signaled = 1/* true */;
1546}
1547
1548static void
1549init_mic(struct mic_info *mic)
1550{
1551 struct sigaction ignore = {
1552 .sa_flags = 0,
1553 .sa_handler = SIG_IGN
1554 };
1555 struct sigaction act = {
1556 .sa_flags = SA_SIGINFO,
1557 .sa_sigaction = change_virtblk_backend,
1558 };
1559 char buffer[PATH_MAX];
1560 int err;
1561
1562 /*
1563 * Currently, one virtio block device is supported for each MIC card
1564 * at a time. Any user (or test) can send a SIGUSR1 to the MIC daemon.
1565 * The signal informs the virtio block backend about a change in the
1566 * configuration file which specifies the virtio backend file name on
1567 * the host. Virtio block backend then re-reads the configuration file
1568 * and switches to the new block device. This signalling mechanism may
1569 * not be required once multiple virtio block devices are supported by
1570 * the MIC daemon.
1571 */
1572 sigaction(SIGUSR1, &ignore, NULL);
1573
1574 mic->pid = fork();
1575 switch (mic->pid) {
1576 case 0:
1577 set_log_buf_info(mic);
1578 set_cmdline(mic);
1579 add_virtio_device(mic, &virtcons_dev_page.dd);
1580 add_virtio_device(mic, &virtnet_dev_page.dd);
1581 err = pthread_create(&mic->mic_console.console_thread, NULL,
1582 virtio_console, mic);
1583 if (err)
1584 mpsslog("%s virtcons pthread_create failed %s\n",
1585 mic->name, strerror(err));
1586 err = pthread_create(&mic->mic_net.net_thread, NULL,
1587 virtio_net, mic);
1588 if (err)
1589 mpsslog("%s virtnet pthread_create failed %s\n",
1590 mic->name, strerror(err));
1591 err = pthread_create(&mic->mic_virtblk.block_thread, NULL,
1592 virtio_block, mic);
1593 if (err)
1594 mpsslog("%s virtblk pthread_create failed %s\n",
1595 mic->name, strerror(err));
1596 sigemptyset(&act.sa_mask);
1597 err = sigaction(SIGUSR1, &act, NULL);
1598 if (err)
1599 mpsslog("%s sigaction SIGUSR1 failed %s\n",
1600 mic->name, strerror(errno));
1601 while (1)
1602 sleep(60);
1603 case -1:
1604 mpsslog("fork failed MIC name %s id %d errno %d\n",
1605 mic->name, mic->id, errno);
1606 break;
1607 default:
1608 if (mic->restart) {
1609 snprintf(buffer, PATH_MAX, "boot");
1610 setsysfs(mic->name, "state", buffer);
1611 mpsslog("%s restarting mic %d\n",
1612 mic->name, mic->restart);
1613 mic->restart = 0;
1614 }
1615 pthread_create(&mic->config_thread, NULL, mic_config, mic);
1616 }
1617}
1618
1619static void
1620start_daemon(void)
1621{
1622 struct mic_info *mic;
1623
1624 for (mic = mic_list.next; mic != NULL; mic = mic->next)
1625 init_mic(mic);
1626
1627 while (1)
1628 sleep(60);
1629}
1630
1631static int
1632init_mic_list(void)
1633{
1634 struct mic_info *mic = &mic_list;
1635 struct dirent *file;
1636 DIR *dp;
1637 int cnt = 0;
1638
1639 dp = opendir(MICSYSFSDIR);
1640 if (!dp)
1641 return 0;
1642
1643 while ((file = readdir(dp)) != NULL) {
1644 if (!strncmp(file->d_name, "mic", 3)) {
1645 mic->next = calloc(1, sizeof(struct mic_info));
1646 if (mic->next) {
1647 mic = mic->next;
1648 mic->id = atoi(&file->d_name[3]);
1649 mic->name = malloc(strlen(file->d_name) + 16);
1650 if (mic->name)
1651 strcpy(mic->name, file->d_name);
1652 mpsslog("MIC name %s id %d\n", mic->name,
1653 mic->id);
1654 cnt++;
1655 }
1656 }
1657 }
1658
1659 closedir(dp);
1660 return cnt;
1661}
1662
1663void
1664mpsslog(char *format, ...)
1665{
1666 va_list args;
1667 char buffer[4096];
1668 char ts[52], *ts1;
1669 time_t t;
1670
1671 if (logfp == NULL)
1672 return;
1673
1674 va_start(args, format);
1675 vsprintf(buffer, format, args);
1676 va_end(args);
1677
1678 time(&t);
1679 ts1 = ctime_r(&t, ts);
1680 ts1[strlen(ts1) - 1] = '\0';
1681 fprintf(logfp, "%s: %s", ts1, buffer);
1682
1683 fflush(logfp);
1684}
1685
1686int
1687main(int argc, char *argv[])
1688{
1689 int cnt;
1690 pid_t pid;
1691
1692 myname = argv[0];
1693
1694 logfp = fopen(LOGFILE_NAME, "a+");
1695 if (!logfp) {
1696 fprintf(stderr, "cannot open logfile '%s'\n", LOGFILE_NAME);
1697 exit(1);
1698 }
1699 pid = fork();
1700 switch (pid) {
1701 case 0:
1702 break;
1703 case -1:
1704 exit(2);
1705 default:
1706 exit(0);
1707 }
1708
1709 mpsslog("MIC Daemon start\n");
1710
1711 cnt = init_mic_list();
1712 if (cnt == 0) {
1713 mpsslog("MIC module not loaded\n");
1714 exit(3);
1715 }
1716 mpsslog("MIC found %d devices\n", cnt);
1717
1718 start_daemon();
1719
1720 exit(0);
1721}
diff --git a/Documentation/mic/mpssd/mpssd.h b/Documentation/mic/mpssd/mpssd.h
new file mode 100644
index 000000000000..f5f18b15d9a0
--- /dev/null
+++ b/Documentation/mic/mpssd/mpssd.h
@@ -0,0 +1,102 @@
1/*
2 * Intel MIC Platform Software Stack (MPSS)
3 *
4 * Copyright(c) 2013 Intel Corporation.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License, version 2, as
8 * published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License for more details.
14 *
15 * The full GNU General Public License is included in this distribution in
16 * the file called "COPYING".
17 *
18 * Intel MIC User Space Tools.
19 */
20#ifndef _MPSSD_H_
21#define _MPSSD_H_
22
23#include <stdio.h>
24#include <stdlib.h>
25#include <string.h>
26#include <fcntl.h>
27#include <unistd.h>
28#include <dirent.h>
29#include <libgen.h>
30#include <pthread.h>
31#include <stdarg.h>
32#include <time.h>
33#include <errno.h>
34#include <sys/dir.h>
35#include <sys/ioctl.h>
36#include <sys/poll.h>
37#include <sys/types.h>
38#include <sys/socket.h>
39#include <sys/stat.h>
40#include <sys/types.h>
41#include <sys/mman.h>
42#include <sys/utsname.h>
43#include <sys/wait.h>
44#include <netinet/in.h>
45#include <arpa/inet.h>
46#include <netdb.h>
47#include <pthread.h>
48#include <signal.h>
49#include <limits.h>
50#include <syslog.h>
51#include <getopt.h>
52#include <net/if.h>
53#include <linux/if_tun.h>
54#include <linux/if_tun.h>
55#include <linux/virtio_ids.h>
56
57#define MICSYSFSDIR "/sys/class/mic"
58#define LOGFILE_NAME "/var/log/mpssd"
59#define PAGE_SIZE 4096
60
61struct mic_console_info {
62 pthread_t console_thread;
63 int virtio_console_fd;
64 void *console_dp;
65};
66
67struct mic_net_info {
68 pthread_t net_thread;
69 int virtio_net_fd;
70 int tap_fd;
71 void *net_dp;
72};
73
74struct mic_virtblk_info {
75 pthread_t block_thread;
76 int virtio_block_fd;
77 void *block_dp;
78 volatile sig_atomic_t signaled;
79 char *backend_file;
80 int backend;
81 void *backend_addr;
82 long backend_size;
83};
84
85struct mic_info {
86 int id;
87 char *name;
88 pthread_t config_thread;
89 pid_t pid;
90 struct mic_console_info mic_console;
91 struct mic_net_info mic_net;
92 struct mic_virtblk_info mic_virtblk;
93 int restart;
94 int boot_on_resume;
95 struct mic_info *next;
96};
97
98__attribute__((format(printf, 1, 2)))
99void mpsslog(char *format, ...);
100char *readsysfs(char *dir, char *entry);
101int setsysfs(char *dir, char *entry, char *value);
102#endif
diff --git a/Documentation/mic/mpssd/sysfs.c b/Documentation/mic/mpssd/sysfs.c
new file mode 100644
index 000000000000..8dd326936083
--- /dev/null
+++ b/Documentation/mic/mpssd/sysfs.c
@@ -0,0 +1,102 @@
1/*
2 * Intel MIC Platform Software Stack (MPSS)
3 *
4 * Copyright(c) 2013 Intel Corporation.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License, version 2, as
8 * published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License for more details.
14 *
15 * The full GNU General Public License is included in this distribution in
16 * the file called "COPYING".
17 *
18 * Intel MIC User Space Tools.
19 */
20
21#include "mpssd.h"
22
23#define PAGE_SIZE 4096
24
25char *
26readsysfs(char *dir, char *entry)
27{
28 char filename[PATH_MAX];
29 char value[PAGE_SIZE];
30 char *string = NULL;
31 int fd;
32 int len;
33
34 if (dir == NULL)
35 snprintf(filename, PATH_MAX, "%s/%s", MICSYSFSDIR, entry);
36 else
37 snprintf(filename, PATH_MAX,
38 "%s/%s/%s", MICSYSFSDIR, dir, entry);
39
40 fd = open(filename, O_RDONLY);
41 if (fd < 0) {
42 mpsslog("Failed to open sysfs entry '%s': %s\n",
43 filename, strerror(errno));
44 return NULL;
45 }
46
47 len = read(fd, value, sizeof(value));
48 if (len < 0) {
49 mpsslog("Failed to read sysfs entry '%s': %s\n",
50 filename, strerror(errno));
51 goto readsys_ret;
52 }
53 if (len == 0)
54 goto readsys_ret;
55
56 value[len - 1] = '\0';
57
58 string = malloc(strlen(value) + 1);
59 if (string)
60 strcpy(string, value);
61
62readsys_ret:
63 close(fd);
64 return string;
65}
66
67int
68setsysfs(char *dir, char *entry, char *value)
69{
70 char filename[PATH_MAX];
71 char *oldvalue;
72 int fd, ret = 0;
73
74 if (dir == NULL)
75 snprintf(filename, PATH_MAX, "%s/%s", MICSYSFSDIR, entry);
76 else
77 snprintf(filename, PATH_MAX, "%s/%s/%s",
78 MICSYSFSDIR, dir, entry);
79
80 oldvalue = readsysfs(dir, entry);
81
82 fd = open(filename, O_RDWR);
83 if (fd < 0) {
84 ret = errno;
85 mpsslog("Failed to open sysfs entry '%s': %s\n",
86 filename, strerror(errno));
87 goto done;
88 }
89
90 if (!oldvalue || strcmp(value, oldvalue)) {
91 if (write(fd, value, strlen(value)) < 0) {
92 ret = errno;
93 mpsslog("Failed to write new sysfs entry '%s': %s\n",
94 filename, strerror(errno));
95 }
96 }
97 close(fd);
98done:
99 if (oldvalue)
100 free(oldvalue);
101 return ret;
102}
diff --git a/Documentation/mtd/nand_ecc.txt b/Documentation/mtd/nand_ecc.txt
index 990efd7a9818..e129b2479ea8 100644
--- a/Documentation/mtd/nand_ecc.txt
+++ b/Documentation/mtd/nand_ecc.txt
@@ -543,7 +543,7 @@ THe code within the for loop was changed to:
543 } 543 }
544 544
545As you can see tmppar is used to accumulate the parity within a for 545As you can see tmppar is used to accumulate the parity within a for
546iteration. In the last 3 statements is is added to par and, if needed, 546iteration. In the last 3 statements is added to par and, if needed,
547to rp12 and rp14. 547to rp12 and rp14.
548 548
549While making the changes I also found that I could exploit that tmppar 549While making the changes I also found that I could exploit that tmppar
diff --git a/Documentation/networking/00-INDEX b/Documentation/networking/00-INDEX
index 32dfbd924121..f11580f8719a 100644
--- a/Documentation/networking/00-INDEX
+++ b/Documentation/networking/00-INDEX
@@ -86,6 +86,8 @@ generic_netlink.txt
86 - info on Generic Netlink 86 - info on Generic Netlink
87gianfar.txt 87gianfar.txt
88 - Gianfar Ethernet Driver. 88 - Gianfar Ethernet Driver.
89i40e.txt
90 - README for the Intel Ethernet Controller XL710 Driver (i40e).
89ieee802154.txt 91ieee802154.txt
90 - Linux IEEE 802.15.4 implementation, API and drivers 92 - Linux IEEE 802.15.4 implementation, API and drivers
91igb.txt 93igb.txt
@@ -124,6 +126,8 @@ multiqueue.txt
124 - HOWTO for multiqueue network device support. 126 - HOWTO for multiqueue network device support.
125netconsole.txt 127netconsole.txt
126 - The network console module netconsole.ko: configuration and notes. 128 - The network console module netconsole.ko: configuration and notes.
129netdev-FAQ.txt
130 - FAQ describing how to submit net changes to netdev mailing list.
127netdev-features.txt 131netdev-features.txt
128 - Network interface features API description. 132 - Network interface features API description.
129netdevices.txt 133netdevices.txt
diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt
index 87bbcfee2e06..9b28e714831a 100644
--- a/Documentation/networking/bonding.txt
+++ b/Documentation/networking/bonding.txt
@@ -1362,6 +1362,12 @@ To add ARP targets:
1362To remove an ARP target: 1362To remove an ARP target:
1363# echo -192.168.0.100 > /sys/class/net/bond0/bonding/arp_ip_target 1363# echo -192.168.0.100 > /sys/class/net/bond0/bonding/arp_ip_target
1364 1364
1365To configure the interval between learning packet transmits:
1366# echo 12 > /sys/class/net/bond0/bonding/lp_interval
1367 NOTE: the lp_inteval is the number of seconds between instances where
1368the bonding driver sends learning packets to each slaves peer switch. The
1369default interval is 1 second.
1370
1365Example Configuration 1371Example Configuration
1366--------------------- 1372---------------------
1367 We begin with the same example that is shown in section 3.3, 1373 We begin with the same example that is shown in section 3.3,
diff --git a/Documentation/networking/dccp.txt b/Documentation/networking/dccp.txt
index d718bc2ff1cf..bf5dbe3ab8c5 100644
--- a/Documentation/networking/dccp.txt
+++ b/Documentation/networking/dccp.txt
@@ -18,8 +18,8 @@ Introduction
18Datagram Congestion Control Protocol (DCCP) is an unreliable, connection 18Datagram Congestion Control Protocol (DCCP) is an unreliable, connection
19oriented protocol designed to solve issues present in UDP and TCP, particularly 19oriented protocol designed to solve issues present in UDP and TCP, particularly
20for real-time and multimedia (streaming) traffic. 20for real-time and multimedia (streaming) traffic.
21It divides into a base protocol (RFC 4340) and plugable congestion control 21It divides into a base protocol (RFC 4340) and pluggable congestion control
22modules called CCIDs. Like plugable TCP congestion control, at least one CCID 22modules called CCIDs. Like pluggable TCP congestion control, at least one CCID
23needs to be enabled in order for the protocol to function properly. In the Linux 23needs to be enabled in order for the protocol to function properly. In the Linux
24implementation, this is the TCP-like CCID2 (RFC 4341). Additional CCIDs, such as 24implementation, this is the TCP-like CCID2 (RFC 4341). Additional CCIDs, such as
25the TCP-friendly CCID3 (RFC 4342), are optional. 25the TCP-friendly CCID3 (RFC 4342), are optional.
diff --git a/Documentation/networking/e100.txt b/Documentation/networking/e100.txt
index fcb6c71cdb69..f862cf3aff34 100644
--- a/Documentation/networking/e100.txt
+++ b/Documentation/networking/e100.txt
@@ -1,7 +1,7 @@
1Linux* Base Driver for the Intel(R) PRO/100 Family of Adapters 1Linux* Base Driver for the Intel(R) PRO/100 Family of Adapters
2============================================================== 2==============================================================
3 3
4November 15, 2005 4March 15, 2011
5 5
6Contents 6Contents
7======== 7========
@@ -103,7 +103,7 @@ Additional Configurations
103 PRO/100 Family of Adapters is e100. 103 PRO/100 Family of Adapters is e100.
104 104
105 As an example, if you install the e100 driver for two PRO/100 adapters 105 As an example, if you install the e100 driver for two PRO/100 adapters
106 (eth0 and eth1), add the following to a configuraton file in /etc/modprobe.d/ 106 (eth0 and eth1), add the following to a configuration file in /etc/modprobe.d/
107 107
108 alias eth0 e100 108 alias eth0 e100
109 alias eth1 e100 109 alias eth1 e100
@@ -122,7 +122,7 @@ Additional Configurations
122 NOTE: This setting is not saved across reboots. 122 NOTE: This setting is not saved across reboots.
123 123
124 124
125 Ethtool 125 ethtool
126 ------- 126 -------
127 127
128 The driver utilizes the ethtool interface for driver configuration and 128 The driver utilizes the ethtool interface for driver configuration and
diff --git a/Documentation/networking/e1000.txt b/Documentation/networking/e1000.txt
index 71ca95855671..437b2099cced 100644
--- a/Documentation/networking/e1000.txt
+++ b/Documentation/networking/e1000.txt
@@ -1,8 +1,8 @@
1Linux* Base Driver for the Intel(R) PRO/1000 Family of Adapters 1Linux* Base Driver for Intel(R) Ethernet Network Connection
2=============================================================== 2===========================================================
3 3
4Intel Gigabit Linux driver. 4Intel Gigabit Linux driver.
5Copyright(c) 1999 - 2010 Intel Corporation. 5Copyright(c) 1999 - 2013 Intel Corporation.
6 6
7Contents 7Contents
8======== 8========
@@ -420,15 +420,15 @@ Additional Configurations
420 - The maximum MTU setting for Jumbo Frames is 16110. This value coincides 420 - The maximum MTU setting for Jumbo Frames is 16110. This value coincides
421 with the maximum Jumbo Frames size of 16128. 421 with the maximum Jumbo Frames size of 16128.
422 422
423 - Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or 423 - Using Jumbo frames at 10 or 100 Mbps is not supported and may result in
424 loss of link. 424 poor performance or loss of link.
425 425
426 - Adapters based on the Intel(R) 82542 and 82573V/E controller do not 426 - Adapters based on the Intel(R) 82542 and 82573V/E controller do not
427 support Jumbo Frames. These correspond to the following product names: 427 support Jumbo Frames. These correspond to the following product names:
428 Intel(R) PRO/1000 Gigabit Server Adapter 428 Intel(R) PRO/1000 Gigabit Server Adapter
429 Intel(R) PRO/1000 PM Network Connection 429 Intel(R) PRO/1000 PM Network Connection
430 430
431 Ethtool 431 ethtool
432 ------- 432 -------
433 The driver utilizes the ethtool interface for driver configuration and 433 The driver utilizes the ethtool interface for driver configuration and
434 diagnostics, as well as displaying statistical information. The ethtool 434 diagnostics, as well as displaying statistical information. The ethtool
diff --git a/Documentation/networking/e1000e.txt b/Documentation/networking/e1000e.txt
index 97b5ba942ebf..ad2d9f38ce14 100644
--- a/Documentation/networking/e1000e.txt
+++ b/Documentation/networking/e1000e.txt
@@ -1,8 +1,8 @@
1Linux* Driver for Intel(R) Network Connection 1Linux* Driver for Intel(R) Ethernet Network Connection
2============================================= 2======================================================
3 3
4Intel Gigabit Linux driver. 4Intel Gigabit Linux driver.
5Copyright(c) 1999 - 2010 Intel Corporation. 5Copyright(c) 1999 - 2013 Intel Corporation.
6 6
7Contents 7Contents
8======== 8========
@@ -259,13 +259,16 @@ Additional Configurations
259 - The maximum MTU setting for Jumbo Frames is 9216. This value coincides 259 - The maximum MTU setting for Jumbo Frames is 9216. This value coincides
260 with the maximum Jumbo Frames size of 9234 bytes. 260 with the maximum Jumbo Frames size of 9234 bytes.
261 261
262 - Using Jumbo Frames at 10 or 100 Mbps is not supported and may result in 262 - Using Jumbo frames at 10 or 100 Mbps is not supported and may result in
263 poor performance or loss of link. 263 poor performance or loss of link.
264 264
265 - Some adapters limit Jumbo Frames sized packets to a maximum of 265 - Some adapters limit Jumbo Frames sized packets to a maximum of
266 4096 bytes and some adapters do not support Jumbo Frames. 266 4096 bytes and some adapters do not support Jumbo Frames.
267 267
268 Ethtool 268 - Jumbo Frames cannot be configured on an 82579-based Network device, if
269 MACSec is enabled on the system.
270
271 ethtool
269 ------- 272 -------
270 The driver utilizes the ethtool interface for driver configuration and 273 The driver utilizes the ethtool interface for driver configuration and
271 diagnostics, as well as displaying statistical information. We 274 diagnostics, as well as displaying statistical information. We
@@ -273,6 +276,9 @@ Additional Configurations
273 276
274 http://ftp.kernel.org/pub/software/network/ethtool/ 277 http://ftp.kernel.org/pub/software/network/ethtool/
275 278
279 NOTE: When validating enable/disable tests on some parts (82578, for example)
280 you need to add a few seconds between tests when working with ethtool.
281
276 Speed and Duplex 282 Speed and Duplex
277 ---------------- 283 ----------------
278 Speed and Duplex are configured through the ethtool* utility. For 284 Speed and Duplex are configured through the ethtool* utility. For
diff --git a/Documentation/networking/i40e.txt b/Documentation/networking/i40e.txt
new file mode 100644
index 000000000000..f737273c6dc1
--- /dev/null
+++ b/Documentation/networking/i40e.txt
@@ -0,0 +1,115 @@
1Linux Base Driver for the Intel(R) Ethernet Controller XL710 Family
2===================================================================
3
4Intel i40e Linux driver.
5Copyright(c) 2013 Intel Corporation.
6
7Contents
8========
9
10- Identifying Your Adapter
11- Additional Configurations
12- Performance Tuning
13- Known Issues
14- Support
15
16
17Identifying Your Adapter
18========================
19
20The driver in this release is compatible with the Intel Ethernet
21Controller XL710 Family.
22
23For more information on how to identify your adapter, go to the Adapter &
24Driver ID Guide at:
25
26 http://support.intel.com/support/network/sb/CS-012904.htm
27
28
29Enabling the driver
30===================
31
32The driver is enabled via the standard kernel configuration system,
33using the make command:
34
35 Make oldconfig/silentoldconfig/menuconfig/etc.
36
37The driver is located in the menu structure at:
38
39 -> Device Drivers
40 -> Network device support (NETDEVICES [=y])
41 -> Ethernet driver support
42 -> Intel devices
43 -> Intel(R) Ethernet Controller XL710 Family
44
45Additional Configurations
46=========================
47
48 Generic Receive Offload (GRO)
49 -----------------------------
50 The driver supports the in-kernel software implementation of GRO. GRO has
51 shown that by coalescing Rx traffic into larger chunks of data, CPU
52 utilization can be significantly reduced when under large Rx load. GRO is
53 an evolution of the previously-used LRO interface. GRO is able to coalesce
54 other protocols besides TCP. It's also safe to use with configurations that
55 are problematic for LRO, namely bridging and iSCSI.
56
57 Ethtool
58 -------
59 The driver utilizes the ethtool interface for driver configuration and
60 diagnostics, as well as displaying statistical information. The latest
61 ethtool version is required for this functionality.
62
63 The latest release of ethtool can be found from
64 https://www.kernel.org/pub/software/network/ethtool
65
66 Data Center Bridging (DCB)
67 --------------------------
68 DCB configuration is not currently supported.
69
70 FCoE
71 ----
72 Fiber Channel over Ethernet (FCoE) hardware offload is not currently
73 supported.
74
75 MAC and VLAN anti-spoofing feature
76 ----------------------------------
77 When a malicious driver attempts to send a spoofed packet, it is dropped by
78 the hardware and not transmitted. An interrupt is sent to the PF driver
79 notifying it of the spoof attempt.
80
81 When a spoofed packet is detected the PF driver will send the following
82 message to the system log (displayed by the "dmesg" command):
83
84 Spoof event(s) detected on VF (n)
85
86 Where n=the VF that attempted to do the spoofing.
87
88
89Performance Tuning
90==================
91
92An excellent article on performance tuning can be found at:
93
94http://www.redhat.com/promo/summit/2008/downloads/pdf/Thursday/Mark_Wagner.pdf
95
96
97Known Issues
98============
99
100
101Support
102=======
103
104For general information, go to the Intel support website at:
105
106 http://support.intel.com
107
108or the Intel Wired Networking project hosted by Sourceforge at:
109
110 http://e1000.sourceforge.net
111
112If an issue is identified with the released source code on the supported
113kernel with a supported adapter, email the specific information related
114to the issue to e1000-devel@lists.sourceforge.net and copy
115netdev@vger.kernel.org.
diff --git a/Documentation/networking/ieee802154.txt b/Documentation/networking/ieee802154.txt
index 09eb57329f11..22bbc7225f8e 100644
--- a/Documentation/networking/ieee802154.txt
+++ b/Documentation/networking/ieee802154.txt
@@ -4,7 +4,7 @@
4 4
5Introduction 5Introduction
6============ 6============
7The IEEE 802.15.4 working group focuses on standartization of bottom 7The IEEE 802.15.4 working group focuses on standardization of bottom
8two layers: Medium Access Control (MAC) and Physical (PHY). And there 8two layers: Medium Access Control (MAC) and Physical (PHY). And there
9are mainly two options available for upper layers: 9are mainly two options available for upper layers:
10 - ZigBee - proprietary protocol from ZigBee Alliance 10 - ZigBee - proprietary protocol from ZigBee Alliance
@@ -66,7 +66,7 @@ net_device, with .type = ARPHRD_IEEE802154. Data is exchanged with socket family
66code via plain sk_buffs. On skb reception skb->cb must contain additional 66code via plain sk_buffs. On skb reception skb->cb must contain additional
67info as described in the struct ieee802154_mac_cb. During packet transmission 67info as described in the struct ieee802154_mac_cb. During packet transmission
68the skb->cb is used to provide additional data to device's header_ops->create 68the skb->cb is used to provide additional data to device's header_ops->create
69function. Be aware, that this data can be overriden later (when socket code 69function. Be aware that this data can be overridden later (when socket code
70submits skb to qdisc), so if you need something from that cb later, you should 70submits 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
diff --git a/Documentation/networking/igb.txt b/Documentation/networking/igb.txt
index 9a2a037194a5..4ebbd659256f 100644
--- a/Documentation/networking/igb.txt
+++ b/Documentation/networking/igb.txt
@@ -1,8 +1,8 @@
1Linux* Base Driver for Intel(R) Network Connection 1Linux* Base Driver for Intel(R) Ethernet Network Connection
2================================================== 2===========================================================
3 3
4Intel Gigabit Linux driver. 4Intel Gigabit Linux driver.
5Copyright(c) 1999 - 2010 Intel Corporation. 5Copyright(c) 1999 - 2013 Intel Corporation.
6 6
7Contents 7Contents
8======== 8========
@@ -36,6 +36,53 @@ Default Value: 0
36This parameter adds support for SR-IOV. It causes the driver to spawn up to 36This parameter adds support for SR-IOV. It causes the driver to spawn up to
37max_vfs worth of virtual function. 37max_vfs worth of virtual function.
38 38
39QueuePairs
40----------
41Valid Range: 0-1
42Default Value: 1 (TX and RX will be paired onto one interrupt vector)
43
44If set to 0, when MSI-X is enabled, the TX and RX will attempt to occupy
45separate vectors.
46
47This option can be overridden to 1 if there are not sufficient interrupts
48available. This can occur if any combination of RSS, VMDQ, and max_vfs
49results in more than 4 queues being used.
50
51Node
52----
53Valid Range: 0-n
54Default Value: -1 (off)
55
56 0 - n: where n is the number of the NUMA node that should be used to
57 allocate memory for this adapter port.
58 -1: uses the driver default of allocating memory on whichever processor is
59 running insmod/modprobe.
60
61 The Node parameter will allow you to pick which NUMA node you want to have
62 the adapter allocate memory from. All driver structures, in-memory queues,
63 and receive buffers will be allocated on the node specified. This parameter
64 is only useful when interrupt affinity is specified, otherwise some portion
65 of the time the interrupt could run on a different core than the memory is
66 allocated on, causing slower memory access and impacting throughput, CPU, or
67 both.
68
69EEE
70---
71Valid Range: 0-1
72Default Value: 1 (enabled)
73
74 A link between two EEE-compliant devices will result in periodic bursts of
75 data followed by long periods where in the link is in an idle state. This Low
76 Power Idle (LPI) state is supported in both 1Gbps and 100Mbps link speeds.
77 NOTE: EEE support requires autonegotiation.
78
79DMAC
80----
81Valid Range: 0-1
82Default Value: 1 (enabled)
83 Enables or disables DMA Coalescing feature.
84
85
39 86
40Additional Configurations 87Additional Configurations
41========================= 88=========================
@@ -55,10 +102,10 @@ Additional Configurations
55 - The maximum MTU setting for Jumbo Frames is 9216. This value coincides 102 - The maximum MTU setting for Jumbo Frames is 9216. This value coincides
56 with the maximum Jumbo Frames size of 9234 bytes. 103 with the maximum Jumbo Frames size of 9234 bytes.
57 104
58 - Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or 105 - Using Jumbo frames at 10 or 100 Mbps is not supported and may result in
59 loss of link. 106 poor performance or loss of link.
60 107
61 Ethtool 108 ethtool
62 ------- 109 -------
63 The driver utilizes the ethtool interface for driver configuration and 110 The driver utilizes the ethtool interface for driver configuration and
64 diagnostics, as well as displaying statistical information. The latest 111 diagnostics, as well as displaying statistical information. The latest
@@ -106,6 +153,14 @@ Additional Configurations
106 153
107 Where n=the VF that attempted to do the spoofing. 154 Where n=the VF that attempted to do the spoofing.
108 155
156 Setting MAC Address, VLAN and Rate Limit Using IProute2 Tool
157 ------------------------------------------------------------
158 You can set a MAC address of a Virtual Function (VF), a default VLAN and the
159 rate limit using the IProute2 tool. Download the latest version of the
160 iproute2 tool from Sourceforge if your version does not have all the
161 features you require.
162
163
109Support 164Support
110======= 165=======
111 166
diff --git a/Documentation/networking/igbvf.txt b/Documentation/networking/igbvf.txt
index cbfe4ee65533..40db17a6665b 100644
--- a/Documentation/networking/igbvf.txt
+++ b/Documentation/networking/igbvf.txt
@@ -1,8 +1,8 @@
1Linux* Base Driver for Intel(R) Network Connection 1Linux* Base Driver for Intel(R) Ethernet Network Connection
2================================================== 2===========================================================
3 3
4Intel Gigabit Linux driver. 4Intel Gigabit Linux driver.
5Copyright(c) 1999 - 2010 Intel Corporation. 5Copyright(c) 1999 - 2013 Intel Corporation.
6 6
7Contents 7Contents
8======== 8========
@@ -55,7 +55,7 @@ networking link on the left to search for your adapter:
55Additional Configurations 55Additional Configurations
56========================= 56=========================
57 57
58 Ethtool 58 ethtool
59 ------- 59 -------
60 The driver utilizes the ethtool interface for driver configuration and 60 The driver utilizes the ethtool interface for driver configuration and
61 diagnostics, as well as displaying statistical information. The ethtool 61 diagnostics, as well as displaying statistical information. The ethtool
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
index 10742902146f..a46d78583ae1 100644
--- a/Documentation/networking/ip-sysctl.txt
+++ b/Documentation/networking/ip-sysctl.txt
@@ -440,6 +440,10 @@ tcp_syncookies - BOOLEAN
440 SYN flood warnings in logs not being really flooded, your server 440 SYN flood warnings in logs not being really flooded, your server
441 is seriously misconfigured. 441 is seriously misconfigured.
442 442
443 If you want to test which effects syncookies have to your
444 network connections you can set this knob to 2 to enable
445 unconditionally generation of syncookies.
446
443tcp_fastopen - INTEGER 447tcp_fastopen - INTEGER
444 Enable TCP Fast Open feature (draft-ietf-tcpm-fastopen) to send data 448 Enable TCP Fast Open feature (draft-ietf-tcpm-fastopen) to send data
445 in the opening SYN packet. To use this feature, the client application 449 in the opening SYN packet. To use this feature, the client application
@@ -478,6 +482,15 @@ tcp_syn_retries - INTEGER
478tcp_timestamps - BOOLEAN 482tcp_timestamps - BOOLEAN
479 Enable timestamps as defined in RFC1323. 483 Enable timestamps as defined in RFC1323.
480 484
485tcp_min_tso_segs - INTEGER
486 Minimal number of segments per TSO frame.
487 Since linux-3.12, TCP does an automatic sizing of TSO frames,
488 depending on flow rate, instead of filling 64Kbytes packets.
489 For specific usages, it's possible to force TCP to build big
490 TSO frames. Note that TCP stack might split too big TSO packets
491 if available window is too small.
492 Default: 2
493
481tcp_tso_win_divisor - INTEGER 494tcp_tso_win_divisor - INTEGER
482 This allows control over what percentage of the congestion window 495 This allows control over what percentage of the congestion window
483 can be consumed by a single TSO frame. 496 can be consumed by a single TSO frame.
@@ -516,6 +529,19 @@ tcp_wmem - vector of 3 INTEGERs: min, default, max
516 this value is ignored. 529 this value is ignored.
517 Default: between 64K and 4MB, depending on RAM size. 530 Default: between 64K and 4MB, depending on RAM size.
518 531
532tcp_notsent_lowat - UNSIGNED INTEGER
533 A TCP socket can control the amount of unsent bytes in its write queue,
534 thanks to TCP_NOTSENT_LOWAT socket option. poll()/select()/epoll()
535 reports POLLOUT events if the amount of unsent bytes is below a per
536 socket value, and if the write queue is not full. sendmsg() will
537 also not add new buffers if the limit is hit.
538
539 This global variable controls the amount of unsent data for
540 sockets not using TCP_NOTSENT_LOWAT. For these sockets, a change
541 to the global variable has immediate effect.
542
543 Default: UINT_MAX (0xFFFFFFFF)
544
519tcp_workaround_signed_windows - BOOLEAN 545tcp_workaround_signed_windows - BOOLEAN
520 If set, assume no receipt of a window scaling option means the 546 If set, assume no receipt of a window scaling option means the
521 remote TCP is broken and treats the window as a signed quantity. 547 remote TCP is broken and treats the window as a signed quantity.
@@ -1022,7 +1048,15 @@ disable_policy - BOOLEAN
1022disable_xfrm - BOOLEAN 1048disable_xfrm - BOOLEAN
1023 Disable IPSEC encryption on this interface, whatever the policy 1049 Disable IPSEC encryption on this interface, whatever the policy
1024 1050
1051igmpv2_unsolicited_report_interval - INTEGER
1052 The interval in milliseconds in which the next unsolicited
1053 IGMPv1 or IGMPv2 report retransmit will take place.
1054 Default: 10000 (10 seconds)
1025 1055
1056igmpv3_unsolicited_report_interval - INTEGER
1057 The interval in milliseconds in which the next unsolicited
1058 IGMPv3 report retransmit will take place.
1059 Default: 1000 (1 seconds)
1026 1060
1027tag - INTEGER 1061tag - INTEGER
1028 Allows you to write a number, which can be used as required. 1062 Allows you to write a number, which can be used as required.
@@ -1314,6 +1348,27 @@ ndisc_notify - BOOLEAN
1314 1 - Generate unsolicited neighbour advertisements when device is brought 1348 1 - Generate unsolicited neighbour advertisements when device is brought
1315 up or hardware address changes. 1349 up or hardware address changes.
1316 1350
1351mldv1_unsolicited_report_interval - INTEGER
1352 The interval in milliseconds in which the next unsolicited
1353 MLDv1 report retransmit will take place.
1354 Default: 10000 (10 seconds)
1355
1356mldv2_unsolicited_report_interval - INTEGER
1357 The interval in milliseconds in which the next unsolicited
1358 MLDv2 report retransmit will take place.
1359 Default: 1000 (1 second)
1360
1361force_mld_version - INTEGER
1362 0 - (default) No enforcement of a MLD version, MLDv1 fallback allowed
1363 1 - Enforce to use MLD version 1
1364 2 - Enforce to use MLD version 2
1365
1366suppress_frag_ndisc - INTEGER
1367 Control RFC 6980 (Security Implications of IPv6 Fragmentation
1368 with IPv6 Neighbor Discovery) behavior:
1369 1 - (default) discard fragmented neighbor discovery packets
1370 0 - allow fragmented neighbor discovery packets
1371
1317icmp/*: 1372icmp/*:
1318ratelimit - INTEGER 1373ratelimit - INTEGER
1319 Limit the maximal rates for sending ICMPv6 packets. 1374 Limit the maximal rates for sending ICMPv6 packets.
diff --git a/Documentation/networking/ixgb.txt b/Documentation/networking/ixgb.txt
index d75a1f9565bb..1e0c045e89f7 100644
--- a/Documentation/networking/ixgb.txt
+++ b/Documentation/networking/ixgb.txt
@@ -1,7 +1,7 @@
1Linux Base Driver for 10 Gigabit Intel(R) Network Connection 1Linux Base Driver for 10 Gigabit Intel(R) Ethernet Network Connection
2============================================================= 2=====================================================================
3 3
4October 9, 2007 4March 14, 2011
5 5
6 6
7Contents 7Contents
@@ -274,9 +274,9 @@ Additional Configurations
274 ------------------------------------------------- 274 -------------------------------------------------
275 Configuring a network driver to load properly when the system is started is 275 Configuring a network driver to load properly when the system is started is
276 distribution dependent. Typically, the configuration process involves adding 276 distribution dependent. Typically, the configuration process involves adding
277 an alias line to files in /etc/modprobe.d/ as well as editing other system 277 an alias line to /etc/modprobe.conf as well as editing other system startup
278 startup scripts and/or configuration files. Many popular Linux distributions 278 scripts and/or configuration files. Many popular Linux distributions ship
279 ship with tools to make these changes for you. To learn the proper way to 279 with tools to make these changes for you. To learn the proper way to
280 configure a network device for your system, refer to your distribution 280 configure a network device for your system, refer to your distribution
281 documentation. If during this process you are asked for the driver or module 281 documentation. If during this process you are asked for the driver or module
282 name, the name for the Linux Base Driver for the Intel 10GbE Family of 282 name, the name for the Linux Base Driver for the Intel 10GbE Family of
@@ -306,7 +306,7 @@ Additional Configurations
306 with the maximum Jumbo Frames size of 16128. 306 with the maximum Jumbo Frames size of 16128.
307 307
308 308
309 Ethtool 309 ethtool
310 ------- 310 -------
311 The driver utilizes the ethtool interface for driver configuration and 311 The driver utilizes the ethtool interface for driver configuration and
312 diagnostics, as well as displaying statistical information. The ethtool 312 diagnostics, as well as displaying statistical information. The ethtool
diff --git a/Documentation/networking/ixgbe.txt b/Documentation/networking/ixgbe.txt
index af77ed3c4172..96cccebb839b 100644
--- a/Documentation/networking/ixgbe.txt
+++ b/Documentation/networking/ixgbe.txt
@@ -1,8 +1,9 @@
1Linux Base Driver for 10 Gigabit PCI Express Intel(R) Network Connection 1Linux* Base Driver for the Intel(R) Ethernet 10 Gigabit PCI Express Family of
2======================================================================== 2Adapters
3=============================================================================
3 4
4Intel Gigabit Linux driver. 5Intel 10 Gigabit Linux driver.
5Copyright(c) 1999 - 2010 Intel Corporation. 6Copyright(c) 1999 - 2013 Intel Corporation.
6 7
7Contents 8Contents
8======== 9========
@@ -16,8 +17,8 @@ Contents
16Identifying Your Adapter 17Identifying Your Adapter
17======================== 18========================
18 19
19The driver in this release is compatible with 82598 and 82599-based Intel 20The driver in this release is compatible with 82598, 82599 and X540-based
20Network Connections. 21Intel Network Connections.
21 22
22For more information on how to identify your adapter, go to the Adapter & 23For more information on how to identify your adapter, go to the Adapter &
23Driver ID Guide at: 24Driver ID Guide at:
@@ -72,7 +73,7 @@ cables that comply with SFF-8431 v4.1 and SFF-8472 v10.4 specifications.
72Laser turns off for SFP+ when ifconfig down 73Laser turns off for SFP+ when ifconfig down
73------------------------------------------- 74-------------------------------------------
74"ifconfig down" turns off the laser for 82599-based SFP+ fiber adapters. 75"ifconfig down" turns off the laser for 82599-based SFP+ fiber adapters.
75"ifconfig up" turns on the later. 76"ifconfig up" turns on the laser.
76 77
77 78
7882598-BASED ADAPTERS 7982598-BASED ADAPTERS
@@ -118,6 +119,93 @@ NOTE: For 82598 backplane cards entering 1 gig mode, flow control default
118behavior is changed to off. Flow control in 1 gig mode on these devices can 119behavior is changed to off. Flow control in 1 gig mode on these devices can
119lead to Tx hangs. 120lead to Tx hangs.
120 121
122Intel(R) Ethernet Flow Director
123-------------------------------
124Supports advanced filters that direct receive packets by their flows to
125different queues. Enables tight control on routing a flow in the platform.
126Matches flows and CPU cores for flow affinity. Supports multiple parameters
127for flexible flow classification and load balancing.
128
129Flow director is enabled only if the kernel is multiple TX queue capable.
130
131An included script (set_irq_affinity.sh) automates setting the IRQ to CPU
132affinity.
133
134You can verify that the driver is using Flow Director by looking at the counter
135in ethtool: fdir_miss and fdir_match.
136
137Other ethtool Commands:
138To enable Flow Director
139 ethtool -K ethX ntuple on
140To add a filter
141 Use -U switch. e.g., ethtool -U ethX flow-type tcp4 src-ip 0x178000a
142 action 1
143To see the list of filters currently present:
144 ethtool -u ethX
145
146Perfect Filter: Perfect filter is an interface to load the filter table that
147funnels all flow into queue_0 unless an alternative queue is specified using
148"action". In that case, any flow that matches the filter criteria will be
149directed to the appropriate queue.
150
151If the queue is defined as -1, filter will drop matching packets.
152
153To account for filter matches and misses, there are two stats in ethtool:
154fdir_match and fdir_miss. In addition, rx_queue_N_packets shows the number of
155packets processed by the Nth queue.
156
157NOTE: Receive Packet Steering (RPS) and Receive Flow Steering (RFS) are not
158compatible with Flow Director. IF Flow Director is enabled, these will be
159disabled.
160
161The following three parameters impact Flow Director.
162
163FdirMode
164--------
165Valid Range: 0-2 (0=off, 1=ATR, 2=Perfect filter mode)
166Default Value: 1
167
168 Flow Director filtering modes.
169
170FdirPballoc
171-----------
172Valid Range: 0-2 (0=64k, 1=128k, 2=256k)
173Default Value: 0
174
175 Flow Director allocated packet buffer size.
176
177AtrSampleRate
178--------------
179Valid Range: 1-100
180Default Value: 20
181
182 Software ATR Tx packet sample rate. For example, when set to 20, every 20th
183 packet, looks to see if the packet will create a new flow.
184
185Node
186----
187Valid Range: 0-n
188Default Value: 1 (off)
189
190 0 - n: where n is the number of NUMA nodes (i.e. 0 - 3) currently online in
191 your system
192 1: turns this option off
193
194 The Node parameter will allow you to pick which NUMA node you want to have
195 the adapter allocate memory on.
196
197max_vfs
198-------
199Valid Range: 1-63
200Default Value: 0
201
202 If the value is greater than 0 it will also force the VMDq parameter to be 1
203 or more.
204
205 This parameter adds support for SR-IOV. It causes the driver to spawn up to
206 max_vfs worth of virtual function.
207
208
121Additional Configurations 209Additional Configurations
122========================= 210=========================
123 211
@@ -221,9 +309,10 @@ http://www.redhat.com/promo/summit/2008/downloads/pdf/Thursday/Mark_Wagner.pdf
221Known Issues 309Known Issues
222============ 310============
223 311
224 Enabling SR-IOV in a 32-bit Microsoft* Windows* Server 2008 Guest OS using 312 Enabling SR-IOV in a 32-bit or 64-bit Microsoft* Windows* Server 2008/R2
225 Intel (R) 82576-based GbE or Intel (R) 82599-based 10GbE controller under KVM 313 Guest OS using Intel (R) 82576-based GbE or Intel (R) 82599-based 10GbE
226 ----------------------------------------------------------------------------- 314 controller under KVM
315 ------------------------------------------------------------------------
227 KVM Hypervisor/VMM supports direct assignment of a PCIe device to a VM. This 316 KVM Hypervisor/VMM supports direct assignment of a PCIe device to a VM. This
228 includes traditional PCIe devices, as well as SR-IOV-capable devices using 317 includes traditional PCIe devices, as well as SR-IOV-capable devices using
229 Intel 82576-based and 82599-based controllers. 318 Intel 82576-based and 82599-based controllers.
diff --git a/Documentation/networking/ixgbevf.txt b/Documentation/networking/ixgbevf.txt
index 5a91a41fa946..53d8d2a5a6a3 100644
--- a/Documentation/networking/ixgbevf.txt
+++ b/Documentation/networking/ixgbevf.txt
@@ -1,8 +1,8 @@
1Linux* Base Driver for Intel(R) Network Connection 1Linux* Base Driver for Intel(R) Ethernet Network Connection
2================================================== 2===========================================================
3 3
4Intel Gigabit Linux driver. 4Intel Gigabit Linux driver.
5Copyright(c) 1999 - 2010 Intel Corporation. 5Copyright(c) 1999 - 2013 Intel Corporation.
6 6
7Contents 7Contents
8======== 8========
diff --git a/Documentation/networking/l2tp.txt b/Documentation/networking/l2tp.txt
index e63fc1f7bf87..c74434de2fa5 100644
--- a/Documentation/networking/l2tp.txt
+++ b/Documentation/networking/l2tp.txt
@@ -197,7 +197,7 @@ state information because the file format is subject to change. It is
197implemented to provide extra debug information to help diagnose 197implemented to provide extra debug information to help diagnose
198problems.) Users should use the netlink API. 198problems.) Users should use the netlink API.
199 199
200/proc/net/pppol2tp is also provided for backwards compaibility with 200/proc/net/pppol2tp is also provided for backwards compatibility with
201the original pppol2tp driver. It lists information about L2TPv2 201the original pppol2tp driver. It lists information about L2TPv2
202tunnels and sessions only. Its use is discouraged. 202tunnels and sessions only. Its use is discouraged.
203 203
diff --git a/Documentation/networking/netdev-FAQ.txt b/Documentation/networking/netdev-FAQ.txt
new file mode 100644
index 000000000000..0fe1c6e0dbcd
--- /dev/null
+++ b/Documentation/networking/netdev-FAQ.txt
@@ -0,0 +1,224 @@
1
2Information you need to know about netdev
3-----------------------------------------
4
5Q: What is netdev?
6
7A: It is a mailing list for all network-related Linux stuff. This includes
8 anything found under net/ (i.e. core code like IPv6) and drivers/net
9 (i.e. hardware specific drivers) in the Linux source tree.
10
11 Note that some subsystems (e.g. wireless drivers) which have a high volume
12 of traffic have their own specific mailing lists.
13
14 The netdev list is managed (like many other Linux mailing lists) through
15 VGER ( http://vger.kernel.org/ ) and archives can be found below:
16
17 http://marc.info/?l=linux-netdev
18 http://www.spinics.net/lists/netdev/
19
20 Aside from subsystems like that mentioned above, all network-related Linux
21 development (i.e. RFC, review, comments, etc.) takes place on netdev.
22
23Q: How do the changes posted to netdev make their way into Linux?
24
25A: There are always two trees (git repositories) in play. Both are driven
26 by David Miller, the main network maintainer. There is the "net" tree,
27 and the "net-next" tree. As you can probably guess from the names, the
28 net tree is for fixes to existing code already in the mainline tree from
29 Linus, and net-next is where the new code goes for the future release.
30 You can find the trees here:
31
32 http://git.kernel.org/?p=linux/kernel/git/davem/net.git
33 http://git.kernel.org/?p=linux/kernel/git/davem/net-next.git
34
35Q: How often do changes from these trees make it to the mainline Linus tree?
36
37A: To understand this, you need to know a bit of background information
38 on the cadence of Linux development. Each new release starts off with
39 a two week "merge window" where the main maintainers feed their new
40 stuff to Linus for merging into the mainline tree. After the two weeks,
41 the merge window is closed, and it is called/tagged "-rc1". No new
42 features get mainlined after this -- only fixes to the rc1 content
43 are expected. After roughly a week of collecting fixes to the rc1
44 content, rc2 is released. This repeats on a roughly weekly basis
45 until rc7 (typically; sometimes rc6 if things are quiet, or rc8 if
46 things are in a state of churn), and a week after the last vX.Y-rcN
47 was done, the official "vX.Y" is released.
48
49 Relating that to netdev: At the beginning of the 2-week merge window,
50 the net-next tree will be closed - no new changes/features. The
51 accumulated new content of the past ~10 weeks will be passed onto
52 mainline/Linus via a pull request for vX.Y -- at the same time,
53 the "net" tree will start accumulating fixes for this pulled content
54 relating to vX.Y
55
56 An announcement indicating when net-next has been closed is usually
57 sent to netdev, but knowing the above, you can predict that in advance.
58
59 IMPORTANT: Do not send new net-next content to netdev during the
60 period during which net-next tree is closed.
61
62 Shortly after the two weeks have passed (and vX.Y-rc1 is released), the
63 tree for net-next reopens to collect content for the next (vX.Y+1) release.
64
65 If you aren't subscribed to netdev and/or are simply unsure if net-next
66 has re-opened yet, simply check the net-next git repository link above for
67 any new networking-related commits.
68
69 The "net" tree continues to collect fixes for the vX.Y content, and
70 is fed back to Linus at regular (~weekly) intervals. Meaning that the
71 focus for "net" is on stabilization and bugfixes.
72
73 Finally, the vX.Y gets released, and the whole cycle starts over.
74
75Q: So where are we now in this cycle?
76
77A: Load the mainline (Linus) page here:
78
79 http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git
80
81 and note the top of the "tags" section. If it is rc1, it is early
82 in the dev cycle. If it was tagged rc7 a week ago, then a release
83 is probably imminent.
84
85Q: How do I indicate which tree (net vs. net-next) my patch should be in?
86
87A: Firstly, think whether you have a bug fix or new "next-like" content.
88 Then once decided, assuming that you use git, use the prefix flag, i.e.
89
90 git format-patch --subject-prefix='PATCH net-next' start..finish
91
92 Use "net" instead of "net-next" (always lower case) in the above for
93 bug-fix net content. If you don't use git, then note the only magic in
94 the above is just the subject text of the outgoing e-mail, and you can
95 manually change it yourself with whatever MUA you are comfortable with.
96
97Q: I sent a patch and I'm wondering what happened to it. How can I tell
98 whether it got merged?
99
100A: Start by looking at the main patchworks queue for netdev:
101
102 http://patchwork.ozlabs.org/project/netdev/list/
103
104 The "State" field will tell you exactly where things are at with
105 your patch.
106
107Q: The above only says "Under Review". How can I find out more?
108
109A: Generally speaking, the patches get triaged quickly (in less than 48h).
110 So be patient. Asking the maintainer for status updates on your
111 patch is a good way to ensure your patch is ignored or pushed to
112 the bottom of the priority list.
113
114Q: How can I tell what patches are queued up for backporting to the
115 various stable releases?
116
117A: Normally Greg Kroah-Hartman collects stable commits himself, but
118 for networking, Dave collects up patches he deems critical for the
119 networking subsystem, and then hands them off to Greg.
120
121 There is a patchworks queue that you can see here:
122 http://patchwork.ozlabs.org/bundle/davem/stable/?state=*
123
124 It contains the patches which Dave has selected, but not yet handed
125 off to Greg. If Greg already has the patch, then it will be here:
126 http://git.kernel.org/cgit/linux/kernel/git/stable/stable-queue.git
127
128 A quick way to find whether the patch is in this stable-queue is
129 to simply clone the repo, and then git grep the mainline commit ID, e.g.
130
131 stable-queue$ git grep -l 284041ef21fdf2e
132 releases/3.0.84/ipv6-fix-possible-crashes-in-ip6_cork_release.patch
133 releases/3.4.51/ipv6-fix-possible-crashes-in-ip6_cork_release.patch
134 releases/3.9.8/ipv6-fix-possible-crashes-in-ip6_cork_release.patch
135 stable/stable-queue$
136
137Q: I see a network patch and I think it should be backported to stable.
138 Should I request it via "stable@vger.kernel.org" like the references in
139 the kernel's Documentation/stable_kernel_rules.txt file say?
140
141A: No, not for networking. Check the stable queues as per above 1st to see
142 if it is already queued. If not, then send a mail to netdev, listing
143 the upstream commit ID and why you think it should be a stable candidate.
144
145 Before you jump to go do the above, do note that the normal stable rules
146 in Documentation/stable_kernel_rules.txt still apply. So you need to
147 explicitly indicate why it is a critical fix and exactly what users are
148 impacted. In addition, you need to convince yourself that you _really_
149 think it has been overlooked, vs. having been considered and rejected.
150
151 Generally speaking, the longer it has had a chance to "soak" in mainline,
152 the better the odds that it is an OK candidate for stable. So scrambling
153 to request a commit be added the day after it appears should be avoided.
154
155Q: I have created a network patch and I think it should be backported to
156 stable. Should I add a "Cc: stable@vger.kernel.org" like the references
157 in the kernel's Documentation/ directory say?
158
159A: No. See above answer. In short, if you think it really belongs in
160 stable, then ensure you write a decent commit log that describes who
161 gets impacted by the bugfix and how it manifests itself, and when the
162 bug was introduced. If you do that properly, then the commit will
163 get handled appropriately and most likely get put in the patchworks
164 stable queue if it really warrants it.
165
166 If you think there is some valid information relating to it being in
167 stable that does _not_ belong in the commit log, then use the three
168 dash marker line as described in Documentation/SubmittingPatches to
169 temporarily embed that information into the patch that you send.
170
171Q: Someone said that the comment style and coding convention is different
172 for the networking content. Is this true?
173
174A: Yes, in a largely trivial way. Instead of this:
175
176 /*
177 * foobar blah blah blah
178 * another line of text
179 */
180
181 it is requested that you make it look like this:
182
183 /* foobar blah blah blah
184 * another line of text
185 */
186
187Q: I am working in existing code that has the former comment style and not the
188 latter. Should I submit new code in the former style or the latter?
189
190A: Make it the latter style, so that eventually all code in the domain of
191 netdev is of this format.
192
193Q: I found a bug that might have possible security implications or similar.
194 Should I mail the main netdev maintainer off-list?
195
196A: No. The current netdev maintainer has consistently requested that people
197 use the mailing lists and not reach out directly. If you aren't OK with
198 that, then perhaps consider mailing "security@kernel.org" or reading about
199 http://oss-security.openwall.org/wiki/mailing-lists/distros
200 as possible alternative mechanisms.
201
202Q: What level of testing is expected before I submit my change?
203
204A: If your changes are against net-next, the expectation is that you
205 have tested by layering your changes on top of net-next. Ideally you
206 will have done run-time testing specific to your change, but at a
207 minimum, your changes should survive an "allyesconfig" and an
208 "allmodconfig" build without new warnings or failures.
209
210Q: Any other tips to help ensure my net/net-next patch gets OK'd?
211
212A: Attention to detail. Re-read your own work as if you were the
213 reviewer. You can start with using checkpatch.pl, perhaps even
214 with the "--strict" flag. But do not be mindlessly robotic in
215 doing so. If your change is a bug-fix, make sure your commit log
216 indicates the end-user visible symptom, the underlying reason as
217 to why it happens, and then if necessary, explain why the fix proposed
218 is the best way to get things done. Don't mangle whitespace, and as
219 is common, don't mis-indent function arguments that span multiple lines.
220 If it is your first patch, mail it to yourself so you can test apply
221 it to an unpatched tree to confirm infrastructure didn't mangle it.
222
223 Finally, go back and read Documentation/SubmittingPatches to be
224 sure you are not repeating some common mistake documented there.
diff --git a/Documentation/networking/netlink_mmap.txt b/Documentation/networking/netlink_mmap.txt
index 533378839546..b26122973525 100644
--- a/Documentation/networking/netlink_mmap.txt
+++ b/Documentation/networking/netlink_mmap.txt
@@ -45,7 +45,7 @@ processing.
45 45
46Conversion of the reception path involves calling poll() on the file 46Conversion of the reception path involves calling poll() on the file
47descriptor, once the socket is readable the frames from the ring are 47descriptor, once the socket is readable the frames from the ring are
48processsed in order until no more messages are available, as indicated by 48processed in order until no more messages are available, as indicated by
49a status word in the frame header. 49a status word in the frame header.
50 50
51On kernel side, in order to make use of memory mapped I/O on receive, the 51On kernel side, in order to make use of memory mapped I/O on receive, the
@@ -56,7 +56,7 @@ Dumps of kernel databases automatically support memory mapped I/O.
56 56
57Conversion of the transmit path involves changing message construction to 57Conversion of the transmit path involves changing message construction to
58use memory from the TX ring instead of (usually) a buffer declared on the 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 59stack and setting up the frame header appropriately. Optionally poll() can
60be used to wait for free frames in the TX ring. 60be used to wait for free frames in the TX ring.
61 61
62Structured and definitions for using memory mapped I/O are contained in 62Structured and definitions for using memory mapped I/O are contained in
@@ -231,7 +231,7 @@ Ring setup:
231 if (setsockopt(fd, NETLINK_TX_RING, &req, sizeof(req)) < 0) 231 if (setsockopt(fd, NETLINK_TX_RING, &req, sizeof(req)) < 0)
232 exit(1) 232 exit(1)
233 233
234 /* Calculate size of each invididual ring */ 234 /* Calculate size of each individual ring */
235 ring_size = req.nm_block_nr * req.nm_block_size; 235 ring_size = req.nm_block_nr * req.nm_block_size;
236 236
237 /* Map RX/TX rings. The TX ring is located after the RX ring */ 237 /* Map RX/TX rings. The TX ring is located after the RX ring */
diff --git a/Documentation/networking/openvswitch.txt b/Documentation/networking/openvswitch.txt
index 8fa2dd1e792e..37c20ee2455e 100644
--- a/Documentation/networking/openvswitch.txt
+++ b/Documentation/networking/openvswitch.txt
@@ -91,6 +91,46 @@ Often we ellipsize arguments not important to the discussion, e.g.:
91 in_port(1), eth(...), eth_type(0x0800), ipv4(...), tcp(...) 91 in_port(1), eth(...), eth_type(0x0800), ipv4(...), tcp(...)
92 92
93 93
94Wildcarded flow key format
95--------------------------
96
97A wildcarded flow is described with two sequences of Netlink attributes
98passed over the Netlink socket. A flow key, exactly as described above, and an
99optional corresponding flow mask.
100
101A wildcarded flow can represent a group of exact match flows. Each '1' bit
102in the mask specifies a exact match with the corresponding bit in the flow key.
103A '0' bit specifies a don't care bit, which will match either a '1' or '0' bit
104of a incoming packet. Using wildcarded flow can improve the flow set up rate
105by reduce the number of new flows need to be processed by the user space program.
106
107Support for the mask Netlink attribute is optional for both the kernel and user
108space program. The kernel can ignore the mask attribute, installing an exact
109match flow, or reduce the number of don't care bits in the kernel to less than
110what was specified by the user space program. In this case, variations in bits
111that the kernel does not implement will simply result in additional flow setups.
112The kernel module will also work with user space programs that neither support
113nor supply flow mask attributes.
114
115Since the kernel may ignore or modify wildcard bits, it can be difficult for
116the userspace program to know exactly what matches are installed. There are
117two possible approaches: reactively install flows as they miss the kernel
118flow table (and therefore not attempt to determine wildcard changes at all)
119or use the kernel's response messages to determine the installed wildcards.
120
121When interacting with userspace, the kernel should maintain the match portion
122of the key exactly as originally installed. This will provides a handle to
123identify the flow for all future operations. However, when reporting the
124mask of an installed flow, the mask should include any restrictions imposed
125by the kernel.
126
127The behavior when using overlapping wildcarded flows is undefined. It is the
128responsibility of the user space program to ensure that any incoming packet
129can match at most one flow, wildcarded or not. The current implementation
130performs best-effort detection of overlapping wildcarded flows and may reject
131some but not all of them. However, this behavior may change in future versions.
132
133
94Basic rule for evolving flow keys 134Basic rule for evolving flow keys
95--------------------------------- 135---------------------------------
96 136
diff --git a/Documentation/networking/operstates.txt b/Documentation/networking/operstates.txt
index 97694572338b..355c6d8ef8ad 100644
--- a/Documentation/networking/operstates.txt
+++ b/Documentation/networking/operstates.txt
@@ -89,8 +89,8 @@ packets. The name 'carrier' and the inversion are historical, think of
89it as lower layer. 89it as lower layer.
90 90
91Note that for certain kind of soft-devices, which are not managing any 91Note that for certain kind of soft-devices, which are not managing any
92real hardware, there is possible to set this bit from userpsace. 92real hardware, it is possible to set this bit from userspace. One
93One should use TVL IFLA_CARRIER to do so. 93should use TVL IFLA_CARRIER to do so.
94 94
95netif_carrier_ok() can be used to query that bit. 95netif_carrier_ok() can be used to query that bit.
96 96
diff --git a/Documentation/networking/packet_mmap.txt b/Documentation/networking/packet_mmap.txt
index 8572796b1eb6..c01223628a87 100644
--- a/Documentation/networking/packet_mmap.txt
+++ b/Documentation/networking/packet_mmap.txt
@@ -543,6 +543,14 @@ TPACKET_V2 --> TPACKET_V3:
543In the AF_PACKET fanout mode, packet reception can be load balanced among 543In the AF_PACKET fanout mode, packet reception can be load balanced among
544processes. This also works in combination with mmap(2) on packet sockets. 544processes. This also works in combination with mmap(2) on packet sockets.
545 545
546Currently implemented fanout policies are:
547
548 - PACKET_FANOUT_HASH: schedule to socket by skb's rxhash
549 - PACKET_FANOUT_LB: schedule to socket by round-robin
550 - PACKET_FANOUT_CPU: schedule to socket by CPU packet arrives on
551 - PACKET_FANOUT_RND: schedule to socket by random selection
552 - PACKET_FANOUT_ROLLOVER: if one socket is full, rollover to another
553
546Minimal example code by David S. Miller (try things like "./test eth0 hash", 554Minimal example code by David S. Miller (try things like "./test eth0 hash",
547"./test eth0 lb", etc.): 555"./test eth0 lb", etc.):
548 556
diff --git a/Documentation/networking/rxrpc.txt b/Documentation/networking/rxrpc.txt
index 60d05eb77c64..b89bc82eed46 100644
--- a/Documentation/networking/rxrpc.txt
+++ b/Documentation/networking/rxrpc.txt
@@ -144,7 +144,7 @@ An overview of the RxRPC protocol:
144 (*) Calls use ACK packets to handle reliability. Data packets are also 144 (*) Calls use ACK packets to handle reliability. Data packets are also
145 explicitly sequenced per call. 145 explicitly sequenced per call.
146 146
147 (*) There are two types of positive acknowledgement: hard-ACKs and soft-ACKs. 147 (*) There are two types of positive acknowledgment: hard-ACKs and soft-ACKs.
148 A hard-ACK indicates to the far side that all the data received to a point 148 A hard-ACK indicates to the far side that all the data received to a point
149 has been received and processed; a soft-ACK indicates that the data has 149 has been received and processed; a soft-ACK indicates that the data has
150 been received but may yet be discarded and re-requested. The sender may 150 been received but may yet be discarded and re-requested. The sender may
diff --git a/Documentation/networking/sctp.txt b/Documentation/networking/sctp.txt
index 0c790a76910e..97b810ca9082 100644
--- a/Documentation/networking/sctp.txt
+++ b/Documentation/networking/sctp.txt
@@ -19,7 +19,6 @@ of SCTP that is RFC 2960 compliant and provides an programming interface
19referred to as the UDP-style API of the Sockets Extensions for SCTP, as 19referred to as the UDP-style API of the Sockets Extensions for SCTP, as
20proposed in IETF Internet-Drafts. 20proposed in IETF Internet-Drafts.
21 21
22
23Caveats: 22Caveats:
24 23
25-lksctp can be built as statically or as a module. However, be aware that 24-lksctp can be built as statically or as a module. However, be aware that
@@ -33,6 +32,4 @@ For more information, please visit the lksctp project website:
33 http://www.sf.net/projects/lksctp 32 http://www.sf.net/projects/lksctp
34 33
35Or contact the lksctp developers through the mailing list: 34Or contact the lksctp developers through the mailing list:
36 <lksctp-developers@lists.sourceforge.net> 35 <linux-sctp@vger.kernel.org>
37
38
diff --git a/Documentation/networking/stmmac.txt b/Documentation/networking/stmmac.txt
index 654d2e55c8cb..cdd916da838d 100644
--- a/Documentation/networking/stmmac.txt
+++ b/Documentation/networking/stmmac.txt
@@ -123,6 +123,7 @@ struct plat_stmmacenet_data {
123 int bugged_jumbo; 123 int bugged_jumbo;
124 int pmt; 124 int pmt;
125 int force_sf_dma_mode; 125 int force_sf_dma_mode;
126 int force_thresh_dma_mode;
126 int riwt_off; 127 int riwt_off;
127 void (*fix_mac_speed)(void *priv, unsigned int speed); 128 void (*fix_mac_speed)(void *priv, unsigned int speed);
128 void (*bus_setup)(void __iomem *ioaddr); 129 void (*bus_setup)(void __iomem *ioaddr);
@@ -159,6 +160,8 @@ Where:
159 o pmt: core has the embedded power module (optional). 160 o pmt: core has the embedded power module (optional).
160 o force_sf_dma_mode: force DMA to use the Store and Forward mode 161 o force_sf_dma_mode: force DMA to use the Store and Forward mode
161 instead of the Threshold. 162 instead of the Threshold.
163 o force_thresh_dma_mode: force DMA to use the Threshold mode other than
164 the Store and Forward mode.
162 o riwt_off: force to disable the RX watchdog feature and switch to NAPI mode. 165 o riwt_off: force to disable the RX watchdog feature and switch to NAPI mode.
163 o fix_mac_speed: this callback is used for modifying some syscfg registers 166 o fix_mac_speed: this callback is used for modifying some syscfg registers
164 (on ST SoCs) according to the link speed negotiated by the 167 (on ST SoCs) according to the link speed negotiated by the
@@ -172,7 +175,7 @@ Where:
172 registers. 175 registers.
173 o custom_cfg/custom_data: this is a custom configuration that can be passed 176 o custom_cfg/custom_data: this is a custom configuration that can be passed
174 while initializing the resources. 177 while initializing the resources.
175 o bsp_priv: another private poiter. 178 o bsp_priv: another private pointer.
176 179
177For MDIO bus The we have: 180For MDIO bus The we have:
178 181
@@ -268,7 +271,7 @@ reset procedure etc).
268 o dwmac1000_dma.c: dma functions for the GMAC chip; 271 o dwmac1000_dma.c: dma functions for the GMAC chip;
269 o dwmac1000.h: specific header file for the GMAC; 272 o dwmac1000.h: specific header file for the GMAC;
270 o dwmac100_core: MAC 100 core and dma code; 273 o dwmac100_core: MAC 100 core and dma code;
271 o dwmac100_dma.c: dma funtions for the MAC chip; 274 o dwmac100_dma.c: dma functions for the MAC chip;
272 o dwmac1000.h: specific header file for the MAC; 275 o dwmac1000.h: specific header file for the MAC;
273 o dwmac_lib.c: generic DMA functions shared among chips; 276 o dwmac_lib.c: generic DMA functions shared among chips;
274 o enh_desc.c: functions for handling enhanced descriptors; 277 o enh_desc.c: functions for handling enhanced descriptors;
@@ -361,4 +364,4 @@ Auto-negotiated Link Parter Ability.
36110) TODO: 36410) TODO:
362 o XGMAC is not supported. 365 o XGMAC is not supported.
363 o Complete the TBI & RTBI support. 366 o Complete the TBI & RTBI support.
364 o extened VLAN support for 3.70a SYNP GMAC. 367 o extend VLAN support for 3.70a SYNP GMAC.
diff --git a/Documentation/networking/tproxy.txt b/Documentation/networking/tproxy.txt
index 7b5996d9357e..ec11429e1d42 100644
--- a/Documentation/networking/tproxy.txt
+++ b/Documentation/networking/tproxy.txt
@@ -2,9 +2,8 @@ Transparent proxy support
2========================= 2=========================
3 3
4This feature adds Linux 2.2-like transparent proxy support to current kernels. 4This feature adds Linux 2.2-like transparent proxy support to current kernels.
5To use it, enable NETFILTER_TPROXY, the socket match and the TPROXY target in 5To use it, enable the socket match and the TPROXY target in your kernel config.
6your kernel config. You will need policy routing too, so be sure to enable that 6You will need policy routing too, so be sure to enable that as well.
7as well.
8 7
9 8
101. Making non-local sockets work 91. Making non-local sockets work
diff --git a/Documentation/networking/vortex.txt b/Documentation/networking/vortex.txt
index 9a8041dcbb53..97282da82b75 100644
--- a/Documentation/networking/vortex.txt
+++ b/Documentation/networking/vortex.txt
@@ -68,7 +68,7 @@ Module parameters
68 68
69There are several parameters which may be provided to the driver when 69There are several parameters which may be provided to the driver when
70its module is loaded. These are usually placed in /etc/modprobe.d/*.conf 70its module is loaded. These are usually placed in /etc/modprobe.d/*.conf
71configuretion files. Example: 71configuration files. Example:
72 72
73options 3c59x debug=3 rx_copybreak=300 73options 3c59x debug=3 rx_copybreak=300
74 74
@@ -178,7 +178,7 @@ max_interrupt_work=N
178 178
179 The driver's interrupt service routine can handle many receive and 179 The driver's interrupt service routine can handle many receive and
180 transmit packets in a single invocation. It does this in a loop. 180 transmit packets in a single invocation. It does this in a loop.
181 The value of max_interrupt_work governs how mnay times the interrupt 181 The value of max_interrupt_work governs how many times the interrupt
182 service routine will loop. The default value is 32 loops. If this 182 service routine will loop. The default value is 32 loops. If this
183 is exceeded the interrupt service routine gives up and generates a 183 is exceeded the interrupt service routine gives up and generates a
184 warning message "eth0: Too much work in interrupt". 184 warning message "eth0: Too much work in interrupt".
diff --git a/Documentation/networking/x25-iface.txt b/Documentation/networking/x25-iface.txt
index 78f662ee0622..7f213b556e85 100644
--- a/Documentation/networking/x25-iface.txt
+++ b/Documentation/networking/x25-iface.txt
@@ -105,7 +105,7 @@ reduced by the following measures or a combination thereof:
105 later. 105 later.
106 The lapb module interface was modified to support this. Its 106 The lapb module interface was modified to support this. Its
107 data_indication() method should now transparently pass the 107 data_indication() method should now transparently pass the
108 netif_rx() return value to the (lapb mopdule) caller. 108 netif_rx() return value to the (lapb module) caller.
109(2) Drivers for kernel versions 2.2.x should always check the global 109(2) Drivers for kernel versions 2.2.x should always check the global
110 variable netdev_dropping when a new frame is received. The driver 110 variable netdev_dropping when a new frame is received. The driver
111 should only call netif_rx() if netdev_dropping is zero. Otherwise 111 should only call netif_rx() if netdev_dropping is zero. Otherwise
diff --git a/Documentation/phy.txt b/Documentation/phy.txt
new file mode 100644
index 000000000000..0103e4b15b0e
--- /dev/null
+++ b/Documentation/phy.txt
@@ -0,0 +1,166 @@
1 PHY SUBSYSTEM
2 Kishon Vijay Abraham I <kishon@ti.com>
3
4This document explains the Generic PHY Framework along with the APIs provided,
5and how-to-use.
6
71. Introduction
8
9*PHY* is the abbreviation for physical layer. It is used to connect a device
10to the physical medium e.g., the USB controller has a PHY to provide functions
11such as serialization, de-serialization, encoding, decoding and is responsible
12for obtaining the required data transmission rate. Note that some USB
13controllers have PHY functionality embedded into it and others use an external
14PHY. Other peripherals that use PHY include Wireless LAN, Ethernet,
15SATA etc.
16
17The intention of creating this framework is to bring the PHY drivers spread
18all over the Linux kernel to drivers/phy to increase code re-use and for
19better code maintainability.
20
21This framework will be of use only to devices that use external PHY (PHY
22functionality is not embedded within the controller).
23
242. Registering/Unregistering the PHY provider
25
26PHY provider refers to an entity that implements one or more PHY instances.
27For the simple case where the PHY provider implements only a single instance of
28the PHY, the framework provides its own implementation of of_xlate in
29of_phy_simple_xlate. If the PHY provider implements multiple instances, it
30should provide its own implementation of of_xlate. of_xlate is used only for
31dt boot case.
32
33#define of_phy_provider_register(dev, xlate) \
34 __of_phy_provider_register((dev), THIS_MODULE, (xlate))
35
36#define devm_of_phy_provider_register(dev, xlate) \
37 __devm_of_phy_provider_register((dev), THIS_MODULE, (xlate))
38
39of_phy_provider_register and devm_of_phy_provider_register macros can be used to
40register the phy_provider and it takes device and of_xlate as
41arguments. For the dt boot case, all PHY providers should use one of the above
422 macros to register the PHY provider.
43
44void devm_of_phy_provider_unregister(struct device *dev,
45 struct phy_provider *phy_provider);
46void of_phy_provider_unregister(struct phy_provider *phy_provider);
47
48devm_of_phy_provider_unregister and of_phy_provider_unregister can be used to
49unregister the PHY.
50
513. Creating the PHY
52
53The PHY driver should create the PHY in order for other peripheral controllers
54to make use of it. The PHY framework provides 2 APIs to create the PHY.
55
56struct phy *phy_create(struct device *dev, const struct phy_ops *ops,
57 struct phy_init_data *init_data);
58struct phy *devm_phy_create(struct device *dev, const struct phy_ops *ops,
59 struct phy_init_data *init_data);
60
61The PHY drivers can use one of the above 2 APIs to create the PHY by passing
62the device pointer, phy ops and init_data.
63phy_ops is a set of function pointers for performing PHY operations such as
64init, exit, power_on and power_off. *init_data* is mandatory to get a reference
65to the PHY in the case of non-dt boot. See section *Board File Initialization*
66on how init_data should be used.
67
68Inorder to dereference the private data (in phy_ops), the phy provider driver
69can use phy_set_drvdata() after creating the PHY and use phy_get_drvdata() in
70phy_ops to get back the private data.
71
724. Getting a reference to the PHY
73
74Before the controller can make use of the PHY, it has to get a reference to
75it. This framework provides the following APIs to get a reference to the PHY.
76
77struct phy *phy_get(struct device *dev, const char *string);
78struct phy *devm_phy_get(struct device *dev, const char *string);
79
80phy_get and devm_phy_get can be used to get the PHY. In the case of dt boot,
81the string arguments should contain the phy name as given in the dt data and
82in the case of non-dt boot, it should contain the label of the PHY.
83The only difference between the two APIs is that devm_phy_get associates the
84device with the PHY using devres on successful PHY get. On driver detach,
85release function is invoked on the the devres data and devres data is freed.
86
875. Releasing a reference to the PHY
88
89When the controller no longer needs the PHY, it has to release the reference
90to the PHY it has obtained using the APIs mentioned in the above section. The
91PHY framework provides 2 APIs to release a reference to the PHY.
92
93void phy_put(struct phy *phy);
94void devm_phy_put(struct device *dev, struct phy *phy);
95
96Both these APIs are used to release a reference to the PHY and devm_phy_put
97destroys the devres associated with this PHY.
98
996. Destroying the PHY
100
101When the driver that created the PHY is unloaded, it should destroy the PHY it
102created using one of the following 2 APIs.
103
104void phy_destroy(struct phy *phy);
105void devm_phy_destroy(struct device *dev, struct phy *phy);
106
107Both these APIs destroy the PHY and devm_phy_destroy destroys the devres
108associated with this PHY.
109
1107. PM Runtime
111
112This subsystem is pm runtime enabled. So while creating the PHY,
113pm_runtime_enable of the phy device created by this subsystem is called and
114while destroying the PHY, pm_runtime_disable is called. Note that the phy
115device created by this subsystem will be a child of the device that calls
116phy_create (PHY provider device).
117
118So pm_runtime_get_sync of the phy_device created by this subsystem will invoke
119pm_runtime_get_sync of PHY provider device because of parent-child relationship.
120It should also be noted that phy_power_on and phy_power_off performs
121phy_pm_runtime_get_sync and phy_pm_runtime_put respectively.
122There are exported APIs like phy_pm_runtime_get, phy_pm_runtime_get_sync,
123phy_pm_runtime_put, phy_pm_runtime_put_sync, phy_pm_runtime_allow and
124phy_pm_runtime_forbid for performing PM operations.
125
1268. Board File Initialization
127
128Certain board file initialization is necessary in order to get a reference
129to the PHY in the case of non-dt boot.
130Say we have a single device that implements 3 PHYs that of USB, SATA and PCIe,
131then in the board file the following initialization should be done.
132
133struct phy_consumer consumers[] = {
134 PHY_CONSUMER("dwc3.0", "usb"),
135 PHY_CONSUMER("pcie.0", "pcie"),
136 PHY_CONSUMER("sata.0", "sata"),
137};
138PHY_CONSUMER takes 2 parameters, first is the device name of the controller
139(PHY consumer) and second is the port name.
140
141struct phy_init_data init_data = {
142 .consumers = consumers,
143 .num_consumers = ARRAY_SIZE(consumers),
144};
145
146static const struct platform_device pipe3_phy_dev = {
147 .name = "pipe3-phy",
148 .id = -1,
149 .dev = {
150 .platform_data = {
151 .init_data = &init_data,
152 },
153 },
154};
155
156then, while doing phy_create, the PHY driver should pass this init_data
157 phy_create(dev, ops, pdata->init_data);
158
159and the controller driver (phy consumer) should pass the port name along with
160the device to get a reference to the PHY
161 phy_get(dev, "pcie");
162
1639. DeviceTree Binding
164
165The documentation for PHY dt binding can be found @
166Documentation/devicetree/bindings/phy/phy-bindings.txt
diff --git a/Documentation/pinctrl.txt b/Documentation/pinctrl.txt
index 052e13af2d38..a7929cb47e7c 100644
--- a/Documentation/pinctrl.txt
+++ b/Documentation/pinctrl.txt
@@ -81,7 +81,7 @@ int __init foo_probe(void)
81 struct pinctrl_dev *pctl; 81 struct pinctrl_dev *pctl;
82 82
83 pctl = pinctrl_register(&foo_desc, <PARENT>, NULL); 83 pctl = pinctrl_register(&foo_desc, <PARENT>, NULL);
84 if (IS_ERR(pctl)) 84 if (!pctl)
85 pr_err("could not register foo pin driver\n"); 85 pr_err("could not register foo pin driver\n");
86} 86}
87 87
@@ -358,7 +358,12 @@ static struct pinctrl_gpio_range gpio_range = {
358 .gc = &chip; 358 .gc = &chip;
359}; 359};
360 360
361In this case the pin_base property will be ignored. 361In this case the pin_base property will be ignored. If the name of a pin
362group is known, the pins and npins elements of the above structure can be
363initialised using the function pinctrl_get_group_pins(), e.g. for pin
364group "foo":
365
366pinctrl_get_group_pins(pctl, "foo", &gpio_range.pins, &gpio_range.npins);
362 367
363When GPIO-specific functions in the pin control subsystem are called, these 368When GPIO-specific functions in the pin control subsystem are called, these
364ranges will be used to look up the appropriate pin controller by inspecting 369ranges will be used to look up the appropriate pin controller by inspecting
@@ -795,18 +800,97 @@ special GPIO-handler is registered.
795GPIO mode pitfalls 800GPIO mode pitfalls
796================== 801==================
797 802
798Sometime the developer may be confused by a datasheet talking about a pin 803Due to the naming conventions used by hardware engineers, where "GPIO"
799being possible to set into "GPIO mode". It appears that what hardware 804is taken to mean different things than what the kernel does, the developer
800engineers mean with "GPIO mode" is not necessarily the use case that is 805may be confused by a datasheet talking about a pin being possible to set
801implied in the kernel interface <linux/gpio.h>: a pin that you grab from 806into "GPIO mode". It appears that what hardware engineers mean with
802kernel code and then either listen for input or drive high/low to 807"GPIO mode" is not necessarily the use case that is implied in the kernel
803assert/deassert some external line. 808interface <linux/gpio.h>: a pin that you grab from kernel code and then
809either listen for input or drive high/low to assert/deassert some
810external line.
804 811
805Rather hardware engineers think that "GPIO mode" means that you can 812Rather hardware engineers think that "GPIO mode" means that you can
806software-control a few electrical properties of the pin that you would 813software-control a few electrical properties of the pin that you would
807not be able to control if the pin was in some other mode, such as muxed in 814not be able to control if the pin was in some other mode, such as muxed in
808for a device. 815for a device.
809 816
817The GPIO portions of a pin and its relation to a certain pin controller
818configuration and muxing logic can be constructed in several ways. Here
819are two examples:
820
821(A)
822 pin config
823 logic regs
824 | +- SPI
825 Physical pins --- pad --- pinmux -+- I2C
826 | +- mmc
827 | +- GPIO
828 pin
829 multiplex
830 logic regs
831
832Here some electrical properties of the pin can be configured no matter
833whether the pin is used for GPIO or not. If you multiplex a GPIO onto a
834pin, you can also drive it high/low from "GPIO" registers.
835Alternatively, the pin can be controlled by a certain peripheral, while
836still applying desired pin config properties. GPIO functionality is thus
837orthogonal to any other device using the pin.
838
839In this arrangement the registers for the GPIO portions of the pin controller,
840or the registers for the GPIO hardware module are likely to reside in a
841separate memory range only intended for GPIO driving, and the register
842range dealing with pin config and pin multiplexing get placed into a
843different memory range and a separate section of the data sheet.
844
845(B)
846
847 pin config
848 logic regs
849 | +- SPI
850 Physical pins --- pad --- pinmux -+- I2C
851 | | +- mmc
852 | |
853 GPIO pin
854 multiplex
855 logic regs
856
857In this arrangement, the GPIO functionality can always be enabled, such that
858e.g. a GPIO input can be used to "spy" on the SPI/I2C/MMC signal while it is
859pulsed out. It is likely possible to disrupt the traffic on the pin by doing
860wrong things on the GPIO block, as it is never really disconnected. It is
861possible that the GPIO, pin config and pin multiplex registers are placed into
862the same memory range and the same section of the data sheet, although that
863need not be the case.
864
865From a kernel point of view, however, these are different aspects of the
866hardware and shall be put into different subsystems:
867
868- Registers (or fields within registers) that control electrical
869 properties of the pin such as biasing and drive strength should be
870 exposed through the pinctrl subsystem, as "pin configuration" settings.
871
872- Registers (or fields within registers) that control muxing of signals
873 from various other HW blocks (e.g. I2C, MMC, or GPIO) onto pins should
874 be exposed through the pinctrl subssytem, as mux functions.
875
876- Registers (or fields within registers) that control GPIO functionality
877 such as setting a GPIO's output value, reading a GPIO's input value, or
878 setting GPIO pin direction should be exposed through the GPIO subsystem,
879 and if they also support interrupt capabilities, through the irqchip
880 abstraction.
881
882Depending on the exact HW register design, some functions exposed by the
883GPIO subsystem may call into the pinctrl subsystem in order to
884co-ordinate register settings across HW modules. In particular, this may
885be needed for HW with separate GPIO and pin controller HW modules, where
886e.g. GPIO direction is determined by a register in the pin controller HW
887module rather than the GPIO HW module.
888
889Electrical properties of the pin such as biasing and drive strength
890may be placed at some pin-specific register in all cases or as part
891of the GPIO register in case (B) especially. This doesn't mean that such
892properties necessarily pertain to what the Linux kernel calls "GPIO".
893
810Example: a pin is usually muxed in to be used as a UART TX line. But during 894Example: a pin is usually muxed in to be used as a UART TX line. But during
811system sleep, we need to put this pin into "GPIO mode" and ground it. 895system sleep, we need to put this pin into "GPIO mode" and ground it.
812 896
@@ -856,7 +940,7 @@ static unsigned long uart_sleep_mode[] = {
856 PIN_CONF_PACKED(PIN_CONFIG_OUTPUT, 0), 940 PIN_CONF_PACKED(PIN_CONFIG_OUTPUT, 0),
857}; 941};
858 942
859static struct pinctrl_map __initdata pinmap[] = { 943static struct pinctrl_map pinmap[] __initdata = {
860 PIN_MAP_MUX_GROUP("uart", PINCTRL_STATE_DEFAULT, "pinctrl-foo", 944 PIN_MAP_MUX_GROUP("uart", PINCTRL_STATE_DEFAULT, "pinctrl-foo",
861 "u0_group", "u0"), 945 "u0_group", "u0"),
862 PIN_MAP_CONFIGS_PIN("uart", PINCTRL_STATE_DEFAULT, "pinctrl-foo", 946 PIN_MAP_CONFIGS_PIN("uart", PINCTRL_STATE_DEFAULT, "pinctrl-foo",
@@ -951,7 +1035,7 @@ Since the above construct is pretty common there is a helper macro to make
951it even more compact which assumes you want to use pinctrl-foo and position 1035it even more compact which assumes you want to use pinctrl-foo and position
9520 for mapping, for example: 10360 for mapping, for example:
953 1037
954static struct pinctrl_map __initdata mapping[] = { 1038static struct pinctrl_map mapping[] __initdata = {
955 PIN_MAP_MUX_GROUP("foo-i2c.o", PINCTRL_STATE_DEFAULT, "pinctrl-foo", NULL, "i2c0"), 1039 PIN_MAP_MUX_GROUP("foo-i2c.o", PINCTRL_STATE_DEFAULT, "pinctrl-foo", NULL, "i2c0"),
956}; 1040};
957 1041
@@ -970,7 +1054,7 @@ static unsigned long i2c_pin_configs[] = {
970 FOO_SLEW_RATE_SLOW, 1054 FOO_SLEW_RATE_SLOW,
971}; 1055};
972 1056
973static struct pinctrl_map __initdata mapping[] = { 1057static struct pinctrl_map mapping[] __initdata = {
974 PIN_MAP_MUX_GROUP("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0", "i2c0"), 1058 PIN_MAP_MUX_GROUP("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0", "i2c0"),
975 PIN_MAP_CONFIGS_GROUP("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0", i2c_grp_configs), 1059 PIN_MAP_CONFIGS_GROUP("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0", i2c_grp_configs),
976 PIN_MAP_CONFIGS_PIN("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0scl", i2c_pin_configs), 1060 PIN_MAP_CONFIGS_PIN("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0scl", i2c_pin_configs),
@@ -984,7 +1068,7 @@ order to explicitly indicate that the states were provided and intended to
984be empty. Table entry macro PIN_MAP_DUMMY_STATE serves the purpose of defining 1068be empty. Table entry macro PIN_MAP_DUMMY_STATE serves the purpose of defining
985a named state without causing any pin controller to be programmed: 1069a named state without causing any pin controller to be programmed:
986 1070
987static struct pinctrl_map __initdata mapping[] = { 1071static struct pinctrl_map mapping[] __initdata = {
988 PIN_MAP_DUMMY_STATE("foo-i2c.0", PINCTRL_STATE_DEFAULT), 1072 PIN_MAP_DUMMY_STATE("foo-i2c.0", PINCTRL_STATE_DEFAULT),
989}; 1073};
990 1074
diff --git a/Documentation/power/basic-pm-debugging.txt b/Documentation/power/basic-pm-debugging.txt
index 262acf56fa79..e9b54de8fdf7 100644
--- a/Documentation/power/basic-pm-debugging.txt
+++ b/Documentation/power/basic-pm-debugging.txt
@@ -179,7 +179,7 @@ use the PM_TRACE mechanism documented in Documentation/power/s2ram.txt .
179 179
180To verify that the STR works, it is generally more convenient to use the s2ram 180To verify that the STR works, it is generally more convenient to use the s2ram
181tool available from http://suspend.sf.net and documented at 181tool available from http://suspend.sf.net and documented at
182http://en.opensuse.org/SDB:Suspend_to_RAM. 182http://en.opensuse.org/SDB:Suspend_to_RAM (S2RAM_LINK).
183 183
184Namely, after writing "freezer", "devices", "platform", "processors", or "core" 184Namely, after writing "freezer", "devices", "platform", "processors", or "core"
185into /sys/power/pm_test (available if the kernel is compiled with 185into /sys/power/pm_test (available if the kernel is compiled with
@@ -194,10 +194,10 @@ Among other things, the testing with the help of /sys/power/pm_test may allow
194you to identify drivers that fail to suspend or resume their devices. They 194you to identify drivers that fail to suspend or resume their devices. They
195should be unloaded every time before an STR transition. 195should be unloaded every time before an STR transition.
196 196
197Next, you can follow the instructions at http://en.opensuse.org/s2ram to test 197Next, you can follow the instructions at S2RAM_LINK to test the system, but if
198the system, but if it does not work "out of the box", you may need to boot it 198it does not work "out of the box", you may need to boot it with
199with "init=/bin/bash" and test s2ram in the minimal configuration. In that 199"init=/bin/bash" and test s2ram in the minimal configuration. In that case,
200case, you may be able to search for failing drivers by following the procedure 200you may be able to search for failing drivers by following the procedure
201analogous to the one described in section 1. If you find some failing drivers, 201analogous to the one described in section 1. If you find some failing drivers,
202you will have to unload them every time before an STR transition (ie. before 202you will have to unload them every time before an STR transition (ie. before
203you run s2ram), and please report the problems with them. 203you run s2ram), and please report the problems with them.
diff --git a/Documentation/power/swsusp.txt b/Documentation/power/swsusp.txt
index 0b4b63e7e9b6..079160e22bcc 100644
--- a/Documentation/power/swsusp.txt
+++ b/Documentation/power/swsusp.txt
@@ -50,6 +50,19 @@ echo N > /sys/power/image_size
50 50
51before suspend (it is limited to 500 MB by default). 51before suspend (it is limited to 500 MB by default).
52 52
53. The resume process checks for the presence of the resume device,
54if found, it then checks the contents for the hibernation image signature.
55If both are found, it resumes the hibernation image.
56
57. The resume process may be triggered in two ways:
58 1) During lateinit: If resume=/dev/your_swap_partition is specified on
59 the kernel command line, lateinit runs the resume process. If the
60 resume device has not been probed yet, the resume process fails and
61 bootup continues.
62 2) Manually from an initrd or initramfs: May be run from
63 the init script by using the /sys/power/resume file. It is vital
64 that this be done prior to remounting any filesystems (even as
65 read-only) otherwise data may be corrupted.
53 66
54Article about goals and implementation of Software Suspend for Linux 67Article about goals and implementation of Software Suspend for Linux
55~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 68~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -326,7 +339,7 @@ Q: How can distributions ship a swsusp-supporting kernel with modular
326disk drivers (especially SATA)? 339disk drivers (especially SATA)?
327 340
328A: Well, it can be done, load the drivers, then do echo into 341A: Well, it can be done, load the drivers, then do echo into
329/sys/power/disk/resume file from initrd. Be sure not to mount 342/sys/power/resume file from initrd. Be sure not to mount
330anything, not even read-only mount, or you are going to lose your 343anything, not even read-only mount, or you are going to lose your
331data. 344data.
332 345
diff --git a/Documentation/powerpc/00-INDEX b/Documentation/powerpc/00-INDEX
index 05026ce1875e..6db73df04278 100644
--- a/Documentation/powerpc/00-INDEX
+++ b/Documentation/powerpc/00-INDEX
@@ -5,13 +5,20 @@ please mail me.
5 5
600-INDEX 600-INDEX
7 - this file 7 - this file
8bootwrapper.txt
9 - Information on how the powerpc kernel is wrapped for boot on various
10 different platforms.
8cpu_features.txt 11cpu_features.txt
9 - info on how we support a variety of CPUs with minimal compile-time 12 - info on how we support a variety of CPUs with minimal compile-time
10 options. 13 options.
11eeh-pci-error-recovery.txt 14eeh-pci-error-recovery.txt
12 - info on PCI Bus EEH Error Recovery 15 - info on PCI Bus EEH Error Recovery
16firmware-assisted-dump.txt
17 - Documentation on the firmware assisted dump mechanism "fadump".
13hvcs.txt 18hvcs.txt
14 - IBM "Hypervisor Virtual Console Server" Installation Guide 19 - IBM "Hypervisor Virtual Console Server" Installation Guide
20kvm_440.txt
21 - Various notes on the implementation of KVM for PowerPC 440.
15mpc52xx.txt 22mpc52xx.txt
16 - Linux 2.6.x on MPC52xx family 23 - Linux 2.6.x on MPC52xx family
17pmu-ebb.txt 24pmu-ebb.txt
@@ -19,3 +26,7 @@ pmu-ebb.txt
19qe_firmware.txt 26qe_firmware.txt
20 - describes the layout of firmware binaries for the Freescale QUICC 27 - describes the layout of firmware binaries for the Freescale QUICC
21 Engine and the code that parses and uploads the microcode therein. 28 Engine and the code that parses and uploads the microcode therein.
29ptrace.txt
30 - Information on the ptrace interfaces for hardware debug registers.
31transactional_memory.txt
32 - Overview of the Power8 transactional memory support.
diff --git a/Documentation/pps/pps.txt b/Documentation/pps/pps.txt
index d35dcdd82ff6..c03b1be5eb15 100644
--- a/Documentation/pps/pps.txt
+++ b/Documentation/pps/pps.txt
@@ -66,6 +66,21 @@ In LinuxPPS the PPS sources are simply char devices usually mapped
66into files /dev/pps0, /dev/pps1, etc.. 66into files /dev/pps0, /dev/pps1, etc..
67 67
68 68
69PPS with USB to serial devices
70------------------------------
71
72It is possible to grab the PPS from an USB to serial device. However,
73you should take into account the latencies and jitter introduced by
74the USB stack. Users has reported clock instability around +-1ms when
75synchronized with PPS through USB. This isn't suited for time server
76synchronization.
77
78If your device doesn't report PPS, you can check that the feature is
79supported by its driver. Most of the time, you only need to add a call
80to usb_serial_handle_dcd_change after checking the DCD status (see
81ch341 and pl2303 examples).
82
83
69Coding example 84Coding example
70-------------- 85--------------
71 86
diff --git a/Documentation/printk-formats.txt b/Documentation/printk-formats.txt
index 3e8cb73ac43c..445ad743ec81 100644
--- a/Documentation/printk-formats.txt
+++ b/Documentation/printk-formats.txt
@@ -97,7 +97,7 @@ IPv4 addresses:
97 97
98 %pI4 1.2.3.4 98 %pI4 1.2.3.4
99 %pi4 001.002.003.004 99 %pi4 001.002.003.004
100 %p[Ii][hnbl] 100 %p[Ii]4[hnbl]
101 101
102 For printing IPv4 dot-separated decimal addresses. The 'I4' and 'i4' 102 For printing IPv4 dot-separated decimal addresses. The 'I4' and 'i4'
103 specifiers result in a printed address with ('i4') or without ('I4') 103 specifiers result in a printed address with ('i4') or without ('I4')
@@ -168,6 +168,15 @@ UUID/GUID addresses:
168 Where no additional specifiers are used the default little endian 168 Where no additional specifiers are used the default little endian
169 order with lower case hex characters will be printed. 169 order with lower case hex characters will be printed.
170 170
171dentry names:
172 %pd{,2,3,4}
173 %pD{,2,3,4}
174
175 For printing dentry name; if we race with d_move(), the name might be
176 a mix of old and new ones, but it won't oops. %pd dentry is a safer
177 equivalent of %s dentry->d_name.name we used to use, %pd<n> prints
178 n last components. %pD does the same thing for struct file.
179
171struct va_format: 180struct va_format:
172 181
173 %pV 182 %pV
@@ -185,11 +194,11 @@ struct va_format:
185 194
186u64 SHOULD be printed with %llu/%llx, (unsigned long long): 195u64 SHOULD be printed with %llu/%llx, (unsigned long long):
187 196
188 printk("%llu", (unsigned long long)u64_var); 197 printk("%llu", u64_var);
189 198
190s64 SHOULD be printed with %lld/%llx, (long long): 199s64 SHOULD be printed with %lld/%llx, (long long):
191 200
192 printk("%lld", (long long)s64_var); 201 printk("%lld", s64_var);
193 202
194If <type> is dependent on a config option for its size (e.g., sector_t, 203If <type> is dependent on a config option for its size (e.g., sector_t,
195blkcnt_t) or is architecture-dependent for its size (e.g., tcflag_t), use a 204blkcnt_t) or is architecture-dependent for its size (e.g., tcflag_t), use a
diff --git a/Documentation/rapidio/rapidio.txt b/Documentation/rapidio/rapidio.txt
index 717f5aa388b1..28fbd877f85a 100644
--- a/Documentation/rapidio/rapidio.txt
+++ b/Documentation/rapidio/rapidio.txt
@@ -300,7 +300,7 @@ initialization.
300------------------------------------------- 300-------------------------------------------
301 301
302RapidIO subsystem code organization allows addition of new enumeration/discovery 302RapidIO subsystem code organization allows addition of new enumeration/discovery
303methods as new configuration options without significant impact to to the core 303methods as new configuration options without significant impact to the core
304RapidIO code. 304RapidIO code.
305 305
306A new enumeration/discovery method has to be attached to one or more mport 306A new enumeration/discovery method has to be attached to one or more mport
diff --git a/Documentation/s390/s390dbf.txt b/Documentation/s390/s390dbf.txt
index fcaf0b4efba2..3da163383c93 100644
--- a/Documentation/s390/s390dbf.txt
+++ b/Documentation/s390/s390dbf.txt
@@ -158,6 +158,16 @@ Return Value: none
158Description: Sets new actual debug level if new_level is valid. 158Description: Sets new actual debug level if new_level is valid.
159 159
160--------------------------------------------------------------------------- 160---------------------------------------------------------------------------
161bool debug_level_enabled (debug_info_t * id, int level);
162
163Parameter: id: handle for debug log
164 level: debug level
165
166Return Value: True if level is less or equal to the current debug level.
167
168Description: Returns true if debug events for the specified level would be
169 logged. Otherwise returns false.
170---------------------------------------------------------------------------
161void debug_stop_all(void); 171void debug_stop_all(void);
162 172
163Parameter: none 173Parameter: none
diff --git a/Documentation/scheduler/sched-arch.txt b/Documentation/scheduler/sched-arch.txt
index b1b8587b86f0..9290de703450 100644
--- a/Documentation/scheduler/sched-arch.txt
+++ b/Documentation/scheduler/sched-arch.txt
@@ -65,11 +65,6 @@ Possible arch/ problems
65 65
66Possible arch problems I found (and either tried to fix or didn't): 66Possible arch problems I found (and either tried to fix or didn't):
67 67
68h8300 - Is such sleeping racy vs interrupts? (See #4a).
69 The H8/300 manual I found indicates yes, however disabling IRQs
70 over the sleep mean only NMIs can wake it up, so can't fix easily
71 without doing spin waiting.
72
73ia64 - is safe_halt call racy vs interrupts? (does it sleep?) (See #4a) 68ia64 - is safe_halt call racy vs interrupts? (does it sleep?) (See #4a)
74 69
75sh64 - Is sleeping racy vs interrupts? (See #4a) 70sh64 - Is sleeping racy vs interrupts? (See #4a)
diff --git a/Documentation/scheduler/sched-design-CFS.txt b/Documentation/scheduler/sched-design-CFS.txt
index d529e02d928d..f14f49304222 100644
--- a/Documentation/scheduler/sched-design-CFS.txt
+++ b/Documentation/scheduler/sched-design-CFS.txt
@@ -66,9 +66,7 @@ rq->cfs.load value, which is the sum of the weights of the tasks queued on the
66runqueue. 66runqueue.
67 67
68CFS maintains a time-ordered rbtree, where all runnable tasks are sorted by the 68CFS maintains a time-ordered rbtree, where all runnable tasks are sorted by the
69p->se.vruntime key (there is a subtraction using rq->cfs.min_vruntime to 69p->se.vruntime key. CFS picks the "leftmost" task from this tree and sticks to it.
70account for possible wraparounds). CFS picks the "leftmost" task from this
71tree and sticks to it.
72As the system progresses forwards, the executed tasks are put into the tree 70As the system progresses forwards, the executed tasks are put into the tree
73more and more to the right --- slowly but surely giving a chance for every task 71more and more to the right --- slowly but surely giving a chance for every task
74to become the "leftmost task" and thus get on the CPU within a deterministic 72to become the "leftmost task" and thus get on the CPU within a deterministic
diff --git a/Documentation/scsi/ChangeLog.megaraid_sas b/Documentation/scsi/ChangeLog.megaraid_sas
index cc92ca8c8963..6edaa65b0818 100644
--- a/Documentation/scsi/ChangeLog.megaraid_sas
+++ b/Documentation/scsi/ChangeLog.megaraid_sas
@@ -1,3 +1,13 @@
1Release Date : Sat. Aug 31, 2013 17:00:00 PST 2013 -
2 (emaild-id:megaraidlinux@lsi.com)
3 Adam Radford
4 Kashyap Desai
5 Sumit Saxena
6Current Version : 06.700.06.00-rc1
7Old Version : 06.600.18.00-rc1
8 1. Add High Availability clustering support using shared Logical Disks.
9 2. Version and Changelog update.
10-------------------------------------------------------------------------------
1Release Date : Wed. May 15, 2013 17:00:00 PST 2013 - 11Release Date : Wed. May 15, 2013 17:00:00 PST 2013 -
2 (emaild-id:megaraidlinux@lsi.com) 12 (emaild-id:megaraidlinux@lsi.com)
3 Adam Radford 13 Adam Radford
diff --git a/Documentation/scsi/LICENSE.qla4xxx b/Documentation/scsi/LICENSE.qla4xxx
index 78c169f0d7c6..fcc27ad27d74 100644
--- a/Documentation/scsi/LICENSE.qla4xxx
+++ b/Documentation/scsi/LICENSE.qla4xxx
@@ -1,4 +1,4 @@
1Copyright (c) 2003-2012 QLogic Corporation 1Copyright (c) 2003-2013 QLogic Corporation
2QLogic Linux iSCSI Driver 2QLogic Linux iSCSI 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/scsi/hptiop.txt b/Documentation/scsi/hptiop.txt
index 4a4f47e759cd..12ecfd308e55 100644
--- a/Documentation/scsi/hptiop.txt
+++ b/Documentation/scsi/hptiop.txt
@@ -151,7 +151,7 @@ To send a request to the controller:
151 generated. 151 generated.
152 152
153 - The host read the outbound list copy pointer shadow register and compare 153 - The host read the outbound list copy pointer shadow register and compare
154 with previous saved read ponter N. If they are different, the host will 154 with previous saved read pointer N. If they are different, the host will
155 read the (N+1)th outbound list unit. 155 read the (N+1)th outbound list unit.
156 156
157 The host get the index of the request from the (N+1)th outbound list 157 The host get the index of the request from the (N+1)th outbound list
diff --git a/Documentation/serial/driver b/Documentation/serial/driver
index 067c47d46917..c3a7689a90e6 100644
--- a/Documentation/serial/driver
+++ b/Documentation/serial/driver
@@ -264,10 +264,6 @@ hardware.
264 Locking: none. 264 Locking: none.
265 Interrupts: caller dependent. 265 Interrupts: caller dependent.
266 266
267 set_wake(port,state)
268 Enable/disable power management wakeup on serial activity. Not
269 currently implemented.
270
271 type(port) 267 type(port)
272 Return a pointer to a string constant describing the specified 268 Return a pointer to a string constant describing the specified
273 port, or return NULL, in which case the string 'unknown' is 269 port, or return NULL, in which case the string 'unknown' is
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt
index 95731a08f257..b8dd0df76952 100644
--- a/Documentation/sound/alsa/ALSA-Configuration.txt
+++ b/Documentation/sound/alsa/ALSA-Configuration.txt
@@ -616,7 +616,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
616 616
617 As default, snd-dummy drivers doesn't allocate the real buffers 617 As default, snd-dummy drivers doesn't allocate the real buffers
618 but either ignores read/write or mmap a single dummy page to all 618 but either ignores read/write or mmap a single dummy page to all
619 buffer pages, in order to save the resouces. If your apps need 619 buffer pages, in order to save the resources. If your apps need
620 the read/ written buffer data to be consistent, pass fake_buffer=0 620 the read/ written buffer data to be consistent, pass fake_buffer=0
621 option. 621 option.
622 622
diff --git a/Documentation/sound/alsa/Audiophile-Usb.txt b/Documentation/sound/alsa/Audiophile-Usb.txt
index 654dd3b694a8..e7a5ed4dcae8 100644
--- a/Documentation/sound/alsa/Audiophile-Usb.txt
+++ b/Documentation/sound/alsa/Audiophile-Usb.txt
@@ -232,7 +232,7 @@ The parameter can be given:
232 # modprobe snd-usb-audio index=1 device_setup=0x09 232 # modprobe snd-usb-audio index=1 device_setup=0x09
233 233
234 * Or while configuring the modules options in your modules configuration file 234 * Or while configuring the modules options in your modules configuration file
235 (tipically a .conf file in /etc/modprobe.d/ directory: 235 (typically a .conf file in /etc/modprobe.d/ directory:
236 alias snd-card-1 snd-usb-audio 236 alias snd-card-1 snd-usb-audio
237 options snd-usb-audio index=1 device_setup=0x09 237 options snd-usb-audio index=1 device_setup=0x09
238 238
diff --git a/Documentation/sound/alsa/CMIPCI.txt b/Documentation/sound/alsa/CMIPCI.txt
index 16935c8561f7..4e36e6e809ca 100644
--- a/Documentation/sound/alsa/CMIPCI.txt
+++ b/Documentation/sound/alsa/CMIPCI.txt
@@ -87,7 +87,7 @@ with 4 channels,
87 87
88and use the interleaved 4 channel data. 88and use the interleaved 4 channel data.
89 89
90There are some control switchs affecting to the speaker connections: 90There are some control switches affecting to the speaker connections:
91 91
92"Line-In Mode" - an enum control to change the behavior of line-in 92"Line-In Mode" - an enum control to change the behavior of line-in
93 jack. Either "Line-In", "Rear Output" or "Bass Output" can 93 jack. Either "Line-In", "Rear Output" or "Bass Output" can
diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt
index 809d72b8eff1..85c362d8ea34 100644
--- a/Documentation/sound/alsa/HD-Audio-Models.txt
+++ b/Documentation/sound/alsa/HD-Audio-Models.txt
@@ -28,6 +28,7 @@ ALC269/270/275/276/28x/29x
28 alc269-dmic Enable ALC269(VA) digital mic workaround 28 alc269-dmic Enable ALC269(VA) digital mic workaround
29 alc271-dmic Enable ALC271X digital mic workaround 29 alc271-dmic Enable ALC271X digital mic workaround
30 inv-dmic Inverted internal mic workaround 30 inv-dmic Inverted internal mic workaround
31 headset-mic Indicates a combined headset (headphone+mic) jack
31 lenovo-dock Enables docking station I/O for some Lenovos 32 lenovo-dock Enables docking station I/O for some Lenovos
32 dell-headset-multi Headset jack, which can also be used as mic-in 33 dell-headset-multi Headset jack, which can also be used as mic-in
33 dell-headset-dock Headset jack (without mic-in), and also dock I/O 34 dell-headset-dock Headset jack (without mic-in), and also dock I/O
@@ -244,6 +245,7 @@ STAC9227/9228/9229/927x
244 5stack-no-fp D965 5stack without front panel 245 5stack-no-fp D965 5stack without front panel
245 dell-3stack Dell Dimension E520 246 dell-3stack Dell Dimension E520
246 dell-bios Fixes with Dell BIOS setup 247 dell-bios Fixes with Dell BIOS setup
248 dell-bios-amic Fixes with Dell BIOS setup including analog mic
247 volknob Fixes with volume-knob widget 0x24 249 volknob Fixes with volume-knob widget 0x24
248 auto BIOS setup (default) 250 auto BIOS setup (default)
249 251
@@ -295,6 +297,12 @@ Cirrus Logic CS4206/4207
295 imac27 IMac 27 Inch 297 imac27 IMac 27 Inch
296 auto BIOS setup (default) 298 auto BIOS setup (default)
297 299
300Cirrus Logic CS4208
301===================
302 mba6 MacBook Air 6,1 and 6,2
303 gpio0 Enable GPIO 0 amp
304 auto BIOS setup (default)
305
298VIA VT17xx/VT18xx/VT20xx 306VIA VT17xx/VT18xx/VT20xx
299======================== 307========================
300 auto BIOS setup (default) 308 auto BIOS setup (default)
diff --git a/Documentation/sound/alsa/HD-Audio.txt b/Documentation/sound/alsa/HD-Audio.txt
index c3c912d023cc..42a0a39b77e6 100644
--- a/Documentation/sound/alsa/HD-Audio.txt
+++ b/Documentation/sound/alsa/HD-Audio.txt
@@ -454,6 +454,8 @@ The generic parser supports the following hints:
454- need_dac_fix (bool): limits the DACs depending on the channel count 454- need_dac_fix (bool): limits the DACs depending on the channel count
455- primary_hp (bool): probe headphone jacks as the primary outputs; 455- primary_hp (bool): probe headphone jacks as the primary outputs;
456 default true 456 default true
457- multi_io (bool): try probing multi-I/O config (e.g. shared
458 line-in/surround, mic/clfe jacks)
457- multi_cap_vol (bool): provide multiple capture volumes 459- multi_cap_vol (bool): provide multiple capture volumes
458- inv_dmic_split (bool): provide split internal mic volume/switch for 460- inv_dmic_split (bool): provide split internal mic volume/switch for
459 phase-inverted digital mics 461 phase-inverted digital mics
diff --git a/Documentation/sound/alsa/README.maya44 b/Documentation/sound/alsa/README.maya44
index 0e41576fa13e..67b2ea1cc31d 100644
--- a/Documentation/sound/alsa/README.maya44
+++ b/Documentation/sound/alsa/README.maya44
@@ -120,7 +120,7 @@ Mic Phantom+48V: switch for +48V phantom power for electrostatic microphones on
120 Make sure this is not turned on while any other source is connected to input 1/2. 120 Make sure this is not turned on while any other source is connected to input 1/2.
121 It might damage the source and/or the maya44 card. 121 It might damage the source and/or the maya44 card.
122 122
123Mic/Line input: if switch is is on, input jack 1/2 is microphone input (mono), otherwise line input (stereo). 123Mic/Line input: if switch is on, input jack 1/2 is microphone input (mono), otherwise line input (stereo).
124 124
125Bypass: analogue bypass from ADC input to output for channel 1+2. Same as "Monitor" in the windows driver. 125Bypass: analogue bypass from ADC input to output for channel 1+2. Same as "Monitor" in the windows driver.
126Bypass 1: same for channel 3+4. 126Bypass 1: same for channel 3+4.
diff --git a/Documentation/sound/alsa/compress_offload.txt b/Documentation/sound/alsa/compress_offload.txt
index 0bcc55155911..630c492c3dc2 100644
--- a/Documentation/sound/alsa/compress_offload.txt
+++ b/Documentation/sound/alsa/compress_offload.txt
@@ -73,7 +73,7 @@ The main requirements are:
73 73
74Design 74Design
75 75
76The new API shares a number of concepts with with the PCM API for flow 76The new API shares a number of concepts with the PCM API for flow
77control. Start, pause, resume, drain and stop commands have the same 77control. Start, pause, resume, drain and stop commands have the same
78semantics no matter what the content is. 78semantics no matter what the content is.
79 79
@@ -130,7 +130,7 @@ the settings should remain the exception.
130The timestamp becomes a multiple field structure. It lists the number 130The timestamp becomes a multiple field structure. It lists the number
131of bytes transferred, the number of samples processed and the number 131of bytes transferred, the number of samples processed and the number
132of samples rendered/grabbed. All these values can be used to determine 132of samples rendered/grabbed. All these values can be used to determine
133the avarage bitrate, figure out if the ring buffer needs to be 133the average bitrate, figure out if the ring buffer needs to be
134refilled or the delay due to decoding/encoding/io on the DSP. 134refilled or the delay due to decoding/encoding/io on the DSP.
135 135
136Note that the list of codecs/profiles/modes was derived from the 136Note that the list of codecs/profiles/modes was derived from the
@@ -217,12 +217,12 @@ Not supported:
217 would be enabled with ALSA kcontrols. 217 would be enabled with ALSA kcontrols.
218 218
219- Audio policy/resource management. This API does not provide any 219- Audio policy/resource management. This API does not provide any
220 hooks to query the utilization of the audio DSP, nor any premption 220 hooks to query the utilization of the audio DSP, nor any preemption
221 mechanisms. 221 mechanisms.
222 222
223- No notion of underun/overrun. Since the bytes written are compressed 223- No notion of underrun/overrun. Since the bytes written are compressed
224 in nature and data written/read doesn't translate directly to 224 in nature and data written/read doesn't translate directly to
225 rendered output in time, this does not deal with underrun/overun and 225 rendered output in time, this does not deal with underrun/overrun and
226 maybe dealt in user-library 226 maybe dealt in user-library
227 227
228Credits: 228Credits:
diff --git a/Documentation/sound/alsa/soc/DPCM.txt b/Documentation/sound/alsa/soc/DPCM.txt
new file mode 100644
index 000000000000..0110180b7ac6
--- /dev/null
+++ b/Documentation/sound/alsa/soc/DPCM.txt
@@ -0,0 +1,380 @@
1Dynamic PCM
2===========
3
41. Description
5==============
6
7Dynamic PCM allows an ALSA PCM device to digitally route its PCM audio to
8various digital endpoints during the PCM stream runtime. e.g. PCM0 can route
9digital audio to I2S DAI0, I2S DAI1 or PDM DAI2. This is useful for on SoC DSP
10drivers that expose several ALSA PCMs and can route to multiple DAIs.
11
12The DPCM runtime routing is determined by the ALSA mixer settings in the same
13way as the analog signal is routed in an ASoC codec driver. DPCM uses a DAPM
14graph representing the DSP internal audio paths and uses the mixer settings to
15determine the patch used by each ALSA PCM.
16
17DPCM re-uses all the existing component codec, platform and DAI drivers without
18any modifications.
19
20
21Phone Audio System with SoC based DSP
22-------------------------------------
23
24Consider the following phone audio subsystem. This will be used in this
25document for all examples :-
26
27| Front End PCMs | SoC DSP | Back End DAIs | Audio devices |
28
29 *************
30PCM0 <------------> * * <----DAI0-----> Codec Headset
31 * *
32PCM1 <------------> * * <----DAI1-----> Codec Speakers
33 * DSP *
34PCM2 <------------> * * <----DAI2-----> MODEM
35 * *
36PCM3 <------------> * * <----DAI3-----> BT
37 * *
38 * * <----DAI4-----> DMIC
39 * *
40 * * <----DAI5-----> FM
41 *************
42
43This diagram shows a simple smart phone audio subsystem. It supports Bluetooth,
44FM digital radio, Speakers, Headset Jack, digital microphones and cellular
45modem. This sound card exposes 4 DSP front end (FE) ALSA PCM devices and
46supports 6 back end (BE) DAIs. Each FE PCM can digitally route audio data to any
47of the BE DAIs. The FE PCM devices can also route audio to more than 1 BE DAI.
48
49
50
51Example - DPCM Switching playback from DAI0 to DAI1
52---------------------------------------------------
53
54Audio is being played to the Headset. After a while the user removes the headset
55and audio continues playing on the speakers.
56
57Playback on PCM0 to Headset would look like :-
58
59 *************
60PCM0 <============> * * <====DAI0=====> Codec Headset
61 * *
62PCM1 <------------> * * <----DAI1-----> Codec Speakers
63 * DSP *
64PCM2 <------------> * * <----DAI2-----> MODEM
65 * *
66PCM3 <------------> * * <----DAI3-----> BT
67 * *
68 * * <----DAI4-----> DMIC
69 * *
70 * * <----DAI5-----> FM
71 *************
72
73The headset is removed from the jack by user so the speakers must now be used :-
74
75 *************
76PCM0 <============> * * <----DAI0-----> Codec Headset
77 * *
78PCM1 <------------> * * <====DAI1=====> Codec Speakers
79 * DSP *
80PCM2 <------------> * * <----DAI2-----> MODEM
81 * *
82PCM3 <------------> * * <----DAI3-----> BT
83 * *
84 * * <----DAI4-----> DMIC
85 * *
86 * * <----DAI5-----> FM
87 *************
88
89The audio driver processes this as follows :-
90
91 1) Machine driver receives Jack removal event.
92
93 2) Machine driver OR audio HAL disables the Headset path.
94
95 3) DPCM runs the PCM trigger(stop), hw_free(), shutdown() operations on DAI0
96 for headset since the path is now disabled.
97
98 4) Machine driver or audio HAL enables the speaker path.
99
100 5) DPCM runs the PCM ops for startup(), hw_params(), prepapre() and
101 trigger(start) for DAI1 Speakers since the path is enabled.
102
103In this example, the machine driver or userspace audio HAL can alter the routing
104and then DPCM will take care of managing the DAI PCM operations to either bring
105the link up or down. Audio playback does not stop during this transition.
106
107
108
109DPCM machine driver
110===================
111
112The DPCM enabled ASoC machine driver is similar to normal machine drivers
113except that we also have to :-
114
115 1) Define the FE and BE DAI links.
116
117 2) Define any FE/BE PCM operations.
118
119 3) Define widget graph connections.
120
121
1221 FE and BE DAI links
123---------------------
124
125| Front End PCMs | SoC DSP | Back End DAIs | Audio devices |
126
127 *************
128PCM0 <------------> * * <----DAI0-----> Codec Headset
129 * *
130PCM1 <------------> * * <----DAI1-----> Codec Speakers
131 * DSP *
132PCM2 <------------> * * <----DAI2-----> MODEM
133 * *
134PCM3 <------------> * * <----DAI3-----> BT
135 * *
136 * * <----DAI4-----> DMIC
137 * *
138 * * <----DAI5-----> FM
139 *************
140
141For the example above we have to define 4 FE DAI links and 6 BE DAI links. The
142FE DAI links are defined as follows :-
143
144static struct snd_soc_dai_link machine_dais[] = {
145 {
146 .name = "PCM0 System",
147 .stream_name = "System Playback",
148 .cpu_dai_name = "System Pin",
149 .platform_name = "dsp-audio",
150 .codec_name = "snd-soc-dummy",
151 .codec_dai_name = "snd-soc-dummy-dai",
152 .dynamic = 1,
153 .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST},
154 .dpcm_playback = 1,
155 },
156 .....< other FE and BE DAI links here >
157};
158
159This FE DAI link is pretty similar to a regular DAI link except that we also
160set the DAI link to a DPCM FE with the "dynamic = 1". The supported FE stream
161directions should also be set with the "dpcm_playback" and "dpcm_capture"
162flags. There is also an option to specify the ordering of the trigger call for
163each FE. This allows the ASoC core to trigger the DSP before or after the other
164components (as some DSPs have strong requirements for the ordering DAI/DSP
165start and stop sequences).
166
167The FE DAI above sets the codec and code DAIs to dummy devices since the BE is
168dynamic and will change depending on runtime config.
169
170The BE DAIs are configured as follows :-
171
172static struct snd_soc_dai_link machine_dais[] = {
173 .....< FE DAI links here >
174 {
175 .name = "Codec Headset",
176 .cpu_dai_name = "ssp-dai.0",
177 .platform_name = "snd-soc-dummy",
178 .no_pcm = 1,
179 .codec_name = "rt5640.0-001c",
180 .codec_dai_name = "rt5640-aif1",
181 .ignore_suspend = 1,
182 .ignore_pmdown_time = 1,
183 .be_hw_params_fixup = hswult_ssp0_fixup,
184 .ops = &haswell_ops,
185 .dpcm_playback = 1,
186 .dpcm_capture = 1,
187 },
188 .....< other BE DAI links here >
189};
190
191This BE DAI link connects DAI0 to the codec (in this case RT5460 AIF1). It sets
192the "no_pcm" flag to mark it has a BE and sets flags for supported stream
193directions using "dpcm_playback" and "dpcm_capture" above.
194
195The BE has also flags set for ignoring suspend and PM down time. This allows
196the BE to work in a hostless mode where the host CPU is not transferring data
197like a BT phone call :-
198
199 *************
200PCM0 <------------> * * <----DAI0-----> Codec Headset
201 * *
202PCM1 <------------> * * <----DAI1-----> Codec Speakers
203 * DSP *
204PCM2 <------------> * * <====DAI2=====> MODEM
205 * *
206PCM3 <------------> * * <====DAI3=====> BT
207 * *
208 * * <----DAI4-----> DMIC
209 * *
210 * * <----DAI5-----> FM
211 *************
212
213This allows the host CPU to sleep whilst the DSP, MODEM DAI and the BT DAI are
214still in operation.
215
216A BE DAI link can also set the codec to a dummy device if the code is a device
217that is managed externally.
218
219Likewise a BE DAI can also set a dummy cpu DAI if the CPU DAI is managed by the
220DSP firmware.
221
222
2232 FE/BE PCM operations
224----------------------
225
226The BE above also exports some PCM operations and a "fixup" callback. The fixup
227callback is used by the machine driver to (re)configure the DAI based upon the
228FE hw params. i.e. the DSP may perform SRC or ASRC from the FE to BE.
229
230e.g. DSP converts all FE hw params to run at fixed rate of 48k, 16bit, stereo for
231DAI0. This means all FE hw_params have to be fixed in the machine driver for
232DAI0 so that the DAI is running at desired configuration regardless of the FE
233configuration.
234
235static int dai0_fixup(struct snd_soc_pcm_runtime *rtd,
236 struct snd_pcm_hw_params *params)
237{
238 struct snd_interval *rate = hw_param_interval(params,
239 SNDRV_PCM_HW_PARAM_RATE);
240 struct snd_interval *channels = hw_param_interval(params,
241 SNDRV_PCM_HW_PARAM_CHANNELS);
242
243 /* The DSP will covert the FE rate to 48k, stereo */
244 rate->min = rate->max = 48000;
245 channels->min = channels->max = 2;
246
247 /* set DAI0 to 16 bit */
248 snd_mask_set(&params->masks[SNDRV_PCM_HW_PARAM_FORMAT -
249 SNDRV_PCM_HW_PARAM_FIRST_MASK],
250 SNDRV_PCM_FORMAT_S16_LE);
251 return 0;
252}
253
254The other PCM operation are the same as for regular DAI links. Use as necessary.
255
256
2573 Widget graph connections
258--------------------------
259
260The BE DAI links will normally be connected to the graph at initialisation time
261by the ASoC DAPM core. However, if the BE codec or BE DAI is a dummy then this
262has to be set explicitly in the driver :-
263
264/* BE for codec Headset - DAI0 is dummy and managed by DSP FW */
265{"DAI0 CODEC IN", NULL, "AIF1 Capture"},
266{"AIF1 Playback", NULL, "DAI0 CODEC OUT"},
267
268
269Writing a DPCM DSP driver
270=========================
271
272The DPCM DSP driver looks much like a standard platform class ASoC driver
273combined with elements from a codec class driver. A DSP platform driver must
274implement :-
275
276 1) Front End PCM DAIs - i.e. struct snd_soc_dai_driver.
277
278 2) DAPM graph showing DSP audio routing from FE DAIs to BEs.
279
280 3) DAPM widgets from DSP graph.
281
282 4) Mixers for gains, routing, etc.
283
284 5) DMA configuration.
285
286 6) BE AIF widgets.
287
288Items 6 is important for routing the audio outside of the DSP. AIF need to be
289defined for each BE and each stream direction. e.g for BE DAI0 above we would
290have :-
291
292SND_SOC_DAPM_AIF_IN("DAI0 RX", NULL, 0, SND_SOC_NOPM, 0, 0),
293SND_SOC_DAPM_AIF_OUT("DAI0 TX", NULL, 0, SND_SOC_NOPM, 0, 0),
294
295The BE AIF are used to connect the DSP graph to the graphs for the other
296component drivers (e.g. codec graph).
297
298
299Hostless PCM streams
300====================
301
302A hostless PCM stream is a stream that is not routed through the host CPU. An
303example of this would be a phone call from handset to modem.
304
305
306 *************
307PCM0 <------------> * * <----DAI0-----> Codec Headset
308 * *
309PCM1 <------------> * * <====DAI1=====> Codec Speakers/Mic
310 * DSP *
311PCM2 <------------> * * <====DAI2=====> MODEM
312 * *
313PCM3 <------------> * * <----DAI3-----> BT
314 * *
315 * * <----DAI4-----> DMIC
316 * *
317 * * <----DAI5-----> FM
318 *************
319
320In this case the PCM data is routed via the DSP. The host CPU in this use case
321is only used for control and can sleep during the runtime of the stream.
322
323The host can control the hostless link either by :-
324
325 1) Configuring the link as a CODEC <-> CODEC style link. In this case the link
326 is enabled or disabled by the state of the DAPM graph. This usually means
327 there is a mixer control that can be used to connect or disconnect the path
328 between both DAIs.
329
330 2) Hostless FE. This FE has a virtual connection to the BE DAI links on the DAPM
331 graph. Control is then carried out by the FE as regular PCM operations.
332 This method gives more control over the DAI links, but requires much more
333 userspace code to control the link. Its recommended to use CODEC<->CODEC
334 unless your HW needs more fine grained sequencing of the PCM ops.
335
336
337CODEC <-> CODEC link
338--------------------
339
340This DAI link is enabled when DAPM detects a valid path within the DAPM graph.
341The machine driver sets some additional parameters to the DAI link i.e.
342
343static const struct snd_soc_pcm_stream dai_params = {
344 .formats = SNDRV_PCM_FMTBIT_S32_LE,
345 .rate_min = 8000,
346 .rate_max = 8000,
347 .channels_min = 2,
348 .channels_max = 2,
349};
350
351static struct snd_soc_dai_link dais[] = {
352 < ... more DAI links above ... >
353 {
354 .name = "MODEM",
355 .stream_name = "MODEM",
356 .cpu_dai_name = "dai2",
357 .codec_dai_name = "modem-aif1",
358 .codec_name = "modem",
359 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
360 | SND_SOC_DAIFMT_CBM_CFM,
361 .params = &dai_params,
362 }
363 < ... more DAI links here ... >
364
365These parameters are used to configure the DAI hw_params() when DAPM detects a
366valid path and then calls the PCM operations to start the link. DAPM will also
367call the appropriate PCM operations to disable the DAI when the path is no
368longer valid.
369
370
371Hostless FE
372-----------
373
374The DAI link(s) are enabled by a FE that does not read or write any PCM data.
375This means creating a new FE that is connected with a virtual path to both
376DAI links. The DAI links will be started when the FE PCM is started and stopped
377when the FE PCM is stopped. Note that the FE PCM cannot read or write data in
378this configuration.
379
380
diff --git a/Documentation/sound/alsa/soc/codec.txt b/Documentation/sound/alsa/soc/codec.txt
index bce23a4a7875..db5f9c9ae149 100644
--- a/Documentation/sound/alsa/soc/codec.txt
+++ b/Documentation/sound/alsa/soc/codec.txt
@@ -1,22 +1,23 @@
1ASoC Codec Driver 1ASoC Codec Class Driver
2================= 2=======================
3 3
4The codec driver is generic and hardware independent code that configures the 4The codec class driver is generic and hardware independent code that configures
5codec to provide audio capture and playback. It should contain no code that is 5the codec, FM, MODEM, BT or external DSP to provide audio capture and playback.
6specific to the target platform or machine. All platform and machine specific 6It should contain no code that is specific to the target platform or machine.
7code should be added to the platform and machine drivers respectively. 7All platform and machine specific code should be added to the platform and
8machine drivers respectively.
8 9
9Each codec driver *must* provide the following features:- 10Each codec class driver *must* provide the following features:-
10 11
11 1) Codec DAI and PCM configuration 12 1) Codec DAI and PCM configuration
12 2) Codec control IO - using I2C, 3 Wire(SPI) or both APIs 13 2) Codec control IO - using RegMap API
13 3) Mixers and audio controls 14 3) Mixers and audio controls
14 4) Codec audio operations 15 4) Codec audio operations
16 5) DAPM description.
17 6) DAPM event handler.
15 18
16Optionally, codec drivers can also provide:- 19Optionally, codec drivers can also provide:-
17 20
18 5) DAPM description.
19 6) DAPM event handler.
20 7) DAC Digital mute control. 21 7) DAC Digital mute control.
21 22
22Its probably best to use this guide in conjunction with the existing codec 23Its probably best to use this guide in conjunction with the existing codec
@@ -64,26 +65,9 @@ struct snd_soc_dai_driver wm8731_dai = {
642 - Codec control IO 652 - Codec control IO
65-------------------- 66--------------------
66The codec can usually be controlled via an I2C or SPI style interface 67The codec can usually be controlled via an I2C or SPI style interface
67(AC97 combines control with data in the DAI). The codec drivers provide 68(AC97 combines control with data in the DAI). The codec driver should use the
68functions to read and write the codec registers along with supplying a 69Regmap API for all codec IO. Please see include/linux/regmap.h and existing
69register cache:- 70codec drivers for example regmap usage.
70
71 /* IO control data and register cache */
72 void *control_data; /* codec control (i2c/3wire) data */
73 void *reg_cache;
74
75Codec read/write should do any data formatting and call the hardware
76read write below to perform the IO. These functions are called by the
77core and ALSA when performing DAPM or changing the mixer:-
78
79 unsigned int (*read)(struct snd_soc_codec *, unsigned int);
80 int (*write)(struct snd_soc_codec *, unsigned int, unsigned int);
81
82Codec hardware IO functions - usually points to either the I2C, SPI or AC97
83read/write:-
84
85 hw_write_t hw_write;
86 hw_read_t hw_read;
87 71
88 72
893 - Mixers and audio controls 733 - Mixers and audio controls
@@ -127,7 +111,7 @@ Defines a stereo enumerated control
127 111
1284 - Codec Audio Operations 1124 - Codec Audio Operations
129-------------------------- 113--------------------------
130The codec driver also supports the following ALSA operations:- 114The codec driver also supports the following ALSA PCM operations:-
131 115
132/* SoC audio ops */ 116/* SoC audio ops */
133struct snd_soc_ops { 117struct snd_soc_ops {
diff --git a/Documentation/sound/alsa/soc/dapm.txt b/Documentation/sound/alsa/soc/dapm.txt
index 05bf5a0eee41..6faab4880006 100644
--- a/Documentation/sound/alsa/soc/dapm.txt
+++ b/Documentation/sound/alsa/soc/dapm.txt
@@ -21,7 +21,7 @@ level power systems.
21 21
22There are 4 power domains within DAPM 22There are 4 power domains within DAPM
23 23
24 1. Codec domain - VREF, VMID (core codec and audio power) 24 1. Codec bias domain - VREF, VMID (core codec and audio power)
25 Usually controlled at codec probe/remove and suspend/resume, although 25 Usually controlled at codec probe/remove and suspend/resume, although
26 can be set at stream time if power is not needed for sidetone, etc. 26 can be set at stream time if power is not needed for sidetone, etc.
27 27
@@ -30,7 +30,7 @@ There are 4 power domains within DAPM
30 machine driver and responds to asynchronous events e.g when HP 30 machine driver and responds to asynchronous events e.g when HP
31 are inserted 31 are inserted
32 32
33 3. Path domain - audio susbsystem signal paths 33 3. Path domain - audio subsystem signal paths
34 Automatically set when mixer and mux settings are changed by the user. 34 Automatically set when mixer and mux settings are changed by the user.
35 e.g. alsamixer, amixer. 35 e.g. alsamixer, amixer.
36 36
@@ -63,14 +63,22 @@ Audio DAPM widgets fall into a number of types:-
63 o Line - Line Input/Output (and optional Jack) 63 o Line - Line Input/Output (and optional Jack)
64 o Speaker - Speaker 64 o Speaker - Speaker
65 o Supply - Power or clock supply widget used by other widgets. 65 o Supply - Power or clock supply widget used by other widgets.
66 o Regulator - External regulator that supplies power to audio components.
67 o Clock - External clock that supplies clock to audio components.
68 o AIF IN - Audio Interface Input (with TDM slot mask).
69 o AIF OUT - Audio Interface Output (with TDM slot mask).
70 o Siggen - Signal Generator.
71 o DAI IN - Digital Audio Interface Input.
72 o DAI OUT - Digital Audio Interface Output.
73 o DAI Link - DAI Link between two DAI structures */
66 o Pre - Special PRE widget (exec before all others) 74 o Pre - Special PRE widget (exec before all others)
67 o Post - Special POST widget (exec after all others) 75 o Post - Special POST widget (exec after all others)
68 76
69(Widgets are defined in include/sound/soc-dapm.h) 77(Widgets are defined in include/sound/soc-dapm.h)
70 78
71Widgets are usually added in the codec driver and the machine driver. There are 79Widgets can be added to the sound card by any of the component driver types.
72convenience macros defined in soc-dapm.h that can be used to quickly build a 80There are convenience macros defined in soc-dapm.h that can be used to quickly
73list of widgets of the codecs and machines DAPM widgets. 81build a list of widgets of the codecs and machines DAPM widgets.
74 82
75Most widgets have a name, register, shift and invert. Some widgets have extra 83Most widgets have a name, register, shift and invert. Some widgets have extra
76parameters for stream name and kcontrols. 84parameters for stream name and kcontrols.
@@ -80,11 +88,13 @@ parameters for stream name and kcontrols.
80------------------------- 88-------------------------
81 89
82Stream Widgets relate to the stream power domain and only consist of ADCs 90Stream Widgets relate to the stream power domain and only consist of ADCs
83(analog to digital converters) and DACs (digital to analog converters). 91(analog to digital converters), DACs (digital to analog converters),
92AIF IN and AIF OUT.
84 93
85Stream widgets have the following format:- 94Stream widgets have the following format:-
86 95
87SND_SOC_DAPM_DAC(name, stream name, reg, shift, invert), 96SND_SOC_DAPM_DAC(name, stream name, reg, shift, invert),
97SND_SOC_DAPM_AIF_IN(name, stream, slot, reg, shift, invert)
88 98
89NOTE: the stream name must match the corresponding stream name in your codec 99NOTE: the stream name must match the corresponding stream name in your codec
90snd_soc_codec_dai. 100snd_soc_codec_dai.
@@ -94,6 +104,11 @@ e.g. stream widgets for HiFi playback and capture
94SND_SOC_DAPM_DAC("HiFi DAC", "HiFi Playback", REG, 3, 1), 104SND_SOC_DAPM_DAC("HiFi DAC", "HiFi Playback", REG, 3, 1),
95SND_SOC_DAPM_ADC("HiFi ADC", "HiFi Capture", REG, 2, 1), 105SND_SOC_DAPM_ADC("HiFi ADC", "HiFi Capture", REG, 2, 1),
96 106
107e.g. stream widgets for AIF
108
109SND_SOC_DAPM_AIF_IN("AIF1RX", "AIF1 Playback", 0, SND_SOC_NOPM, 0, 0),
110SND_SOC_DAPM_AIF_OUT("AIF1TX", "AIF1 Capture", 0, SND_SOC_NOPM, 0, 0),
111
97 112
982.2 Path Domain Widgets 1132.2 Path Domain Widgets
99----------------------- 114-----------------------
@@ -121,12 +136,14 @@ If you dont want the mixer elements prefixed with the name of the mixer widget,
121you can use SND_SOC_DAPM_MIXER_NAMED_CTL instead. the parameters are the same 136you can use SND_SOC_DAPM_MIXER_NAMED_CTL instead. the parameters are the same
122as for SND_SOC_DAPM_MIXER. 137as for SND_SOC_DAPM_MIXER.
123 138
1242.3 Platform/Machine domain Widgets 139
125----------------------------------- 1402.3 Machine domain Widgets
141--------------------------
126 142
127Machine widgets are different from codec widgets in that they don't have a 143Machine widgets are different from codec widgets in that they don't have a
128codec register bit associated with them. A machine widget is assigned to each 144codec register bit associated with them. A machine widget is assigned to each
129machine audio component (non codec) that can be independently powered. e.g. 145machine audio component (non codec or DSP) that can be independently
146powered. e.g.
130 147
131 o Speaker Amp 148 o Speaker Amp
132 o Microphone Bias 149 o Microphone Bias
@@ -146,12 +163,12 @@ static int spitz_mic_bias(struct snd_soc_dapm_widget* w, int event)
146SND_SOC_DAPM_MIC("Mic Jack", spitz_mic_bias), 163SND_SOC_DAPM_MIC("Mic Jack", spitz_mic_bias),
147 164
148 165
1492.4 Codec Domain 1662.4 Codec (BIAS) Domain
150---------------- 167-----------------------
151 168
152The codec power domain has no widgets and is handled by the codecs DAPM event 169The codec bias power domain has no widgets and is handled by the codecs DAPM
153handler. This handler is called when the codec powerstate is changed wrt to any 170event handler. This handler is called when the codec powerstate is changed wrt
154stream event or by kernel PM events. 171to any stream event or by kernel PM events.
155 172
156 173
1572.5 Virtual Widgets 1742.5 Virtual Widgets
@@ -169,15 +186,16 @@ After all the widgets have been defined, they can then be added to the DAPM
169subsystem individually with a call to snd_soc_dapm_new_control(). 186subsystem individually with a call to snd_soc_dapm_new_control().
170 187
171 188
1723. Codec Widget Interconnections 1893. Codec/DSP Widget Interconnections
173================================ 190====================================
174 191
175Widgets are connected to each other within the codec and machine by audio paths 192Widgets are connected to each other within the codec, platform and machine by
176(called interconnections). Each interconnection must be defined in order to 193audio paths (called interconnections). Each interconnection must be defined in
177create a map of all audio paths between widgets. 194order to create a map of all audio paths between widgets.
178 195
179This is easiest with a diagram of the codec (and schematic of the machine audio 196This is easiest with a diagram of the codec or DSP (and schematic of the machine
180system), as it requires joining widgets together via their audio signal paths. 197audio system), as it requires joining widgets together via their audio signal
198paths.
181 199
182e.g., from the WM8731 output mixer (wm8731.c) 200e.g., from the WM8731 output mixer (wm8731.c)
183 201
@@ -247,16 +265,9 @@ machine and includes the codec. e.g.
247 o Mic Jack 265 o Mic Jack
248 o Codec Pins 266 o Codec Pins
249 267
250When a codec pin is NC it can be marked as not used with a call to 268Endpoints are added to the DAPM graph so that their usage can be determined in
251 269order to save power. e.g. NC codecs pins will be switched OFF, unconnected
252snd_soc_dapm_set_endpoint(codec, "Widget Name", 0); 270jacks can also be switched OFF.
253
254The last argument is 0 for inactive and 1 for active. This way the pin and its
255input widget will never be powered up and consume power.
256
257This also applies to machine widgets. e.g. if a headphone is connected to a
258jack then the jack can be marked active. If the headphone is removed, then
259the headphone jack can be marked inactive.
260 271
261 272
2625 DAPM Widget Events 2735 DAPM Widget Events
diff --git a/Documentation/sound/alsa/soc/machine.txt b/Documentation/sound/alsa/soc/machine.txt
index d50c14df3411..74056dba52be 100644
--- a/Documentation/sound/alsa/soc/machine.txt
+++ b/Documentation/sound/alsa/soc/machine.txt
@@ -1,8 +1,10 @@
1ASoC Machine Driver 1ASoC Machine Driver
2=================== 2===================
3 3
4The ASoC machine (or board) driver is the code that glues together the platform 4The ASoC machine (or board) driver is the code that glues together all the
5and codec drivers. 5component drivers (e.g. codecs, platforms and DAIs). It also describes the
6relationships between each componnent which include audio paths, GPIOs,
7interrupts, clocking, jacks and voltage regulators.
6 8
7The machine driver can contain codec and platform specific code. It registers 9The machine driver can contain codec and platform specific code. It registers
8the audio subsystem with the kernel as a platform device and is represented by 10the audio subsystem with the kernel as a platform device and is represented by
diff --git a/Documentation/sound/alsa/soc/platform.txt b/Documentation/sound/alsa/soc/platform.txt
index d57efad37e0a..3a08a2c9150c 100644
--- a/Documentation/sound/alsa/soc/platform.txt
+++ b/Documentation/sound/alsa/soc/platform.txt
@@ -1,9 +1,9 @@
1ASoC Platform Driver 1ASoC Platform Driver
2==================== 2====================
3 3
4An ASoC platform driver can be divided into audio DMA and SoC DAI configuration 4An ASoC platform driver class can be divided into audio DMA drivers, SoC DAI
5and control. The platform drivers only target the SoC CPU and must have no board 5drivers and DSP drivers. The platform drivers only target the SoC CPU and must
6specific code. 6have no board specific code.
7 7
8Audio DMA 8Audio DMA
9========= 9=========
@@ -64,3 +64,16 @@ Each SoC DAI driver must provide the following features:-
64 5) Suspend and resume (optional) 64 5) Suspend and resume (optional)
65 65
66Please see codec.txt for a description of items 1 - 4. 66Please see codec.txt for a description of items 1 - 4.
67
68
69SoC DSP Drivers
70===============
71
72Each SoC DSP driver usually supplies the following features :-
73
74 1) DAPM graph
75 2) Mixer controls
76 3) DMA IO to/from DSP buffers (if applicable)
77 4) Definition of DSP front end (FE) PCM devices.
78
79Please see DPCM.txt for a description of item 4.
diff --git a/Documentation/spi/spi-summary b/Documentation/spi/spi-summary
index 2331eb214146..f21edb983413 100644
--- a/Documentation/spi/spi-summary
+++ b/Documentation/spi/spi-summary
@@ -215,7 +215,7 @@ So for example arch/.../mach-*/board-*.c files might have code like:
215 /* if your mach-* infrastructure doesn't support kernels that can 215 /* if your mach-* infrastructure doesn't support kernels that can
216 * run on multiple boards, pdata wouldn't benefit from "__init". 216 * run on multiple boards, pdata wouldn't benefit from "__init".
217 */ 217 */
218 static struct mysoc_spi_data __initdata pdata = { ... }; 218 static struct mysoc_spi_data pdata __initdata = { ... };
219 219
220 static __init board_init(void) 220 static __init board_init(void)
221 { 221 {
diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt
index ab7d16efa96b..4273b2d71a27 100644
--- a/Documentation/sysctl/kernel.txt
+++ b/Documentation/sysctl/kernel.txt
@@ -182,6 +182,7 @@ core_pattern is used to specify a core dumpfile pattern name.
182 %<NUL> '%' is dropped 182 %<NUL> '%' is dropped
183 %% output one '%' 183 %% output one '%'
184 %p pid 184 %p pid
185 %P global pid (init PID namespace)
185 %u uid 186 %u uid
186 %g gid 187 %g gid
187 %d dump mode, matches PR_SET_DUMPABLE and 188 %d dump mode, matches PR_SET_DUMPABLE and
@@ -354,6 +355,82 @@ utilize.
354 355
355============================================================== 356==============================================================
356 357
358numa_balancing
359
360Enables/disables automatic page fault based NUMA memory
361balancing. Memory is moved automatically to nodes
362that access it often.
363
364Enables/disables automatic NUMA memory balancing. On NUMA machines, there
365is a performance penalty if remote memory is accessed by a CPU. When this
366feature is enabled the kernel samples what task thread is accessing memory
367by periodically unmapping pages and later trapping a page fault. At the
368time of the page fault, it is determined if the data being accessed should
369be migrated to a local memory node.
370
371The unmapping of pages and trapping faults incur additional overhead that
372ideally is offset by improved memory locality but there is no universal
373guarantee. If the target workload is already bound to NUMA nodes then this
374feature should be disabled. Otherwise, if the system overhead from the
375feature is too high then the rate the kernel samples for NUMA hinting
376faults may be controlled by the numa_balancing_scan_period_min_ms,
377numa_balancing_scan_delay_ms, numa_balancing_scan_period_max_ms,
378numa_balancing_scan_size_mb, numa_balancing_settle_count sysctls and
379numa_balancing_migrate_deferred.
380
381==============================================================
382
383numa_balancing_scan_period_min_ms, numa_balancing_scan_delay_ms,
384numa_balancing_scan_period_max_ms, numa_balancing_scan_size_mb
385
386Automatic NUMA balancing scans tasks address space and unmaps pages to
387detect if pages are properly placed or if the data should be migrated to a
388memory node local to where the task is running. Every "scan delay" the task
389scans the next "scan size" number of pages in its address space. When the
390end of the address space is reached the scanner restarts from the beginning.
391
392In combination, the "scan delay" and "scan size" determine the scan rate.
393When "scan delay" decreases, the scan rate increases. The scan delay and
394hence the scan rate of every task is adaptive and depends on historical
395behaviour. If pages are properly placed then the scan delay increases,
396otherwise the scan delay decreases. The "scan size" is not adaptive but
397the higher the "scan size", the higher the scan rate.
398
399Higher scan rates incur higher system overhead as page faults must be
400trapped and potentially data must be migrated. However, the higher the scan
401rate, the more quickly a tasks memory is migrated to a local node if the
402workload pattern changes and minimises performance impact due to remote
403memory accesses. These sysctls control the thresholds for scan delays and
404the number of pages scanned.
405
406numa_balancing_scan_period_min_ms is the minimum time in milliseconds to
407scan a tasks virtual memory. It effectively controls the maximum scanning
408rate for each task.
409
410numa_balancing_scan_delay_ms is the starting "scan delay" used for a task
411when it initially forks.
412
413numa_balancing_scan_period_max_ms is the maximum time in milliseconds to
414scan a tasks virtual memory. It effectively controls the minimum scanning
415rate for each task.
416
417numa_balancing_scan_size_mb is how many megabytes worth of pages are
418scanned for a given scan.
419
420numa_balancing_settle_count is how many scan periods must complete before
421the schedule balancer stops pushing the task towards a preferred node. This
422gives the scheduler a chance to place the task on an alternative node if the
423preferred node is overloaded.
424
425numa_balancing_migrate_deferred is how many page migrations get skipped
426unconditionally, after a page migration is skipped because a page is shared
427with other tasks. This reduces page migration overhead, and determines
428how much stronger the "move task near its memory" policy scheduler becomes,
429versus the "move memory near its task" memory management policy, for workloads
430with shared memory.
431
432==============================================================
433
357osrelease, ostype & version: 434osrelease, ostype & version:
358 435
359# cat osrelease 436# cat osrelease
diff --git a/Documentation/sysctl/net.txt b/Documentation/sysctl/net.txt
index d569f2a424d5..9a0319a82470 100644
--- a/Documentation/sysctl/net.txt
+++ b/Documentation/sysctl/net.txt
@@ -50,6 +50,19 @@ The maximum number of packets that kernel can handle on a NAPI interrupt,
50it's a Per-CPU variable. 50it's a Per-CPU variable.
51Default: 64 51Default: 64
52 52
53default_qdisc
54--------------
55
56The default queuing discipline to use for network devices. This allows
57overriding the default queue discipline of pfifo_fast with an
58alternative. Since the default queuing discipline is created with the
59no additional parameters so is best suited to queuing disciplines that
60work well without configuration like stochastic fair queue (sfq),
61CoDel (codel) or fair queue CoDel (fq_codel). Don't use queuing disciplines
62like Hierarchical Token Bucket or Deficit Round Robin which require setting
63up classes and bandwidths.
64Default: pfifo_fast
65
53busy_read 66busy_read
54---------------- 67----------------
55Low latency busy poll timeout for socket reads. (needs CONFIG_NET_RX_BUSY_POLL) 68Low latency busy poll timeout for socket reads. (needs CONFIG_NET_RX_BUSY_POLL)
diff --git a/Documentation/sysctl/vm.txt b/Documentation/sysctl/vm.txt
index 36ecc26c7433..79a797eb3e87 100644
--- a/Documentation/sysctl/vm.txt
+++ b/Documentation/sysctl/vm.txt
@@ -200,17 +200,25 @@ fragmentation index is <= extfrag_threshold. The default value is 500.
200 200
201hugepages_treat_as_movable 201hugepages_treat_as_movable
202 202
203This parameter is only useful when kernelcore= is specified at boot time to 203This parameter controls whether we can allocate hugepages from ZONE_MOVABLE
204create ZONE_MOVABLE for pages that may be reclaimed or migrated. Huge pages 204or not. If set to non-zero, hugepages can be allocated from ZONE_MOVABLE.
205are not movable so are not normally allocated from ZONE_MOVABLE. A non-zero 205ZONE_MOVABLE is created when kernel boot parameter kernelcore= is specified,
206value written to hugepages_treat_as_movable allows huge pages to be allocated 206so this parameter has no effect if used without kernelcore=.
207from ZONE_MOVABLE. 207
208 208Hugepage migration is now available in some situations which depend on the
209Once enabled, the ZONE_MOVABLE is treated as an area of memory the huge 209architecture and/or the hugepage size. If a hugepage supports migration,
210pages pool can easily grow or shrink within. Assuming that applications are 210allocation from ZONE_MOVABLE is always enabled for the hugepage regardless
211not running that mlock() a lot of memory, it is likely the huge pages pool 211of the value of this parameter.
212can grow to the size of ZONE_MOVABLE by repeatedly entering the desired value 212IOW, this parameter affects only non-migratable hugepages.
213into nr_hugepages and triggering page reclaim. 213
214Assuming that hugepages are not migratable in your system, one usecase of
215this parameter is that users can make hugepage pool more extensible by
216enabling the allocation from ZONE_MOVABLE. This is because on ZONE_MOVABLE
217page reclaim/migration/compaction work more and you can get contiguous
218memory more likely. Note that using ZONE_MOVABLE for non-migratable
219hugepages can do harm to other features like memory hotremove (because
220memory hotremove expects that memory blocks on ZONE_MOVABLE are always
221removable,) so it's a trade-off responsible for the users.
214 222
215============================================================== 223==============================================================
216 224
diff --git a/Documentation/sysfs-rules.txt b/Documentation/sysfs-rules.txt
index c1a1fd636bf9..a5f985ee1822 100644
--- a/Documentation/sysfs-rules.txt
+++ b/Documentation/sysfs-rules.txt
@@ -47,7 +47,7 @@ versions of the sysfs interface.
47 at device creation and removal 47 at device creation and removal
48 - the unique key to the device at that point in time 48 - the unique key to the device at that point in time
49 - the kernel's path to the device directory without the leading 49 - the kernel's path to the device directory without the leading
50 /sys, and always starting with with a slash 50 /sys, and always starting with a slash
51 - all elements of a devpath must be real directories. Symlinks 51 - all elements of a devpath must be real directories. Symlinks
52 pointing to /sys/devices must always be resolved to their real 52 pointing to /sys/devices must always be resolved to their real
53 target and the target path must be used to access the device. 53 target and the target path must be used to access the device.
diff --git a/Documentation/sysrq.txt b/Documentation/sysrq.txt
index 8cb4d7842a5f..0e307c94809a 100644
--- a/Documentation/sysrq.txt
+++ b/Documentation/sysrq.txt
@@ -11,27 +11,29 @@ regardless of whatever else it is doing, unless it is completely locked up.
11You need to say "yes" to 'Magic SysRq key (CONFIG_MAGIC_SYSRQ)' when 11You need to say "yes" to 'Magic SysRq key (CONFIG_MAGIC_SYSRQ)' when
12configuring the kernel. When running a kernel with SysRq compiled in, 12configuring the kernel. When running a kernel with SysRq compiled in,
13/proc/sys/kernel/sysrq controls the functions allowed to be invoked via 13/proc/sys/kernel/sysrq controls the functions allowed to be invoked via
14the SysRq key. By default the file contains 1 which means that every 14the SysRq key. The default value in this file is set by the
15possible SysRq request is allowed (in older versions SysRq was disabled 15CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE config symbol, which itself defaults
16by default, and you were required to specifically enable it at run-time 16to 1. Here is the list of possible values in /proc/sys/kernel/sysrq:
17but this is not the case any more). Here is the list of possible values
18in /proc/sys/kernel/sysrq:
19 0 - disable sysrq completely 17 0 - disable sysrq completely
20 1 - enable all functions of sysrq 18 1 - enable all functions of sysrq
21 >1 - bitmask of allowed sysrq functions (see below for detailed function 19 >1 - bitmask of allowed sysrq functions (see below for detailed function
22 description): 20 description):
23 2 - enable control of console logging level 21 2 = 0x2 - enable control of console logging level
24 4 - enable control of keyboard (SAK, unraw) 22 4 = 0x4 - enable control of keyboard (SAK, unraw)
25 8 - enable debugging dumps of processes etc. 23 8 = 0x8 - enable debugging dumps of processes etc.
26 16 - enable sync command 24 16 = 0x10 - enable sync command
27 32 - enable remount read-only 25 32 = 0x20 - enable remount read-only
28 64 - enable signalling of processes (term, kill, oom-kill) 26 64 = 0x40 - enable signalling of processes (term, kill, oom-kill)
29 128 - allow reboot/poweroff 27 128 = 0x80 - allow reboot/poweroff
30 256 - allow nicing of all RT tasks 28 256 = 0x100 - allow nicing of all RT tasks
31 29
32You can set the value in the file by the following command: 30You can set the value in the file by the following command:
33 echo "number" >/proc/sys/kernel/sysrq 31 echo "number" >/proc/sys/kernel/sysrq
34 32
33The number may be written here either as decimal or as hexadecimal
34with the 0x prefix. CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE must always be
35written in hexadecimal.
36
35Note that the value of /proc/sys/kernel/sysrq influences only the invocation 37Note that the value of /proc/sys/kernel/sysrq influences only the invocation
36via a keyboard. Invocation of any operation via /proc/sysrq-trigger is always 38via a keyboard. Invocation of any operation via /proc/sysrq-trigger is always
37allowed (by a user with admin privileges). 39allowed (by a user with admin privileges).
diff --git a/Documentation/target/tcm_mod_builder.py b/Documentation/target/tcm_mod_builder.py
index 3fe0d812dcec..54d29c1320ed 100755
--- a/Documentation/target/tcm_mod_builder.py
+++ b/Documentation/target/tcm_mod_builder.py
@@ -300,7 +300,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
300 buf += " int ret;\n\n" 300 buf += " int ret;\n\n"
301 buf += " if (strstr(name, \"tpgt_\") != name)\n" 301 buf += " if (strstr(name, \"tpgt_\") != name)\n"
302 buf += " return ERR_PTR(-EINVAL);\n" 302 buf += " return ERR_PTR(-EINVAL);\n"
303 buf += " if (strict_strtoul(name + 5, 10, &tpgt) || tpgt > UINT_MAX)\n" 303 buf += " if (kstrtoul(name + 5, 10, &tpgt) || tpgt > UINT_MAX)\n"
304 buf += " return ERR_PTR(-EINVAL);\n\n" 304 buf += " return ERR_PTR(-EINVAL);\n\n"
305 buf += " tpg = kzalloc(sizeof(struct " + fabric_mod_name + "_tpg), GFP_KERNEL);\n" 305 buf += " tpg = kzalloc(sizeof(struct " + fabric_mod_name + "_tpg), GFP_KERNEL);\n"
306 buf += " if (!tpg) {\n" 306 buf += " if (!tpg) {\n"
diff --git a/Documentation/thermal/exynos_thermal b/Documentation/thermal/exynos_thermal
index 2b46f67b1ccb..9010c4416967 100644
--- a/Documentation/thermal/exynos_thermal
+++ b/Documentation/thermal/exynos_thermal
@@ -1,17 +1,17 @@
1Kernel driver exynos4_tmu 1Kernel driver exynos_tmu
2================= 2=================
3 3
4Supported chips: 4Supported chips:
5* ARM SAMSUNG EXYNOS4 series of SoC 5* ARM SAMSUNG EXYNOS4, EXYNOS5 series of SoC
6 Prefix: 'exynos4-tmu'
7 Datasheet: Not publicly available 6 Datasheet: Not publicly available
8 7
9Authors: Donggeun Kim <dg77.kim@samsung.com> 8Authors: Donggeun Kim <dg77.kim@samsung.com>
9Authors: Amit Daniel <amit.daniel@samsung.com>
10 10
11Description 11TMU controller Description:
12----------- 12---------------------------
13 13
14This driver allows to read temperature inside SAMSUNG EXYNOS4 series of SoC. 14This driver allows to read temperature inside SAMSUNG EXYNOS4/5 series of SoC.
15 15
16The chip only exposes the measured 8-bit temperature code value 16The chip only exposes the measured 8-bit temperature code value
17through a register. 17through a register.
@@ -34,9 +34,9 @@ The three equations are:
34 TI2: Trimming info for 85 degree Celsius (stored at TRIMINFO register) 34 TI2: Trimming info for 85 degree Celsius (stored at TRIMINFO register)
35 Temperature code measured at 85 degree Celsius which is unchanged 35 Temperature code measured at 85 degree Celsius which is unchanged
36 36
37TMU(Thermal Management Unit) in EXYNOS4 generates interrupt 37TMU(Thermal Management Unit) in EXYNOS4/5 generates interrupt
38when temperature exceeds pre-defined levels. 38when temperature exceeds pre-defined levels.
39The maximum number of configurable threshold is four. 39The maximum number of configurable threshold is five.
40The threshold levels are defined as follows: 40The threshold levels are defined as follows:
41 Level_0: current temperature > trigger_level_0 + threshold 41 Level_0: current temperature > trigger_level_0 + threshold
42 Level_1: current temperature > trigger_level_1 + threshold 42 Level_1: current temperature > trigger_level_1 + threshold
@@ -47,6 +47,31 @@ The threshold levels are defined as follows:
47 through the corresponding registers. 47 through the corresponding registers.
48 48
49When an interrupt occurs, this driver notify kernel thermal framework 49When an interrupt occurs, this driver notify kernel thermal framework
50with the function exynos4_report_trigger. 50with the function exynos_report_trigger.
51Although an interrupt condition for level_0 can be set, 51Although an interrupt condition for level_0 can be set,
52it can be used to synchronize the cooling action. 52it can be used to synchronize the cooling action.
53
54TMU driver description:
55-----------------------
56
57The exynos thermal driver is structured as,
58
59 Kernel Core thermal framework
60 (thermal_core.c, step_wise.c, cpu_cooling.c)
61 ^
62 |
63 |
64TMU configuration data -------> TMU Driver <------> Exynos Core thermal wrapper
65(exynos_tmu_data.c) (exynos_tmu.c) (exynos_thermal_common.c)
66(exynos_tmu_data.h) (exynos_tmu.h) (exynos_thermal_common.h)
67
68a) TMU configuration data: This consist of TMU register offsets/bitfields
69 described through structure exynos_tmu_registers. Also several
70 other platform data (struct exynos_tmu_platform_data) members
71 are used to configure the TMU.
72b) TMU driver: This component initialises the TMU controller and sets different
73 thresholds. It invokes core thermal implementation with the call
74 exynos_report_trigger.
75c) Exynos Core thermal wrapper: This provides 3 wrapper function to use the
76 Kernel core thermal framework. They are exynos_unregister_thermal,
77 exynos_register_thermal and exynos_report_trigger.
diff --git a/Documentation/thermal/sysfs-api.txt b/Documentation/thermal/sysfs-api.txt
index a71bd5b90fe8..87519cb379ee 100644
--- a/Documentation/thermal/sysfs-api.txt
+++ b/Documentation/thermal/sysfs-api.txt
@@ -134,6 +134,13 @@ temperature) and throttle appropriate devices.
134 this thermal zone and cdev, for a particular trip point. 134 this thermal zone and cdev, for a particular trip point.
135 If nth bit is set, then the cdev and thermal zone are bound 135 If nth bit is set, then the cdev and thermal zone are bound
136 for trip point n. 136 for trip point n.
137 .limits: This is an array of cooling state limits. Must have exactly
138 2 * thermal_zone.number_of_trip_points. It is an array consisting
139 of tuples <lower-state upper-state> of state limits. Each trip
140 will be associated with one state limit tuple when binding.
141 A NULL pointer means <THERMAL_NO_LIMITS THERMAL_NO_LIMITS>
142 on all trips. These limits are used when binding a cdev to a
143 trip point.
137 .match: This call back returns success(0) if the 'tz and cdev' need to 144 .match: This call back returns success(0) if the 'tz and cdev' need to
138 be bound, as per platform data. 145 be bound, as per platform data.
1391.4.2 struct thermal_zone_params 1461.4.2 struct thermal_zone_params
@@ -142,6 +149,11 @@ temperature) and throttle appropriate devices.
142 This is an optional feature where some platforms can choose not to 149 This is an optional feature where some platforms can choose not to
143 provide this data. 150 provide this data.
144 .governor_name: Name of the thermal governor used for this zone 151 .governor_name: Name of the thermal governor used for this zone
152 .no_hwmon: a boolean to indicate if the thermal to hwmon sysfs interface
153 is required. when no_hwmon == false, a hwmon sysfs interface
154 will be created. when no_hwmon == true, nothing will be done.
155 In case the thermal_zone_params is NULL, the hwmon interface
156 will be created (for backward compatibility).
145 .num_tbps: Number of thermal_bind_params entries for this zone 157 .num_tbps: Number of thermal_bind_params entries for this zone
146 .tbp: thermal_bind_params entries 158 .tbp: thermal_bind_params entries
147 159
diff --git a/Documentation/timers/NO_HZ.txt b/Documentation/timers/NO_HZ.txt
index 88697584242b..cca122f25120 100644
--- a/Documentation/timers/NO_HZ.txt
+++ b/Documentation/timers/NO_HZ.txt
@@ -24,8 +24,8 @@ There are three main ways of managing scheduling-clock interrupts
24 workloads, you will normally -not- want this option. 24 workloads, you will normally -not- want this option.
25 25
26These three cases are described in the following three sections, followed 26These three cases are described in the following three sections, followed
27by a third section on RCU-specific considerations and a fourth and final 27by a third section on RCU-specific considerations, a fourth section
28section listing known issues. 28discussing testing, and a fifth and final section listing known issues.
29 29
30 30
31NEVER OMIT SCHEDULING-CLOCK TICKS 31NEVER OMIT SCHEDULING-CLOCK TICKS
@@ -121,14 +121,15 @@ boot parameter specifies the adaptive-ticks CPUs. For example,
121"nohz_full=1,6-8" says that CPUs 1, 6, 7, and 8 are to be adaptive-ticks 121"nohz_full=1,6-8" says that CPUs 1, 6, 7, and 8 are to be adaptive-ticks
122CPUs. Note that you are prohibited from marking all of the CPUs as 122CPUs. Note that you are prohibited from marking all of the CPUs as
123adaptive-tick CPUs: At least one non-adaptive-tick CPU must remain 123adaptive-tick CPUs: At least one non-adaptive-tick CPU must remain
124online to handle timekeeping tasks in order to ensure that system calls 124online to handle timekeeping tasks in order to ensure that system
125like gettimeofday() returns accurate values on adaptive-tick CPUs. 125calls like gettimeofday() returns accurate values on adaptive-tick CPUs.
126(This is not an issue for CONFIG_NO_HZ_IDLE=y because there are no 126(This is not an issue for CONFIG_NO_HZ_IDLE=y because there are no running
127running user processes to observe slight drifts in clock rate.) 127user processes to observe slight drifts in clock rate.) Therefore, the
128Therefore, the boot CPU is prohibited from entering adaptive-ticks 128boot CPU is prohibited from entering adaptive-ticks mode. Specifying a
129mode. Specifying a "nohz_full=" mask that includes the boot CPU will 129"nohz_full=" mask that includes the boot CPU will result in a boot-time
130result in a boot-time error message, and the boot CPU will be removed 130error message, and the boot CPU will be removed from the mask. Note that
131from the mask. 131this means that your system must have at least two CPUs in order for
132CONFIG_NO_HZ_FULL=y to do anything for you.
132 133
133Alternatively, the CONFIG_NO_HZ_FULL_ALL=y Kconfig parameter specifies 134Alternatively, the CONFIG_NO_HZ_FULL_ALL=y Kconfig parameter specifies
134that all CPUs other than the boot CPU are adaptive-ticks CPUs. This 135that all CPUs other than the boot CPU are adaptive-ticks CPUs. This
@@ -232,6 +233,29 @@ scheduler will decide where to run them, which might or might not be
232where you want them to run. 233where you want them to run.
233 234
234 235
236TESTING
237
238So you enable all the OS-jitter features described in this document,
239but do not see any change in your workload's behavior. Is this because
240your workload isn't affected that much by OS jitter, or is it because
241something else is in the way? This section helps answer this question
242by providing a simple OS-jitter test suite, which is available on branch
243master of the following git archive:
244
245git://git.kernel.org/pub/scm/linux/kernel/git/frederic/dynticks-testing.git
246
247Clone this archive and follow the instructions in the README file.
248This test procedure will produce a trace that will allow you to evaluate
249whether or not you have succeeded in removing OS jitter from your system.
250If this trace shows that you have removed OS jitter as much as is
251possible, then you can conclude that your workload is not all that
252sensitive to OS jitter.
253
254Note: this test requires that your system have at least two CPUs.
255We do not currently have a good way to remove OS jitter from single-CPU
256systems.
257
258
235KNOWN ISSUES 259KNOWN ISSUES
236 260
237o Dyntick-idle slows transitions to and from idle slightly. 261o Dyntick-idle slows transitions to and from idle slightly.
diff --git a/Documentation/tpm/xen-tpmfront.txt b/Documentation/tpm/xen-tpmfront.txt
new file mode 100644
index 000000000000..69346de87ff3
--- /dev/null
+++ b/Documentation/tpm/xen-tpmfront.txt
@@ -0,0 +1,113 @@
1Virtual TPM interface for Xen
2
3Authors: Matthew Fioravante (JHUAPL), Daniel De Graaf (NSA)
4
5This document describes the virtual Trusted Platform Module (vTPM) subsystem for
6Xen. The reader is assumed to have familiarity with building and installing Xen,
7Linux, and a basic understanding of the TPM and vTPM concepts.
8
9INTRODUCTION
10
11The goal of this work is to provide a TPM functionality to a virtual guest
12operating system (in Xen terms, a DomU). This allows programs to interact with
13a TPM in a virtual system the same way they interact with a TPM on the physical
14system. Each guest gets its own unique, emulated, software TPM. However, each
15of the vTPM's secrets (Keys, NVRAM, etc) are managed by a vTPM Manager domain,
16which seals the secrets to the Physical TPM. If the process of creating each of
17these domains (manager, vTPM, and guest) is trusted, the vTPM subsystem extends
18the chain of trust rooted in the hardware TPM to virtual machines in Xen. Each
19major component of vTPM is implemented as a separate domain, providing secure
20separation guaranteed by the hypervisor. The vTPM domains are implemented in
21mini-os to reduce memory and processor overhead.
22
23This mini-os vTPM subsystem was built on top of the previous vTPM work done by
24IBM and Intel corporation.
25
26
27DESIGN OVERVIEW
28---------------
29
30The architecture of vTPM is described below:
31
32+------------------+
33| Linux DomU | ...
34| | ^ |
35| v | |
36| xen-tpmfront |
37+------------------+
38 | ^
39 v |
40+------------------+
41| mini-os/tpmback |
42| | ^ |
43| v | |
44| vtpm-stubdom | ...
45| | ^ |
46| v | |
47| mini-os/tpmfront |
48+------------------+
49 | ^
50 v |
51+------------------+
52| mini-os/tpmback |
53| | ^ |
54| v | |
55| vtpmmgr-stubdom |
56| | ^ |
57| v | |
58| mini-os/tpm_tis |
59+------------------+
60 | ^
61 v |
62+------------------+
63| Hardware TPM |
64+------------------+
65
66 * Linux DomU: The Linux based guest that wants to use a vTPM. There may be
67 more than one of these.
68
69 * xen-tpmfront.ko: Linux kernel virtual TPM frontend driver. This driver
70 provides vTPM access to a Linux-based DomU.
71
72 * mini-os/tpmback: Mini-os TPM backend driver. The Linux frontend driver
73 connects to this backend driver to facilitate communications
74 between the Linux DomU and its vTPM. This driver is also
75 used by vtpmmgr-stubdom to communicate with vtpm-stubdom.
76
77 * vtpm-stubdom: A mini-os stub domain that implements a vTPM. There is a
78 one to one mapping between running vtpm-stubdom instances and
79 logical vtpms on the system. The vTPM Platform Configuration
80 Registers (PCRs) are normally all initialized to zero.
81
82 * mini-os/tpmfront: Mini-os TPM frontend driver. The vTPM mini-os domain
83 vtpm-stubdom uses this driver to communicate with
84 vtpmmgr-stubdom. This driver is also used in mini-os
85 domains such as pv-grub that talk to the vTPM domain.
86
87 * vtpmmgr-stubdom: A mini-os domain that implements the vTPM manager. There is
88 only one vTPM manager and it should be running during the
89 entire lifetime of the machine. This domain regulates
90 access to the physical TPM on the system and secures the
91 persistent state of each vTPM.
92
93 * mini-os/tpm_tis: Mini-os TPM version 1.2 TPM Interface Specification (TIS)
94 driver. This driver used by vtpmmgr-stubdom to talk directly to
95 the hardware TPM. Communication is facilitated by mapping
96 hardware memory pages into vtpmmgr-stubdom.
97
98 * Hardware TPM: The physical TPM that is soldered onto the motherboard.
99
100
101INTEGRATION WITH XEN
102--------------------
103
104Support for the vTPM driver was added in Xen using the libxl toolstack in Xen
1054.3. See the Xen documentation (docs/misc/vtpm.txt) for details on setting up
106the vTPM and vTPM Manager stub domains. Once the stub domains are running, a
107vTPM device is set up in the same manner as a disk or network device in the
108domain's configuration file.
109
110In order to use features such as IMA that require a TPM to be loaded prior to
111the initrd, the xen-tpmfront driver must be compiled in to the kernel. If not
112using such features, the driver can be compiled as a module and will be loaded
113as usual.
diff --git a/Documentation/trace/ftrace.txt b/Documentation/trace/ftrace.txt
index b937c6e2163c..bd365988e8d8 100644
--- a/Documentation/trace/ftrace.txt
+++ b/Documentation/trace/ftrace.txt
@@ -655,7 +655,11 @@ explains which is which.
655 read the irq flags variable, an 'X' will always 655 read the irq flags variable, an 'X' will always
656 be printed here. 656 be printed here.
657 657
658 need-resched: 'N' task need_resched is set, '.' otherwise. 658 need-resched:
659 'N' both TIF_NEED_RESCHED and PREEMPT_NEED_RESCHED is set,
660 'n' only TIF_NEED_RESCHED is set,
661 'p' only PREEMPT_NEED_RESCHED is set,
662 '.' otherwise.
659 663
660 hardirq/softirq: 664 hardirq/softirq:
661 'H' - hard irq occurred inside a softirq. 665 'H' - hard irq occurred inside a softirq.
@@ -735,7 +739,7 @@ Here are the available options:
735 function as well as the function being traced. 739 function as well as the function being traced.
736 740
737 print-parent: 741 print-parent:
738 bash-4000 [01] 1477.606694: simple_strtoul <-strict_strtoul 742 bash-4000 [01] 1477.606694: simple_strtoul <-kstrtoul
739 743
740 noprint-parent: 744 noprint-parent:
741 bash-4000 [01] 1477.606694: simple_strtoul 745 bash-4000 [01] 1477.606694: simple_strtoul
@@ -759,7 +763,7 @@ Here are the available options:
759 latency-format option is enabled. 763 latency-format option is enabled.
760 764
761 bash 4000 1 0 00000000 00010a95 [58127d26] 1720.415ms \ 765 bash 4000 1 0 00000000 00010a95 [58127d26] 1720.415ms \
762 (+0.000ms): simple_strtoul (strict_strtoul) 766 (+0.000ms): simple_strtoul (kstrtoul)
763 767
764 raw - This will display raw numbers. This option is best for 768 raw - This will display raw numbers. This option is best for
765 use with user applications that can translate the raw 769 use with user applications that can translate the raw
diff --git a/Documentation/trace/tracepoints.txt b/Documentation/trace/tracepoints.txt
index da49437d5aeb..ac4170dd0f24 100644
--- a/Documentation/trace/tracepoints.txt
+++ b/Documentation/trace/tracepoints.txt
@@ -40,7 +40,13 @@ Two elements are required for tracepoints :
40 40
41In order to use tracepoints, you should include linux/tracepoint.h. 41In order to use tracepoints, you should include linux/tracepoint.h.
42 42
43In include/trace/subsys.h : 43In include/trace/events/subsys.h :
44
45#undef TRACE_SYSTEM
46#define TRACE_SYSTEM subsys
47
48#if !defined(_TRACE_SUBSYS_H) || defined(TRACE_HEADER_MULTI_READ)
49#define _TRACE_SUBSYS_H
44 50
45#include <linux/tracepoint.h> 51#include <linux/tracepoint.h>
46 52
@@ -48,10 +54,16 @@ DECLARE_TRACE(subsys_eventname,
48 TP_PROTO(int firstarg, struct task_struct *p), 54 TP_PROTO(int firstarg, struct task_struct *p),
49 TP_ARGS(firstarg, p)); 55 TP_ARGS(firstarg, p));
50 56
57#endif /* _TRACE_SUBSYS_H */
58
59/* This part must be outside protection */
60#include <trace/define_trace.h>
61
51In subsys/file.c (where the tracing statement must be added) : 62In subsys/file.c (where the tracing statement must be added) :
52 63
53#include <trace/subsys.h> 64#include <trace/events/subsys.h>
54 65
66#define CREATE_TRACE_POINTS
55DEFINE_TRACE(subsys_eventname); 67DEFINE_TRACE(subsys_eventname);
56 68
57void somefct(void) 69void somefct(void)
@@ -72,6 +84,9 @@ Where :
72- TP_ARGS(firstarg, p) are the parameters names, same as found in the 84- TP_ARGS(firstarg, p) are the parameters names, same as found in the
73 prototype. 85 prototype.
74 86
87- if you use the header in multiple source files, #define CREATE_TRACE_POINTS
88 should appear only in one source file.
89
75Connecting a function (probe) to a tracepoint is done by providing a 90Connecting a function (probe) to a tracepoint is done by providing a
76probe (function to call) for the specific tracepoint through 91probe (function to call) for the specific tracepoint through
77register_trace_subsys_eventname(). Removing a probe is done through 92register_trace_subsys_eventname(). Removing a probe is done through
diff --git a/Documentation/usb/URB.txt b/Documentation/usb/URB.txt
index 00d2c644068e..50da0d455444 100644
--- a/Documentation/usb/URB.txt
+++ b/Documentation/usb/URB.txt
@@ -195,13 +195,12 @@ by the completion handler.
195 195
196The handler is of the following type: 196The handler is of the following type:
197 197
198 typedef void (*usb_complete_t)(struct urb *, struct pt_regs *) 198 typedef void (*usb_complete_t)(struct urb *)
199 199
200I.e., it gets the URB that caused the completion call, plus the 200I.e., it gets the URB that caused the completion call. In the completion
201register values at the time of the corresponding interrupt (if any). 201handler, you should have a look at urb->status to detect any USB errors.
202In the completion handler, you should have a look at urb->status to 202Since the context parameter is included in the URB, you can pass
203detect any USB errors. Since the context parameter is included in the URB, 203information to the completion handler.
204you can pass information to the completion handler.
205 204
206Note that even when an error (or unlink) is reported, data may have been 205Note that even when an error (or unlink) is reported, data may have been
207transferred. That's because USB transfers are packetized; it might take 206transferred. That's because USB transfers are packetized; it might take
@@ -210,12 +209,12 @@ have transferred successfully before the completion was called.
210 209
211 210
212NOTE: ***** WARNING ***** 211NOTE: ***** WARNING *****
213NEVER SLEEP IN A COMPLETION HANDLER. These are normally called 212NEVER SLEEP IN A COMPLETION HANDLER. These are often called in atomic
214during hardware interrupt processing. If you can, defer substantial 213context.
215work to a tasklet (bottom half) to keep system latencies low. You'll
216probably need to use spinlocks to protect data structures you manipulate
217in completion handlers.
218 214
215In the current kernel, completion handlers run with local interrupts
216disabled, but in the future this will be changed, so don't assume that
217local IRQs are always disabled inside completion handlers.
219 218
2201.8. How to do isochronous (ISO) transfers? 2191.8. How to do isochronous (ISO) transfers?
221 220
diff --git a/Documentation/usb/proc_usb_info.txt b/Documentation/usb/proc_usb_info.txt
index c9c3f0f5ad7b..98be91982677 100644
--- a/Documentation/usb/proc_usb_info.txt
+++ b/Documentation/usb/proc_usb_info.txt
@@ -54,9 +54,12 @@ it and 002/048 sometime later.
54 54
55These files can be read as binary data. The binary data consists 55These files can be read as binary data. The binary data consists
56of first the device descriptor, then the descriptors for each 56of first the device descriptor, then the descriptors for each
57configuration of the device. Multi-byte fields in the device and 57configuration of the device. Multi-byte fields in the device descriptor
58configuration descriptors, but not other descriptors, are converted 58are converted to host endianness by the kernel. The configuration
59to host endianness by the kernel. This information is also shown 59descriptors are in bus endian format! The configuration descriptor
60are wTotalLength bytes apart. If a device returns less configuration
61descriptor data than indicated by wTotalLength there will be a hole in
62the file for the missing bytes. This information is also shown
60in text form by the /proc/bus/usb/devices file, described later. 63in text form by the /proc/bus/usb/devices file, described later.
61 64
62These files may also be used to write user-level drivers for the USB 65These files may also be used to write user-level drivers for the USB
diff --git a/Documentation/vfio.txt b/Documentation/vfio.txt
index d7993dcf8537..b9ca02370d46 100644
--- a/Documentation/vfio.txt
+++ b/Documentation/vfio.txt
@@ -167,8 +167,8 @@ group and can access them as follows:
167 int container, group, device, i; 167 int container, group, device, i;
168 struct vfio_group_status group_status = 168 struct vfio_group_status group_status =
169 { .argsz = sizeof(group_status) }; 169 { .argsz = sizeof(group_status) };
170 struct vfio_iommu_x86_info iommu_info = { .argsz = sizeof(iommu_info) }; 170 struct vfio_iommu_type1_info iommu_info = { .argsz = sizeof(iommu_info) };
171 struct vfio_iommu_x86_dma_map dma_map = { .argsz = sizeof(dma_map) }; 171 struct vfio_iommu_type1_dma_map dma_map = { .argsz = sizeof(dma_map) };
172 struct vfio_device_info device_info = { .argsz = sizeof(device_info) }; 172 struct vfio_device_info device_info = { .argsz = sizeof(device_info) };
173 173
174 /* Create a new container */ 174 /* Create a new container */
@@ -193,7 +193,7 @@ group and can access them as follows:
193 ioctl(group, VFIO_GROUP_SET_CONTAINER, &container); 193 ioctl(group, VFIO_GROUP_SET_CONTAINER, &container);
194 194
195 /* Enable the IOMMU model we want */ 195 /* Enable the IOMMU model we want */
196 ioctl(container, VFIO_SET_IOMMU, VFIO_TYPE1_IOMMU) 196 ioctl(container, VFIO_SET_IOMMU, VFIO_TYPE1_IOMMU);
197 197
198 /* Get addition IOMMU info */ 198 /* Get addition IOMMU info */
199 ioctl(container, VFIO_IOMMU_GET_INFO, &iommu_info); 199 ioctl(container, VFIO_IOMMU_GET_INFO, &iommu_info);
@@ -229,7 +229,7 @@ group and can access them as follows:
229 229
230 irq.index = i; 230 irq.index = i;
231 231
232 ioctl(device, VFIO_DEVICE_GET_IRQ_INFO, &reg); 232 ioctl(device, VFIO_DEVICE_GET_IRQ_INFO, &irq);
233 233
234 /* Setup IRQs... eventfds, VFIO_DEVICE_SET_IRQS */ 234 /* Setup IRQs... eventfds, VFIO_DEVICE_SET_IRQS */
235 } 235 }
diff --git a/Documentation/video4linux/v4l2-controls.txt b/Documentation/video4linux/v4l2-controls.txt
index 676f87366025..06cf3ac83631 100644
--- a/Documentation/video4linux/v4l2-controls.txt
+++ b/Documentation/video4linux/v4l2-controls.txt
@@ -124,26 +124,27 @@ You add non-menu controls by calling v4l2_ctrl_new_std:
124 const struct v4l2_ctrl_ops *ops, 124 const struct v4l2_ctrl_ops *ops,
125 u32 id, s32 min, s32 max, u32 step, s32 def); 125 u32 id, s32 min, s32 max, u32 step, s32 def);
126 126
127Menu controls are added by calling v4l2_ctrl_new_std_menu: 127Menu and integer menu controls are added by calling v4l2_ctrl_new_std_menu:
128 128
129 struct v4l2_ctrl *v4l2_ctrl_new_std_menu(struct v4l2_ctrl_handler *hdl, 129 struct v4l2_ctrl *v4l2_ctrl_new_std_menu(struct v4l2_ctrl_handler *hdl,
130 const struct v4l2_ctrl_ops *ops, 130 const struct v4l2_ctrl_ops *ops,
131 u32 id, s32 max, s32 skip_mask, s32 def); 131 u32 id, s32 max, s32 skip_mask, s32 def);
132 132
133Or alternatively for integer menu controls, by calling v4l2_ctrl_new_int_menu: 133Menu controls with a driver specific menu are added by calling
134v4l2_ctrl_new_std_menu_items:
135
136 struct v4l2_ctrl *v4l2_ctrl_new_std_menu_items(
137 struct v4l2_ctrl_handler *hdl,
138 const struct v4l2_ctrl_ops *ops, u32 id, s32 max,
139 s32 skip_mask, s32 def, const char * const *qmenu);
140
141Integer menu controls with a driver specific menu can be added by calling
142v4l2_ctrl_new_int_menu:
134 143
135 struct v4l2_ctrl *v4l2_ctrl_new_int_menu(struct v4l2_ctrl_handler *hdl, 144 struct v4l2_ctrl *v4l2_ctrl_new_int_menu(struct v4l2_ctrl_handler *hdl,
136 const struct v4l2_ctrl_ops *ops, 145 const struct v4l2_ctrl_ops *ops,
137 u32 id, s32 max, s32 def, const s64 *qmenu_int); 146 u32 id, s32 max, s32 def, const s64 *qmenu_int);
138 147
139Standard menu controls with a driver specific menu are added by calling
140v4l2_ctrl_new_std_menu_items:
141
142 struct v4l2_ctrl *v4l2_ctrl_new_std_menu_items(
143 struct v4l2_ctrl_handler *hdl,
144 const struct v4l2_ctrl_ops *ops, u32 id, s32 max,
145 s32 skip_mask, s32 def, const char * const *qmenu);
146
147These functions are typically called right after the v4l2_ctrl_handler_init: 148These functions are typically called right after the v4l2_ctrl_handler_init:
148 149
149 static const s64 exp_bias_qmenu[] = { 150 static const s64 exp_bias_qmenu[] = {
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
index ef925eaa1460..858aecf21db2 100644
--- a/Documentation/virtual/kvm/api.txt
+++ b/Documentation/virtual/kvm/api.txt
@@ -53,7 +53,7 @@ incompatible change are allowed. However, there is an extension
53facility that allows backward-compatible extensions to the API to be 53facility that allows backward-compatible extensions to the API to be
54queried and used. 54queried and used.
55 55
56The extension mechanism is not based on on the Linux version number. 56The extension mechanism is not based on the Linux version number.
57Instead, kvm defines extension identifiers and a facility to query 57Instead, kvm defines extension identifiers and a facility to query
58whether a particular extension identifier is available. If it is, a 58whether a particular extension identifier is available. If it is, a
59set of ioctls is available for application use. 59set of ioctls is available for application use.
diff --git a/Documentation/virtual/kvm/cpuid.txt b/Documentation/virtual/kvm/cpuid.txt
index 83afe65d4966..22ff659bc0fb 100644
--- a/Documentation/virtual/kvm/cpuid.txt
+++ b/Documentation/virtual/kvm/cpuid.txt
@@ -43,6 +43,10 @@ KVM_FEATURE_CLOCKSOURCE2 || 3 || kvmclock available at msrs
43KVM_FEATURE_ASYNC_PF || 4 || async pf can be enabled by 43KVM_FEATURE_ASYNC_PF || 4 || async pf can be enabled by
44 || || writing to msr 0x4b564d02 44 || || writing to msr 0x4b564d02
45------------------------------------------------------------------------------ 45------------------------------------------------------------------------------
46KVM_FEATURE_PV_UNHALT || 7 || guest checks this feature bit
47 || || before enabling paravirtualized
48 || || spinlock support.
49------------------------------------------------------------------------------
46KVM_FEATURE_CLOCKSOURCE_STABLE_BIT || 24 || host will warn if no guest-side 50KVM_FEATURE_CLOCKSOURCE_STABLE_BIT || 24 || host will warn if no guest-side
47 || || per-cpu warps are expected in 51 || || per-cpu warps are expected in
48 || || kvmclock. 52 || || kvmclock.
diff --git a/Documentation/virtual/kvm/hypercalls.txt b/Documentation/virtual/kvm/hypercalls.txt
index ea113b5d87a4..022198e389d7 100644
--- a/Documentation/virtual/kvm/hypercalls.txt
+++ b/Documentation/virtual/kvm/hypercalls.txt
@@ -64,3 +64,17 @@ Purpose: To enable communication between the hypervisor and guest there is a
64shared page that contains parts of supervisor visible register state. 64shared page that contains parts of supervisor visible register state.
65The guest can map this shared page to access its supervisor register through 65The guest can map this shared page to access its supervisor register through
66memory using this hypercall. 66memory using this hypercall.
67
685. KVM_HC_KICK_CPU
69------------------------
70Architecture: x86
71Status: active
72Purpose: Hypercall used to wakeup a vcpu from HLT state
73Usage example : A vcpu of a paravirtualized guest that is busywaiting in guest
74kernel mode for an event to occur (ex: a spinlock to become available) can
75execute HLT instruction once it has busy-waited for more than a threshold
76time-interval. Execution of HLT instruction would cause the hypervisor to put
77the vcpu to sleep until occurence of an appropriate event. Another vcpu of the
78same guest can wakeup the sleeping vcpu by issuing KVM_HC_KICK_CPU hypercall,
79specifying APIC ID (a1) of the vcpu to be woken up. An additional argument (a0)
80is used in the hypercall for future use.
diff --git a/Documentation/vm/hugetlbpage.txt b/Documentation/vm/hugetlbpage.txt
index 4ac359b7aa17..bdd4bb97fff7 100644
--- a/Documentation/vm/hugetlbpage.txt
+++ b/Documentation/vm/hugetlbpage.txt
@@ -165,6 +165,7 @@ which function as described above for the default huge page-sized case.
165 165
166 166
167Interaction of Task Memory Policy with Huge Page Allocation/Freeing 167Interaction of Task Memory Policy with Huge Page Allocation/Freeing
168===================================================================
168 169
169Whether huge pages are allocated and freed via the /proc interface or 170Whether huge pages are allocated and freed via the /proc interface or
170the /sysfs interface using the nr_hugepages_mempolicy attribute, the NUMA 171the /sysfs interface using the nr_hugepages_mempolicy attribute, the NUMA
@@ -229,6 +230,7 @@ resulting effect on persistent huge page allocation is as follows:
229 of huge pages over all on-lines nodes with memory. 230 of huge pages over all on-lines nodes with memory.
230 231
231Per Node Hugepages Attributes 232Per Node Hugepages Attributes
233=============================
232 234
233A subset of the contents of the root huge page control directory in sysfs, 235A subset of the contents of the root huge page control directory in sysfs,
234described above, will be replicated under each the system device of each 236described above, will be replicated under each the system device of each
@@ -258,6 +260,7 @@ applied, from which node the huge page allocation will be attempted.
258 260
259 261
260Using Huge Pages 262Using Huge Pages
263================
261 264
262If the user applications are going to request huge pages using mmap system 265If the user applications are going to request huge pages using mmap system
263call, then it is required that system administrator mount a file system of 266call, then it is required that system administrator mount a file system of
@@ -296,20 +299,16 @@ calls, though the mount of filesystem will be required for using mmap calls
296without MAP_HUGETLB. For an example of how to use mmap with MAP_HUGETLB see 299without MAP_HUGETLB. For an example of how to use mmap with MAP_HUGETLB see
297map_hugetlb.c. 300map_hugetlb.c.
298 301
299******************************************************************* 302Examples
303========
300 304
301/* 3051) map_hugetlb: see tools/testing/selftests/vm/map_hugetlb.c
302 * map_hugetlb: see tools/testing/selftests/vm/map_hugetlb.c
303 */
304 306
305******************************************************************* 3072) hugepage-shm: see tools/testing/selftests/vm/hugepage-shm.c
306 308
307/* 3093) hugepage-mmap: see tools/testing/selftests/vm/hugepage-mmap.c
308 * hugepage-shm: see tools/testing/selftests/vm/hugepage-shm.c
309 */
310 310
311******************************************************************* 3114) The libhugetlbfs (http://libhugetlbfs.sourceforge.net) library provides a
312 312 wide range of userspace tools to help with huge page usability, environment
313/* 313 setup, and control. Furthermore it provides useful test cases that should be
314 * hugepage-mmap: see tools/testing/selftests/vm/hugepage-mmap.c 314 used when modifying code to ensure no regressions are introduced.
315 */
diff --git a/Documentation/vm/soft-dirty.txt b/Documentation/vm/soft-dirty.txt
index 9a12a5956bc0..55684d11a1e8 100644
--- a/Documentation/vm/soft-dirty.txt
+++ b/Documentation/vm/soft-dirty.txt
@@ -28,6 +28,13 @@ This is so, since the pages are still mapped to physical memory, and thus all
28the kernel does is finds this fact out and puts both writable and soft-dirty 28the kernel does is finds this fact out and puts both writable and soft-dirty
29bits on the PTE. 29bits on the PTE.
30 30
31 While in most cases tracking memory changes by #PF-s is more than enough
32there is still a scenario when we can lose soft dirty bits -- a task
33unmaps a previously mapped memory region and then maps a new one at exactly
34the same place. When unmap is called, the kernel internally clears PTE values
35including soft dirty bits. To notify user space application about such
36memory region renewal the kernel always marks new memory regions (and
37expanded regions) as soft dirty.
31 38
32 This feature is actively used by the checkpoint-restore project. You 39 This feature is actively used by the checkpoint-restore project. You
33can find more details about it on http://criu.org 40can find more details about it on http://criu.org
diff --git a/Documentation/workqueue.txt b/Documentation/workqueue.txt
index a6ab4b62d926..f81a65b54c29 100644
--- a/Documentation/workqueue.txt
+++ b/Documentation/workqueue.txt
@@ -85,32 +85,31 @@ workqueue.
85Special purpose threads, called worker threads, execute the functions 85Special purpose threads, called worker threads, execute the functions
86off of the queue, one after the other. If no work is queued, the 86off of the queue, one after the other. If no work is queued, the
87worker threads become idle. These worker threads are managed in so 87worker threads become idle. These worker threads are managed in so
88called thread-pools. 88called worker-pools.
89 89
90The cmwq design differentiates between the user-facing workqueues that 90The cmwq design differentiates between the user-facing workqueues that
91subsystems and drivers queue work items on and the backend mechanism 91subsystems and drivers queue work items on and the backend mechanism
92which manages thread-pools and processes the queued work items. 92which manages worker-pools and processes the queued work items.
93 93
94The backend is called gcwq. There is one gcwq for each possible CPU 94There are two worker-pools, one for normal work items and the other
95and one gcwq to serve work items queued on unbound workqueues. Each 95for high priority ones, for each possible CPU and some extra
96gcwq has two thread-pools - one for normal work items and the other 96worker-pools to serve work items queued on unbound workqueues - the
97for high priority ones. 97number of these backing pools is dynamic.
98 98
99Subsystems and drivers can create and queue work items through special 99Subsystems and drivers can create and queue work items through special
100workqueue API functions as they see fit. They can influence some 100workqueue API functions as they see fit. They can influence some
101aspects of the way the work items are executed by setting flags on the 101aspects of the way the work items are executed by setting flags on the
102workqueue they are putting the work item on. These flags include 102workqueue they are putting the work item on. These flags include
103things like CPU locality, reentrancy, concurrency limits, priority and 103things like CPU locality, concurrency limits, priority and more. To
104more. To get a detailed overview refer to the API description of 104get a detailed overview refer to the API description of
105alloc_workqueue() below. 105alloc_workqueue() below.
106 106
107When a work item is queued to a workqueue, the target gcwq and 107When a work item is queued to a workqueue, the target worker-pool is
108thread-pool is determined according to the queue parameters and 108determined according to the queue parameters and workqueue attributes
109workqueue attributes and appended on the shared worklist of the 109and appended on the shared worklist of the worker-pool. For example,
110thread-pool. For example, unless specifically overridden, a work item 110unless specifically overridden, a work item of a bound workqueue will
111of a bound workqueue will be queued on the worklist of either normal 111be queued on the worklist of either normal or highpri worker-pool that
112or highpri thread-pool of the gcwq that is associated to the CPU the 112is associated to the CPU the issuer is running on.
113issuer is running on.
114 113
115For any worker pool implementation, managing the concurrency level 114For any worker pool implementation, managing the concurrency level
116(how many execution contexts are active) is an important issue. cmwq 115(how many execution contexts are active) is an important issue. cmwq
@@ -118,14 +117,14 @@ tries to keep the concurrency at a minimal but sufficient level.
118Minimal to save resources and sufficient in that the system is used at 117Minimal to save resources and sufficient in that the system is used at
119its full capacity. 118its full capacity.
120 119
121Each thread-pool bound to an actual CPU implements concurrency 120Each worker-pool bound to an actual CPU implements concurrency
122management by hooking into the scheduler. The thread-pool is notified 121management by hooking into the scheduler. The worker-pool is notified
123whenever an active worker wakes up or sleeps and keeps track of the 122whenever an active worker wakes up or sleeps and keeps track of the
124number of the currently runnable workers. Generally, work items are 123number of the currently runnable workers. Generally, work items are
125not expected to hog a CPU and consume many cycles. That means 124not expected to hog a CPU and consume many cycles. That means
126maintaining just enough concurrency to prevent work processing from 125maintaining just enough concurrency to prevent work processing from
127stalling should be optimal. As long as there are one or more runnable 126stalling should be optimal. As long as there are one or more runnable
128workers on the CPU, the thread-pool doesn't start execution of a new 127workers on the CPU, the worker-pool doesn't start execution of a new
129work, but, when the last running worker goes to sleep, it immediately 128work, but, when the last running worker goes to sleep, it immediately
130schedules a new worker so that the CPU doesn't sit idle while there 129schedules a new worker so that the CPU doesn't sit idle while there
131are pending work items. This allows using a minimal number of workers 130are pending work items. This allows using a minimal number of workers
@@ -135,19 +134,20 @@ Keeping idle workers around doesn't cost other than the memory space
135for kthreads, so cmwq holds onto idle ones for a while before killing 134for kthreads, so cmwq holds onto idle ones for a while before killing
136them. 135them.
137 136
138For an unbound wq, the above concurrency management doesn't apply and 137For unbound workqueues, the number of backing pools is dynamic.
139the thread-pools for the pseudo unbound CPU try to start executing all 138Unbound workqueue can be assigned custom attributes using
140work items as soon as possible. The responsibility of regulating 139apply_workqueue_attrs() and workqueue will automatically create
141concurrency level is on the users. There is also a flag to mark a 140backing worker pools matching the attributes. The responsibility of
142bound wq to ignore the concurrency management. Please refer to the 141regulating concurrency level is on the users. There is also a flag to
143API section for details. 142mark a bound wq to ignore the concurrency management. Please refer to
143the API section for details.
144 144
145Forward progress guarantee relies on that workers can be created when 145Forward progress guarantee relies on that workers can be created when
146more execution contexts are necessary, which in turn is guaranteed 146more execution contexts are necessary, which in turn is guaranteed
147through the use of rescue workers. All work items which might be used 147through the use of rescue workers. All work items which might be used
148on code paths that handle memory reclaim are required to be queued on 148on code paths that handle memory reclaim are required to be queued on
149wq's that have a rescue-worker reserved for execution under memory 149wq's that have a rescue-worker reserved for execution under memory
150pressure. Else it is possible that the thread-pool deadlocks waiting 150pressure. Else it is possible that the worker-pool deadlocks waiting
151for execution contexts to free up. 151for execution contexts to free up.
152 152
153 153
@@ -166,25 +166,15 @@ resources, scheduled and executed.
166 166
167@flags: 167@flags:
168 168
169 WQ_NON_REENTRANT
170
171 By default, a wq guarantees non-reentrance only on the same
172 CPU. A work item may not be executed concurrently on the same
173 CPU by multiple workers but is allowed to be executed
174 concurrently on multiple CPUs. This flag makes sure
175 non-reentrance is enforced across all CPUs. Work items queued
176 to a non-reentrant wq are guaranteed to be executed by at most
177 one worker system-wide at any given time.
178
179 WQ_UNBOUND 169 WQ_UNBOUND
180 170
181 Work items queued to an unbound wq are served by a special 171 Work items queued to an unbound wq are served by the special
182 gcwq which hosts workers which are not bound to any specific 172 woker-pools which host workers which are not bound to any
183 CPU. This makes the wq behave as a simple execution context 173 specific CPU. This makes the wq behave as a simple execution
184 provider without concurrency management. The unbound gcwq 174 context provider without concurrency management. The unbound
185 tries to start execution of work items as soon as possible. 175 worker-pools try to start execution of work items as soon as
186 Unbound wq sacrifices locality but is useful for the following 176 possible. Unbound wq sacrifices locality but is useful for
187 cases. 177 the following cases.
188 178
189 * Wide fluctuation in the concurrency level requirement is 179 * Wide fluctuation in the concurrency level requirement is
190 expected and using bound wq may end up creating large number 180 expected and using bound wq may end up creating large number
@@ -209,10 +199,10 @@ resources, scheduled and executed.
209 WQ_HIGHPRI 199 WQ_HIGHPRI
210 200
211 Work items of a highpri wq are queued to the highpri 201 Work items of a highpri wq are queued to the highpri
212 thread-pool of the target gcwq. Highpri thread-pools are 202 worker-pool of the target cpu. Highpri worker-pools are
213 served by worker threads with elevated nice level. 203 served by worker threads with elevated nice level.
214 204
215 Note that normal and highpri thread-pools don't interact with 205 Note that normal and highpri worker-pools don't interact with
216 each other. Each maintain its separate pool of workers and 206 each other. Each maintain its separate pool of workers and
217 implements concurrency management among its workers. 207 implements concurrency management among its workers.
218 208
@@ -221,7 +211,7 @@ resources, scheduled and executed.
221 Work items of a CPU intensive wq do not contribute to the 211 Work items of a CPU intensive wq do not contribute to the
222 concurrency level. In other words, runnable CPU intensive 212 concurrency level. In other words, runnable CPU intensive
223 work items will not prevent other work items in the same 213 work items will not prevent other work items in the same
224 thread-pool from starting execution. This is useful for bound 214 worker-pool from starting execution. This is useful for bound
225 work items which are expected to hog CPU cycles so that their 215 work items which are expected to hog CPU cycles so that their
226 execution is regulated by the system scheduler. 216 execution is regulated by the system scheduler.
227 217
@@ -233,6 +223,10 @@ resources, scheduled and executed.
233 223
234 This flag is meaningless for unbound wq. 224 This flag is meaningless for unbound wq.
235 225
226Note that the flag WQ_NON_REENTRANT no longer exists as all workqueues
227are now non-reentrant - any work item is guaranteed to be executed by
228at most one worker system-wide at any given time.
229
236@max_active: 230@max_active:
237 231
238@max_active determines the maximum number of execution contexts per 232@max_active determines the maximum number of execution contexts per
@@ -254,9 +248,9 @@ recommended.
254 248
255Some users depend on the strict execution ordering of ST wq. The 249Some users depend on the strict execution ordering of ST wq. The
256combination of @max_active of 1 and WQ_UNBOUND is used to achieve this 250combination of @max_active of 1 and WQ_UNBOUND is used to achieve this
257behavior. Work items on such wq are always queued to the unbound gcwq 251behavior. Work items on such wq are always queued to the unbound
258and only one work item can be active at any given time thus achieving 252worker-pools and only one work item can be active at any given time thus
259the same ordering property as ST wq. 253achieving the same ordering property as ST wq.
260 254
261 255
2625. Example Execution Scenarios 2565. Example Execution Scenarios
diff --git a/Documentation/x86/boot.txt b/Documentation/x86/boot.txt
index fc66d42422ee..f4f268c2b826 100644
--- a/Documentation/x86/boot.txt
+++ b/Documentation/x86/boot.txt
@@ -58,7 +58,7 @@ Protocol 2.11: (Kernel 3.6) Added a field for offset of EFI handover
58 protocol entry point. 58 protocol entry point.
59 59
60Protocol 2.12: (Kernel 3.8) Added the xloadflags field and extension fields 60Protocol 2.12: (Kernel 3.8) Added the xloadflags field and extension fields
61 to struct boot_params for for loading bzImage and ramdisk 61 to struct boot_params for loading bzImage and ramdisk
62 above 4G in 64bit. 62 above 4G in 64bit.
63 63
64**** MEMORY LAYOUT 64**** MEMORY LAYOUT
diff --git a/Documentation/x86/x86_64/boot-options.txt b/Documentation/x86/x86_64/boot-options.txt
index e9e8ddbbf376..1228b22e142b 100644
--- a/Documentation/x86/x86_64/boot-options.txt
+++ b/Documentation/x86/x86_64/boot-options.txt
@@ -176,6 +176,11 @@ ACPI
176 176
177 acpi=noirq Don't route interrupts 177 acpi=noirq Don't route interrupts
178 178
179 acpi=nocmcff Disable firmware first mode for corrected errors. This
180 disables parsing the HEST CMC error source to check if
181 firmware has set the FF flag. This may result in
182 duplicate corrected error reports.
183
179PCI 184PCI
180 185
181 pci=off Don't use PCI 186 pci=off Don't use PCI
diff --git a/Documentation/zh_CN/SubmittingPatches b/Documentation/zh_CN/SubmittingPatches
index 0f4385a62a49..be0bd4725062 100644
--- a/Documentation/zh_CN/SubmittingPatches
+++ b/Documentation/zh_CN/SubmittingPatches
@@ -146,7 +146,7 @@ Majordomo lists of VGER.KERNEL.ORG at:
146 <http://vger.kernel.org/vger-lists.html> 146 <http://vger.kernel.org/vger-lists.html>
147 147
148如果改动影响了用户空间和内核之间的接口,请给 MAN-PAGES 的维护者(列在 148如果改动影响了用户空间和内核之间的接口,请给 MAN-PAGES 的维护者(列在
149MAITAINERS 文件里的)发送一个手册页(man-pages)补丁,或者至少通知一下改 149MAINTAINERS 文件里的)发送一个手册页(man-pages)补丁,或者至少通知一下改
150变,让一些信息有途径进入手册页。 150变,让一些信息有途径进入手册页。
151 151
152即使在第四步的时候,维护者没有作出回应,也要确认在修改他们的代码的时候 152即使在第四步的时候,维护者没有作出回应,也要确认在修改他们的代码的时候