]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
Merge tag 'dmaengine-5.3-rc1' of git://git.infradead.org/users/vkoul/slave-dma
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 17 Jul 2019 16:55:43 +0000 (09:55 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 17 Jul 2019 16:55:43 +0000 (09:55 -0700)
Pull dmaengine updates from Vinod Koul:

 - Add support in dmaengine core to do device node checks for DT devices
   and update bunch of drivers to use that and remove open coding from
   drivers

 - New driver/driver support for new hardware, namely:
     - MediaTek UART APDMA
     - Freescale i.mx7ulp edma2
     - Synopsys eDMA IP core version 0
     - Allwinner H6 DMA

 - Updates to axi-dma and support for interleaved cyclic transfers

 - Greg's debugfs return value check removals on drivers

 - Updates to stm32-dma, hsu, dw, pl330, tegra drivers

* tag 'dmaengine-5.3-rc1' of git://git.infradead.org/users/vkoul/slave-dma: (68 commits)
  dmaengine: Revert "dmaengine: fsl-edma: add i.mx7ulp edma2 version support"
  dmaengine: at_xdmac: check for non-empty xfers_list before invoking callback
  Documentation: dmaengine: clean up description of dmatest usage
  dmaengine: tegra210-adma: remove PM_CLK dependency
  dmaengine: fsl-edma: add i.mx7ulp edma2 version support
  dt-bindings: dma: fsl-edma: add new i.mx7ulp-edma
  dmaengine: fsl-edma-common: version check for v2 instead
  dmaengine: fsl-edma-common: move dmamux register to another single function
  dmaengine: fsl-edma: add drvdata for fsl-edma
  dmaengine: Revert "dmaengine: fsl-edma: support little endian for edma driver"
  dmaengine: rcar-dmac: Reject zero-length slave DMA requests
  dmaengine: dw: Enable iDMA 32-bit on Intel Elkhart Lake
  dmaengine: dw-edma: fix semicolon.cocci warnings
  dmaengine: sh: usb-dmac: Use [] to denote a flexible array member
  dmaengine: dmatest: timeout value of -1 should specify infinite wait
  dmaengine: dw: Distinguish ->remove() between DW and iDMA 32-bit
  dmaengine: fsl-edma: support little endian for edma driver
  dmaengine: hsu: Revert "set HSU_CH_MTSR to memory width"
  dmagengine: pl330: add code to get reset property
  dt-bindings: pl330: document the optional resets property
  ...

34 files changed:
1  2 
MAINTAINERS
drivers/dma/Kconfig
drivers/dma/amba-pl08x.c
drivers/dma/at_xdmac.c
drivers/dma/coh901318.c
drivers/dma/dma-axi-dmac.c
drivers/dma/dma-jz4780.c
drivers/dma/dmaengine.c
drivers/dma/dmatest.c
drivers/dma/fsl-edma.c
drivers/dma/hsu/hsu.c
drivers/dma/imx-sdma.c
drivers/dma/mediatek/Kconfig
drivers/dma/mediatek/Makefile
drivers/dma/mic_x100_dma.c
drivers/dma/mmp_tdma.c
drivers/dma/mxs-dma.c
drivers/dma/of-dma.c
drivers/dma/pl330.c
drivers/dma/pxa_dma.c
drivers/dma/qcom/hidma.h
drivers/dma/qcom/hidma_dbg.c
drivers/dma/stm32-dma.c
drivers/dma/stm32-dmamux.c
drivers/dma/sun6i-dma.c
drivers/dma/tegra20-apb-dma.c
drivers/dma/virt-dma.c
drivers/dma/virt-dma.h
drivers/dma/xilinx/xilinx_dma.c
drivers/misc/pci_endpoint_test.c
drivers/soc/tegra/fuse/fuse-tegra20.c
include/linux/dmaengine.h
include/linux/pci_ids.h
include/linux/platform_data/dma-imx.h

diff --combined MAINTAINERS
index 51ef58f15cdd23776de44fe40e3a987bb34618ad,a43f960ae673997d018b1dfa185464e4474b7058..d452d7bbbaad01b5ffa24fbf98f16e98c7967848
@@@ -321,7 -321,7 +321,7 @@@ F: drivers/pnp/pnpacpi
  F:    include/linux/acpi.h
  F:    include/linux/fwnode.h
  F:    include/acpi/
 -F:    Documentation/acpi/
 +F:    Documentation/firmware-guide/acpi/
  F:    Documentation/ABI/testing/sysfs-bus-acpi
  F:    Documentation/ABI/testing/configfs-acpi
  F:    drivers/pci/*acpi*
@@@ -364,7 -364,7 +364,7 @@@ F: drivers/acpi/fan.
  
  ACPI FOR ARM64 (ACPI/arm64)
  M:    Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 -M:    Hanjun Guo <hanjun.guo@linaro.org>
 +M:    Hanjun Guo <guohanjun@huawei.com>
  M:    Sudeep Holla <sudeep.holla@arm.com>
  L:    linux-acpi@vger.kernel.org
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -551,7 -551,6 +551,7 @@@ W: http://wiki.analog.com/ADXL34
  W:    http://ez.analog.com/community/linux-device-drivers
  S:    Supported
  F:    drivers/input/misc/adxl34x.c
 +F:    Documentation/devicetree/bindings/iio/accel/adi,adxl345.yaml
  
  ADXL372 THREE-AXIS DIGITAL ACCELEROMETER DRIVER
  M:    Stefan Popa <stefan.popa@analog.com>
@@@ -560,7 -559,7 +560,7 @@@ S: Supporte
  F:    drivers/iio/accel/adxl372.c
  F:    drivers/iio/accel/adxl372_spi.c
  F:    drivers/iio/accel/adxl372_i2c.c
 -F:    Documentation/devicetree/bindings/iio/accel/adxl372.txt
 +F:    Documentation/devicetree/bindings/iio/accel/adi,adxl372.yaml
  
  AF9013 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
@@@ -669,13 -668,6 +669,13 @@@ S:       Maintaine
  F:    Documentation/i2c/busses/i2c-ali1563
  F:    drivers/i2c/busses/i2c-ali1563.c
  
 +ALLEGRO DVT VIDEO IP CORE DRIVER
 +M:    Michael Tretter <m.tretter@pengutronix.de>
 +R:    Pengutronix Kernel Team <kernel@pengutronix.de>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    drivers/staging/media/allegro-dvt/
 +
  ALLWINNER SECURITY SYSTEM
  M:    Corentin Labbe <clabbe.montjoie@gmail.com>
  L:    linux-crypto@vger.kernel.org
@@@ -704,7 -696,6 +704,7 @@@ F: drivers/input/mouse/alps.
  ALTERA I2C CONTROLLER DRIVER
  M:    Thor Thayer <thor.thayer@linux.intel.com>
  S:    Maintained
 +F:    Documentation/devicetree/bindings/i2c/i2c-altera.txt
  F:    drivers/i2c/busses/i2c-altera.c
  
  ALTERA MAILBOX DRIVER
@@@ -917,17 -908,8 +917,17 @@@ S:       Supporte
  F:    drivers/iio/adc/ad7768-1.c
  F:    Documentation/devicetree/bindings/iio/adc/adi,ad7768-1.txt
  
 +ANALOG DEVICES INC AD7780 DRIVER
 +M:    Michael Hennerich <Michael.Hennerich@analog.com>
 +M:    Renato Lui Geh <renatogeh@gmail.com>
 +L:    linux-iio@vger.kernel.org
 +W:    http://ez.analog.com/community/linux-device-drivers
 +S:    Supported
 +F:    drivers/iio/adc/ad7780.c
 +F:    Documentation/devicetree/bindings/iio/adc/adi,ad7780.yaml
 +
  ANALOG DEVICES INC AD9389B DRIVER
 -M:    Hans Verkuil <hans.verkuil@cisco.com>
 +M:    Hans Verkuil <hverkuil-cisco@xs4all.nl>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/i2c/ad9389b*
@@@ -938,13 -920,6 +938,13 @@@ S:       Supporte
  F:    drivers/mux/adgs1408.c
  F:    Documentation/devicetree/bindings/mux/adi,adgs1408.txt
  
 +ANALOG DEVICES INC ADIS DRIVER LIBRARY
 +M:    Alexandru Ardelean <alexandru.ardelean@analog.com>
 +S:    Supported
 +L:    linux-iio@vger.kernel.org
 +F:    include/linux/iio/imu/adis.h
 +F:    drivers/iio/imu/adis.c
 +
  ANALOG DEVICES INC ADP5061 DRIVER
  M:    Stefan Popa <stefan.popa@analog.com>
  L:    linux-pm@vger.kernel.org
@@@ -966,19 -941,19 +966,19 @@@ S:      Maintaine
  F:    drivers/media/i2c/adv748x/*
  
  ANALOG DEVICES INC ADV7511 DRIVER
 -M:    Hans Verkuil <hans.verkuil@cisco.com>
 +M:    Hans Verkuil <hverkuil-cisco@xs4all.nl>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/i2c/adv7511*
  
  ANALOG DEVICES INC ADV7604 DRIVER
 -M:    Hans Verkuil <hans.verkuil@cisco.com>
 +M:    Hans Verkuil <hverkuil-cisco@xs4all.nl>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/i2c/adv7604*
  
  ANALOG DEVICES INC ADV7842 DRIVER
 -M:    Hans Verkuil <hans.verkuil@cisco.com>
 +M:    Hans Verkuil <hverkuil-cisco@xs4all.nl>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/i2c/adv7842*
@@@ -1155,7 -1130,7 +1155,7 @@@ APPLIED MICRO (APM) X-GENE SOC PM
  M:    Khuong Dinh <khuong@os.amperecomputing.com>
  S:    Supported
  F:    drivers/perf/xgene_pmu.c
 -F:    Documentation/perf/xgene-pmu.txt
 +F:    Documentation/admin-guide/perf/xgene-pmu.rst
  F:    Documentation/devicetree/bindings/perf/apm-xgene-pmu.txt
  
  APTINA CAMERA SENSOR PLL
@@@ -1164,15 -1139,6 +1164,15 @@@ L:    linux-media@vger.kernel.or
  S:    Maintained
  F:    drivers/media/i2c/aptina-pll.*
  
 +AQUANTIA ETHERNET DRIVER (atlantic)
 +M:    Igor Russkikh <igor.russkikh@aquantia.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +W:    http://www.aquantia.com
 +Q:    http://patchwork.ozlabs.org/project/netdev/list/
 +F:    drivers/net/ethernet/aquantia/atlantic/
 +F:    Documentation/networking/device_drivers/aquantia/atlantic.txt
 +
  ARC FRAMEBUFFER DRIVER
  M:    Jaya Kumar <jayalk@intworks.biz>
  S:    Maintained
@@@ -1208,7 -1174,6 +1208,7 @@@ S:      Maintaine
  F:    Documentation/devicetree/bindings/arm/arm-boards
  F:    Documentation/devicetree/bindings/auxdisplay/arm-charlcd.txt
  F:    Documentation/devicetree/bindings/clock/arm-integrator.txt
 +F:    Documentation/devicetree/bindings/i2c/i2c-versatile.txt
  F:    Documentation/devicetree/bindings/interrupt-controller/arm,versatile-fpga-irq.txt
  F:    Documentation/devicetree/bindings/mtd/arm-versatile.txt
  F:    arch/arm/mach-integrator/
@@@ -1268,7 -1233,7 +1268,7 @@@ F:      arch/arm/lib/floppydma.
  F:    arch/arm/include/asm/floppy.h
  
  ARM PMU PROFILING AND DEBUGGING
 -M:    Will Deacon <will.deacon@arm.com>
 +M:    Will Deacon <will@kernel.org>
  M:    Mark Rutland <mark.rutland@arm.com>
  S:    Maintained
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1323,7 -1288,7 +1323,7 @@@ ARM PRIMECELL SSP PL022 SPI DRIVE
  M:    Linus Walleij <linus.walleij@linaro.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -F:    Documentation/devicetree/bindings/spi/spi_pl022.txt
 +F:    Documentation/devicetree/bindings/spi/spi-pl022.yaml
  F:    drivers/spi/spi-pl022.c
  
  ARM PRIMECELL UART PL010 AND PL011 DRIVERS
@@@ -1339,14 -1304,8 +1339,14 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/interrupt-controller/arm,vic.txt
  F:    drivers/irqchip/irq-vic.c
  
 +AMAZON ANNAPURNA LABS FIC DRIVER
 +M:    Talel Shenhar <talel@amazon.com>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/interrupt-controller/amazon,al-fic.txt
 +F:    drivers/irqchip/irq-al-fic.c
 +
  ARM SMMU DRIVERS
 -M:    Will Deacon <will.deacon@arm.com>
 +M:    Will Deacon <will@kernel.org>
  R:    Robin Murphy <robin.murphy@arm.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
@@@ -1822,7 -1781,6 +1822,7 @@@ ARM/LPC18XX ARCHITECTUR
  M:    Vladimir Zapolskiy <vz@mleia.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 +F:    Documentation/devicetree/bindings/i2c/i2c-lpc2k.txt
  F:    arch/arm/boot/dts/lpc43*
  F:    drivers/i2c/busses/i2c-lpc2k.c
  F:    drivers/memory/pl172.c
@@@ -1836,7 -1794,6 +1836,7 @@@ M:      Sylvain Lemieux <slemieux.tyco@gmail
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  T:    git git://github.com/vzapolskiy/linux-lpc32xx.git
  S:    Maintained
 +F:    Documentation/devicetree/bindings/i2c/i2c-pnx.txt
  F:    arch/arm/boot/dts/lpc32*
  F:    arch/arm/mach-lpc32xx/
  F:    drivers/i2c/busses/i2c-pnx.c
@@@ -1961,8 -1918,6 +1961,8 @@@ ARM/NOMADIK/U300/Ux500 ARCHITECTURE
  M:    Linus Walleij <linus.walleij@linaro.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 +F:    Documentation/devicetree/bindings/i2c/i2c-nomadik.txt
 +F:    Documentation/devicetree/bindings/i2c/i2c-stu300.txt
  F:    arch/arm/mach-nomadik/
  F:    arch/arm/mach-u300/
  F:    arch/arm/mach-ux500/
@@@ -2124,7 -2079,7 +2124,7 @@@ F:      drivers/tty/serial/msm_serial.
  F:    drivers/usb/dwc3/dwc3-qcom.c
  F:    include/dt-bindings/*/qcom*
  F:    include/linux/*/qcom*
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/agross/linux.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git
  
  ARM/RADISYS ENP2611 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
@@@ -2140,7 -2095,7 +2140,7 @@@ F:      arch/arm/boot/dts/rda8810pl-
  F:    drivers/clocksource/timer-rda.c
  F:    drivers/irqchip/irq-rda-intc.c
  F:    drivers/tty/serial/rda-uart.c
 -F:    Documentation/devicetree/bindings/arm/rda.txt
 +F:    Documentation/devicetree/bindings/arm/rda.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/rda,8810pl-intc.txt
  F:    Documentation/devicetree/bindings/serial/rda,8810pl-uart.txt
  F:    Documentation/devicetree/bindings/timer/rda,8810pl-timer.txt
@@@ -2185,7 -2140,6 +2185,7 @@@ L:      linux-arm-kernel@lists.infradead.or
  L:    linux-rockchip@lists.infradead.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git
  S:    Maintained
 +F:    Documentation/devicetree/bindings/i2c/i2c-rk3x.txt
  F:    arch/arm/boot/dts/rk3*
  F:    arch/arm/boot/dts/rv1108*
  F:    arch/arm/mach-rockchip/
@@@ -2218,7 -2172,7 +2218,7 @@@ F:      drivers/*/*s3c64xx
  F:    drivers/*/*s5pv210*
  F:    drivers/memory/samsung/*
  F:    drivers/soc/samsung/*
 -F:    Documentation/arm/Samsung/
 +F:    Documentation/arm/samsung/
  F:    Documentation/devicetree/bindings/arm/samsung/
  F:    Documentation/devicetree/bindings/sram/samsung-sram.txt
  F:    Documentation/devicetree/bindings/power/pd-samsung.txt
@@@ -2321,7 -2275,6 +2321,7 @@@ M:      Patrice Chotard <patrice.chotard@st.
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.stlinux.com
  S:    Maintained
 +F:    Documentation/devicetree/bindings/i2c/i2c-st.txt
  F:    arch/arm/mach-sti/
  F:    arch/arm/boot/dts/sti*
  F:    drivers/char/hw_random/st-rng.c
@@@ -2383,7 -2336,7 +2383,7 @@@ L:      linux-arm-kernel@lists.infradead.or
  S:    Maintained
  
  ARM/TEGRA HDMI CEC SUBSYSTEM SUPPORT
 -M:    Hans Verkuil <hans.verkuil@cisco.com>
 +M:    Hans Verkuil <hverkuil-cisco@xs4all.nl>
  L:    linux-tegra@vger.kernel.org
  L:    linux-media@vger.kernel.org
  S:    Maintained
@@@ -2513,7 -2466,6 +2513,7 @@@ ARM/VT8500 ARM ARCHITECTUR
  M:    Tony Prisk <linux@prisktech.co.nz>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 +F:    Documentation/devicetree/bindings/i2c/i2c-wmt.txt
  F:    arch/arm/mach-vt8500/
  F:    drivers/clocksource/timer-vt8500.c
  F:    drivers/i2c/busses/i2c-wmt.c
@@@ -2579,8 -2531,6 +2579,8 @@@ F:      drivers/cpuidle/cpuidle-zynq.
  F:    drivers/block/xsysace.c
  N:    zynq
  N:    xilinx
 +F:    Documentation/devicetree/bindings/i2c/i2c-cadence.txt
 +F:    Documentation/devicetree/bindings/i2c/i2c-xiic.txt
  F:    drivers/clocksource/timer-cadence-ttc.c
  F:    drivers/i2c/busses/i2c-cadence.c
  F:    drivers/mmc/host/sdhci-of-arasan.c
@@@ -2589,7 -2539,7 +2589,7 @@@ F:      drivers/i2c/busses/i2c-xiic.
  
  ARM64 PORT (AARCH64 ARCHITECTURE)
  M:    Catalin Marinas <catalin.marinas@arm.com>
 -M:    Will Deacon <will.deacon@arm.com>
 +M:    Will Deacon <will@kernel.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git
  S:    Maintained
@@@ -2625,15 -2575,6 +2625,15 @@@ S:    Maintaine
  F:    Documentation/hwmon/asc7621.rst
  F:    drivers/hwmon/asc7621.c
  
 +ASPEED PINCTRL DRIVERS
 +M:    Andrew Jeffery <andrew@aj.id.au>
 +L:    linux-aspeed@lists.ozlabs.org (moderated for non-subscribers)
 +L:    openbmc@lists.ozlabs.org (moderated for non-subscribers)
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/pinctrl/aspeed/
 +F:    Documentation/devicetree/bindings/pinctrl/aspeed,*
 +
  ASPEED VIDEO ENGINE DRIVER
  M:    Eddie James <eajames@linux.ibm.com>
  L:    linux-media@vger.kernel.org
@@@ -2686,10 -2627,10 +2686,10 @@@ F:   Documentation/devicetree/bindings/ee
  F:    drivers/misc/eeprom/at24.c
  
  ATA OVER ETHERNET (AOE) DRIVER
 -M:    "Ed L. Cashin" <ed.cashin@acm.org>
 +M:    "Justin Sanders" <justin@coraid.com>
  W:    http://www.openaoe.org/
  S:    Supported
 -F:    Documentation/aoe/
 +F:    Documentation/admin-guide/aoe/
  F:    drivers/block/aoe/
  
  ATHEROS 71XX/9XXX GPIO DRIVER
@@@ -2782,7 -2723,7 +2782,7 @@@ S:      Maintaine
  F:    drivers/net/wireless/atmel/atmel*
  
  ATOMIC INFRASTRUCTURE
 -M:    Will Deacon <will.deacon@arm.com>
 +M:    Will Deacon <will@kernel.org>
  M:    Peter Zijlstra <peterz@infradead.org>
  R:    Boqun Feng <boqun.feng@gmail.com>
  L:    linux-kernel@vger.kernel.org
@@@ -2827,7 -2768,7 +2827,7 @@@ AVIA HX711 ANALOG DIGITAL CONVERTER II
  M:    Andreas Klinger <ak@it-klinger.de>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/iio/adc/avia-hx711.txt
 +F:    Documentation/devicetree/bindings/iio/adc/avia-hx711.yaml
  F:    drivers/iio/adc/hx711.c
  
  AX.25 NETWORK LAYER
@@@ -2968,7 -2909,7 +2968,7 @@@ M:      Jens Axboe <axboe@kernel.dk
  L:    linux-block@vger.kernel.org
  S:    Maintained
  F:    block/bfq-*
 -F:    Documentation/block/bfq-iosched.txt
 +F:    Documentation/block/bfq-iosched.rst
  
  BFS FILE SYSTEM
  M:    "Tigran A. Aivazian" <aivazian.tigran@gmail.com>
@@@ -3108,9 -3049,8 +3108,9 @@@ S:      Maintaine
  F:    arch/riscv/net/
  
  BPF JIT for S390
 -M:    Martin Schwidefsky <schwidefsky@de.ibm.com>
  M:    Heiko Carstens <heiko.carstens@de.ibm.com>
 +M:    Vasily Gorbik <gor@linux.ibm.com>
 +M:    Christian Borntraeger <borntraeger@de.ibm.com>
  L:    netdev@vger.kernel.org
  L:    bpf@vger.kernel.org
  S:    Maintained
@@@ -3169,8 -3109,7 +3169,8 @@@ F:      arch/arm/mach-bcm
  
  BROADCOM BCM2835 ARM ARCHITECTURE
  M:    Eric Anholt <eric@anholt.net>
 -M:    Stefan Wahren <stefan.wahren@i2se.com>
 +M:    Stefan Wahren <wahrenst@gmx.net>
 +L:    bcm-kernel-feedback-list@broadcom.com
  L:    linux-rpi-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  T:    git git://github.com/anholt/linux
@@@ -3200,7 -3139,6 +3200,7 @@@ F:      arch/arm/boot/dts/bcm953012
  
  BROADCOM BCM53573 ARM ARCHITECTURE
  M:    RafaÅ‚ MiÅ‚ecki <rafal@milecki.pl>
 +L:    bcm-kernel-feedback-list@broadcom.com
  L:    linux-arm-kernel@lists.infradead.org
  S:    Maintained
  F:    arch/arm/boot/dts/bcm53573*
@@@ -3727,7 -3665,7 +3727,7 @@@ F:      drivers/crypto/ccree
  W:    https://developer.arm.com/products/system-ip/trustzone-cryptocell/cryptocell-700-family
  
  CEC FRAMEWORK
 -M:    Hans Verkuil <hans.verkuil@cisco.com>
 +M:    Hans Verkuil <hverkuil-cisco@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
  W:    http://linuxtv.org
@@@ -3744,7 -3682,7 +3744,7 @@@ F:      Documentation/devicetree/bindings/me
  F:    Documentation/ABI/testing/debugfs-cec-error-inj
  
  CEC GPIO DRIVER
 -M:    Hans Verkuil <hans.verkuil@cisco.com>
 +M:    Hans Verkuil <hverkuil-cisco@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
  W:    http://linuxtv.org
@@@ -3801,7 -3739,7 +3801,7 @@@ F:      scripts/extract-cert.
  CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM:
  L:    linux-usb@vger.kernel.org
  S:    Orphan
 -F:    Documentation/usb/WUSB-Design-overview.txt
 +F:    Documentation/usb/wusb-design-overview.rst
  F:    Documentation/usb/wusb-cbaf
  F:    drivers/usb/host/hwa-hc.c
  F:    drivers/usb/host/whci/
@@@ -3936,7 -3874,7 +3936,7 @@@ F:      Documentation/devicetree/bindings/hw
  F:    Documentation/devicetree/bindings/pinctrl/cirrus,lochnagar.txt
  F:    Documentation/devicetree/bindings/regulator/cirrus,lochnagar.txt
  F:    Documentation/devicetree/bindings/sound/cirrus,lochnagar.txt
 -F:    Documentation/hwmon/lochnagar
 +F:    Documentation/hwmon/lochnagar.rst
  
  CISCO FCOE HBA DRIVER
  M:    Satish Kharat <satishkh@cisco.com>
@@@ -3977,32 -3915,19 +3977,32 @@@ W:   https://github.com/CirrusLogic/linux
  S:    Supported
  F:    Documentation/devicetree/bindings/mfd/madera.txt
  F:    Documentation/devicetree/bindings/pinctrl/cirrus,madera-pinctrl.txt
 +F:    Documentation/devicetree/bindings/sound/madera.txt
 +F:    include/dt-bindings/sound/madera*
  F:    include/linux/irqchip/irq-madera*
  F:    include/linux/mfd/madera/*
 +F:    include/sound/madera*
  F:    drivers/gpio/gpio-madera*
  F:    drivers/irqchip/irq-madera*
  F:    drivers/mfd/madera*
  F:    drivers/mfd/cs47l*
  F:    drivers/pinctrl/cirrus/*
 +F:    sound/soc/codecs/cs47l*
 +F:    sound/soc/codecs/madera*
  
  CLANG-FORMAT FILE
  M:    Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
  S:    Maintained
  F:    .clang-format
  
 +CLANG/LLVM BUILD SUPPORT
 +L:    clang-built-linux@googlegroups.com
 +W:    https://clangbuiltlinux.github.io/
 +B:    https://github.com/ClangBuiltLinux/linux/issues
 +C:    irc://chat.freenode.net/clangbuiltlinux
 +S:    Supported
 +K:    \b(?i:clang|llvm)\b
 +
  CLEANCACHE API
  M:    Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
  L:    linux-kernel@vger.kernel.org
@@@ -4033,7 -3958,7 +4033,7 @@@ S:      Supporte
  F:    drivers/platform/x86/classmate-laptop.c
  
  COBALT MEDIA DRIVER
 -M:    Hans Verkuil <hans.verkuil@cisco.com>
 +M:    Hans Verkuil <hverkuil-cisco@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
  W:    https://linuxtv.org
@@@ -4158,7 -4083,7 +4158,7 @@@ L:      cgroups@vger.kernel.or
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git
  S:    Maintained
  F:    Documentation/admin-guide/cgroup-v2.rst
 -F:    Documentation/cgroup-v1/
 +F:    Documentation/admin-guide/cgroup-v1/
  F:    include/linux/cgroup*
  F:    kernel/cgroup/
  
@@@ -4169,7 -4094,7 +4169,7 @@@ W:      http://www.bullopensource.org/cpuset
  W:    http://oss.sgi.com/projects/cpusets/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git
  S:    Maintained
 -F:    Documentation/cgroup-v1/cpusets.txt
 +F:    Documentation/admin-guide/cgroup-v1/cpusets.rst
  F:    include/linux/cpuset.h
  F:    kernel/cgroup/cpuset.c
  
@@@ -4183,19 -4108,6 +4183,19 @@@ S:    Maintaine
  F:    mm/memcontrol.c
  F:    mm/swap_cgroup.c
  
 +CONTROL GROUP - BLOCK IO CONTROLLER (BLKIO)
 +M:    Tejun Heo <tj@kernel.org>
 +M:    Jens Axboe <axboe@kernel.dk>
 +L:    cgroups@vger.kernel.org
 +L:    linux-block@vger.kernel.org
 +T:    git git://git.kernel.dk/linux-block
 +F:    Documentation/cgroup-v1/blkio-controller.rst
 +F:    block/blk-cgroup.c
 +F:    include/linux/blk-cgroup.h
 +F:    block/blk-throttle.c
 +F:    block/blk-iolatency.c
 +F:    block/bfq-cgroup.c
 +
  CORETEMP HARDWARE MONITORING DRIVER
  M:    Fenghua Yu <fenghua.yu@intel.com>
  L:    linux-hwmon@vger.kernel.org
@@@ -4317,7 -4229,6 +4317,7 @@@ F:      crypto
  F:    drivers/crypto/
  F:    include/crypto/
  F:    include/linux/crypto*
 +F:    lib/crypto/
  
  CRYPTOGRAPHIC RANDOM NUMBER GENERATOR
  M:    Neil Horman <nhorman@tuxdriver.com>
@@@ -4655,7 -4566,7 +4655,7 @@@ DELL SYSTEMS MANAGEMENT BASE DRIVER (dc
  M:    Stuart Hayes <stuart.w.hayes@gmail.com>
  L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
 -F:    Documentation/dcdbas.txt
 +F:    Documentation/driver-api/dcdbas.rst
  F:    drivers/platform/x86/dcdbas.*
  
  DELL WMI NOTIFICATIONS DRIVER
@@@ -4683,6 -4594,13 +4683,13 @@@ L:    linux-mtd@lists.infradead.or
  S:    Supported
  F:    drivers/mtd/nand/raw/denali*
  
+ DESIGNWARE EDMA CORE IP DRIVER
+ M:    Gustavo Pimentel <gustavo.pimentel@synopsys.com>
+ L:    dmaengine@vger.kernel.org
+ S:    Maintained
+ F:    drivers/dma/dw-edma/
+ F:    include/linux/dma/edma.h
  DESIGNWARE USB2 DRD IP DRIVER
  M:    Minas Harutyunyan <hminas@synopsys.com>
  L:    linux-usb@vger.kernel.org
@@@ -4748,7 -4666,7 +4755,7 @@@ Q:      http://patchwork.kernel.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git
  T:    quilt http://people.redhat.com/agk/patches/linux/editing/
  S:    Maintained
 -F:    Documentation/device-mapper/
 +F:    Documentation/admin-guide/device-mapper/
  F:    drivers/md/Makefile
  F:    drivers/md/Kconfig
  F:    drivers/md/dm*
@@@ -4774,7 -4692,6 +4781,7 @@@ F:      Documentation/devicetree/bindings/mf
  F:    Documentation/devicetree/bindings/input/da90??-onkey.txt
  F:    Documentation/devicetree/bindings/thermal/da90??-thermal.txt
  F:    Documentation/devicetree/bindings/regulator/da92*.txt
 +F:    Documentation/devicetree/bindings/regulator/slg51000.txt
  F:    Documentation/devicetree/bindings/watchdog/da90??-wdt.txt
  F:    Documentation/devicetree/bindings/sound/da[79]*.txt
  F:    drivers/gpio/gpio-da90??.c
@@@ -4790,7 -4707,6 +4797,7 @@@ F:      drivers/power/supply/da9052-battery.
  F:    drivers/power/supply/da91??-*.c
  F:    drivers/regulator/da903x.c
  F:    drivers/regulator/da9???-regulator.[ch]
 +F:    drivers/regulator/slg51000-regulator.[ch]
  F:    drivers/thermal/da90??-thermal.c
  F:    drivers/rtc/rtc-da90??.c
  F:    drivers/video/backlight/da90??_bl.c
@@@ -4868,7 -4784,7 +4875,7 @@@ S:      Maintaine
  W:    http://plugable.com/category/projects/udlfb/
  F:    drivers/video/fbdev/udlfb.c
  F:    include/video/udlfb.h
 -F:    Documentation/fb/udlfb.txt
 +F:    Documentation/fb/udlfb.rst
  
  DISTRIBUTED LOCK MANAGER (DLM)
  M:    Christine Caulfield <ccaulfie@redhat.com>
@@@ -4941,7 -4857,7 +4948,7 @@@ S:      Maintaine
  F:    Documentation/
  F:    scripts/kernel-doc
  X:    Documentation/ABI/
 -X:    Documentation/acpi/
 +X:    Documentation/firmware-guide/acpi/
  X:    Documentation/devicetree/
  X:    Documentation/i2c/
  X:    Documentation/media/
@@@ -5001,6 -4917,13 +5008,6 @@@ L:     linux-kernel@vger.kernel.or
  S:    Maintained
  F:    drivers/staging/fsl-dpaa2/ethsw
  
 -DPAA2 PTP CLOCK DRIVER
 -M:    Yangbo Lu <yangbo.lu@nxp.com>
 -L:    netdev@vger.kernel.org
 -S:    Maintained
 -F:    drivers/net/ethernet/freescale/dpaa2/dpaa2-ptp*
 -F:    drivers/net/ethernet/freescale/dpaa2/dprtc*
 -
  DPT_I2O SCSI RAID DRIVER
  M:    Adaptec OEM Raid Solutions <aacraid@microsemi.com>
  L:    linux-scsi@vger.kernel.org
@@@ -5019,7 -4942,7 +5026,7 @@@ T:      git git://git.linbit.com/drbd-8.4.gi
  S:    Supported
  F:    drivers/block/drbd/
  F:    lib/lru_cache.c
 -F:    Documentation/blockdev/drbd/
 +F:    Documentation/admin-guide/blockdev/
  
  DRIVER CORE, KOBJECTS, DEBUGFS AND SYSFS
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
@@@ -5212,13 -5135,6 +5219,13 @@@ S:    Maintaine
  F:    drivers/gpu/drm/tinydrm/st7735r.c
  F:    Documentation/devicetree/bindings/display/sitronix,st7735r.txt
  
 +DRM DRIVER FOR ST-ERICSSON MCDE
 +M:    Linus Walleij <linus.walleij@linaro.org>
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +S:    Maintained
 +F:    drivers/gpu/drm/mcde/
 +F:    Documentation/devicetree/bindings/display/ste,mcde.txt
 +
  DRM DRIVER FOR TDFX VIDEO CARDS
  S:    Orphan / Obsolete
  F:    drivers/gpu/drm/tdfx/
@@@ -5504,7 -5420,6 +5511,7 @@@ T:      git git://anongit.freedesktop.org/dr
  
  DRM PANEL DRIVERS
  M:    Thierry Reding <thierry.reding@gmail.com>
 +R:    Sam Ravnborg <sam@ravnborg.org>
  L:    dri-devel@lists.freedesktop.org
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  S:    Maintained
@@@ -5533,6 -5448,7 +5540,6 @@@ F:      Documentation/gpu/xen-front.rs
  DRM TTM SUBSYSTEM
  M:    Christian Koenig <christian.koenig@amd.com>
  M:    Huang Rui <ray.huang@amd.com>
 -M:    Junwei Zhang <Jerry.Zhang@amd.com>
  T:    git git://people.freedesktop.org/~agd5f/linux
  S:    Maintained
  L:    dri-devel@lists.freedesktop.org
@@@ -5679,8 -5595,7 +5686,8 @@@ F:      include/linux/dynamic_debug.
  DYNAMIC INTERRUPT MODERATION
  M:    Tal Gilboa <talgi@mellanox.com>
  S:    Maintained
 -F:    include/linux/net_dim.h
 +F:    include/linux/dim.h
 +F:    lib/dim/
  
  DZ DECSTATION DZ11 SERIAL DRIVER
  M:    "Maciej W. Rozycki" <macro@linux-mips.org>
@@@ -5889,12 -5804,6 +5896,12 @@@ L:    linux-edac@vger.kernel.or
  S:    Maintained
  F:    drivers/edac/sb_edac.c
  
 +EDAC-SIFIVE
 +M:    Yash Shah <yash.shah@sifive.com>
 +L:    linux-edac@vger.kernel.org
 +S:    Supported
 +F:    drivers/edac/sifive_edac.c
 +
  EDAC-SKYLAKE
  M:    Tony Luck <tony.luck@intel.com>
  L:    linux-edac@vger.kernel.org
@@@ -6054,7 -5963,6 +6061,7 @@@ M:      Heiner Kallweit <hkallweit1@gmail.co
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-bus-mdio
 +F:    Documentation/devicetree/bindings/net/ethernet-phy.yaml
  F:    Documentation/devicetree/bindings/net/mdio*
  F:    Documentation/networking/phy.rst
  F:    drivers/net/phy/
@@@ -6100,7 -6008,7 +6107,7 @@@ M:      Ard Biesheuvel <ard.biesheuvel@linar
  L:    linux-efi@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git
  S:    Maintained
 -F:    Documentation/efi-stub.txt
 +F:    Documentation/admin-guide/efi-stub.rst
  F:    arch/*/kernel/efi.c
  F:    arch/x86/boot/compressed/eboot.[ch]
  F:    arch/*/include/asm/efi.h
@@@ -6119,7 -6027,7 +6126,7 @@@ S:      Maintaine
  F:    drivers/extcon/
  F:    include/linux/extcon/
  F:    include/linux/extcon.h
 -F:    Documentation/extcon/
 +F:    Documentation/firmware-guide/acpi/extcon-intel-int3496.rst
  F:    Documentation/devicetree/bindings/extcon/
  
  EXYNOS DP DRIVER
@@@ -6305,14 -6213,6 +6312,14 @@@ M:    Philip Kelleher <pjk1939@linux.ibm.c
  S:    Maintained
  F:    drivers/block/rsxx/
  
 +FLEXTIMER FTM-QUADDEC DRIVER
 +M:    Patrick Havelange <patrick.havelange@essensium.com>
 +L:    linux-iio@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-bus-counter-ftm-quadddec
 +F:    Documentation/devicetree/bindings/counter/ftm-quaddec.txt
 +F:    drivers/counter/ftm-quaddec.c
 +
  FLOPPY DRIVER
  M:    Jiri Kosina <jikos@kernel.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/floppy.git
@@@ -6329,6 -6229,7 +6336,6 @@@ F:      include/linux/ipmi-fru.
  K:    fmc_d.*register
  
  FPGA MANAGER FRAMEWORK
 -M:    Alan Tull <atull@kernel.org>
  M:    Moritz Fischer <mdf@kernel.org>
  L:    linux-fpga@vger.kernel.org
  S:    Maintained
@@@ -6345,7 -6246,7 +6352,7 @@@ FPGA DFL DRIVER
  M:    Wu Hao <hao.wu@intel.com>
  L:    linux-fpga@vger.kernel.org
  S:    Maintained
 -F:    Documentation/fpga/dfl.txt
 +F:    Documentation/fpga/dfl.rst
  F:    include/uapi/linux/fpga-dfl.h
  F:    drivers/fpga/dfl*
  
@@@ -6422,13 -6323,6 +6429,13 @@@ L:    linux-i2c@vger.kernel.or
  S:    Maintained
  F:    drivers/i2c/busses/i2c-cpm.c
  
 +FREESCALE IMX DDR PMU DRIVER
 +M:    Frank Li <Frank.li@nxp.com>
 +L:    linux-arm-kernel@lists.infradead.org
 +S:    Maintained
 +F:    drivers/perf/fsl_imx8_ddr_perf.c
 +F:    Documentation/devicetree/bindings/perf/fsl-imx-ddr.txt
 +
  FREESCALE IMX LPI2C DRIVER
  M:    Dong Aisheng <aisheng.dong@nxp.com>
  L:    linux-i2c@vger.kernel.org
@@@ -6472,8 -6366,6 +6479,8 @@@ FREESCALE QORIQ PTP CLOCK DRIVE
  M:    Yangbo Lu <yangbo.lu@nxp.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
 +F:    drivers/net/ethernet/freescale/dpaa2/dpaa2-ptp*
 +F:    drivers/net/ethernet/freescale/dpaa2/dprtc*
  F:    drivers/net/ethernet/freescale/enetc/enetc_ptp.c
  F:    drivers/ptp/ptp_qoriq.c
  F:    drivers/ptp/ptp_qoriq_debugfs.c
@@@ -6561,7 -6453,7 +6568,7 @@@ M:      "Rafael J. Wysocki" <rjw@rjwysocki.n
  M:    Pavel Machek <pavel@ucw.cz>
  L:    linux-pm@vger.kernel.org
  S:    Supported
 -F:    Documentation/power/freezing-of-tasks.txt
 +F:    Documentation/power/freezing-of-tasks.rst
  F:    include/linux/freezer.h
  F:    kernel/freezer.c
  
@@@ -6592,19 -6484,6 +6599,19 @@@ F:    fs/crypto
  F:    include/linux/fscrypt*.h
  F:    Documentation/filesystems/fscrypt.rst
  
 +FSI SUBSYSTEM
 +M:    Jeremy Kerr <jk@ozlabs.org>
 +M:    Joel Stanley <joel@jms.id.au>
 +R:    Alistar Popple <alistair@popple.id.au>
 +R:    Eddie James <eajames@linux.ibm.com>
 +L:    linux-fsi@lists.ozlabs.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joel/fsi.git
 +Q:    http://patchwork.ozlabs.org/project/linux-fsi/list/
 +S:    Supported
 +F:    drivers/fsi/
 +F:    include/linux/fsi*.h
 +F:    include/trace/events/fsi*.h
 +
  FSI-ATTACHED I2C DRIVER
  M:    Eddie James <eajames@linux.ibm.com>
  L:    linux-i2c@vger.kernel.org
@@@ -6675,7 -6554,7 +6682,7 @@@ S:      Maintaine
  F:    scripts/gcc-plugins/
  F:    scripts/gcc-plugin.sh
  F:    scripts/Makefile.gcc-plugins
 -F:    Documentation/gcc-plugins.txt
 +F:    Documentation/core-api/gcc-plugins.rst
  
  GASKET DRIVER FRAMEWORK
  M:    Rob Springer <rspringer@google.com>
@@@ -6781,18 -6660,6 +6788,18 @@@ L:    kvm@vger.kernel.or
  S:    Supported
  F:    drivers/uio/uio_pci_generic.c
  
 +GENERIC VDSO LIBRARY:
 +M:    Andy Lutomirski <luto@kernel.org>
 +M:    Thomas Gleixner <tglx@linutronix.de>
 +M:    Vincenzo Frascino <vincenzo.frascino@arm.com>
 +L:    linux-kernel@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/vdso
 +S:    Maintained
 +F:    lib/vdso/
 +F:    kernel/time/vsyscall.c
 +F:    include/vdso/
 +F:    include/asm-generic/vdso/vsyscall.h
 +
  GENWQE (IBM Generic Workqueue Card)
  M:    Frank Haverkamp <haver@linux.ibm.com>
  S:    Supported
@@@ -6819,7 -6686,9 +6826,7 @@@ M:      Paul Bolle <pebolle@tiscali.nl
  L:    gigaset307x-common@lists.sourceforge.net
  W:    http://gigaset307x.sourceforge.net/
  S:    Odd Fixes
 -F:    Documentation/isdn/README.gigaset
 -F:    drivers/isdn/gigaset/
 -F:    include/uapi/linux/gigaset_dev.h
 +F:    drivers/staging/isdn/gigaset/
  
  GNSS SUBSYSTEM
  M:    Johan Hovold <johan@kernel.org>
@@@ -6831,7 -6700,7 +6838,7 @@@ F:      drivers/gnss
  F:    include/linux/gnss.h
  
  GO7007 MPEG CODEC
 -M:    Hans Verkuil <hans.verkuil@cisco.com>
 +M:    Hans Verkuil <hverkuil-cisco@xs4all.nl>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/usb/go7007/
@@@ -6842,15 -6711,6 +6849,15 @@@ L:    linux-input@vger.kernel.or
  S:    Maintained
  F:    drivers/input/touchscreen/goodix.c
  
 +GOOGLE ETHERNET DRIVERS
 +M:    Catherine Sullivan <csully@google.com>
 +R:    Sagi Shahar <sagis@google.com>
 +R:    Jon Olson <jonolson@google.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    Documentation/networking/device_drivers/google/gve.txt
 +F:    drivers/net/ethernet/google
 +
  GPD POCKET FAN DRIVER
  M:    Hans de Goede <hdegoede@redhat.com>
  L:    platform-driver-x86@vger.kernel.org
@@@ -6887,7 -6747,7 +6894,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    Documentation/devicetree/bindings/gpio/
  F:    Documentation/driver-api/gpio/
 -F:    Documentation/gpio/
 +F:    Documentation/admin-guide/gpio/
  F:    Documentation/ABI/testing/gpio-cdev
  F:    Documentation/ABI/obsolete/sysfs-gpio
  F:    drivers/gpio/
@@@ -7108,7 -6968,7 +7115,7 @@@ M:      Herbert Xu <herbert@gondor.apana.org
  L:    linux-crypto@vger.kernel.org
  S:    Odd fixes
  F:    Documentation/devicetree/bindings/rng/
 -F:    Documentation/hw_random.txt
 +F:    Documentation/admin-guide/hw_random.rst
  F:    drivers/char/hw_random/
  F:    include/linux/hw_random.h
  
@@@ -7144,7 -7004,7 +7151,7 @@@ F:      drivers/media/usb/hdpvr
  HEWLETT PACKARD ENTERPRISE ILO NMI WATCHDOG DRIVER
  M:    Jerry Hoemann <jerry.hoemann@hpe.com>
  S:    Supported
 -F:    Documentation/watchdog/hpwdt.txt
 +F:    Documentation/watchdog/hpwdt.rst
  F:    drivers/watchdog/hpwdt.c
  
  HEWLETT-PACKARD SMART ARRAY RAID DRIVER (hpsa)
@@@ -7282,7 -7142,7 +7289,7 @@@ M:      Shaokun Zhang <zhangshaokun@hisilico
  W:    http://www.hisilicon.com
  S:    Supported
  F:    drivers/perf/hisilicon
 -F:    Documentation/perf/hisi-pmu.txt
 +F:    Documentation/admin-guide/perf/hisi-pmu.rst
  
  HISILICON ROCE DRIVER
  M:    Lijun Ou <oulijun@huawei.com>
@@@ -7327,7 -7187,7 +7334,7 @@@ F:      drivers/net/ethernet/hp/hp100.
  HPET: High Precision Event Timers driver
  M:    Clemens Ladisch <clemens@ladisch.de>
  S:    Maintained
 -F:    Documentation/timers/hpet.txt
 +F:    Documentation/timers/hpet.rst
  F:    drivers/char/hpet.c
  F:    include/linux/hpet.h
  F:    include/uapi/linux/hpet.h
@@@ -7437,7 -7297,6 +7444,7 @@@ F:      arch/x86/include/asm/trace/hyperv.
  F:    arch/x86/include/asm/hyperv-tlfs.h
  F:    arch/x86/kernel/cpu/mshyperv.c
  F:    arch/x86/hyperv
 +F:    drivers/clocksource/hyperv_timer.c
  F:    drivers/hid/hid-hyperv.c
  F:    drivers/hv/
  F:    drivers/input/serio/hyperv-keyboard.c
@@@ -7448,21 -7307,11 +7455,21 @@@ F:   drivers/uio/uio_hv_generic.
  F:    drivers/video/fbdev/hyperv_fb.c
  F:    drivers/iommu/hyperv_iommu.c
  F:    net/vmw_vsock/hyperv_transport.c
 +F:    include/clocksource/hyperv_timer.h
  F:    include/linux/hyperv.h
  F:    include/uapi/linux/hyperv.h
 +F:    include/asm-generic/mshyperv.h
  F:    tools/hv/
  F:    Documentation/ABI/stable/sysfs-bus-vmbus
  
 +HYPERBUS SUPPORT
 +M:    Vignesh Raghavendra <vigneshr@ti.com>
 +S:    Supported
 +F:    drivers/mtd/hyperbus/
 +F:    include/linux/mtd/hyperbus.h
 +F:    Documentation/devicetree/bindings/mtd/cypress,hyperflash.txt
 +F:    Documentation/devicetree/bindings/mtd/ti,am654-hbmc.txt
 +
  HYPERVISOR VIRTUAL CONSOLE DRIVER
  L:    linuxppc-dev@lists.ozlabs.org
  S:    Odd Fixes
@@@ -7499,7 -7348,6 +7506,7 @@@ I2C MV64XXX MARVELL AND ALLWINNER DRIVE
  M:    Gregory CLEMENT <gregory.clement@bootlin.com>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
 +F:    Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt
  F:    drivers/i2c/busses/i2c-mv64xxx.c
  
  I2C OVER PARALLEL PORT
@@@ -7756,7 -7604,7 +7763,7 @@@ IDE/ATAPI DRIVER
  M:    Borislav Petkov <bp@alien8.de>
  L:    linux-ide@vger.kernel.org
  S:    Maintained
 -F:    Documentation/cdrom/ide-cd
 +F:    Documentation/cdrom/ide-cd.rst
  F:    drivers/ide/ide-cd*
  
  IDEAPAD LAPTOP EXTRAS DRIVER
@@@ -7919,12 -7767,6 +7926,12 @@@ W:    http://industrypack.sourceforge.ne
  S:    Maintained
  F:    drivers/ipack/
  
 +INFINEON DPS310 Driver
 +M:    Eddie James <eajames@linux.ibm.com>
 +L:    linux-iio@vger.kernel.org
 +F:    drivers/iio/pressure/dps310.c
 +S:    Maintained
 +
  INFINIBAND SUBSYSTEM
  M:    Doug Ledford <dledford@redhat.com>
  M:    Jason Gunthorpe <jgg@mellanox.com>
@@@ -7953,34 -7795,7 +7960,34 @@@ INGENIC JZ4780 NAND DRIVE
  M:    Harvey Hunt <harveyhuntnexus@gmail.com>
  L:    linux-mtd@lists.infradead.org
  S:    Maintained
 -F:    drivers/mtd/nand/raw/jz4780_*
 +F:    drivers/mtd/nand/raw/ingenic/
 +
 +INGENIC JZ47xx SoCs
 +M:    Paul Cercueil <paul@crapouillou.net>
 +S:    Maintained
 +F:    arch/mips/boot/dts/ingenic/
 +F:    arch/mips/include/asm/mach-jz4740/
 +F:    arch/mips/jz4740/
 +F:    drivers/clk/ingenic/
 +F:    drivers/dma/dma-jz4780.c
 +F:    drivers/gpu/drm/ingenic/
 +F:    drivers/i2c/busses/i2c-jz4780.c
 +F:    drivers/iio/adc/ingenic-adc.c
 +F:    drivers/irqchip/irq-ingenic.c
 +F:    drivers/memory/jz4780-nemc.c
 +F:    drivers/mmc/host/jz4740_mmc.c
 +F:    drivers/mtd/nand/raw/ingenic/
 +F:    drivers/pinctrl/pinctrl-ingenic.c
 +F:    drivers/power/supply/ingenic-battery.c
 +F:    drivers/pwm/pwm-jz4740.c
 +F:    drivers/rtc/rtc-jz4740.c
 +F:    drivers/tty/serial/8250/8250_ingenic.c
 +F:    drivers/usb/musb/jz4740.c
 +F:    drivers/watchdog/jz4740_wdt.c
 +F:    include/dt-bindings/iio/adc/ingenic,adc.h
 +F:    include/linux/mfd/ingenic-tcu.h
 +F:    sound/soc/jz4740/
 +F:    sound/soc/codecs/jz47*
  
  INOTIFY
  M:    Jan Kara <jack@suse.cz>
@@@ -8102,7 -7917,7 +8109,7 @@@ INTEL FRAMEBUFFER DRIVER (excluding 81
  M:    Maik Broemme <mbroemme@libmpq.org>
  L:    linux-fbdev@vger.kernel.org
  S:    Maintained
 -F:    Documentation/fb/intelfb.txt
 +F:    Documentation/fb/intelfb.rst
  F:    drivers/video/fbdev/intelfb/
  
  INTEL GPIO DRIVERS
@@@ -8213,7 -8028,7 +8220,7 @@@ F:      include/uapi/linux/mei.
  F:    include/linux/mei_cl_bus.h
  F:    drivers/misc/mei/*
  F:    drivers/watchdog/mei_wdt.c
 -F:    Documentation/misc-devices/mei/*
 +F:    Documentation/driver-api/mei/*
  F:    samples/mei/*
  
  INTEL MENLOW THERMAL DRIVER
@@@ -8262,7 -8077,7 +8269,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  F:    drivers/gpio/gpio-*cove.c
  F:    drivers/gpio/gpio-msic.c
  
 -INTEL MULTIFUNCTION PMIC DEVICE DRIVERS
 +INTEL PMIC MULTIFUNCTION DEVICE DRIVERS
  R:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
  S:    Maintained
  F:    drivers/mfd/intel_msic.c
@@@ -8293,14 -8108,6 +8300,14 @@@ S:    Supporte
  F:    drivers/infiniband/hw/i40iw/
  F:    include/uapi/rdma/i40iw-abi.h
  
 +INTEL SPEED SELECT TECHNOLOGY
 +M:    Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
 +L:    platform-driver-x86@vger.kernel.org
 +S:    Maintained
 +F:    drivers/platform/x86/intel_speed_select_if/
 +F:    tools/power/x86/intel-speed-select/
 +F:    include/uapi/linux/isst_if.h
 +
  INTEL TELEMETRY DRIVER
  M:    Rajneesh Bhardwaj <rajneesh.bhardwaj@linux.intel.com>
  M:    "David E. Box" <david.e.box@linux.intel.com>
@@@ -8359,7 -8166,7 +8366,7 @@@ L:      tboot-devel@lists.sourceforge.ne
  W:    http://tboot.sourceforge.net
  T:    hg http://tboot.hg.sourceforge.net:8000/hgroot/tboot/tboot
  S:    Supported
 -F:    Documentation/intel_txt.txt
 +F:    Documentation/x86/intel_txt.rst
  F:    include/linux/tboot.h
  F:    arch/x86/kernel/tboot.c
  
@@@ -8373,7 -8180,7 +8380,7 @@@ INTERCONNECT AP
  M:    Georgi Djakov <georgi.djakov@linaro.org>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
 -F:    Documentation/interconnect/
 +F:    Documentation/driver-api/interconnect.rst
  F:    Documentation/devicetree/bindings/interconnect/
  F:    drivers/interconnect/
  F:    include/dt-bindings/interconnect/
@@@ -8509,7 -8316,7 +8516,7 @@@ F:      drivers/irqchip
  ISA
  M:    William Breathitt Gray <vilhelm.gray@gmail.com>
  S:    Maintained
 -F:    Documentation/isa.txt
 +F:    Documentation/driver-api/isa.rst
  F:    drivers/base/isa.c
  F:    include/linux/isa.h
  
@@@ -8524,7 -8331,7 +8531,7 @@@ F:      drivers/media/radio/radio-isa
  ISAPNP
  M:    Jaroslav Kysela <perex@perex.cz>
  S:    Maintained
 -F:    Documentation/isapnp.txt
 +F:    Documentation/driver-api/isapnp.rst
  F:    drivers/pnp/isapnp/
  F:    include/linux/isapnp.h
  
@@@ -8562,26 -8369,18 +8569,26 @@@ S:   Supporte
  W:    http://www.linux-iscsi.org
  F:    drivers/infiniband/ulp/isert
  
 -ISDN SUBSYSTEM
 +ISDN/mISDN SUBSYSTEM
  M:    Karsten Keil <isdn@linux-pingi.de>
  L:    isdn4linux@listserv.isdn4linux.de (subscribers-only)
  L:    netdev@vger.kernel.org
  W:    http://www.isdn4linux.de
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kkeil/isdn-2.6.git
  S:    Maintained
 +F:    drivers/isdn/mISDN
 +F:    drivers/isdn/hardware
 +
 +ISDN/CAPI SUBSYSTEM
 +M:    Karsten Keil <isdn@linux-pingi.de>
 +L:    isdn4linux@listserv.isdn4linux.de (subscribers-only)
 +L:    netdev@vger.kernel.org
 +W:    http://www.isdn4linux.de
 +S:    Odd Fixes
  F:    Documentation/isdn/
 -F:    drivers/isdn/
 -F:    include/linux/isdn.h
 +F:    drivers/isdn/capi/
 +F:    drivers/staging/isdn/
 +F:    net/bluetooth/cmtp/
  F:    include/linux/isdn/
 -F:    include/uapi/linux/isdn.h
  F:    include/uapi/linux/isdn/
  
  IT87 HARDWARE MONITORING DRIVER
@@@ -8722,7 -8521,7 +8729,7 @@@ R:      Vivek Goyal <vgoyal@redhat.com
  L:    kexec@lists.infradead.org
  W:    http://lse.sourceforge.net/kdump/
  S:    Maintained
 -F:    Documentation/kdump/
 +F:    Documentation/admin-guide/kdump/
  
  KEENE FM RADIO TRANSMITTER DRIVER
  M:    Hans Verkuil <hverkuil@xs4all.nl>
@@@ -8761,7 -8560,7 +8768,7 @@@ S:      Odd Fixe
  
  KERNEL NFSD, SUNRPC, AND LOCKD SERVERS
  M:    "J. Bruce Fields" <bfields@fieldses.org>
 -M:    Jeff Layton <jlayton@kernel.org>
 +M:    Chuck Lever <chuck.lever@oracle.com>
  L:    linux-nfs@vger.kernel.org
  W:    http://nfs.sourceforge.net/
  T:    git git://linux-nfs.org/~bfields/linux.git
@@@ -8819,12 -8618,14 +8826,12 @@@ F:   arch/x86/include/asm/svm.
  F:    arch/x86/kvm/svm.c
  
  KERNEL VIRTUAL MACHINE FOR ARM/ARM64 (KVM/arm, KVM/arm64)
 -M:    Christoffer Dall <christoffer.dall@arm.com>
  M:    Marc Zyngier <marc.zyngier@arm.com>
  R:    James Morse <james.morse@arm.com>
  R:    Julien Thierry <julien.thierry@arm.com>
  R:    Suzuki K Pouloze <suzuki.poulose@arm.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    kvmarm@lists.cs.columbia.edu
 -W:    http://systems.cs.columbia.edu/projects/kvm-arm
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git
  S:    Maintained
  F:    arch/arm/include/uapi/asm/kvm*
@@@ -9054,7 -8855,7 +9061,7 @@@ F:      include/linux/leds.
  LEGACY EEPROM DRIVER
  M:    Jean Delvare <jdelvare@suse.com>
  S:    Maintained
 -F:    Documentation/misc-devices/eeprom
 +F:    Documentation/misc-devices/eeprom.rst
  F:    drivers/misc/eeprom/eeprom.c
  
  LEGO MINDSTORMS EV3
@@@ -9076,7 -8877,7 +9083,7 @@@ M:      Matan Ziv-Av <matan@svgalib.org
  L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-platform-lg-laptop
 -F:    Documentation/laptops/lg-laptop.rst
 +F:    Documentation/admin-guide/laptops/lg-laptop.rst
  F:    drivers/platform/x86/lg-laptop.c
  
  LG2160 MEDIA DRIVER
@@@ -9316,7 -9117,7 +9323,7 @@@ F:      drivers/misc/lkdtm/
  LINUX KERNEL MEMORY CONSISTENCY MODEL (LKMM)
  M:    Alan Stern <stern@rowland.harvard.edu>
  M:    Andrea Parri <andrea.parri@amarulasolutions.com>
 -M:    Will Deacon <will.deacon@arm.com>
 +M:    Will Deacon <will@kernel.org>
  M:    Peter Zijlstra <peterz@infradead.org>
  M:    Boqun Feng <boqun.feng@gmail.com>
  M:    Nicholas Piggin <npiggin@gmail.com>
@@@ -9340,7 -9141,7 +9347,7 @@@ F:      Documentation/memory-barriers.tx
  LIS3LV02D ACCELEROMETER DRIVER
  M:    Eric Piel <eric.piel@tremplin-utc.net>
  S:    Maintained
 -F:    Documentation/misc-devices/lis3lv02d
 +F:    Documentation/misc-devices/lis3lv02d.rst
  F:    drivers/misc/lis3lv02d/
  F:    drivers/platform/x86/hp_accel.c
  
@@@ -9424,7 -9225,7 +9431,7 @@@ F:      Documentation/admin-guide/LSM/LoadPi
  LOCKING PRIMITIVES
  M:    Peter Zijlstra <peterz@infradead.org>
  M:    Ingo Molnar <mingo@redhat.com>
 -M:    Will Deacon <will.deacon@arm.com>
 +M:    Will Deacon <will@kernel.org>
  L:    linux-kernel@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking/core
  S:    Maintained
@@@ -9445,7 -9246,7 +9452,7 @@@ M:      "Richard Russon (FlatCap)" <ldm@flat
  L:    linux-ntfs-dev@lists.sourceforge.net
  W:    http://www.linux-ntfs.org/content/view/19/37/
  S:    Maintained
 -F:    Documentation/ldm.txt
 +F:    Documentation/admin-guide/ldm.rst
  F:    block/partitions/ldm.*
  
  LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI)
@@@ -9831,17 -9632,6 +9838,17 @@@ L:    linux-iio@vger.kernel.or
  S:    Maintained
  F:    drivers/iio/dac/cio-dac.c
  
 +MEDIA CONTROLLER FRAMEWORK
 +M:    Sakari Ailus <sakari.ailus@linux.intel.com>
 +M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 +L:    linux-media@vger.kernel.org
 +W:    https://www.linuxtv.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Supported
 +F:    drivers/media/mc/
 +F:    include/media/media-*.h
 +F:    include/uapi/linux/media.h
 +
  MEDIA DRIVERS FOR ASCOT2E
  M:    Sergey Kozlov <serjk@netup.ru>
  M:    Abylay Ospan <aospan@netup.ru>
@@@ -10163,13 -9953,6 +10170,13 @@@ L:  linux-wireless@vger.kernel.or
  S:    Maintained
  F:    drivers/net/wireless/mediatek/mt7601u/
  
 +MEDIATEK MT7621/28/88 I2C DRIVER
 +M:    Stefan Roese <sr@denx.de>
 +L:    linux-i2c@vger.kernel.org
 +S:    Maintained
 +F:    drivers/i2c/busses/i2c-mt7621.c
 +F:    Documentation/devicetree/bindings/i2c/i2c-mt7621.txt
 +
  MEDIATEK NAND CONTROLLER DRIVER
  M:    Xiaolei Li <xiaolei.li@mediatek.com>
  L:    linux-mtd@lists.infradead.org
@@@ -10315,7 -10098,6 +10322,7 @@@ Q:   http://patchwork.ozlabs.org/project/
  S:    Supported
  F:    drivers/net/ethernet/mellanox/mlx5/core/
  F:    include/linux/mlx5/
 +F:    Documentation/networking/device_drivers/mellanox/
  
  MELLANOX MLX5 IB driver
  M:    Leon Romanovsky <leonro@mellanox.com>
@@@ -10342,7 -10124,7 +10349,7 @@@ L:   linux-leds@vger.kernel.or
  S:    Supported
  F:    drivers/leds/leds-mlxcpld.c
  F:    drivers/leds/leds-mlxreg.c
 -F:    Documentation/leds/leds-mlxcpld.txt
 +F:    Documentation/leds/leds-mlxcpld.rst
  
  MELLANOX PLATFORM DRIVER
  M:    Vadim Pasternak <vadimp@mellanox.com>
@@@ -10407,7 -10189,7 +10414,7 @@@ M:   Johannes Thumshirn <morbidrsa@gmail.
  S:    Maintained
  F:    drivers/mcb/
  F:    include/linux/mcb.h
 -F:    Documentation/men-chameleon-bus.txt
 +F:    Documentation/driver-api/men-chameleon-bus.rst
  
  MEN F21BMC (Board Management Controller)
  M:    Andreas Werner <andreas.werner@men.de>
@@@ -10426,7 -10208,7 +10433,7 @@@ F:   drivers/watchdog/menz69_wdt.
  
  MESON AO CEC DRIVER FOR AMLOGIC SOCS
  M:    Neil Armstrong <narmstrong@baylibre.com>
 -L:    linux-media@lists.freedesktop.org
 +L:    linux-media@vger.kernel.org
  L:    linux-amlogic@lists.infradead.org
  W:    http://linux-meson.com/
  S:    Supported
@@@ -10442,14 -10224,6 +10449,14 @@@ S: Maintaine
  F:    drivers/mtd/nand/raw/meson_*
  F:    Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt
  
 +MESON VIDEO DECODER DRIVER FOR AMLOGIC SOCS
 +M:    Maxime Jourdan <mjourdan@baylibre.com>
 +L:    linux-media@vger.kernel.org
 +L:    linux-amlogic@lists.infradead.org
 +S:    Supported
 +F:    drivers/staging/media/meson/vdec/
 +T:    git git://linuxtv.org/media_tree.git
 +
  METHODE UDPU SUPPORT
  M:    Vladimir Vid <vladimir.vid@sartura.hr>
  S:    Maintained
@@@ -10503,9 -10277,7 +10510,9 @@@ MICROCHIP ISC DRIVE
  M:    Eugen Hristev <eugen.hristev@microchip.com>
  L:    linux-media@vger.kernel.org
  S:    Supported
 -F:    drivers/media/platform/atmel/atmel-isc.c
 +F:    drivers/media/platform/atmel/atmel-sama5d2-isc.c
 +F:    drivers/media/platform/atmel/atmel-isc.h
 +F:    drivers/media/platform/atmel/atmel-isc-base.c
  F:    drivers/media/platform/atmel/atmel-isc-regs.h
  F:    Documentation/devicetree/bindings/media/atmel-isc.txt
  
@@@ -10774,7 -10546,7 +10781,7 @@@ F:   arch/arm/boot/dts/mmp
  F:    arch/arm/mach-mmp/
  
  MMU GATHER AND TLB INVALIDATION
 -M:    Will Deacon <will.deacon@arm.com>
 +M:    Will Deacon <will@kernel.org>
  M:    "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
  M:    Andrew Morton <akpm@linux-foundation.org>
  M:    Nick Piggin <npiggin@gmail.com>
@@@ -10821,7 -10593,7 +10828,7 @@@ F:   include/uapi/linux/meye.
  MOXA SMARTIO/INDUSTIO/INTELLIO SERIAL CARD
  M:    Jiri Slaby <jirislaby@gmail.com>
  S:    Maintained
 -F:    Documentation/serial/moxa-smartio.rst
 +F:    Documentation/driver-api/serial/moxa-smartio.rst
  F:    drivers/tty/mxser.*
  
  MR800 AVERMEDIA USB FM RADIO DRIVER
@@@ -11065,6 -10837,14 +11072,6 @@@ F:  driver/net/net_failover.
  F:    include/net/net_failover.h
  F:    Documentation/networking/net_failover.rst
  
 -NETEFFECT IWARP RNIC DRIVER (IW_NES)
 -M:    Faisal Latif <faisal.latif@intel.com>
 -L:    linux-rdma@vger.kernel.org
 -W:    http://www.intel.com/Products/Server/Adapters/Server-Cluster/Server-Cluster-overview.htm
 -S:    Supported
 -F:    drivers/infiniband/hw/nes/
 -F:    include/uapi/rdma/nes-abi.h
 -
  NETEM NETWORK EMULATOR
  M:    Stephen Hemminger <stephen@networkplumber.org>
  L:    netem@lists.linux-foundation.org (moderated for non-subscribers)
@@@ -11081,7 -10861,7 +11088,7 @@@ F:   drivers/net/ethernet/neterion
  
  NETFILTER
  M:    Pablo Neira Ayuso <pablo@netfilter.org>
 -M:    Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
 +M:    Jozsef Kadlecsik <kadlec@netfilter.org>
  M:    Florian Westphal <fw@strlen.de>
  L:    netfilter-devel@vger.kernel.org
  L:    coreteam@netfilter.org
@@@ -11122,7 -10902,7 +11129,7 @@@ M:   Josef Bacik <josef@toxicpanda.com
  S:    Maintained
  L:    linux-block@vger.kernel.org
  L:    nbd@other.debian.org
 -F:    Documentation/blockdev/nbd.txt
 +F:    Documentation/admin-guide/blockdev/nbd.rst
  F:    drivers/block/nbd.c
  F:    include/trace/events/nbd.h
  F:    include/uapi/linux/nbd.h
@@@ -11294,18 -11074,11 +11301,18 @@@ L:        netdev@vger.kernel.or
  S:    Supported
  F:    drivers/net/ethernet/qlogic/netxen/
  
 +NEXTHOP
 +M:    David Ahern <dsahern@kernel.org>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    include/net/nexthop.h
 +F:    include/uapi/linux/nexthop.h
 +F:    include/net/netns/nexthop.h
 +F:    net/ipv4/nexthop.c
 +
  NFC SUBSYSTEM
 -M:    Samuel Ortiz <sameo@linux.intel.com>
 -L:    linux-wireless@vger.kernel.org
 -L:    linux-nfc@lists.01.org (subscribers-only)
 -S:    Supported
 +L:    netdev@vger.kernel.org
 +S:    Orphan
  F:    net/nfc/
  F:    include/net/nfc/
  F:    include/uapi/linux/nfc.h
@@@ -11332,7 -11105,7 +11339,7 @@@ F:   include/uapi/linux/nfs
  F:    include/uapi/linux/sunrpc/
  
  NILFS2 FILESYSTEM
 -M:    Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
 +M:    Ryusuke Konishi <konishi.ryusuke@gmail.com>
  L:    linux-nilfs@vger.kernel.org
  W:    https://nilfs.sourceforge.io/
  W:    https://nilfs.osdn.jp/
@@@ -11462,7 -11235,7 +11469,7 @@@ F:   drivers/video/fbdev/riva
  F:    drivers/video/fbdev/nvidia/
  
  NVM EXPRESS DRIVER
 -M:    Keith Busch <keith.busch@intel.com>
 +M:    Keith Busch <kbusch@kernel.org>
  M:    Jens Axboe <axboe@fb.com>
  M:    Christoph Hellwig <hch@lst.de>
  M:    Sagi Grimberg <sagi@grimberg.me>
@@@ -11506,7 -11279,7 +11513,7 @@@ NXP FXAS21002C DRIVE
  M:    Rui Miguel Silva <rmfrfs@gmail.com>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/iio/gyroscope/fxas21002c.txt
 +F:    Documentation/devicetree/bindings/iio/gyroscope/nxp,fxas21002c.txt
  F:    drivers/iio/gyro/fxas21002c_core.c
  F:    drivers/iio/gyro/fxas21002c.h
  F:    drivers/iio/gyro/fxas21002c_i2c.c
@@@ -11581,7 -11354,7 +11588,7 @@@ F:   arch/powerpc/include/asm/pnv-ocxl.
  F:    drivers/misc/ocxl/
  F:    include/misc/ocxl*
  F:    include/uapi/misc/ocxl.h
 -F:    Documentation/accelerators/ocxl.rst
 +F:    Documentation/userspace-api/accelerators/ocxl.rst
  
  OMAP AUDIO SUPPORT
  M:    Peter Ujfalusi <peter.ujfalusi@ti.com>
@@@ -11617,7 -11390,7 +11624,7 @@@ L:   linux-omap@vger.kernel.or
  L:    linux-fbdev@vger.kernel.org
  S:    Orphan
  F:    drivers/video/fbdev/omap2/
 -F:    Documentation/arm/OMAP/DSS
 +F:    Documentation/arm/omap/dss.rst
  
  OMAP FRAMEBUFFER SUPPORT
  L:    linux-fbdev@vger.kernel.org
@@@ -11896,6 -11669,16 +11903,6 @@@ S:  Maintaine
  F:    drivers/mtd/nand/onenand/
  F:    include/linux/mtd/onenand*.h
  
 -ONSTREAM SCSI TAPE DRIVER
 -M:    Willem Riede <osst@riede.org>
 -L:    osst-users@lists.sourceforge.net
 -L:    linux-scsi@vger.kernel.org
 -S:    Maintained
 -F:    Documentation/scsi/osst.txt
 -F:    drivers/scsi/osst.*
 -F:    drivers/scsi/osst_*.h
 -F:    drivers/scsi/st.h
 -
  OP-TEE DRIVER
  M:    Jens Wiklander <jens.wiklander@linaro.org>
  S:    Maintained
@@@ -11952,7 -11735,6 +11959,7 @@@ M:   Peter Korsgaard <peter@korsgaard.com
  M:    Andrew Lunn <andrew@lunn.ch>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
 +F:    Documentation/devicetree/bindings/i2c/i2c-ocores.txt
  F:    Documentation/i2c/busses/i2c-ocores
  F:    drivers/i2c/busses/i2c-ocores.c
  F:    include/linux/platform_data/i2c-ocores.h
@@@ -11989,7 -11771,7 +11996,7 @@@ S:   Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git
  F:    drivers/opp/
  F:    include/linux/pm_opp.h
 -F:    Documentation/power/opp.txt
 +F:    Documentation/power/opp.rst
  F:    Documentation/devicetree/bindings/opp/
  
  OPL4 DRIVER
@@@ -12086,14 -11868,6 +12093,14 @@@ F: kernel/padata.
  F:    include/linux/padata.h
  F:    Documentation/padata.txt
  
 +PAGE POOL
 +M:    Jesper Dangaard Brouer <hawk@kernel.org>
 +M:    Ilias Apalodimas <ilias.apalodimas@linaro.org>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    net/core/page_pool.c
 +F:    include/net/page_pool.h
 +
  PANASONIC LAPTOP ACPI EXTRAS DRIVER
  M:    Harald Welte <laforge@gnumonks.org>
  L:    platform-driver-x86@vger.kernel.org
@@@ -12104,7 -11878,7 +12111,7 @@@ PARALLEL LCD/KEYPAD PANEL DRIVE
  M:    Willy Tarreau <willy@haproxy.com>
  M:    Ksenija Stanojevic <ksenija.stanojevic@gmail.com>
  S:    Odd Fixes
 -F:    Documentation/auxdisplay/lcd-panel-cgram.txt
 +F:    Documentation/admin-guide/lcd-panel-cgram.rst
  F:    drivers/auxdisplay/panel.c
  
  PARALLEL PORT SUBSYSTEM
@@@ -12116,7 -11890,7 +12123,7 @@@ F:   drivers/parport
  F:    include/linux/parport*.h
  F:    drivers/char/ppdev.c
  F:    include/uapi/linux/ppdev.h
 -F:    Documentation/parport*.txt
 +F:    Documentation/driver-api/parport*.rst
  
  PARAVIRT_OPS INTERFACE
  M:    Juergen Gross <jgross@suse.com>
@@@ -12132,7 -11906,7 +12139,7 @@@ PARIDE DRIVERS FOR PARALLEL PORT IDE DE
  M:    Tim Waugh <tim@cyberelk.net>
  L:    linux-parport@lists.infradead.org (subscribers-only)
  S:    Maintained
 -F:    Documentation/blockdev/paride.txt
 +F:    Documentation/admin-guide/blockdev/paride.rst
  F:    drivers/block/paride/
  
  PARISC ARCHITECTURE
@@@ -12262,7 -12036,7 +12269,7 @@@ S:   Maintaine
  F:    drivers/pci/controller/dwc/*layerscape*
  
  PCI DRIVER FOR GENERIC OF HOSTS
 -M:    Will Deacon <will.deacon@arm.com>
 +M:    Will Deacon <will@kernel.org>
  L:    linux-pci@vger.kernel.org
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
@@@ -12291,7 -12065,7 +12298,7 @@@ M:   Kurt Schwemmer <kurt.schwemmer@micro
  M:    Logan Gunthorpe <logang@deltatee.com>
  L:    linux-pci@vger.kernel.org
  S:    Maintained
 -F:    Documentation/switchtec.txt
 +F:    Documentation/driver-api/switchtec.rst
  F:    Documentation/ABI/testing/sysfs-class-switchtec
  F:    drivers/pci/switch/switchtec*
  F:    include/uapi/linux/switchtec_ioctl.h
@@@ -12376,7 -12150,7 +12383,7 @@@ M:   Sam Bobroff <sbobroff@linux.ibm.com
  M:    Oliver O'Halloran <oohall@gmail.com>
  L:    linuxppc-dev@lists.ozlabs.org
  S:    Supported
 -F:    Documentation/PCI/pci-error-recovery.txt
 +F:    Documentation/PCI/pci-error-recovery.rst
  F:    drivers/pci/pcie/aer.c
  F:    drivers/pci/pcie/dpc.c
  F:    drivers/pci/pcie/err.c
@@@ -12389,7 -12163,7 +12396,7 @@@ PCI ERROR RECOVER
  M:    Linas Vepstas <linasvepstas@gmail.com>
  L:    linux-pci@vger.kernel.org
  S:    Supported
 -F:    Documentation/PCI/pci-error-recovery.txt
 +F:    Documentation/PCI/pci-error-recovery.rst
  
  PCI MSI DRIVER FOR ALTERA MSI IP
  M:    Ley Foon Tan <lftan@altera.com>
@@@ -12638,17 -12412,6 +12645,17 @@@ F: arch/arm/boot/dts/picoxcell
  F:    arch/arm/mach-picoxcell/
  F:    drivers/crypto/picoxcell*
  
 +PIDFD API
 +M:    Christian Brauner <christian@brauner.io>
 +L:    linux-kernel@vger.kernel.org
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux.git
 +F:    samples/pidfd/
 +F:    tools/testing/selftests/pidfd/
 +K:    (?i)pidfd
 +K:    (?i)clone3
 +K:    \b(clone_args|kernel_clone_args)\b
 +
  PIN CONTROL SUBSYSTEM
  M:    Linus Walleij <linus.walleij@linaro.org>
  L:    linux-gpio@vger.kernel.org
@@@ -12798,7 -12561,8 +12805,7 @@@ S:   Orpha
  F:    drivers/scsi/pmcraid.*
  
  PMC SIERRA PM8001 DRIVER
 -M:    Jack Wang <jinpu.wang@profitbricks.com>
 -M:    lindar_liu@usish.com
 +M:    Jack Wang <jinpu.wang@cloud.ionos.com>
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    drivers/scsi/pm8001/
@@@ -12892,7 -12656,7 +12899,7 @@@ M:   Rodolfo Giometti <giometti@enneenne.
  W:    http://wiki.enneenne.com/index.php/LinuxPPS_support
  L:    linuxpps@ml.enneenne.com (subscribers-only)
  S:    Maintained
 -F:    Documentation/pps/
 +F:    Documentation/driver-api/pps.rst
  F:    Documentation/devicetree/bindings/pps/pps-gpio.txt
  F:    Documentation/ABI/testing/sysfs-pps
  F:    drivers/pps/
@@@ -12998,7 -12762,7 +13005,7 @@@ L:   netdev@vger.kernel.or
  S:    Maintained
  W:    http://linuxptp.sourceforge.net/
  F:    Documentation/ABI/testing/sysfs-ptp
 -F:    Documentation/ptp/*
 +F:    Documentation/driver-api/ptp.rst
  F:    drivers/net/phy/dp83640*
  F:    drivers/ptp/*
  F:    include/linux/ptp_cl*
@@@ -13012,6 -12776,7 +13019,6 @@@ F:   include/linux/regset.
  F:    include/linux/tracehook.h
  F:    include/uapi/linux/ptrace.h
  F:    include/uapi/linux/ptrace.h
 -F:    include/asm-generic/ptrace.h
  F:    kernel/ptrace.c
  F:    arch/*/ptrace*.c
  F:    arch/*/*/ptrace*.c
@@@ -13063,7 -12828,7 +13070,7 @@@ M:   Thierry Reding <thierry.reding@gmail
  L:    linux-pwm@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm.git
 -F:    Documentation/pwm.txt
 +F:    Documentation/driver-api/pwm.rst
  F:    Documentation/devicetree/bindings/pwm/
  F:    include/linux/pwm.h
  F:    drivers/pwm/
@@@ -13289,6 -13054,7 +13296,6 @@@ F:   Documentation/devicetree/bindings/ne
  
  QUALCOMM GENERIC INTERFACE I2C DRIVER
  M:    Alok Chauhan <alokc@codeaurora.org>
 -M:    Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
  L:    linux-i2c@vger.kernel.org
  L:    linux-arm-msm@vger.kernel.org
  S:    Supported
@@@ -13424,7 -13190,7 +13431,7 @@@ F:   drivers/net/wireless/ralink/rt2x00
  RAMDISK RAM BLOCK DEVICE DRIVER
  M:    Jens Axboe <axboe@kernel.dk>
  S:    Maintained
 -F:    Documentation/blockdev/ramdisk.txt
 +F:    Documentation/admin-guide/blockdev/ramdisk.rst
  F:    drivers/block/brd.c
  
  RANCHU VIRTUAL BOARD FOR MIPS
@@@ -13533,7 -13299,7 +13540,7 @@@ Q:   http://patchwork.ozlabs.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux.git
  S:    Maintained
  F:    Documentation/devicetree/bindings/rtc/
 -F:    Documentation/rtc.txt
 +F:    Documentation/admin-guide/rtc.rst
  F:    drivers/rtc/
  F:    include/linux/rtc.h
  F:    include/uapi/linux/rtc.h
@@@ -13608,7 -13374,6 +13615,7 @@@ F:   drivers/clk/renesas
  RENESAS EMEV2 I2C DRIVER
  M:    Wolfram Sang <wsa+renesas@sang-engineering.com>
  S:    Supported
 +F:    Documentation/devicetree/bindings/i2c/i2c-emev2.txt
  F:    drivers/i2c/busses/i2c-emev2.c
  
  RENESAS ETHERNET DRIVERS
@@@ -13630,8 -13395,6 +13637,8 @@@ F:   drivers/iio/adc/rcar-gyroadc.
  RENESAS R-CAR I2C DRIVERS
  M:    Wolfram Sang <wsa+renesas@sang-engineering.com>
  S:    Supported
 +F:    Documentation/devicetree/bindings/i2c/i2c-rcar.txt
 +F:    Documentation/devicetree/bindings/i2c/i2c-sh_mobile.txt
  F:    drivers/i2c/busses/i2c-rcar.c
  F:    drivers/i2c/busses/i2c-sh_mobile.c
  
@@@ -13677,7 -13440,7 +13684,7 @@@ W:   http://wireless.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
  S:    Maintained
 -F:    Documentation/rfkill.txt
 +F:    Documentation/driver-api/rfkill.rst
  F:    Documentation/ABI/stable/sysfs-class-rfkill
  F:    net/rfkill/
  F:    include/linux/rfkill.h
@@@ -13729,11 -13492,11 +13736,11 @@@ S:        Maintaine
  F:    drivers/media/platform/rockchip/rga/
  F:    Documentation/devicetree/bindings/media/rockchip-rga.txt
  
 -ROCKCHIP VPU CODEC DRIVER
 +HANTRO VPU CODEC DRIVER
  M:    Ezequiel Garcia <ezequiel@collabora.com>
  L:    linux-media@vger.kernel.org
  S:    Maintained
 -F:    drivers/staging/media/platform/rockchip/vpu/
 +F:    drivers/staging/media/platform/hantro/
  F:    Documentation/devicetree/bindings/media/rockchip-vpu.txt
  
  ROCKER DRIVER
@@@ -13746,7 -13509,7 +13753,7 @@@ ROCKETPORT DRIVE
  P:    Comtrol Corp.
  W:    http://www.comtrol.com
  S:    Maintained
 -F:    Documentation/serial/rocket.rst
 +F:    Documentation/driver-api/serial/rocket.rst
  F:    drivers/tty/rocket*
  
  ROCKETPORT EXPRESS/INFINITY DRIVER
@@@ -13862,9 -13625,8 +13869,9 @@@ S:   Maintaine
  F:    drivers/video/fbdev/savage/
  
  S390
 -M:    Martin Schwidefsky <schwidefsky@de.ibm.com>
  M:    Heiko Carstens <heiko.carstens@de.ibm.com>
 +M:    Vasily Gorbik <gor@linux.ibm.com>
 +M:    Christian Borntraeger <borntraeger@de.ibm.com>
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux.git
@@@ -13934,7 -13696,7 +13941,7 @@@ L:   linux-s390@vger.kernel.or
  L:    kvm@vger.kernel.org
  S:    Supported
  F:    drivers/s390/cio/vfio_ccw*
 -F:    Documentation/s390/vfio-ccw.txt
 +F:    Documentation/s390/vfio-ccw.rst
  F:    include/uapi/linux/vfio_ccw.h
  
  S390 ZCRYPT DRIVER
@@@ -13954,7 -13716,7 +13961,7 @@@ S:   Supporte
  F:    drivers/s390/crypto/vfio_ap_drv.c
  F:    drivers/s390/crypto/vfio_ap_private.h
  F:    drivers/s390/crypto/vfio_ap_ops.c
 -F:    Documentation/s390/vfio-ap.txt
 +F:    Documentation/s390/vfio-ap.rst
  
  S390 ZFCP DRIVER
  M:    Steffen Maier <maier@linux.ibm.com>
@@@ -14140,7 -13902,7 +14147,7 @@@ M:   Sylwester Nawrocki <s.nawrocki@samsu
  L:    linux-kernel@vger.kernel.org
  S:    Supported
  F:    Documentation/devicetree/bindings/phy/samsung-phy.txt
 -F:    Documentation/phy/samsung-usb2.txt
 +F:    Documentation/driver-api/phy/samsung-usb2.rst
  F:    drivers/phy/samsung/phy-exynos4210-usb2.c
  F:    drivers/phy/samsung/phy-exynos4x12-usb2.c
  F:    drivers/phy/samsung/phy-exynos5250-usb2.c
@@@ -14393,12 -14155,6 +14400,12 @@@ S: Maintaine
  F:    drivers/misc/phantom.c
  F:    include/uapi/linux/phantom.h
  
 +SENSIRION SPS30 AIR POLLUTION SENSOR DRIVER
 +M:    Tomasz Duszynski <tduszyns@gmail.com>
 +S:    Maintained
 +F:    drivers/iio/chemical/sps30.c
 +F:    Documentation/devicetree/bindings/iio/chemical/sensirion,sps30.yaml
 +
  SERIAL DEVICE BUS
  M:    Rob Herring <robh@kernel.org>
  L:    linux-serial@vger.kernel.org
@@@ -14446,7 -14202,7 +14453,7 @@@ SGI SN-IA64 (Altix) SERIAL CONSOLE DRIV
  M:    Pat Gefre <pfg@sgi.com>
  L:    linux-ia64@vger.kernel.org
  S:    Supported
 -F:    Documentation/ia64/serial.txt
 +F:    Documentation/ia64/serial.rst
  F:    drivers/tty/serial/ioc?_serial.c
  F:    include/linux/ioc?.h
  
@@@ -14573,15 -14329,6 +14580,15 @@@ S: Supporte
  K:    sifive
  N:    sifive
  
 +SIFIVE FU540 SYSTEM-ON-CHIP
 +M:    Paul Walmsley <paul.walmsley@sifive.com>
 +M:    Palmer Dabbelt <palmer@sifive.com>
 +L:    linux-riscv@lists.infradead.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pjw/sifive.git
 +S:    Supported
 +K:    fu540
 +N:    fu540
 +
  SILEAD TOUCHSCREEN DRIVER
  M:    Hans de Goede <hdegoede@redhat.com>
  L:    linux-input@vger.kernel.org
@@@ -14597,7 -14344,7 +14604,7 @@@ M:   Sudip Mukherjee <sudip.mukherjee@cod
  L:    linux-fbdev@vger.kernel.org
  S:    Maintained
  F:    drivers/video/fbdev/sm712*
 -F:    Documentation/fb/sm712fb.txt
 +F:    Documentation/fb/sm712fb.rst
  
  SIMPLE FIRMWARE INTERFACE (SFI)
  M:    Len Brown <lenb@kernel.org>
@@@ -14613,7 -14360,7 +14620,7 @@@ SIMPLEFB FB DRIVE
  M:    Hans de Goede <hdegoede@redhat.com>
  L:    linux-fbdev@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/display/simple-framebuffer.txt
 +F:    Documentation/devicetree/bindings/display/simple-framebuffer.yaml
  F:    drivers/video/fbdev/simplefb.c
  F:    include/linux/platform_data/simplefb.h
  
@@@ -14642,7 -14389,7 +14649,7 @@@ F:   lib/test_siphash.
  F:    include/linux/siphash.h
  
  SIOX
 -M:    Gavin Schenk <g.schenk@eckelmann.de>
 +M:    Thorsten Scherer <t.scherer@eckelmann.de>
  M:    Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
  R:    Pengutronix Kernel Team <kernel@pengutronix.de>
  S:    Supported
@@@ -14667,7 -14414,7 +14674,7 @@@ SIS FRAMEBUFFER DRIVE
  M:    Thomas Winischhofer <thomas@winischhofer.net>
  W:    http://www.winischhofer.net/linuxsisvga.shtml
  S:    Maintained
 -F:    Documentation/fb/sisfb.txt
 +F:    Documentation/fb/sisfb.rst
  F:    drivers/video/fbdev/sis/
  F:    include/video/sisfb.h
  
@@@ -14805,13 -14552,6 +14812,13 @@@ M: Chris Boot <bootc@bootc.net
  S:    Maintained
  F:    drivers/leds/leds-net48xx.c
  
 +SOFT-IWARP DRIVER (siw)
 +M:    Bernard Metzler <bmt@zurich.ibm.com>
 +L:    linux-rdma@vger.kernel.org
 +S:    Supported
 +F:    drivers/infiniband/sw/siw/
 +F:    include/uapi/rdma/siw-abi.h
 +
  SOFT-ROCE DRIVER (rxe)
  M:    Moni Shoua <monis@mellanox.com>
  L:    linux-rdma@vger.kernel.org
@@@ -14866,14 -14606,6 +14873,14 @@@ S: Maintaine
  F:    drivers/net/ethernet/socionext/netsec.c
  F:    Documentation/devicetree/bindings/net/socionext-netsec.txt
  
 +SOCIONEXT (SNI) Synquacer SPI DRIVER
 +M:    Masahisa Kojima <masahisa.kojima@linaro.org>
 +M:    Jassi Brar <jaswinder.singh@linaro.org>
 +L:    linux-spi@vger.kernel.org
 +S:    Maintained
 +F:    drivers/spi/spi-synquacer.c
 +F:    Documentation/devicetree/bindings/spi/spi-synquacer.txt
 +
  SOLIDRUN CLEARFOG SUPPORT
  M:    Russell King <linux@armlinux.org.uk>
  S:    Maintained
@@@ -14952,7 -14684,7 +14959,7 @@@ M:   Mattia Dongili <malattia@linux.it
  L:    platform-driver-x86@vger.kernel.org
  W:    http://www.linux.it/~malattia/wiki/index.php/Sony_drivers
  S:    Maintained
 -F:    Documentation/laptops/sony-laptop.txt
 +F:    Documentation/admin-guide/laptops/sony-laptop.rst
  F:    drivers/char/sonypi.c
  F:    drivers/platform/x86/sony-laptop.c
  F:    include/linux/sony-laptop.h
@@@ -15180,17 -14912,6 +15187,17 @@@ L: linux-erofs@lists.ozlabs.or
  S:    Maintained
  F:    drivers/staging/erofs/
  
 +STAGING - FIELDBUS SUBSYSTEM
 +M:    Sven Van Asbroeck <TheSven73@gmail.com>
 +S:    Maintained
 +F:    drivers/staging/fieldbus/*
 +F:    drivers/staging/fieldbus/Documentation/
 +
 +STAGING - HMS ANYBUS-S BUS
 +M:    Sven Van Asbroeck <TheSven73@gmail.com>
 +S:    Maintained
 +F:    drivers/staging/fieldbus/anybuss/
 +
  STAGING - INDUSTRIAL IO
  M:    Jonathan Cameron <jic23@kernel.org>
  L:    linux-iio@vger.kernel.org
@@@ -15267,7 -14988,7 +15274,7 @@@ S:   Odd Fixe
  F:    drivers/net/ethernet/adaptec/starfire*
  
  STEC S1220 SKD DRIVER
 -M:    Bart Van Assche <bart.vanassche@wdc.com>
 +M:    Damien Le Moal <Damien.LeMoal@wdc.com>
  L:    linux-block@vger.kernel.org
  S:    Maintained
  F:    drivers/block/skd*[ch]
@@@ -15370,7 -15091,7 +15377,7 @@@ SVGA HANDLIN
  M:    Martin Mares <mj@ucw.cz>
  L:    linux-video@atrey.karlin.mff.cuni.cz
  S:    Maintained
 -F:    Documentation/svga.txt
 +F:    Documentation/admin-guide/svga.rst
  F:    arch/x86/boot/video*
  
  SWIOTLB SUBSYSTEM
@@@ -15407,7 -15128,7 +15414,7 @@@ F:   drivers/dma-buf/dma-fence
  F:    drivers/dma-buf/sw_sync.c
  F:    include/linux/sync_file.h
  F:    include/uapi/linux/sync_file.h
 -F:    Documentation/sync_file.txt
 +F:    Documentation/driver-api/sync_file.rst
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  
  SYNOPSYS ARC ARCHITECTURE
@@@ -15758,7 -15479,6 +15765,7 @@@ F:   drivers/dma/tegra
  
  TEGRA I2C DRIVER
  M:    Laxman Dewangan <ldewangan@nvidia.com>
 +R:    Dmitry Osipenko <digetx@gmail.com>
  S:    Supported
  F:    drivers/i2c/busses/i2c-tegra.c
  
@@@ -15963,7 -15683,6 +15970,7 @@@ R:   Bartosz Golaszewski <bgolaszewski@ba
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci.git
  S:    Supported
 +F:    Documentation/devicetree/bindings/i2c/i2c-davinci.txt
  F:    arch/arm/mach-davinci/
  F:    drivers/i2c/busses/i2c-davinci.c
  F:    arch/arm/boot/dts/da850*
@@@ -16028,7 -15747,7 +16035,7 @@@ F:   sound/soc/codecs/isabelle
  TI LP855x BACKLIGHT DRIVER
  M:    Milo Kim <milo.kim@ti.com>
  S:    Maintained
 -F:    Documentation/backlight/lp855x-driver.txt
 +F:    Documentation/driver-api/backlight/lp855x-driver.rst
  F:    drivers/video/backlight/lp855x_bl.c
  F:    include/linux/platform_data/lp855x.h
  
@@@ -16292,7 -16011,7 +16299,7 @@@ M:   Greg Kroah-Hartman <gregkh@linuxfoun
  M:    Jiri Slaby <jslaby@suse.com>
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git
 -F:    Documentation/serial/
 +F:    Documentation/driver-api/serial/
  F:    drivers/tty/
  F:    drivers/tty/serial/serial_core.c
  F:    include/linux/serial_core.h
@@@ -16512,7 -16231,7 +16519,7 @@@ USB ACM DRIVE
  M:    Oliver Neukum <oneukum@suse.com>
  L:    linux-usb@vger.kernel.org
  S:    Maintained
 -F:    Documentation/usb/acm.txt
 +F:    Documentation/usb/acm.rst
  F:    drivers/usb/class/cdc-acm.*
  
  USB AR5523 WIRELESS DRIVER
@@@ -16565,7 -16284,7 +16572,7 @@@ USB EHCI DRIVE
  M:    Alan Stern <stern@rowland.harvard.edu>
  L:    linux-usb@vger.kernel.org
  S:    Maintained
 -F:    Documentation/usb/ehci.txt
 +F:    Documentation/usb/ehci.rst
  F:    drivers/usb/host/ehci*
  
  USB GADGET/PERIPHERAL SUBSYSTEM
@@@ -16583,7 -16302,7 +16590,7 @@@ M:   Benjamin Tissoires <benjamin.tissoir
  L:    linux-usb@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git
  S:    Maintained
 -F:    Documentation/hid/hiddev.txt
 +F:    Documentation/hid/hiddev.rst
  F:    drivers/hid/usbhid/
  
  USB INTEL XHCI ROLE MUX DRIVER
@@@ -16639,7 -16358,7 +16646,7 @@@ USB OHCI DRIVE
  M:    Alan Stern <stern@rowland.harvard.edu>
  L:    linux-usb@vger.kernel.org
  S:    Maintained
 -F:    Documentation/usb/ohci.txt
 +F:    Documentation/usb/ohci.rst
  F:    drivers/usb/host/ohci*
  
  USB OTG FSM (Finite State Machine)
@@@ -16655,7 -16374,7 +16662,7 @@@ M:   Shuah Khan <shuah@kernel.org
  M:    Shuah Khan <skhan@linuxfoundation.org>
  L:    linux-usb@vger.kernel.org
  S:    Maintained
 -F:    Documentation/usb/usbip_protocol.txt
 +F:    Documentation/usb/usbip_protocol.rst
  F:    drivers/usb/usbip/
  F:    tools/usb/usbip/
  F:    tools/testing/selftests/drivers/usb/usbip/
@@@ -16703,7 -16422,7 +16710,7 @@@ M:   Johan Hovold <johan@kernel.org
  L:    linux-usb@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial.git
  S:    Maintained
 -F:    Documentation/usb/usb-serial.txt
 +F:    Documentation/usb/usb-serial.rst
  F:    drivers/usb/serial/
  F:    include/linux/usb/serial.h
  
@@@ -16882,7 -16601,7 +16889,7 @@@ M:   Michal Januszewski <spock@gentoo.org
  L:    linux-fbdev@vger.kernel.org
  W:    https://github.com/mjanusz/v86d
  S:    Maintained
 -F:    Documentation/fb/uvesafb.txt
 +F:    Documentation/fb/uvesafb.rst
  F:    drivers/video/fbdev/uvesafb.*
  
  VF610 NAND DRIVER
@@@ -16903,7 -16622,7 +16910,7 @@@ R:   Cornelia Huck <cohuck@redhat.com
  L:    kvm@vger.kernel.org
  T:    git git://github.com/awilliam/linux-vfio.git
  S:    Maintained
 -F:    Documentation/vfio.txt
 +F:    Documentation/driver-api/vfio.rst
  F:    drivers/vfio/
  F:    include/linux/vfio.h
  F:    include/uapi/linux/vfio.h
@@@ -16912,7 -16631,7 +16919,7 @@@ VFIO MEDIATED DEVICE DRIVER
  M:    Kirti Wankhede <kwankhede@nvidia.com>
  L:    kvm@vger.kernel.org
  S:    Maintained
 -F:    Documentation/vfio-mediated-device.txt
 +F:    Documentation/driver-api/vfio-mediated-device.rst
  F:    drivers/vfio/mdev/
  F:    include/linux/mdev.h
  F:    samples/vfio-mdev/
@@@ -16957,7 -16676,7 +16964,7 @@@ S:   Maintaine
  F:    drivers/net/ethernet/via/via-velocity.*
  
  VICODEC VIRTUAL CODEC DRIVER
 -M:    Hans Verkuil <hans.verkuil@cisco.com>
 +M:    Hans Verkuil <hverkuil-cisco@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
  W:    https://linuxtv.org
@@@ -16980,7 -16699,6 +16987,7 @@@ VIDEOBUF2 FRAMEWOR
  M:    Pawel Osciak <pawel@osciak.com>
  M:    Marek Szyprowski <m.szyprowski@samsung.com>
  M:    Kyungmin Park <kyungmin.park@samsung.com>
 +R:    Tomasz Figa <tfiga@chromium.org>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/common/videobuf2/*
@@@ -17539,7 -17257,6 +17546,7 @@@ N:   xd
  XDP SOCKETS (AF_XDP)
  M:    Björn Töpel <bjorn.topel@intel.com>
  M:    Magnus Karlsson <magnus.karlsson@intel.com>
 +R:    Jonathan Lemon <jonathan.lemon@gmail.com>
  L:    netdev@vger.kernel.org
  L:    bpf@vger.kernel.org
  S:    Maintained
@@@ -17587,7 -17304,7 +17594,7 @@@ F:   Documentation/ABI/stable/sysfs-hyper
  F:    Documentation/ABI/testing/sysfs-hypervisor-xen
  
  XEN NETWORK BACKEND DRIVER
 -M:    Wei Liu <wei.liu2@citrix.com>
 +M:    Wei Liu <wei.liu@kernel.org>
  M:    Paul Durrant <paul.durrant@citrix.com>
  L:    xen-devel@lists.xenproject.org (moderated for non-subscribers)
  L:    netdev@vger.kernel.org
@@@ -17633,13 -17350,7 +17640,13 @@@ W: http://xfs.org
  T:    git git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git
  S:    Supported
  F:    Documentation/filesystems/xfs.txt
 +F:    Documentation/ABI/testing/sysfs-fs-xfs
 +F:    Documentation/filesystems/xfs.txt
 +F:    Documentation/filesystems/xfs-delayed-logging-design.txt
 +F:    Documentation/filesystems/xfs-self-describing-metadata.txt
  F:    fs/xfs/
 +F:    include/uapi/linux/dqblk_xfs.h
 +F:    include/uapi/linux/fsmap.h
  
  XILINX AXI ETHERNET DRIVER
  M:    Anirudha Sarangi <anirudh@xilinx.com>
@@@ -17675,7 -17386,6 +17682,7 @@@ M:   Jan Glauber <jglauber@cavium.com
  L:    linux-i2c@vger.kernel.org
  W:    http://www.cavium.com
  S:    Supported
 +F:    Documentation/devicetree/bindings/i2c/i2c-xlp9xx.txt
  F:    drivers/i2c/busses/i2c-xlp9xx.c
  
  XRA1403 GPIO EXPANDER
@@@ -17759,12 -17469,6 +17766,12 @@@ Q: https://patchwork.linuxtv.org/projec
  S:    Maintained
  F:    drivers/media/dvb-frontends/zd1301_demod*
  
 +ZHAOXIN PROCESSOR SUPPORT
 +M:    Tony W Wang-oc <TonyWWang-oc@zhaoxin.com>
 +L:    linux-kernel@vger.kernel.org
 +S:    Maintained
 +F:    arch/x86/kernel/cpu/zhaoxin.c
 +
  ZPOOL COMPRESSED PAGE STORAGE API
  M:    Dan Streetman <ddstreet@ieee.org>
  L:    linux-mm@kvack.org
@@@ -17787,7 -17491,7 +17794,7 @@@ R:   Sergey Senozhatsky <sergey.senozhats
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  F:    drivers/block/zram/
 -F:    Documentation/blockdev/zram.txt
 +F:    Documentation/admin-guide/blockdev/zram.rst
  
  ZS DECSTATION Z85C30 SERIAL DRIVER
  M:    "Maciej W. Rozycki" <macro@linux-mips.org>
diff --combined drivers/dma/Kconfig
index 703275cc29de1f820676c5cc7f193b5b511a1f9c,71fe800ef6621c3d9bc9b8a68bac1b4d13cc2e47..03fa0c58cef3b8ff93268c61afafab35a77a77c3
@@@ -1,4 -1,3 +1,4 @@@
 +# SPDX-License-Identifier: GPL-2.0-only
  #
  # DMA engine configuration
  #
@@@ -103,6 -102,7 +103,7 @@@ config AXI_DMA
        depends on MICROBLAZE || NIOS2 || ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_SOCFPGA || COMPILE_TEST
        select DMA_ENGINE
        select DMA_VIRTUAL_CHANNELS
+       select REGMAP_MMIO
        help
          Enable support for the Analog Devices AXI-DMAC peripheral. This DMA
          controller is often used in Analog Device's reference designs for FPGA
@@@ -584,7 -584,7 +585,7 @@@ config TEGRA20_APB_DM
  
  config TEGRA210_ADMA
        tristate "NVIDIA Tegra210 ADMA support"
-       depends on (ARCH_TEGRA_210_SOC || COMPILE_TEST) && PM_CLK
+       depends on (ARCH_TEGRA_210_SOC || COMPILE_TEST)
        select DMA_ENGINE
        select DMA_VIRTUAL_CHANNELS
        help
@@@ -666,6 -666,8 +667,8 @@@ source "drivers/dma/qcom/Kconfig
  
  source "drivers/dma/dw/Kconfig"
  
+ source "drivers/dma/dw-edma/Kconfig"
  source "drivers/dma/hsu/Kconfig"
  
  source "drivers/dma/sh/Kconfig"
diff --combined drivers/dma/amba-pl08x.c
index 464725dcad00112bba4e5ac40f0c15e165917858,ccd983c6d46c7c1b630c4a25d9cfa490a7ca8aa4..9adc7a2fa3d3b597a864b63c3d14c38f3cb7c220
@@@ -1,4 -1,3 +1,4 @@@
 +// SPDX-License-Identifier: GPL-2.0-or-later
  /*
   * Copyright (c) 2006 ARM Ltd.
   * Copyright (c) 2010 ST-Ericsson SA
@@@ -7,6 -6,19 +7,6 @@@
   * Author: Peter Pearse <peter.pearse@arm.com>
   * Author: Linus Walleij <linus.walleij@linaro.org>
   *
 - * This program is free software; you can redistribute it and/or modify it
 - * under the terms of the GNU General Public License as published by the Free
 - * Software Foundation; either version 2 of the License, or (at your option)
 - * any later version.
 - *
 - * This program is distributed in the hope that it will be useful, but WITHOUT
 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 - * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 - * more details.
 - *
 - * The full GNU General Public License is in this distribution in the file
 - * called COPYING.
 - *
   * Documentation: ARM DDI 0196G == PL080
   * Documentation: ARM DDI 0218E == PL081
   * Documentation: S3C6410 User's Manual == PL080S
@@@ -2508,9 -2520,8 +2508,8 @@@ DEFINE_SHOW_ATTRIBUTE(pl08x_debugfs)
  static void init_pl08x_debugfs(struct pl08x_driver_data *pl08x)
  {
        /* Expose a simple debugfs interface to view all clocks */
-       (void) debugfs_create_file(dev_name(&pl08x->adev->dev),
-                       S_IFREG | S_IRUGO, NULL, pl08x,
-                       &pl08x_debugfs_fops);
+       debugfs_create_file(dev_name(&pl08x->adev->dev), S_IFREG | S_IRUGO,
+                           NULL, pl08x, &pl08x_debugfs_fops);
  }
  
  #else
diff --combined drivers/dma/at_xdmac.c
index 627ef3e5b3127f77f42b90e622d5782565e18b2c,84b3c6ac31ccf0aab04334dbc4ffba9176511e6b..b58ac720d9a122099dd6f9c7e60f28cc215dc0dc
@@@ -1,10 -1,21 +1,10 @@@
 +// SPDX-License-Identifier: GPL-2.0-only
  /*
   * Driver for the Atmel Extensible DMA Controller (aka XDMAC on AT91 systems)
   *
   * Copyright (C) 2014 Atmel Corporation
   *
   * Author: Ludovic Desroches <ludovic.desroches@atmel.com>
 - *
 - * This program is free software; you can redistribute it and/or modify it
 - * under the terms of the GNU General Public License version 2 as published by
 - * the Free Software Foundation.
 - *
 - * This program is distributed in the hope that it will be useful, but WITHOUT
 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 - * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 - * more details.
 - *
 - * You should have received a copy of the GNU General Public License along with
 - * this program.  If not, see <http://www.gnu.org/licenses/>.
   */
  
  #include <asm/barrier.h>
@@@ -1568,11 -1579,14 +1568,14 @@@ static void at_xdmac_handle_cyclic(stru
        struct at_xdmac_desc            *desc;
        struct dma_async_tx_descriptor  *txd;
  
-       desc = list_first_entry(&atchan->xfers_list, struct at_xdmac_desc, xfer_node);
-       txd = &desc->tx_dma_desc;
+       if (!list_empty(&atchan->xfers_list)) {
+               desc = list_first_entry(&atchan->xfers_list,
+                                       struct at_xdmac_desc, xfer_node);
+               txd = &desc->tx_dma_desc;
  
-       if (txd->flags & DMA_PREP_INTERRUPT)
-               dmaengine_desc_get_callback_invoke(txd, NULL);
+               if (txd->flags & DMA_PREP_INTERRUPT)
+                       dmaengine_desc_get_callback_invoke(txd, NULL);
+       }
  }
  
  static void at_xdmac_handle_error(struct at_xdmac_chan *atchan)
diff --combined drivers/dma/coh901318.c
index 547786ac342bd8ebd3c54e2c8032d56619027106,6f5bf6ae08b1b18d045f1b3f9e8566757facde8f..e51d836afcc7765d37ad5b084404aeebd13a8d69
@@@ -1,8 -1,8 +1,8 @@@
 +// SPDX-License-Identifier: GPL-2.0-only
  /*
   * driver/dma/coh901318.c
   *
   * Copyright (C) 2007-2009 ST-Ericsson
 - * License terms: GNU General Public License (GPL) version 2
   * DMA driver for COH 901 318
   * Author: Per Friden <per.friden@stericsson.com>
   */
@@@ -1378,10 -1378,8 +1378,8 @@@ static int __init init_coh901318_debugf
  
        dma_dentry = debugfs_create_dir("dma", NULL);
  
-       (void) debugfs_create_file("status",
-                                  S_IFREG | S_IRUGO,
-                                  dma_dentry, NULL,
-                                  &coh901318_debugfs_status_operations);
+       debugfs_create_file("status", S_IFREG | S_IRUGO, dma_dentry, NULL,
+                           &coh901318_debugfs_status_operations);
        return 0;
  }
  
index 8a3f1043917b248a38536a02ef6e4125f85e064c,c12bdc7832b11169e277de0d17ed07cfeea4b5eb..a0ee404b736ed966098c94e170fd62a71bfb6a5e
@@@ -1,8 -1,8 +1,8 @@@
 -// SPDX-License-Identifier: GPL-2.0
 +// SPDX-License-Identifier: GPL-2.0-only
  /*
   * Driver for the Analog Devices AXI-DMAC core
   *
-  * Copyright 2013-2015 Analog Devices Inc.
+  * Copyright 2013-2019 Analog Devices Inc.
   *  Author: Lars-Peter Clausen <lars@metafoo.de>
   */
  
@@@ -18,7 -18,9 +18,9 @@@
  #include <linux/of.h>
  #include <linux/of_dma.h>
  #include <linux/platform_device.h>
+ #include <linux/regmap.h>
  #include <linux/slab.h>
+ #include <linux/fpga/adi-axi-common.h>
  
  #include <dt-bindings/dma/axi-dmac.h>
  
@@@ -62,6 -64,8 +64,8 @@@
  #define AXI_DMAC_REG_STATUS           0x430
  #define AXI_DMAC_REG_CURRENT_SRC_ADDR 0x434
  #define AXI_DMAC_REG_CURRENT_DEST_ADDR        0x438
+ #define AXI_DMAC_REG_PARTIAL_XFER_LEN 0x44c
+ #define AXI_DMAC_REG_PARTIAL_XFER_ID  0x450
  
  #define AXI_DMAC_CTRL_ENABLE          BIT(0)
  #define AXI_DMAC_CTRL_PAUSE           BIT(1)
  #define AXI_DMAC_IRQ_EOT              BIT(1)
  
  #define AXI_DMAC_FLAG_CYCLIC          BIT(0)
+ #define AXI_DMAC_FLAG_LAST            BIT(1)
+ #define AXI_DMAC_FLAG_PARTIAL_REPORT  BIT(2)
+ #define AXI_DMAC_FLAG_PARTIAL_XFER_DONE BIT(31)
  
  /* The maximum ID allocated by the hardware is 31 */
  #define AXI_DMAC_SG_UNUSED 32U
@@@ -82,12 -90,14 +90,14 @@@ struct axi_dmac_sg 
        unsigned int dest_stride;
        unsigned int src_stride;
        unsigned int id;
+       unsigned int partial_len;
        bool schedule_when_free;
  };
  
  struct axi_dmac_desc {
        struct virt_dma_desc vdesc;
        bool cyclic;
+       bool have_partial_xfer;
  
        unsigned int num_submitted;
        unsigned int num_completed;
@@@ -108,8 -118,10 +118,10 @@@ struct axi_dmac_chan 
        unsigned int dest_type;
  
        unsigned int max_length;
-       unsigned int align_mask;
+       unsigned int address_align_mask;
+       unsigned int length_align_mask;
  
+       bool hw_partial_xfer;
        bool hw_cyclic;
        bool hw_2d;
  };
@@@ -167,14 -179,14 +179,14 @@@ static bool axi_dmac_check_len(struct a
  {
        if (len == 0)
                return false;
-       if ((len & chan->align_mask) != 0) /* Not aligned */
+       if ((len & chan->length_align_mask) != 0) /* Not aligned */
                return false;
        return true;
  }
  
  static bool axi_dmac_check_addr(struct axi_dmac_chan *chan, dma_addr_t addr)
  {
-       if ((addr & chan->align_mask) != 0) /* Not aligned */
+       if ((addr & chan->address_align_mask) != 0) /* Not aligned */
                return false;
        return true;
  }
@@@ -210,11 -222,13 +222,13 @@@ static void axi_dmac_start_transfer(str
        }
  
        desc->num_submitted++;
-       if (desc->num_submitted == desc->num_sgs) {
+       if (desc->num_submitted == desc->num_sgs ||
+           desc->have_partial_xfer) {
                if (desc->cyclic)
                        desc->num_submitted = 0; /* Start again */
                else
                        chan->next_desc = NULL;
+               flags |= AXI_DMAC_FLAG_LAST;
        } else {
                chan->next_desc = desc;
        }
                desc->num_sgs == 1)
                flags |= AXI_DMAC_FLAG_CYCLIC;
  
+       if (chan->hw_partial_xfer)
+               flags |= AXI_DMAC_FLAG_PARTIAL_REPORT;
        axi_dmac_write(dmac, AXI_DMAC_REG_X_LENGTH, sg->x_len - 1);
        axi_dmac_write(dmac, AXI_DMAC_REG_Y_LENGTH, sg->y_len - 1);
        axi_dmac_write(dmac, AXI_DMAC_REG_FLAGS, flags);
@@@ -252,6 -269,83 +269,83 @@@ static struct axi_dmac_desc *axi_dmac_a
                struct axi_dmac_desc, vdesc.node);
  }
  
+ static inline unsigned int axi_dmac_total_sg_bytes(struct axi_dmac_chan *chan,
+       struct axi_dmac_sg *sg)
+ {
+       if (chan->hw_2d)
+               return sg->x_len * sg->y_len;
+       else
+               return sg->x_len;
+ }
+ static void axi_dmac_dequeue_partial_xfers(struct axi_dmac_chan *chan)
+ {
+       struct axi_dmac *dmac = chan_to_axi_dmac(chan);
+       struct axi_dmac_desc *desc;
+       struct axi_dmac_sg *sg;
+       u32 xfer_done, len, id, i;
+       bool found_sg;
+       do {
+               len = axi_dmac_read(dmac, AXI_DMAC_REG_PARTIAL_XFER_LEN);
+               id  = axi_dmac_read(dmac, AXI_DMAC_REG_PARTIAL_XFER_ID);
+               found_sg = false;
+               list_for_each_entry(desc, &chan->active_descs, vdesc.node) {
+                       for (i = 0; i < desc->num_sgs; i++) {
+                               sg = &desc->sg[i];
+                               if (sg->id == AXI_DMAC_SG_UNUSED)
+                                       continue;
+                               if (sg->id == id) {
+                                       desc->have_partial_xfer = true;
+                                       sg->partial_len = len;
+                                       found_sg = true;
+                                       break;
+                               }
+                       }
+                       if (found_sg)
+                               break;
+               }
+               if (found_sg) {
+                       dev_dbg(dmac->dma_dev.dev,
+                               "Found partial segment id=%u, len=%u\n",
+                               id, len);
+               } else {
+                       dev_warn(dmac->dma_dev.dev,
+                                "Not found partial segment id=%u, len=%u\n",
+                                id, len);
+               }
+               /* Check if we have any more partial transfers */
+               xfer_done = axi_dmac_read(dmac, AXI_DMAC_REG_TRANSFER_DONE);
+               xfer_done = !(xfer_done & AXI_DMAC_FLAG_PARTIAL_XFER_DONE);
+       } while (!xfer_done);
+ }
+ static void axi_dmac_compute_residue(struct axi_dmac_chan *chan,
+       struct axi_dmac_desc *active)
+ {
+       struct dmaengine_result *rslt = &active->vdesc.tx_result;
+       unsigned int start = active->num_completed - 1;
+       struct axi_dmac_sg *sg;
+       unsigned int i, total;
+       rslt->result = DMA_TRANS_NOERROR;
+       rslt->residue = 0;
+       /*
+        * We get here if the last completed segment is partial, which
+        * means we can compute the residue from that segment onwards
+        */
+       for (i = start; i < active->num_sgs; i++) {
+               sg = &active->sg[i];
+               total = axi_dmac_total_sg_bytes(chan, sg);
+               rslt->residue += (total - sg->partial_len);
+       }
+ }
  static bool axi_dmac_transfer_done(struct axi_dmac_chan *chan,
        unsigned int completed_transfers)
  {
        if (!active)
                return false;
  
+       if (chan->hw_partial_xfer &&
+           (completed_transfers & AXI_DMAC_FLAG_PARTIAL_XFER_DONE))
+               axi_dmac_dequeue_partial_xfers(chan);
        do {
                sg = &active->sg[active->num_completed];
                if (sg->id == AXI_DMAC_SG_UNUSED) /* Not yet submitted */
                        start_next = true;
                }
  
+               if (sg->partial_len)
+                       axi_dmac_compute_residue(chan, active);
                if (active->cyclic)
                        vchan_cyclic_callback(&active->vdesc);
  
-               if (active->num_completed == active->num_sgs) {
+               if (active->num_completed == active->num_sgs ||
+                   sg->partial_len) {
                        if (active->cyclic) {
                                active->num_completed = 0; /* wrap around */
                        } else {
@@@ -391,7 -493,7 +493,7 @@@ static struct axi_dmac_sg *axi_dmac_fil
        num_segments = DIV_ROUND_UP(period_len, chan->max_length);
        segment_size = DIV_ROUND_UP(period_len, num_segments);
        /* Take care of alignment */
-       segment_size = ((segment_size - 1) | chan->align_mask) + 1;
+       segment_size = ((segment_size - 1) | chan->length_align_mask) + 1;
  
        for (i = 0; i < num_periods; i++) {
                len = period_len;
@@@ -561,6 -663,9 +663,9 @@@ static struct dma_async_tx_descriptor *
                desc->sg[0].y_len = 1;
        }
  
+       if (flags & DMA_CYCLIC)
+               desc->cyclic = true;
        return vchan_tx_prep(&chan->vchan, &desc->vdesc, flags);
  }
  
@@@ -574,6 -679,44 +679,44 @@@ static void axi_dmac_desc_free(struct v
        kfree(container_of(vdesc, struct axi_dmac_desc, vdesc));
  }
  
+ static bool axi_dmac_regmap_rdwr(struct device *dev, unsigned int reg)
+ {
+       switch (reg) {
+       case AXI_DMAC_REG_IRQ_MASK:
+       case AXI_DMAC_REG_IRQ_SOURCE:
+       case AXI_DMAC_REG_IRQ_PENDING:
+       case AXI_DMAC_REG_CTRL:
+       case AXI_DMAC_REG_TRANSFER_ID:
+       case AXI_DMAC_REG_START_TRANSFER:
+       case AXI_DMAC_REG_FLAGS:
+       case AXI_DMAC_REG_DEST_ADDRESS:
+       case AXI_DMAC_REG_SRC_ADDRESS:
+       case AXI_DMAC_REG_X_LENGTH:
+       case AXI_DMAC_REG_Y_LENGTH:
+       case AXI_DMAC_REG_DEST_STRIDE:
+       case AXI_DMAC_REG_SRC_STRIDE:
+       case AXI_DMAC_REG_TRANSFER_DONE:
+       case AXI_DMAC_REG_ACTIVE_TRANSFER_ID:
+       case AXI_DMAC_REG_STATUS:
+       case AXI_DMAC_REG_CURRENT_SRC_ADDR:
+       case AXI_DMAC_REG_CURRENT_DEST_ADDR:
+       case AXI_DMAC_REG_PARTIAL_XFER_LEN:
+       case AXI_DMAC_REG_PARTIAL_XFER_ID:
+               return true;
+       default:
+               return false;
+       }
+ }
+ static const struct regmap_config axi_dmac_regmap_config = {
+       .reg_bits = 32,
+       .val_bits = 32,
+       .reg_stride = 4,
+       .max_register = AXI_DMAC_REG_PARTIAL_XFER_ID,
+       .readable_reg = axi_dmac_regmap_rdwr,
+       .writeable_reg = axi_dmac_regmap_rdwr,
+ };
  /*
   * The configuration stored in the devicetree matches the configuration
   * parameters of the peripheral instance and allows the driver to know which
@@@ -617,7 -760,7 +760,7 @@@ static int axi_dmac_parse_chan_dt(struc
                return ret;
        chan->dest_width = val / 8;
  
-       chan->align_mask = max(chan->dest_width, chan->src_width) - 1;
+       chan->address_align_mask = max(chan->dest_width, chan->src_width) - 1;
  
        if (axi_dmac_dest_is_mem(chan) && axi_dmac_src_is_mem(chan))
                chan->direction = DMA_MEM_TO_MEM;
        return 0;
  }
  
- static void axi_dmac_detect_caps(struct axi_dmac *dmac)
+ static int axi_dmac_detect_caps(struct axi_dmac *dmac)
  {
        struct axi_dmac_chan *chan = &dmac->chan;
+       unsigned int version;
+       version = axi_dmac_read(dmac, ADI_AXI_REG_VERSION);
  
        axi_dmac_write(dmac, AXI_DMAC_REG_FLAGS, AXI_DMAC_FLAG_CYCLIC);
        if (axi_dmac_read(dmac, AXI_DMAC_REG_FLAGS) == AXI_DMAC_FLAG_CYCLIC)
        chan->max_length = axi_dmac_read(dmac, AXI_DMAC_REG_X_LENGTH);
        if (chan->max_length != UINT_MAX)
                chan->max_length++;
+       axi_dmac_write(dmac, AXI_DMAC_REG_DEST_ADDRESS, 0xffffffff);
+       if (axi_dmac_read(dmac, AXI_DMAC_REG_DEST_ADDRESS) == 0 &&
+           chan->dest_type == AXI_DMAC_BUS_TYPE_AXI_MM) {
+               dev_err(dmac->dma_dev.dev,
+                       "Destination memory-mapped interface not supported.");
+               return -ENODEV;
+       }
+       axi_dmac_write(dmac, AXI_DMAC_REG_SRC_ADDRESS, 0xffffffff);
+       if (axi_dmac_read(dmac, AXI_DMAC_REG_SRC_ADDRESS) == 0 &&
+           chan->src_type == AXI_DMAC_BUS_TYPE_AXI_MM) {
+               dev_err(dmac->dma_dev.dev,
+                       "Source memory-mapped interface not supported.");
+               return -ENODEV;
+       }
+       if (version >= ADI_AXI_PCORE_VER(4, 2, 'a'))
+               chan->hw_partial_xfer = true;
+       if (version >= ADI_AXI_PCORE_VER(4, 1, 'a')) {
+               axi_dmac_write(dmac, AXI_DMAC_REG_X_LENGTH, 0x00);
+               chan->length_align_mask =
+                       axi_dmac_read(dmac, AXI_DMAC_REG_X_LENGTH);
+       } else {
+               chan->length_align_mask = chan->address_align_mask;
+       }
+       return 0;
  }
  
  static int axi_dmac_probe(struct platform_device *pdev)
        if (ret < 0)
                return ret;
  
-       axi_dmac_detect_caps(dmac);
+       ret = axi_dmac_detect_caps(dmac);
+       if (ret)
+               goto err_clk_disable;
+       dma_dev->copy_align = (dmac->chan.address_align_mask + 1);
  
        axi_dmac_write(dmac, AXI_DMAC_REG_IRQ_MASK, 0x00);
  
  
        platform_set_drvdata(pdev, dmac);
  
+       devm_regmap_init_mmio(&pdev->dev, dmac->base, &axi_dmac_regmap_config);
        return 0;
  
  err_unregister_of:
diff --combined drivers/dma/dma-jz4780.c
index 6b8c4c458e8a39a0b9500804a3c0a4cb8f6e5839,4064391ccc13f01aa31c5cf0e1f70a6a04804bf3..7fe9309a876bde8fcb6e035dd0fd27baf464f333
@@@ -1,4 -1,4 +1,4 @@@
 -// SPDX-License-Identifier: GPL-2.0+
 +// SPDX-License-Identifier: GPL-2.0-or-later
  /*
   * Ingenic JZ4780 DMA controller
   *
@@@ -156,7 -156,6 +156,6 @@@ struct jz4780_dma_dev 
  };
  
  struct jz4780_dma_filter_data {
-       struct device_node *of_node;
        uint32_t transfer_type;
        int channel;
  };
@@@ -662,11 -661,10 +661,11 @@@ static enum dma_status jz4780_dma_tx_st
        return status;
  }
  
 -static void jz4780_dma_chan_irq(struct jz4780_dma_dev *jzdma,
 -      struct jz4780_dma_chan *jzchan)
 +static bool jz4780_dma_chan_irq(struct jz4780_dma_dev *jzdma,
 +                              struct jz4780_dma_chan *jzchan)
  {
        uint32_t dcs;
 +      bool ack = true;
  
        spin_lock(&jzchan->vchan.lock);
  
                if ((dcs & (JZ_DMA_DCS_AR | JZ_DMA_DCS_HLT)) == 0) {
                        if (jzchan->desc->type == DMA_CYCLIC) {
                                vchan_cyclic_callback(&jzchan->desc->vdesc);
 -                      } else {
 +
 +                              jz4780_dma_begin(jzchan);
 +                      } else if (dcs & JZ_DMA_DCS_TT) {
                                vchan_cookie_complete(&jzchan->desc->vdesc);
                                jzchan->desc = NULL;
 -                      }
  
 -                      jz4780_dma_begin(jzchan);
 +                              jz4780_dma_begin(jzchan);
 +                      } else {
 +                              /* False positive - continue the transfer */
 +                              ack = false;
 +                              jz4780_dma_chn_writel(jzdma, jzchan->id,
 +                                                    JZ_DMA_REG_DCS,
 +                                                    JZ_DMA_DCS_CTE);
 +                      }
                }
        } else {
                dev_err(&jzchan->vchan.chan.dev->device,
        }
  
        spin_unlock(&jzchan->vchan.lock);
 +
 +      return ack;
  }
  
  static irqreturn_t jz4780_dma_irq_handler(int irq, void *data)
  {
        struct jz4780_dma_dev *jzdma = data;
 -      uint32_t pending, dmac;
 +      unsigned int nb_channels = jzdma->soc_data->nb_channels;
 +      unsigned long pending;
 +      uint32_t dmac;
        int i;
  
        pending = jz4780_dma_ctrl_readl(jzdma, JZ_DMA_REG_DIRQP);
  
 -      for (i = 0; i < jzdma->soc_data->nb_channels; i++) {
 -              if (!(pending & (1<<i)))
 -                      continue;
 -
 -              jz4780_dma_chan_irq(jzdma, &jzdma->chan[i]);
 +      for_each_set_bit(i, &pending, nb_channels) {
 +              if (jz4780_dma_chan_irq(jzdma, &jzdma->chan[i]))
 +                      pending &= ~BIT(i);
        }
  
        /* Clear halt and address error status of all channels. */
        jz4780_dma_ctrl_writel(jzdma, JZ_DMA_REG_DMAC, dmac);
  
        /* Clear interrupt pending status. */
 -      jz4780_dma_ctrl_writel(jzdma, JZ_DMA_REG_DIRQP, 0);
 +      jz4780_dma_ctrl_writel(jzdma, JZ_DMA_REG_DIRQP, pending);
  
        return IRQ_HANDLED;
  }
@@@ -772,8 -760,6 +771,6 @@@ static bool jz4780_dma_filter_fn(struc
        struct jz4780_dma_dev *jzdma = jz4780_dma_chan_parent(jzchan);
        struct jz4780_dma_filter_data *data = param;
  
-       if (jzdma->dma_device.dev->of_node != data->of_node)
-               return false;
  
        if (data->channel > -1) {
                if (data->channel != jzchan->id)
@@@ -797,7 -783,6 +794,6 @@@ static struct dma_chan *jz4780_of_dma_x
        if (dma_spec->args_count != 2)
                return NULL;
  
-       data.of_node = ofdma->of_node;
        data.transfer_type = dma_spec->args[0];
        data.channel = dma_spec->args[1];
  
                return dma_get_slave_channel(
                        &jzdma->chan[data.channel].vchan.chan);
        } else {
-               return dma_request_channel(mask, jz4780_dma_filter_fn, &data);
+               return __dma_request_channel(&mask, jz4780_dma_filter_fn, &data,
+                                            ofdma->of_node);
        }
  }
  
diff --combined drivers/dma/dmaengine.c
index 58cbf9fd5a46c33c4ab946da34b0b382cb735cf9,7efb9264b7442dd673d6d6d95ac8b618958f8dde..03ac4b96117cd8dbf423998c6fa3059cdb532dfa
@@@ -1,6 -1,18 +1,6 @@@
 +// SPDX-License-Identifier: GPL-2.0-or-later
  /*
   * Copyright(c) 2004 - 2006 Intel Corporation. All rights reserved.
 - *
 - * This program is free software; you can redistribute it and/or modify it
 - * under the terms of the GNU General Public License as published by the Free
 - * Software Foundation; either version 2 of the License, or (at your option)
 - * any later version.
 - *
 - * This program is distributed in the hope that it will be useful, but WITHOUT
 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 - * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 - * more details.
 - *
 - * The full GNU General Public License is included in this distribution in the
 - * file called COPYING.
   */
  
  /*
@@@ -61,7 -73,7 +61,7 @@@ static long dmaengine_ref_count
  /* --- sysfs implementation --- */
  
  /**
-  * dev_to_dma_chan - convert a device pointer to the its sysfs container object
+  * dev_to_dma_chan - convert a device pointer to its sysfs container object
   * @dev - device node
   *
   * Must be called under dma_list_mutex
@@@ -629,11 -641,13 +629,13 @@@ EXPORT_SYMBOL_GPL(dma_get_any_slave_cha
   * @mask: capabilities that the channel must satisfy
   * @fn: optional callback to disposition available channels
   * @fn_param: opaque parameter to pass to dma_filter_fn
+  * @np: device node to look for DMA channels
   *
   * Returns pointer to appropriate DMA channel on success or NULL.
   */
  struct dma_chan *__dma_request_channel(const dma_cap_mask_t *mask,
-                                      dma_filter_fn fn, void *fn_param)
+                                      dma_filter_fn fn, void *fn_param,
+                                      struct device_node *np)
  {
        struct dma_device *device, *_d;
        struct dma_chan *chan = NULL;
        /* Find a channel */
        mutex_lock(&dma_list_mutex);
        list_for_each_entry_safe(device, _d, &dma_device_list, global_node) {
+               /* Finds a DMA controller with matching device node */
+               if (np && device->dev->of_node && np != device->dev->of_node)
+                       continue;
                chan = find_candidate(device, mask, fn, fn_param);
                if (!IS_ERR(chan))
                        break;
@@@ -699,7 -717,7 +705,7 @@@ struct dma_chan *dma_request_chan(struc
                chan = acpi_dma_request_slave_chan_by_name(dev, name);
  
        if (chan) {
-               /* Valid channel found or requester need to be deferred */
+               /* Valid channel found or requester needs to be deferred */
                if (!IS_ERR(chan) || PTR_ERR(chan) == -EPROBE_DEFER)
                        return chan;
        }
@@@ -757,7 -775,7 +763,7 @@@ struct dma_chan *dma_request_chan_by_ma
        if (!mask)
                return ERR_PTR(-ENODEV);
  
-       chan = __dma_request_channel(mask, NULL, NULL);
+       chan = __dma_request_channel(mask, NULL, NULL, NULL);
        if (!chan) {
                mutex_lock(&dma_list_mutex);
                if (list_empty(&dma_device_list))
diff --combined drivers/dma/dmatest.c
index d0ad46e916a6613ef472a5c79da669be2da6184f,e0c229aa13538114d8fb8c99345cb52f87ce6096..3d22ae8dca7203ab797646ed6e972aedeb84a32b
@@@ -1,9 -1,12 +1,9 @@@
 +// SPDX-License-Identifier: GPL-2.0-only
  /*
   * DMA Engine test module
   *
   * Copyright (C) 2007 Atmel Corporation
   * Copyright (C) 2013 Intel Corporation
 - *
 - * This program is free software; you can redistribute it and/or modify
 - * it under the terms of the GNU General Public License version 2 as
 - * published by the Free Software Foundation.
   */
  #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
  
@@@ -62,7 -65,7 +62,7 @@@ MODULE_PARM_DESC(pq_sources
  static int timeout = 3000;
  module_param(timeout, uint, S_IRUGO | S_IWUSR);
  MODULE_PARM_DESC(timeout, "Transfer Timeout in msec (default: 3000), "
-                "Pass -1 for infinite timeout");
+                "Pass 0xFFFFFFFF (4294967295) for maximum timeout");
  
  static bool noverify;
  module_param(noverify, bool, S_IRUGO | S_IWUSR);
@@@ -94,7 -97,7 +94,7 @@@ MODULE_PARM_DESC(transfer_size, "Option
   * @iterations:               iterations before stopping test
   * @xor_sources:      number of xor source buffers
   * @pq_sources:               number of p+q source buffers
-  * @timeout:          transfer timeout in msec, -1 for infinite timeout
+  * @timeout:          transfer timeout in msec, 0 - 0xFFFFFFFF (4294967295)
   */
  struct dmatest_params {
        unsigned int    buf_size;
        unsigned int    iterations;
        unsigned int    xor_sources;
        unsigned int    pq_sources;
-       int             timeout;
+       unsigned int    timeout;
        bool            noverify;
        bool            norandom;
        int             alignment;
diff --combined drivers/dma/fsl-edma.c
index 0ddad3adb761f01755dbab3711f9ee218961ad28,e616425acd5f5d13bc56defcd1f28aa2dac2c7ab..fcbad6ae954a820774f994fbaf1c99d7130df005
@@@ -1,4 -1,3 +1,4 @@@
 +// SPDX-License-Identifier: GPL-2.0-or-later
  /*
   * drivers/dma/fsl-edma.c
   *
@@@ -7,6 -6,11 +7,6 @@@
   * Driver for the Freescale eDMA engine with flexible channel multiplexing
   * capability for DMA request sources. The eDMA block can be found on some
   * Vybrid and Layerscape SoCs.
 - *
 - * This program is free software; you can redistribute  it and/or modify it
 - * under  the terms of  the GNU General  Public License as published by the
 - * Free Software Foundation;  either version 2 of the  License, or (at your
 - * option) any later version.
   */
  
  #include <linux/module.h>
@@@ -92,7 -96,8 +92,8 @@@ static struct dma_chan *fsl_edma_xlate(
        struct fsl_edma_engine *fsl_edma = ofdma->of_dma_data;
        struct dma_chan *chan, *_chan;
        struct fsl_edma_chan *fsl_chan;
-       unsigned long chans_per_mux = fsl_edma->n_chans / DMAMUX_NR;
+       u32 dmamux_nr = fsl_edma->drvdata->dmamuxs;
+       unsigned long chans_per_mux = fsl_edma->n_chans / dmamux_nr;
  
        if (dma_spec->args_count != 2)
                return NULL;
@@@ -180,16 -185,38 +181,38 @@@ static void fsl_disable_clocks(struct f
                clk_disable_unprepare(fsl_edma->muxclk[i]);
  }
  
+ static struct fsl_edma_drvdata vf610_data = {
+       .version = v1,
+       .dmamuxs = DMAMUX_NR,
+       .setup_irq = fsl_edma_irq_init,
+ };
+ static const struct of_device_id fsl_edma_dt_ids[] = {
+       { .compatible = "fsl,vf610-edma", .data = &vf610_data},
+       { /* sentinel */ }
+ };
+ MODULE_DEVICE_TABLE(of, fsl_edma_dt_ids);
  static int fsl_edma_probe(struct platform_device *pdev)
  {
+       const struct of_device_id *of_id =
+                       of_match_device(fsl_edma_dt_ids, &pdev->dev);
        struct device_node *np = pdev->dev.of_node;
        struct fsl_edma_engine *fsl_edma;
+       const struct fsl_edma_drvdata *drvdata = NULL;
        struct fsl_edma_chan *fsl_chan;
        struct edma_regs *regs;
        struct resource *res;
        int len, chans;
        int ret, i;
  
+       if (of_id)
+               drvdata = of_id->data;
+       if (!drvdata) {
+               dev_err(&pdev->dev, "unable to find driver data\n");
+               return -EINVAL;
+       }
        ret = of_property_read_u32(np, "dma-channels", &chans);
        if (ret) {
                dev_err(&pdev->dev, "Can't get dma-channels.\n");
        if (!fsl_edma)
                return -ENOMEM;
  
-       fsl_edma->version = v1;
+       fsl_edma->drvdata = drvdata;
        fsl_edma->n_chans = chans;
        mutex_init(&fsl_edma->fsl_edma_mutex);
  
        fsl_edma_setup_regs(fsl_edma);
        regs = &fsl_edma->regs;
  
-       for (i = 0; i < DMAMUX_NR; i++) {
+       for (i = 0; i < fsl_edma->drvdata->dmamuxs; i++) {
                char clkname[32];
  
                res = platform_get_resource(pdev, IORESOURCE_MEM, 1 + i);
        }
  
        edma_writel(fsl_edma, ~0, regs->intl);
-       ret = fsl_edma_irq_init(pdev, fsl_edma);
+       ret = fsl_edma->drvdata->setup_irq(pdev, fsl_edma);
        if (ret)
                return ret;
  
        if (ret) {
                dev_err(&pdev->dev,
                        "Can't register Freescale eDMA engine. (%d)\n", ret);
-               fsl_disable_clocks(fsl_edma, DMAMUX_NR);
+               fsl_disable_clocks(fsl_edma, fsl_edma->drvdata->dmamuxs);
                return ret;
        }
  
                dev_err(&pdev->dev,
                        "Can't register Freescale eDMA of_dma. (%d)\n", ret);
                dma_async_device_unregister(&fsl_edma->dma_dev);
-               fsl_disable_clocks(fsl_edma, DMAMUX_NR);
+               fsl_disable_clocks(fsl_edma, fsl_edma->drvdata->dmamuxs);
                return ret;
        }
  
@@@ -319,7 -346,7 +342,7 @@@ static int fsl_edma_remove(struct platf
        fsl_edma_cleanup_vchan(&fsl_edma->dma_dev);
        of_dma_controller_free(np);
        dma_async_device_unregister(&fsl_edma->dma_dev);
-       fsl_disable_clocks(fsl_edma, DMAMUX_NR);
+       fsl_disable_clocks(fsl_edma, fsl_edma->drvdata->dmamuxs);
  
        return 0;
  }
@@@ -378,12 -405,6 +401,6 @@@ static const struct dev_pm_ops fsl_edma
        .resume_early   = fsl_edma_resume_early,
  };
  
- static const struct of_device_id fsl_edma_dt_ids[] = {
-       { .compatible = "fsl,vf610-edma", },
-       { /* sentinel */ }
- };
- MODULE_DEVICE_TABLE(of, fsl_edma_dt_ids);
  static struct platform_driver fsl_edma_driver = {
        .driver         = {
                .name   = "fsl-edma",
diff --combined drivers/dma/hsu/hsu.c
index 0c2610066ba9217c7647553501b02008baea9adc,dfabc64c2ab04ef2a1e732c6dba689565e9b4f6e..025d8ad5a63c12c3e04993912b52d6374ca460c0
@@@ -1,4 -1,3 +1,4 @@@
 +// SPDX-License-Identifier: GPL-2.0-only
  /*
   * Core driver for the High Speed UART DMA
   *
@@@ -6,6 -5,10 +6,6 @@@
   * Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
   *
   * Partially based on the bits found in drivers/tty/serial/mfd.c.
 - *
 - * This program is free software; you can redistribute it and/or modify
 - * it under the terms of the GNU General Public License version 2 as
 - * published by the Free Software Foundation.
   */
  
  /*
@@@ -61,10 -64,10 +61,10 @@@ static void hsu_dma_chan_start(struct h
  
        if (hsuc->direction == DMA_MEM_TO_DEV) {
                bsr = config->dst_maxburst;
-               mtsr = config->src_addr_width;
+               mtsr = config->dst_addr_width;
        } else if (hsuc->direction == DMA_DEV_TO_MEM) {
                bsr = config->src_maxburst;
-               mtsr = config->dst_addr_width;
+               mtsr = config->src_addr_width;
        }
  
        hsu_chan_disable(hsuc);
diff --combined drivers/dma/imx-sdma.c
index 4ec84a633bd304b104888d63cc0eadac8d468616,ca296f0849ef60526ee15e1587bf3f08b259e10b..a01f4b5d793c4ed591b6666110b7ed00e5bce8e6
@@@ -703,7 -703,7 +703,7 @@@ static int sdma_load_script(struct sdma
        spin_lock_irqsave(&sdma->channel_0_lock, flags);
  
        bd0->mode.command = C0_SETPM;
 -      bd0->mode.status = BD_DONE | BD_INTR | BD_WRAP | BD_EXTD;
 +      bd0->mode.status = BD_DONE | BD_WRAP | BD_EXTD;
        bd0->mode.count = size / 2;
        bd0->buffer_addr = buf_phys;
        bd0->ext_buffer_addr = address;
@@@ -1025,7 -1025,7 +1025,7 @@@ static int sdma_load_context(struct sdm
        context->gReg[7] = sdmac->watermark_level;
  
        bd0->mode.command = C0_SETDM;
 -      bd0->mode.status = BD_DONE | BD_INTR | BD_WRAP | BD_EXTD;
 +      bd0->mode.status = BD_DONE | BD_WRAP | BD_EXTD;
        bd0->mode.count = sizeof(*context) / 4;
        bd0->buffer_addr = sdma->context_phys;
        bd0->ext_buffer_addr = 2048 + (sizeof(*context) / 4) * channel;
@@@ -1934,16 -1934,11 +1934,11 @@@ disable_clk_ipg
  static bool sdma_filter_fn(struct dma_chan *chan, void *fn_param)
  {
        struct sdma_channel *sdmac = to_sdma_chan(chan);
-       struct sdma_engine *sdma = sdmac->sdma;
        struct imx_dma_data *data = fn_param;
  
        if (!imx_dma_is_general_purpose(chan))
                return false;
  
-       /* return false if it's not the right device */
-       if (sdma->dev->of_node != data->of_node)
-               return false;
        sdmac->data = *data;
        chan->private = &sdmac->data;
  
@@@ -1971,9 -1966,9 +1966,9 @@@ static struct dma_chan *sdma_xlate(stru
         * be set to sdmac->event_id1.
         */
        data.dma_request2 = 0;
-       data.of_node = ofdma->of_node;
  
-       return dma_request_channel(mask, sdma_filter_fn, &data);
+       return __dma_request_channel(&mask, sdma_filter_fn, &data,
+                                    ofdma->of_node);
  }
  
  static int sdma_probe(struct platform_device *pdev)
        if (pdata && pdata->script_addrs)
                sdma_add_scripts(sdma, pdata->script_addrs);
  
 -      if (pdata) {
 -              ret = sdma_get_firmware(sdma, pdata->fw_name);
 -              if (ret)
 -                      dev_warn(&pdev->dev, "failed to get firmware from platform data\n");
 -      } else {
 -              /*
 -               * Because that device tree does not encode ROM script address,
 -               * the RAM script in firmware is mandatory for device tree
 -               * probe, otherwise it fails.
 -               */
 -              ret = of_property_read_string(np, "fsl,sdma-ram-script-name",
 -                                            &fw_name);
 -              if (ret)
 -                      dev_warn(&pdev->dev, "failed to get firmware name\n");
 -              else {
 -                      ret = sdma_get_firmware(sdma, fw_name);
 -                      if (ret)
 -                              dev_warn(&pdev->dev, "failed to get firmware from device tree\n");
 -              }
 -      }
 -
        sdma->dma_device.dev = &pdev->dev;
  
        sdma->dma_device.device_alloc_chan_resources = sdma_alloc_chan_resources;
                of_node_put(spba_bus);
        }
  
 +      /*
 +       * Kick off firmware loading as the very last step:
 +       * attempt to load firmware only if we're not on the error path, because
 +       * the firmware callback requires a fully functional and allocated sdma
 +       * instance.
 +       */
 +      if (pdata) {
 +              ret = sdma_get_firmware(sdma, pdata->fw_name);
 +              if (ret)
 +                      dev_warn(&pdev->dev, "failed to get firmware from platform data\n");
 +      } else {
 +              /*
 +               * Because that device tree does not encode ROM script address,
 +               * the RAM script in firmware is mandatory for device tree
 +               * probe, otherwise it fails.
 +               */
 +              ret = of_property_read_string(np, "fsl,sdma-ram-script-name",
 +                                            &fw_name);
 +              if (ret) {
 +                      dev_warn(&pdev->dev, "failed to get firmware name\n");
 +              } else {
 +                      ret = sdma_get_firmware(sdma, fw_name);
 +                      if (ret)
 +                              dev_warn(&pdev->dev, "failed to get firmware from device tree\n");
 +              }
 +      }
 +
        return 0;
  
  err_register:
index 7411eb3d419e506a47321a98277fe53ad48036a0,ac49eb6c235eae14550b0acf304c841221d3e20c..1ad63ddc292dee4b0c4bb42e28a699e3133441e7
@@@ -1,4 -1,3 +1,4 @@@
 +# SPDX-License-Identifier: GPL-2.0-only
  
  config MTK_HSDMA
        tristate "MediaTek High-Speed DMA controller support"
@@@ -25,3 -24,14 +25,14 @@@ config MTK_CQDM
  
          This controller provides the channels which is dedicated to
          memory-to-memory transfer to offload from CPU.
+ config MTK_UART_APDMA
+       tristate "MediaTek SoCs APDMA support for UART"
+       depends on OF && SERIAL_8250_MT6577
+       select DMA_ENGINE
+       select DMA_VIRTUAL_CHANNELS
+       help
+         Support for the UART DMA engine found on MediaTek MTK SoCs.
+         When SERIAL_8250_MT6577 is enabled, and if you want to use DMA,
+         you can enable the config. The DMA engine can only be used
+         with MediaTek SoCs.
index 13b144594510b2672a0b8d4498e977f37f322b17,61a6d29c8e8c802834f60bf5c12ccc33952c6583..5ba39a5edc130063a46ddf9565ce887d1e09f88f
@@@ -1,3 -1,3 +1,4 @@@
 +# SPDX-License-Identifier: GPL-2.0-only
+ obj-$(CONFIG_MTK_UART_APDMA) += mtk-uart-apdma.o
  obj-$(CONFIG_MTK_HSDMA) += mtk-hsdma.o
  obj-$(CONFIG_MTK_CQDMA) += mtk-cqdma.o
index 730a18d0c6d6ac3b710daf070ce22abb00b974f1,584e096615072cbac6046e3e8024958d0c609358..fea8608a781017b2431fb9ae08319db47d56ae6f
@@@ -1,9 -1,20 +1,9 @@@
 +// SPDX-License-Identifier: GPL-2.0-only
  /*
   * Intel MIC Platform Software Stack (MPSS)
   *
   * Copyright(c) 2014 Intel Corporation.
   *
 - * This program is free software; you can redistribute it and/or modify
 - * it under the terms of the GNU General Public License, version 2, as
 - * published by the Free Software Foundation.
 - *
 - * This program is distributed in the hope that it will be useful, but
 - * WITHOUT ANY WARRANTY; without even the implied warranty of
 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 - * General Public License for more details.
 - *
 - * The full GNU General Public License is included in this distribution in
 - * the file called "COPYING".
 - *
   * Intel MIC X100 DMA Driver.
   *
   * Adapted from IOAT dma driver.
@@@ -717,10 -728,8 +717,8 @@@ static int mic_dma_driver_probe(struct 
        if (mic_dma_dbg) {
                mic_dma_dev->dbg_dir = debugfs_create_dir(dev_name(&mbdev->dev),
                                                          mic_dma_dbg);
-               if (mic_dma_dev->dbg_dir)
-                       debugfs_create_file("mic_dma_reg", 0444,
-                                           mic_dma_dev->dbg_dir, mic_dma_dev,
-                                           &mic_dma_reg_fops);
+               debugfs_create_file("mic_dma_reg", 0444, mic_dma_dev->dbg_dir,
+                                   mic_dma_dev, &mic_dma_reg_fops);
        }
        return 0;
  }
diff --combined drivers/dma/mmp_tdma.c
index bb3ccbf90a318d745fdc167598bf9da8a03475da,e76858b6b33413d8ebd2c02a70cbfa59a8d05f5a..e7d1e12bf4643e3ae9a35e1cd9881a2505a1c34a
@@@ -1,8 -1,12 +1,8 @@@
 +// SPDX-License-Identifier: GPL-2.0-or-later
  /*
   * Driver For Marvell Two-channel DMA Engine
   *
   * Copyright: Marvell International Ltd.
 - *
 - * The code contained herein is licensed under the GNU General Public
 - * License. You may obtain a copy of the GNU General Public License
 - * Version 2 or later at the following locations:
 - *
   */
  
  #include <linux/err.h>
@@@ -582,18 -586,12 +582,12 @@@ static int mmp_tdma_chan_init(struct mm
  }
  
  struct mmp_tdma_filter_param {
-       struct device_node *of_node;
        unsigned int chan_id;
  };
  
  static bool mmp_tdma_filter_fn(struct dma_chan *chan, void *fn_param)
  {
        struct mmp_tdma_filter_param *param = fn_param;
-       struct mmp_tdma_chan *tdmac = to_mmp_tdma_chan(chan);
-       struct dma_device *pdma_device = tdmac->chan.device;
-       if (pdma_device->dev->of_node != param->of_node)
-               return false;
  
        if (chan->chan_id != param->chan_id)
                return false;
@@@ -611,13 -609,13 +605,13 @@@ static struct dma_chan *mmp_tdma_xlate(
        if (dma_spec->args_count != 1)
                return NULL;
  
-       param.of_node = ofdma->of_node;
        param.chan_id = dma_spec->args[0];
  
        if (param.chan_id >= TDMA_CHANNEL_NUM)
                return NULL;
  
-       return dma_request_channel(mask, mmp_tdma_filter_fn, &param);
+       return __dma_request_channel(&mask, mmp_tdma_filter_fn, &param,
+                                    ofdma->of_node);
  }
  
  static const struct of_device_id mmp_tdma_dt_ids[] = {
diff --combined drivers/dma/mxs-dma.c
index 20a9cb7cb6d346bbbe0426c977670772df49a76a,8ce5e790352f2b7ab7766c47b2af5128bcb7a462..3039bba0e4d559836179fe0f71941da428bd563c
@@@ -24,7 -24,6 +24,7 @@@
  #include <linux/of_device.h>
  #include <linux/of_dma.h>
  #include <linux/list.h>
 +#include <linux/dma/mxs-dma.h>
  
  #include <asm/irq.h>
  
@@@ -78,7 -77,6 +78,7 @@@
  #define BM_CCW_COMMAND                (3 << 0)
  #define CCW_CHAIN             (1 << 2)
  #define CCW_IRQ                       (1 << 3)
 +#define CCW_WAIT4RDY          (1 << 5)
  #define CCW_DEC_SEM           (1 << 6)
  #define CCW_WAIT4END          (1 << 7)
  #define CCW_HALT_ON_TERM      (1 << 8)
@@@ -479,16 -477,16 +479,16 @@@ static void mxs_dma_free_chan_resources
   *            ......
   *            ->device_prep_slave_sg(0);
   *            ......
 - *            ->device_prep_slave_sg(DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
 + *            ->device_prep_slave_sg(DMA_CTRL_ACK);
   *            ......
   *    [3] If there are more than two DMA commands in the DMA chain, the code
   *        should be:
   *            ......
   *            ->device_prep_slave_sg(0);                                // First
   *            ......
 - *            ->device_prep_slave_sg(DMA_PREP_INTERRUPT [| DMA_CTRL_ACK]);
 + *            ->device_prep_slave_sg(DMA_CTRL_ACK]);
   *            ......
 - *            ->device_prep_slave_sg(DMA_PREP_INTERRUPT | DMA_CTRL_ACK); // Last
 + *            ->device_prep_slave_sg(DMA_CTRL_ACK); // Last
   *            ......
   */
  static struct dma_async_tx_descriptor *mxs_dma_prep_slave_sg(
        struct scatterlist *sg;
        u32 i, j;
        u32 *pio;
 -      bool append = flags & DMA_PREP_INTERRUPT;
 -      int idx = append ? mxs_chan->desc_count : 0;
 +      int idx = 0;
  
 -      if (mxs_chan->status == DMA_IN_PROGRESS && !append)
 -              return NULL;
 +      if (mxs_chan->status == DMA_IN_PROGRESS)
 +              idx = mxs_chan->desc_count;
  
 -      if (sg_len + (append ? idx : 0) > NUM_CCW) {
 +      if (sg_len + idx > NUM_CCW) {
                dev_err(mxs_dma->dma_device.dev,
                                "maximum number of sg exceeded: %d > %d\n",
                                sg_len, NUM_CCW);
         * If the sg is prepared with append flag set, the sg
         * will be appended to the last prepared sg.
         */
 -      if (append) {
 +      if (idx) {
                BUG_ON(idx < 1);
                ccw = &mxs_chan->ccw[idx - 1];
                ccw->next = mxs_chan->ccw_phys + sizeof(*ccw) * idx;
                ccw->bits = 0;
                ccw->bits |= CCW_IRQ;
                ccw->bits |= CCW_DEC_SEM;
 -              if (flags & DMA_CTRL_ACK)
 +              if (flags & MXS_DMA_CTRL_WAIT4END)
                        ccw->bits |= CCW_WAIT4END;
                ccw->bits |= CCW_HALT_ON_TERM;
                ccw->bits |= CCW_TERM_FLUSH;
                ccw->bits |= BF_CCW(sg_len, PIO_NUM);
                ccw->bits |= BF_CCW(MXS_DMA_CMD_NO_XFER, COMMAND);
 +              if (flags & MXS_DMA_CTRL_WAIT4RDY)
 +                      ccw->bits |= CCW_WAIT4RDY;
        } else {
                for_each_sg(sgl, sg, sg_len, i) {
                        if (sg_dma_len(sg) > MAX_XFER_BYTES) {
                                ccw->bits &= ~CCW_CHAIN;
                                ccw->bits |= CCW_IRQ;
                                ccw->bits |= CCW_DEC_SEM;
 -                              if (flags & DMA_CTRL_ACK)
 +                              if (flags & MXS_DMA_CTRL_WAIT4END)
                                        ccw->bits |= CCW_WAIT4END;
                        }
                }
@@@ -719,7 -716,6 +719,6 @@@ err_out
  }
  
  struct mxs_dma_filter_param {
-       struct device_node *of_node;
        unsigned int chan_id;
  };
  
@@@ -730,9 -726,6 +729,6 @@@ static bool mxs_dma_filter_fn(struct dm
        struct mxs_dma_engine *mxs_dma = mxs_chan->mxs_dma;
        int chan_irq;
  
-       if (mxs_dma->dma_device.dev->of_node != param->of_node)
-               return false;
        if (chan->chan_id != param->chan_id)
                return false;
  
@@@ -755,13 -748,13 +751,13 @@@ static struct dma_chan *mxs_dma_xlate(s
        if (dma_spec->args_count != 1)
                return NULL;
  
-       param.of_node = ofdma->of_node;
        param.chan_id = dma_spec->args[0];
  
        if (param.chan_id >= mxs_dma->nr_channels)
                return NULL;
  
-       return dma_request_channel(mask, mxs_dma_filter_fn, &param);
+       return __dma_request_channel(&mask, mxs_dma_filter_fn, &param,
+                                    ofdma->of_node);
  }
  
  static int __init mxs_dma_probe(struct platform_device *pdev)
diff --combined drivers/dma/of-dma.c
index 1e4d9ef2aea11f33126c45f2cb0d3515a76de065,6b43d04da05d0aa499560204f09689b969d9adf7..c2d779daa4b51ac8d5373a1ccfa8185d3b1f0233
@@@ -1,10 -1,13 +1,10 @@@
 +// SPDX-License-Identifier: GPL-2.0-only
  /*
   * Device tree helpers for DMA request / controller
   *
   * Based on of_gpio.c
   *
   * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
 - *
 - * This program is free software; you can redistribute it and/or modify
 - * it under the terms of the GNU General Public License version 2 as
 - * published by the Free Software Foundation.
   */
  
  #include <linux/device.h>
@@@ -313,8 -316,8 +313,8 @@@ struct dma_chan *of_dma_simple_xlate(st
        if (count != 1)
                return NULL;
  
-       return dma_request_channel(info->dma_cap, info->filter_fn,
-                       &dma_spec->args[0]);
+       return __dma_request_channel(&info->dma_cap, info->filter_fn,
+                                    &dma_spec->args[0], dma_spec->np);
  }
  EXPORT_SYMBOL_GPL(of_dma_simple_xlate);
  
diff --combined drivers/dma/pl330.c
index 56f9fabc99c46e9ae388d6cdc1d697d3d3e9a4ee,5208c6a80a39d07586c5c80f27a1620b1f624a2c..1163af2ba4a36fef2f313dd09236eee4039236de
@@@ -1,10 -1,14 +1,10 @@@
 +// SPDX-License-Identifier: GPL-2.0-or-later
  /*
   * Copyright (c) 2012 Samsung Electronics Co., Ltd.
   *            http://www.samsung.com
   *
   * Copyright (C) 2010 Samsung Electronics Co. Ltd.
   *    Jaswinder Singh <jassi.brar@samsung.com>
 - *
 - * This program is free software; you can redistribute it and/or modify
 - * it under the terms of the GNU General Public License as published by
 - * the Free Software Foundation; either version 2 of the License, or
 - * (at your option) any later version.
   */
  
  #include <linux/debugfs.h>
@@@ -25,6 -29,7 +25,7 @@@
  #include <linux/err.h>
  #include <linux/pm_runtime.h>
  #include <linux/bug.h>
+ #include <linux/reset.h>
  
  #include "dmaengine.h"
  #define PL330_MAX_CHAN                8
@@@ -496,6 -501,9 +497,9 @@@ struct pl330_dmac 
        unsigned int num_peripherals;
        struct dma_pl330_chan *peripherals; /* keep at end */
        int quirks;
+       struct reset_control    *rstc;
+       struct reset_control    *rstc_ocp;
  };
  
  static struct pl330_of_quirks {
@@@ -3024,6 -3032,32 +3028,32 @@@ pl330_probe(struct amba_device *adev, c
  
        amba_set_drvdata(adev, pl330);
  
+       pl330->rstc = devm_reset_control_get_optional(&adev->dev, "dma");
+       if (IS_ERR(pl330->rstc)) {
+               if (PTR_ERR(pl330->rstc) != -EPROBE_DEFER)
+                       dev_err(&adev->dev, "Failed to get reset!\n");
+               return PTR_ERR(pl330->rstc);
+       } else {
+               ret = reset_control_deassert(pl330->rstc);
+               if (ret) {
+                       dev_err(&adev->dev, "Couldn't deassert the device from reset!\n");
+                       return ret;
+               }
+       }
+       pl330->rstc_ocp = devm_reset_control_get_optional(&adev->dev, "dma-ocp");
+       if (IS_ERR(pl330->rstc_ocp)) {
+               if (PTR_ERR(pl330->rstc_ocp) != -EPROBE_DEFER)
+                       dev_err(&adev->dev, "Failed to get OCP reset!\n");
+               return PTR_ERR(pl330->rstc_ocp);
+       } else {
+               ret = reset_control_deassert(pl330->rstc_ocp);
+               if (ret) {
+                       dev_err(&adev->dev, "Couldn't deassert the device from OCP reset!\n");
+                       return ret;
+               }
+       }
        for (i = 0; i < AMBA_NR_IRQS; i++) {
                irq = adev->irq[i];
                if (irq) {
@@@ -3164,6 -3198,11 +3194,11 @@@ probe_err3
  probe_err2:
        pl330_del(pl330);
  
+       if (pl330->rstc_ocp)
+               reset_control_assert(pl330->rstc_ocp);
+       if (pl330->rstc)
+               reset_control_assert(pl330->rstc);
        return ret;
  }
  
@@@ -3202,6 -3241,11 +3237,11 @@@ static int pl330_remove(struct amba_dev
  
        pl330_del(pl330);
  
+       if (pl330->rstc_ocp)
+               reset_control_assert(pl330->rstc_ocp);
+       if (pl330->rstc)
+               reset_control_assert(pl330->rstc);
        return 0;
  }
  
diff --combined drivers/dma/pxa_dma.c
index 468c234cb3bea405568d6909bdda571a86a0bd42,0f698f49ee264a88dc9fb3889ee20ada1441e374..349fb312c8725678a2a1268a4371047dbcb2ed11
@@@ -1,6 -1,9 +1,6 @@@
 +// SPDX-License-Identifier: GPL-2.0-only
  /*
   * Copyright 2015 Robert Jarzmik <robert.jarzmik@free.fr>
 - *
 - * This program is free software; you can redistribute it and/or modify
 - * it under the terms of the GNU General Public License version 2 as
 - * published by the Free Software Foundation.
   */
  
  #include <linux/err.h>
@@@ -129,7 -132,6 +129,6 @@@ struct pxad_device 
        spinlock_t                      phy_lock;       /* Phy association */
  #ifdef CONFIG_DEBUG_FS
        struct dentry                   *dbgfs_root;
-       struct dentry                   *dbgfs_state;
        struct dentry                   **dbgfs_chan;
  #endif
  };
@@@ -323,31 -325,18 +322,18 @@@ static struct dentry *pxad_dbg_alloc_ch
                                             int ch, struct dentry *chandir)
  {
        char chan_name[11];
-       struct dentry *chan, *chan_state = NULL, *chan_descr = NULL;
-       struct dentry *chan_reqs = NULL;
+       struct dentry *chan;
        void *dt;
  
        scnprintf(chan_name, sizeof(chan_name), "%d", ch);
        chan = debugfs_create_dir(chan_name, chandir);
        dt = (void *)&pdev->phys[ch];
  
-       if (chan)
-               chan_state = debugfs_create_file("state", 0400, chan, dt,
-                                                &chan_state_fops);
-       if (chan_state)
-               chan_descr = debugfs_create_file("descriptors", 0400, chan, dt,
-                                                &descriptors_fops);
-       if (chan_descr)
-               chan_reqs = debugfs_create_file("requesters", 0400, chan, dt,
-                                               &requester_chan_fops);
-       if (!chan_reqs)
-               goto err_state;
+       debugfs_create_file("state", 0400, chan, dt, &chan_state_fops);
+       debugfs_create_file("descriptors", 0400, chan, dt, &descriptors_fops);
+       debugfs_create_file("requesters", 0400, chan, dt, &requester_chan_fops);
  
        return chan;
- err_state:
-       debugfs_remove_recursive(chan);
-       return NULL;
  }
  
  static void pxad_init_debugfs(struct pxad_device *pdev)
        int i;
        struct dentry *chandir;
  
-       pdev->dbgfs_root = debugfs_create_dir(dev_name(pdev->slave.dev), NULL);
-       if (IS_ERR(pdev->dbgfs_root) || !pdev->dbgfs_root)
-               goto err_root;
-       pdev->dbgfs_state = debugfs_create_file("state", 0400, pdev->dbgfs_root,
-                                               pdev, &state_fops);
-       if (!pdev->dbgfs_state)
-               goto err_state;
        pdev->dbgfs_chan =
-               kmalloc_array(pdev->nr_chans, sizeof(*pdev->dbgfs_state),
+               kmalloc_array(pdev->nr_chans, sizeof(struct dentry *),
                              GFP_KERNEL);
        if (!pdev->dbgfs_chan)
-               goto err_alloc;
+               return;
+       pdev->dbgfs_root = debugfs_create_dir(dev_name(pdev->slave.dev), NULL);
+       debugfs_create_file("state", 0400, pdev->dbgfs_root, pdev, &state_fops);
  
        chandir = debugfs_create_dir("channels", pdev->dbgfs_root);
-       if (!chandir)
-               goto err_chandir;
  
-       for (i = 0; i < pdev->nr_chans; i++) {
+       for (i = 0; i < pdev->nr_chans; i++)
                pdev->dbgfs_chan[i] = pxad_dbg_alloc_chan(pdev, i, chandir);
-               if (!pdev->dbgfs_chan[i])
-                       goto err_chans;
-       }
-       return;
- err_chans:
- err_chandir:
-       kfree(pdev->dbgfs_chan);
- err_alloc:
- err_state:
-       debugfs_remove_recursive(pdev->dbgfs_root);
- err_root:
-       pr_err("pxad: debugfs is not available\n");
  }
  
  static void pxad_cleanup_debugfs(struct pxad_device *pdev)
diff --combined drivers/dma/qcom/hidma.h
index f337e2789ddcf1534bb22b790b9fa4241996664f,36357d02333ac7ac41613bad55d8c95cee7c8506..f212466744f32f083de453737d22a0aaee39273a
@@@ -1,8 -1,16 +1,8 @@@
 +/* SPDX-License-Identifier: GPL-2.0-only */
  /*
   * Qualcomm Technologies HIDMA data structures
   *
   * Copyright (c) 2014-2016, The Linux Foundation. All rights reserved.
 - *
 - * This program is free software; you can redistribute it and/or modify
 - * it under the terms of the GNU General Public License version 2 and
 - * only version 2 as published by the Free Software Foundation.
 - *
 - * This program is distributed in the hope that it will be useful,
 - * but WITHOUT ANY WARRANTY; without even the implied warranty of
 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 - * GNU General Public License for more details.
   */
  
  #ifndef QCOM_HIDMA_H
@@@ -93,8 -101,6 +93,6 @@@ struct hidma_chan 
         * It is used by the DMA complete notification to
         * locate the descriptor that initiated the transfer.
         */
-       struct dentry                   *debugfs;
-       struct dentry                   *stats;
        struct hidma_dev                *dmadev;
        struct hidma_desc               *running;
  
@@@ -126,7 -132,6 +124,6 @@@ struct hidma_dev 
        struct dma_device               ddev;
  
        struct dentry                   *debugfs;
-       struct dentry                   *stats;
  
        /* sysfs entry for the channel id */
        struct device_attribute         *chid_attrs;
@@@ -158,6 -163,6 +155,6 @@@ irqreturn_t hidma_ll_inthandler(int irq
  irqreturn_t hidma_ll_inthandler_msi(int irq, void *arg, int cause);
  void hidma_cleanup_pending_tre(struct hidma_lldev *llhndl, u8 err_info,
                                u8 err_code);
int hidma_debug_init(struct hidma_dev *dmadev);
void hidma_debug_init(struct hidma_dev *dmadev);
  void hidma_debug_uninit(struct hidma_dev *dmadev);
  #endif
index 75b0691a670d7ae48534ceec69896ad230922008,994f448b64d8c0b229f94ae57dc6c13726d21b38..ce87c7937a0e44e4403d56a58649f8796df7cafd
@@@ -1,8 -1,16 +1,8 @@@
 +// SPDX-License-Identifier: GPL-2.0-only
  /*
   * Qualcomm Technologies HIDMA debug file
   *
   * Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
 - *
 - * This program is free software; you can redistribute it and/or modify
 - * it under the terms of the GNU General Public License version 2 and
 - * only version 2 as published by the Free Software Foundation.
 - *
 - * This program is distributed in the hope that it will be useful,
 - * but WITHOUT ANY WARRANTY; without even the implied warranty of
 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 - * GNU General Public License for more details.
   */
  
  #include <linux/debugfs.h>
@@@ -138,17 -146,13 +138,13 @@@ void hidma_debug_uninit(struct hidma_de
        debugfs_remove_recursive(dmadev->debugfs);
  }
  
int hidma_debug_init(struct hidma_dev *dmadev)
void hidma_debug_init(struct hidma_dev *dmadev)
  {
-       int rc = 0;
        int chidx = 0;
        struct list_head *position = NULL;
+       struct dentry *dir;
  
        dmadev->debugfs = debugfs_create_dir(dev_name(dmadev->ddev.dev), NULL);
-       if (!dmadev->debugfs) {
-               rc = -ENODEV;
-               return rc;
-       }
  
        /* walk through the virtual channel list */
        list_for_each(position, &dmadev->ddev.channels) {
                chan = list_entry(position, struct hidma_chan,
                                  chan.device_node);
                sprintf(chan->dbg_name, "chan%d", chidx);
-               chan->debugfs = debugfs_create_dir(chan->dbg_name,
+               dir = debugfs_create_dir(chan->dbg_name,
                                                   dmadev->debugfs);
-               if (!chan->debugfs) {
-                       rc = -ENOMEM;
-                       goto cleanup;
-               }
-               chan->stats = debugfs_create_file("stats", S_IRUGO,
-                                                 chan->debugfs, chan,
-                                                 &hidma_chan_fops);
-               if (!chan->stats) {
-                       rc = -ENOMEM;
-                       goto cleanup;
-               }
+               debugfs_create_file("stats", S_IRUGO, dir, chan,
+                                   &hidma_chan_fops);
                chidx++;
        }
  
-       dmadev->stats = debugfs_create_file("stats", S_IRUGO,
-                                           dmadev->debugfs, dmadev,
-                                           &hidma_dma_fops);
-       if (!dmadev->stats) {
-               rc = -ENOMEM;
-               goto cleanup;
-       }
-       return 0;
- cleanup:
-       hidma_debug_uninit(dmadev);
-       return rc;
+       debugfs_create_file("stats", S_IRUGO, dmadev->debugfs, dmadev,
+                           &hidma_dma_fops);
  }
diff --combined drivers/dma/stm32-dma.c
index da41bab98f5bbd7b86dbfe7e711f137382b22386,67fdd02f98450600d4f59d6f8e635ba497456a54..ef4d109e718900178f5b7f1bbacd53d5feaa142d
@@@ -1,4 -1,3 +1,4 @@@
 +// SPDX-License-Identifier: GPL-2.0-only
  /*
   * Driver for STM32 DMA controller
   *
@@@ -7,6 -6,8 +7,6 @@@
   * Copyright (C) M'boumba Cedric Madianga 2015
   * Author: M'boumba Cedric Madianga <cedric.madianga@gmail.com>
   *         Pierre-Yves Mordret <pierre-yves.mordret@st.com>
 - *
 - * License terms:  GNU General Public License (GPL), version 2
   */
  
  #include <linux/clk.h>
@@@ -1365,7 -1366,6 +1365,6 @@@ static int stm32_dma_probe(struct platf
  
        for (i = 0; i < STM32_DMA_MAX_CHANNELS; i++) {
                chan = &dmadev->chan[i];
-               chan->irq = platform_get_irq(pdev, i);
                ret = platform_get_irq(pdev, i);
                if (ret < 0)  {
                        if (ret != -EPROBE_DEFER)
index 715aad7a91928f4afc48d53c67d13365e3f38be7,63af24d4c8342f584b8652b47b0e7ac9bd514fee..b552949da14b20a3755e540bcc637dcaf661a75e
@@@ -1,13 -1,24 +1,13 @@@
 +// SPDX-License-Identifier: GPL-2.0-only
  /*
   *
   * Copyright (C) STMicroelectronics SA 2017
   * Author(s): M'boumba Cedric Madianga <cedric.madianga@gmail.com>
   *            Pierre-Yves Mordret <pierre-yves.mordret@st.com>
   *
 - * License terms: GPL V2.0.
 - *
 - * This program is free software; you can redistribute it and/or modify it
 - * under the terms of the GNU General Public License version 2 as published by
 - * the Free Software Foundation.
 - *
 - * This program is distributed in the hope that it will be useful, but
 - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 - * details.
 - *
   * DMA Router driver for STM32 DMA MUX
   *
   * Based on TI DMA Crossbar driver
 - *
   */
  
  #include <linux/clk.h>
@@@ -295,8 -306,7 +295,7 @@@ static int stm32_dmamux_probe(struct pl
  #ifdef CONFIG_PM
  static int stm32_dmamux_runtime_suspend(struct device *dev)
  {
-       struct platform_device *pdev =
-               container_of(dev, struct platform_device, dev);
+       struct platform_device *pdev = to_platform_device(dev);
        struct stm32_dmamux_data *stm32_dmamux = platform_get_drvdata(pdev);
  
        clk_disable_unprepare(stm32_dmamux->clk);
  
  static int stm32_dmamux_runtime_resume(struct device *dev)
  {
-       struct platform_device *pdev =
-               container_of(dev, struct platform_device, dev);
+       struct platform_device *pdev = to_platform_device(dev);
        struct stm32_dmamux_data *stm32_dmamux = platform_get_drvdata(pdev);
        int ret;
  
diff --combined drivers/dma/sun6i-dma.c
index e8fcc69b1de964be21f534f06f125d4540ed12fa,ddef87ebdfdb9ccd695059890cb9633553f27813..ed5b68dcfe50c8bb9c6da0fbca820528d34f93dd
@@@ -1,10 -1,14 +1,10 @@@
 +// SPDX-License-Identifier: GPL-2.0-or-later
  /*
   * Copyright (C) 2013-2014 Allwinner Tech Co., Ltd
   * Author: Sugar <shuge@allwinnertech.com>
   *
   * Copyright (C) 2014 Maxime Ripard
   * Maxime Ripard <maxime.ripard@free-electrons.com>
 - *
 - * This program is free software; you can redistribute it and/or modify
 - * it under the terms of the GNU General Public License as published by
 - * the Free Software Foundation; either version 2 of the License, or
 - * (at your option) any later version.
   */
  
  #include <linux/clk.h>
  #define DMA_CHAN_LLI_ADDR     0x08
  
  #define DMA_CHAN_CUR_CFG      0x0c
- #define DMA_CHAN_MAX_DRQ              0x1f
- #define DMA_CHAN_CFG_SRC_DRQ(x)               ((x) & DMA_CHAN_MAX_DRQ)
- #define DMA_CHAN_CFG_SRC_IO_MODE      BIT(5)
- #define DMA_CHAN_CFG_SRC_LINEAR_MODE  (0 << 5)
+ #define DMA_CHAN_MAX_DRQ_A31          0x1f
+ #define DMA_CHAN_MAX_DRQ_H6           0x3f
+ #define DMA_CHAN_CFG_SRC_DRQ_A31(x)   ((x) & DMA_CHAN_MAX_DRQ_A31)
+ #define DMA_CHAN_CFG_SRC_DRQ_H6(x)    ((x) & DMA_CHAN_MAX_DRQ_H6)
+ #define DMA_CHAN_CFG_SRC_MODE_A31(x)  (((x) & 0x1) << 5)
+ #define DMA_CHAN_CFG_SRC_MODE_H6(x)   (((x) & 0x1) << 8)
  #define DMA_CHAN_CFG_SRC_BURST_A31(x) (((x) & 0x3) << 7)
  #define DMA_CHAN_CFG_SRC_BURST_H3(x)  (((x) & 0x3) << 6)
  #define DMA_CHAN_CFG_SRC_WIDTH(x)     (((x) & 0x3) << 9)
  
- #define DMA_CHAN_CFG_DST_DRQ(x)               (DMA_CHAN_CFG_SRC_DRQ(x) << 16)
- #define DMA_CHAN_CFG_DST_IO_MODE      (DMA_CHAN_CFG_SRC_IO_MODE << 16)
- #define DMA_CHAN_CFG_DST_LINEAR_MODE  (DMA_CHAN_CFG_SRC_LINEAR_MODE << 16)
+ #define DMA_CHAN_CFG_DST_DRQ_A31(x)   (DMA_CHAN_CFG_SRC_DRQ_A31(x) << 16)
+ #define DMA_CHAN_CFG_DST_DRQ_H6(x)    (DMA_CHAN_CFG_SRC_DRQ_H6(x) << 16)
+ #define DMA_CHAN_CFG_DST_MODE_A31(x)  (DMA_CHAN_CFG_SRC_MODE_A31(x) << 16)
+ #define DMA_CHAN_CFG_DST_MODE_H6(x)   (DMA_CHAN_CFG_SRC_MODE_H6(x) << 16)
  #define DMA_CHAN_CFG_DST_BURST_A31(x) (DMA_CHAN_CFG_SRC_BURST_A31(x) << 16)
  #define DMA_CHAN_CFG_DST_BURST_H3(x)  (DMA_CHAN_CFG_SRC_BURST_H3(x) << 16)
  #define DMA_CHAN_CFG_DST_WIDTH(x)     (DMA_CHAN_CFG_SRC_WIDTH(x) << 16)
  #define LLI_LAST_ITEM 0xfffff800
  #define NORMAL_WAIT   8
  #define DRQ_SDRAM     1
+ #define LINEAR_MODE     0
+ #define IO_MODE         1
  
  /* forward declaration */
  struct sun6i_dma_dev;
@@@ -121,10 -130,13 +126,13 @@@ struct sun6i_dma_config 
         */
        void (*clock_autogate_enable)(struct sun6i_dma_dev *);
        void (*set_burst_length)(u32 *p_cfg, s8 src_burst, s8 dst_burst);
+       void (*set_drq)(u32 *p_cfg, s8 src_drq, s8 dst_drq);
+       void (*set_mode)(u32 *p_cfg, s8 src_mode, s8 dst_mode);
        u32 src_burst_lengths;
        u32 dst_burst_lengths;
        u32 src_addr_widths;
        u32 dst_addr_widths;
+       bool has_mbus_clk;
  };
  
  /*
@@@ -178,6 -190,7 +186,7 @@@ struct sun6i_dma_dev 
        struct dma_device       slave;
        void __iomem            *base;
        struct clk              *clk;
+       struct clk              *clk_mbus;
        int                     irq;
        spinlock_t              lock;
        struct reset_control    *rstc;
@@@ -305,6 -318,30 +314,30 @@@ static void sun6i_set_burst_length_h3(u
                  DMA_CHAN_CFG_DST_BURST_H3(dst_burst);
  }
  
+ static void sun6i_set_drq_a31(u32 *p_cfg, s8 src_drq, s8 dst_drq)
+ {
+       *p_cfg |= DMA_CHAN_CFG_SRC_DRQ_A31(src_drq) |
+                 DMA_CHAN_CFG_DST_DRQ_A31(dst_drq);
+ }
+ static void sun6i_set_drq_h6(u32 *p_cfg, s8 src_drq, s8 dst_drq)
+ {
+       *p_cfg |= DMA_CHAN_CFG_SRC_DRQ_H6(src_drq) |
+                 DMA_CHAN_CFG_DST_DRQ_H6(dst_drq);
+ }
+ static void sun6i_set_mode_a31(u32 *p_cfg, s8 src_mode, s8 dst_mode)
+ {
+       *p_cfg |= DMA_CHAN_CFG_SRC_MODE_A31(src_mode) |
+                 DMA_CHAN_CFG_DST_MODE_A31(dst_mode);
+ }
+ static void sun6i_set_mode_h6(u32 *p_cfg, s8 src_mode, s8 dst_mode)
+ {
+       *p_cfg |= DMA_CHAN_CFG_SRC_MODE_H6(src_mode) |
+                 DMA_CHAN_CFG_DST_MODE_H6(dst_mode);
+ }
  static size_t sun6i_get_chan_size(struct sun6i_pchan *pchan)
  {
        struct sun6i_desc *txd = pchan->desc;
@@@ -628,14 -665,12 +661,12 @@@ static struct dma_async_tx_descriptor *
  
        burst = convert_burst(8);
        width = convert_buswidth(DMA_SLAVE_BUSWIDTH_4_BYTES);
-       v_lli->cfg = DMA_CHAN_CFG_SRC_DRQ(DRQ_SDRAM) |
-               DMA_CHAN_CFG_DST_DRQ(DRQ_SDRAM) |
-               DMA_CHAN_CFG_DST_LINEAR_MODE |
-               DMA_CHAN_CFG_SRC_LINEAR_MODE |
-               DMA_CHAN_CFG_SRC_WIDTH(width) |
+       v_lli->cfg = DMA_CHAN_CFG_SRC_WIDTH(width) |
                DMA_CHAN_CFG_DST_WIDTH(width);
  
        sdev->cfg->set_burst_length(&v_lli->cfg, burst, burst);
+       sdev->cfg->set_drq(&v_lli->cfg, DRQ_SDRAM, DRQ_SDRAM);
+       sdev->cfg->set_mode(&v_lli->cfg, LINEAR_MODE, LINEAR_MODE);
  
        sun6i_dma_lli_add(NULL, v_lli, p_lli, txd);
  
@@@ -687,11 -722,9 +718,9 @@@ static struct dma_async_tx_descriptor *
                if (dir == DMA_MEM_TO_DEV) {
                        v_lli->src = sg_dma_address(sg);
                        v_lli->dst = sconfig->dst_addr;
-                       v_lli->cfg = lli_cfg |
-                               DMA_CHAN_CFG_DST_IO_MODE |
-                               DMA_CHAN_CFG_SRC_LINEAR_MODE |
-                               DMA_CHAN_CFG_SRC_DRQ(DRQ_SDRAM) |
-                               DMA_CHAN_CFG_DST_DRQ(vchan->port);
+                       v_lli->cfg = lli_cfg;
+                       sdev->cfg->set_drq(&v_lli->cfg, DRQ_SDRAM, vchan->port);
+                       sdev->cfg->set_mode(&v_lli->cfg, LINEAR_MODE, IO_MODE);
  
                        dev_dbg(chan2dev(chan),
                                "%s; chan: %d, dest: %pad, src: %pad, len: %u. flags: 0x%08lx\n",
                } else {
                        v_lli->src = sconfig->src_addr;
                        v_lli->dst = sg_dma_address(sg);
-                       v_lli->cfg = lli_cfg |
-                               DMA_CHAN_CFG_DST_LINEAR_MODE |
-                               DMA_CHAN_CFG_SRC_IO_MODE |
-                               DMA_CHAN_CFG_DST_DRQ(DRQ_SDRAM) |
-                               DMA_CHAN_CFG_SRC_DRQ(vchan->port);
+                       v_lli->cfg = lli_cfg;
+                       sdev->cfg->set_drq(&v_lli->cfg, vchan->port, DRQ_SDRAM);
+                       sdev->cfg->set_mode(&v_lli->cfg, IO_MODE, LINEAR_MODE);
  
                        dev_dbg(chan2dev(chan),
                                "%s; chan: %d, dest: %pad, src: %pad, len: %u. flags: 0x%08lx\n",
@@@ -772,19 -803,15 +799,15 @@@ static struct dma_async_tx_descriptor *
                if (dir == DMA_MEM_TO_DEV) {
                        v_lli->src = buf_addr + period_len * i;
                        v_lli->dst = sconfig->dst_addr;
-                       v_lli->cfg = lli_cfg |
-                               DMA_CHAN_CFG_DST_IO_MODE |
-                               DMA_CHAN_CFG_SRC_LINEAR_MODE |
-                               DMA_CHAN_CFG_SRC_DRQ(DRQ_SDRAM) |
-                               DMA_CHAN_CFG_DST_DRQ(vchan->port);
+                       v_lli->cfg = lli_cfg;
+                       sdev->cfg->set_drq(&v_lli->cfg, DRQ_SDRAM, vchan->port);
+                       sdev->cfg->set_mode(&v_lli->cfg, LINEAR_MODE, IO_MODE);
                } else {
                        v_lli->src = sconfig->src_addr;
                        v_lli->dst = buf_addr + period_len * i;
-                       v_lli->cfg = lli_cfg |
-                               DMA_CHAN_CFG_DST_LINEAR_MODE |
-                               DMA_CHAN_CFG_SRC_IO_MODE |
-                               DMA_CHAN_CFG_DST_DRQ(DRQ_SDRAM) |
-                               DMA_CHAN_CFG_SRC_DRQ(vchan->port);
+                       v_lli->cfg = lli_cfg;
+                       sdev->cfg->set_drq(&v_lli->cfg, vchan->port, DRQ_SDRAM);
+                       sdev->cfg->set_mode(&v_lli->cfg, IO_MODE, LINEAR_MODE);
                }
  
                prev = sun6i_dma_lli_add(prev, v_lli, p_lli, txd);
@@@ -1049,6 -1076,8 +1072,8 @@@ static struct sun6i_dma_config sun6i_a3
        .nr_max_requests = 30,
        .nr_max_vchans   = 53,
        .set_burst_length = sun6i_set_burst_length_a31,
+       .set_drq          = sun6i_set_drq_a31,
+       .set_mode         = sun6i_set_mode_a31,
        .src_burst_lengths = BIT(1) | BIT(8),
        .dst_burst_lengths = BIT(1) | BIT(8),
        .src_addr_widths   = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) |
@@@ -1070,6 -1099,8 +1095,8 @@@ static struct sun6i_dma_config sun8i_a2
        .nr_max_vchans   = 37,
        .clock_autogate_enable = sun6i_enable_clock_autogate_a23,
        .set_burst_length = sun6i_set_burst_length_a31,
+       .set_drq          = sun6i_set_drq_a31,
+       .set_mode         = sun6i_set_mode_a31,
        .src_burst_lengths = BIT(1) | BIT(8),
        .dst_burst_lengths = BIT(1) | BIT(8),
        .src_addr_widths   = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) |
@@@ -1086,6 -1117,8 +1113,8 @@@ static struct sun6i_dma_config sun8i_a8
        .nr_max_vchans   = 39,
        .clock_autogate_enable = sun6i_enable_clock_autogate_a23,
        .set_burst_length = sun6i_set_burst_length_a31,
+       .set_drq          = sun6i_set_drq_a31,
+       .set_mode         = sun6i_set_mode_a31,
        .src_burst_lengths = BIT(1) | BIT(8),
        .dst_burst_lengths = BIT(1) | BIT(8),
        .src_addr_widths   = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) |
@@@ -1109,6 -1142,8 +1138,8 @@@ static struct sun6i_dma_config sun8i_h3
        .nr_max_vchans   = 34,
        .clock_autogate_enable = sun6i_enable_clock_autogate_h3,
        .set_burst_length = sun6i_set_burst_length_h3,
+       .set_drq          = sun6i_set_drq_a31,
+       .set_mode         = sun6i_set_mode_a31,
        .src_burst_lengths = BIT(1) | BIT(4) | BIT(8) | BIT(16),
        .dst_burst_lengths = BIT(1) | BIT(4) | BIT(8) | BIT(16),
        .src_addr_widths   = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) |
  static struct sun6i_dma_config sun50i_a64_dma_cfg = {
        .clock_autogate_enable = sun6i_enable_clock_autogate_h3,
        .set_burst_length = sun6i_set_burst_length_h3,
+       .set_drq          = sun6i_set_drq_a31,
+       .set_mode         = sun6i_set_mode_a31,
        .src_burst_lengths = BIT(1) | BIT(4) | BIT(8) | BIT(16),
        .dst_burst_lengths = BIT(1) | BIT(4) | BIT(8) | BIT(16),
        .src_addr_widths   = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) |
                             BIT(DMA_SLAVE_BUSWIDTH_8_BYTES),
  };
  
+ /*
+  * The H6 binding uses the number of dma channels from the
+  * device tree node.
+  */
+ static struct sun6i_dma_config sun50i_h6_dma_cfg = {
+       .clock_autogate_enable = sun6i_enable_clock_autogate_h3,
+       .set_burst_length = sun6i_set_burst_length_h3,
+       .set_drq          = sun6i_set_drq_h6,
+       .set_mode         = sun6i_set_mode_h6,
+       .src_burst_lengths = BIT(1) | BIT(4) | BIT(8) | BIT(16),
+       .dst_burst_lengths = BIT(1) | BIT(4) | BIT(8) | BIT(16),
+       .src_addr_widths   = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) |
+                            BIT(DMA_SLAVE_BUSWIDTH_2_BYTES) |
+                            BIT(DMA_SLAVE_BUSWIDTH_4_BYTES) |
+                            BIT(DMA_SLAVE_BUSWIDTH_8_BYTES),
+       .dst_addr_widths   = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) |
+                            BIT(DMA_SLAVE_BUSWIDTH_2_BYTES) |
+                            BIT(DMA_SLAVE_BUSWIDTH_4_BYTES) |
+                            BIT(DMA_SLAVE_BUSWIDTH_8_BYTES),
+       .has_mbus_clk = true,
+ };
  /*
   * The V3s have only 8 physical channels, a maximum DRQ port id of 23,
   * and a total of 24 usable source and destination endpoints.
@@@ -1151,6 -1210,8 +1206,8 @@@ static struct sun6i_dma_config sun8i_v3
        .nr_max_vchans   = 24,
        .clock_autogate_enable = sun6i_enable_clock_autogate_a23,
        .set_burst_length = sun6i_set_burst_length_a31,
+       .set_drq          = sun6i_set_drq_a31,
+       .set_mode         = sun6i_set_mode_a31,
        .src_burst_lengths = BIT(1) | BIT(8),
        .dst_burst_lengths = BIT(1) | BIT(8),
        .src_addr_widths   = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) |
@@@ -1168,6 -1229,7 +1225,7 @@@ static const struct of_device_id sun6i_
        { .compatible = "allwinner,sun8i-h3-dma", .data = &sun8i_h3_dma_cfg },
        { .compatible = "allwinner,sun8i-v3s-dma", .data = &sun8i_v3s_dma_cfg },
        { .compatible = "allwinner,sun50i-a64-dma", .data = &sun50i_a64_dma_cfg },
+       { .compatible = "allwinner,sun50i-h6-dma", .data = &sun50i_h6_dma_cfg },
        { /* sentinel */ }
  };
  MODULE_DEVICE_TABLE(of, sun6i_dma_match);
@@@ -1204,6 -1266,14 +1262,14 @@@ static int sun6i_dma_probe(struct platf
                return PTR_ERR(sdc->clk);
        }
  
+       if (sdc->cfg->has_mbus_clk) {
+               sdc->clk_mbus = devm_clk_get(&pdev->dev, "mbus");
+               if (IS_ERR(sdc->clk_mbus)) {
+                       dev_err(&pdev->dev, "No mbus clock specified\n");
+                       return PTR_ERR(sdc->clk_mbus);
+               }
+       }
        sdc->rstc = devm_reset_control_get(&pdev->dev, NULL);
        if (IS_ERR(sdc->rstc)) {
                dev_err(&pdev->dev, "No reset controller specified\n");
        ret = of_property_read_u32(np, "dma-requests", &sdc->max_request);
        if (ret && !sdc->max_request) {
                dev_info(&pdev->dev, "Missing dma-requests, using %u.\n",
-                        DMA_CHAN_MAX_DRQ);
-               sdc->max_request = DMA_CHAN_MAX_DRQ;
+                        DMA_CHAN_MAX_DRQ_A31);
+               sdc->max_request = DMA_CHAN_MAX_DRQ_A31;
        }
  
        /*
                goto err_reset_assert;
        }
  
+       if (sdc->cfg->has_mbus_clk) {
+               ret = clk_prepare_enable(sdc->clk_mbus);
+               if (ret) {
+                       dev_err(&pdev->dev, "Couldn't enable mbus clock\n");
+                       goto err_clk_disable;
+               }
+       }
        ret = devm_request_irq(&pdev->dev, sdc->irq, sun6i_dma_interrupt, 0,
                               dev_name(&pdev->dev), sdc);
        if (ret) {
                dev_err(&pdev->dev, "Cannot request IRQ\n");
-               goto err_clk_disable;
+               goto err_mbus_clk_disable;
        }
  
        ret = dma_async_device_register(&sdc->slave);
@@@ -1337,6 -1415,8 +1411,8 @@@ err_dma_unregister
        dma_async_device_unregister(&sdc->slave);
  err_irq_disable:
        sun6i_kill_tasklet(sdc);
+ err_mbus_clk_disable:
+       clk_disable_unprepare(sdc->clk_mbus);
  err_clk_disable:
        clk_disable_unprepare(sdc->clk);
  err_reset_assert:
@@@ -1355,6 -1435,7 +1431,7 @@@ static int sun6i_dma_remove(struct plat
  
        sun6i_kill_tasklet(sdc);
  
+       clk_disable_unprepare(sdc->clk_mbus);
        clk_disable_unprepare(sdc->clk);
        reset_control_assert(sdc->rstc);
  
index ef317c90fbe1ed813845a3788dad3e5a1d5ae96f,2c84a660ba3643e48890412f23fc8ffc81ea538e..79e9593815f1217eb5d1887ba144c856834f51a6
@@@ -1,8 -1,19 +1,8 @@@
 +// SPDX-License-Identifier: GPL-2.0-only
  /*
   * DMA driver for Nvidia's Tegra20 APB DMA controller.
   *
   * Copyright (c) 2012-2013, NVIDIA CORPORATION.  All rights reserved.
 - *
 - * This program is free software; you can redistribute it and/or modify it
 - * under the terms and conditions of the GNU General Public License,
 - * version 2, as published by the Free Software Foundation.
 - *
 - * This program is distributed in the hope it will be useful, but WITHOUT
 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 - * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 - * more details.
 - *
 - * You should have received a copy of the GNU General Public License
 - * along with this program.  If not, see <http://www.gnu.org/licenses/>.
   */
  
  #include <linux/bitops.h>
@@@ -977,8 -988,12 +977,12 @@@ static struct dma_async_tx_descriptor *
                csr |= tdc->slave_id << TEGRA_APBDMA_CSR_REQ_SEL_SHIFT;
        }
  
-       if (flags & DMA_PREP_INTERRUPT)
+       if (flags & DMA_PREP_INTERRUPT) {
                csr |= TEGRA_APBDMA_CSR_IE_EOC;
+       } else {
+               WARN_ON_ONCE(1);
+               return NULL;
+       }
  
        apb_seq |= TEGRA_APBDMA_APBSEQ_WRAP_WORD_1;
  
@@@ -1120,8 -1135,12 +1124,12 @@@ static struct dma_async_tx_descriptor *
                csr |= tdc->slave_id << TEGRA_APBDMA_CSR_REQ_SEL_SHIFT;
        }
  
-       if (flags & DMA_PREP_INTERRUPT)
+       if (flags & DMA_PREP_INTERRUPT) {
                csr |= TEGRA_APBDMA_CSR_IE_EOC;
+       } else {
+               WARN_ON_ONCE(1);
+               return NULL;
+       }
  
        apb_seq |= TEGRA_APBDMA_APBSEQ_WRAP_WORD_1;
  
diff --combined drivers/dma/virt-dma.c
index bb5390847257cc651eb4c1be62e1522c404e3ee0,bf560a20c8a8d62e83a5bb17138eb014336378cc..ec4adf4260a098488fff4471e82c2f1a89b90c54
@@@ -1,8 -1,11 +1,8 @@@
 +// SPDX-License-Identifier: GPL-2.0-only
  /*
   * Virtual DMA channel support for DMAengine
   *
   * Copyright (C) 2012 Russell King
 - *
 - * This program is free software; you can redistribute it and/or modify
 - * it under the terms of the GNU General Public License version 2 as
 - * published by the Free Software Foundation.
   */
  #include <linux/device.h>
  #include <linux/dmaengine.h>
@@@ -98,7 -101,7 +98,7 @@@ static void vchan_complete(unsigned lon
        }
        spin_unlock_irq(&vc->lock);
  
-       dmaengine_desc_callback_invoke(&cb, NULL);
+       dmaengine_desc_callback_invoke(&cb, &vd->tx_result);
  
        list_for_each_entry_safe(vd, _vd, &head, node) {
                dmaengine_desc_get_callback(&vd->tx, &cb);
                list_del(&vd->node);
                vchan_vdesc_fini(vd);
  
-               dmaengine_desc_callback_invoke(&cb, NULL);
+               dmaengine_desc_callback_invoke(&cb, &vd->tx_result);
        }
  }
  
diff --combined drivers/dma/virt-dma.h
index 23342ca23d4a97135273394f666e4531d65fd56a,eb767c583b7e4ec0d7e69158f6eee4656e0a46c2..ab158bac03a7c81ae24cf8aaca5a599b3b223177
@@@ -1,8 -1,11 +1,8 @@@
 +/* SPDX-License-Identifier: GPL-2.0-only */
  /*
   * Virtual DMA channel support for DMAengine
   *
   * Copyright (C) 2012 Russell King
 - *
 - * This program is free software; you can redistribute it and/or modify
 - * it under the terms of the GNU General Public License version 2 as
 - * published by the Free Software Foundation.
   */
  #ifndef VIRT_DMA_H
  #define VIRT_DMA_H
@@@ -14,6 -17,7 +14,7 @@@
  
  struct virt_dma_desc {
        struct dma_async_tx_descriptor tx;
+       struct dmaengine_result tx_result;
        /* protected by vc.lock */
        struct list_head node;
  };
@@@ -62,6 -66,9 +63,9 @@@ static inline struct dma_async_tx_descr
        vd->tx.tx_submit = vchan_tx_submit;
        vd->tx.desc_free = vchan_tx_desc_free;
  
+       vd->tx_result.result = DMA_TRANS_NOERROR;
+       vd->tx_result.residue = 0;
        spin_lock_irqsave(&vc->lock, flags);
        list_add_tail(&vd->node, &vc->desc_allocated);
        spin_unlock_irqrestore(&vc->lock, flags);
index 36c092349b5b7b45822b274708518fa9cdaad19b,34564224e6757d4f42e08837992eff926fbe14dd..e7dc3c4dc8e077d855410055539a2b88a16d9bfb
@@@ -1,4 -1,3 +1,4 @@@
 +// SPDX-License-Identifier: GPL-2.0-or-later
  /*
   * DMA driver for Xilinx Video DMA Engine
   *
   * The AXI CDMA, is a soft IP, which provides high-bandwidth Direct Memory
   * Access (DMA) between a memory-mapped source address and a memory-mapped
   * destination address.
 - *
 - * This program is free software: you can redistribute it and/or modify
 - * it under the terms of the GNU General Public License as published by
 - * the Free Software Foundation, either version 2 of the License, or
 - * (at your option) any later version.
   */
  
  #include <linux/bitops.h>
@@@ -1095,7 -1099,7 +1095,7 @@@ static void xilinx_dma_start(struct xil
  static void xilinx_vdma_start_transfer(struct xilinx_dma_chan *chan)
  {
        struct xilinx_vdma_config *config = &chan->config;
-       struct xilinx_dma_tx_descriptor *desc, *tail_desc;
+       struct xilinx_dma_tx_descriptor *desc;
        u32 reg, j;
        struct xilinx_vdma_tx_segment *segment, *last = NULL;
        int i = 0;
  
        desc = list_first_entry(&chan->pending_list,
                                struct xilinx_dma_tx_descriptor, node);
-       tail_desc = list_last_entry(&chan->pending_list,
-                                   struct xilinx_dma_tx_descriptor, node);
  
        /* Configure the hardware using info in the config structure */
        if (chan->has_vflip) {
index 6765f10837acb8de119a4e9c1bd18ed8e1bea01a,1f531c1b4f74596107ce26896808774cb94e9638..6e208a060a585d2926a97fad210f5acac7baa24d
@@@ -1,9 -1,20 +1,9 @@@
 +// SPDX-License-Identifier: GPL-2.0-only
  /**
   * Host side test driver to test endpoint functionality
   *
   * Copyright (C) 2017 Texas Instruments
   * Author: Kishon Vijay Abraham I <kishon@ti.com>
 - *
 - * This program is free software: you can redistribute it and/or modify
 - * it under the terms of the GNU General Public License version 2 of
 - * the License as published by the Free Software Foundation.
 - *
 - * This program is distributed in the hope that it will be useful,
 - * but WITHOUT ANY WARRANTY; without even the implied warranty of
 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 - * GNU General Public License for more details.
 - *
 - * You should have received a copy of the GNU General Public License
 - * along with this program.  If not, see <http://www.gnu.org/licenses/>.
   */
  
  #include <linux/crc32.h>
@@@ -793,7 -804,7 +793,7 @@@ static const struct pci_device_id pci_e
        { PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_DRA74x) },
        { PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_DRA72x) },
        { PCI_DEVICE(PCI_VENDOR_ID_FREESCALE, 0x81c0) },
-       { PCI_DEVICE(PCI_VENDOR_ID_SYNOPSYS, 0xedda) },
+       { PCI_DEVICE_DATA(SYNOPSYS, EDDA, NULL) },
        { PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_AM654),
          .driver_data = (kernel_ulong_t)&am654_data
        },
index 4bb16e9bc29781f297a77b8b1b1f5387fe8941d4,f40a06f8423ffc10dfbf79605aaf1f5bf49feb80..d4aef9c4a94cd11cefc2a0aaf6045dd3ffb2fbc8
@@@ -1,7 -1,18 +1,7 @@@
 +// SPDX-License-Identifier: GPL-2.0-only
  /*
   * Copyright (c) 2013-2014, NVIDIA CORPORATION.  All rights reserved.
   *
 - * This program is free software; you can redistribute it and/or modify it
 - * under the terms and conditions of the GNU General Public License,
 - * version 2, as published by the Free Software Foundation.
 - *
 - * This program is distributed in the hope it will be useful, but WITHOUT
 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 - * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 - * more details.
 - *
 - * You should have received a copy of the GNU General Public License
 - * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 - *
   * Based on drivers/misc/eeprom/sunxi_sid.c
   */
  
@@@ -99,7 -110,7 +99,7 @@@ static int tegra20_fuse_probe(struct te
        dma_cap_zero(mask);
        dma_cap_set(DMA_SLAVE, mask);
  
-       fuse->apbdma.chan = __dma_request_channel(&mask, dma_filter, NULL);
+       fuse->apbdma.chan = dma_request_channel(mask, dma_filter, NULL);
        if (!fuse->apbdma.chan)
                return -EPROBE_DEFER;
  
index c952f987ee573552c46c067450accdd7afa6d383,504085b2bf2181822ee75942750bcdd6f65018f2..8fcdee1c0cf9559fc99671bdfb64782acd08619f
@@@ -1,6 -1,18 +1,6 @@@
 +/* SPDX-License-Identifier: GPL-2.0-or-later */
  /*
   * Copyright(c) 2004 - 2006 Intel Corporation. All rights reserved.
 - *
 - * This program is free software; you can redistribute it and/or modify it
 - * under the terms of the GNU General Public License as published by the Free
 - * Software Foundation; either version 2 of the License, or (at your option)
 - * any later version.
 - *
 - * This program is distributed in the hope that it will be useful, but WITHOUT
 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 - * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 - * more details.
 - *
 - * The full GNU General Public License is included in this distribution in the
 - * file called COPYING.
   */
  #ifndef LINUX_DMAENGINE_H
  #define LINUX_DMAENGINE_H
@@@ -1302,7 -1314,8 +1302,8 @@@ enum dma_status dma_sync_wait(struct dm
  enum dma_status dma_wait_for_async_tx(struct dma_async_tx_descriptor *tx);
  void dma_issue_pending_all(void);
  struct dma_chan *__dma_request_channel(const dma_cap_mask_t *mask,
-                                       dma_filter_fn fn, void *fn_param);
+                                      dma_filter_fn fn, void *fn_param,
+                                      struct device_node *np);
  struct dma_chan *dma_request_slave_channel(struct device *dev, const char *name);
  
  struct dma_chan *dma_request_chan(struct device *dev, const char *name);
@@@ -1327,7 -1340,9 +1328,9 @@@ static inline void dma_issue_pending_al
  {
  }
  static inline struct dma_chan *__dma_request_channel(const dma_cap_mask_t *mask,
-                                             dma_filter_fn fn, void *fn_param)
+                                                    dma_filter_fn fn,
+                                                    void *fn_param,
+                                                    struct device_node *np)
  {
        return NULL;
  }
@@@ -1399,7 -1414,8 +1402,8 @@@ void dma_async_device_unregister(struc
  void dma_run_dependencies(struct dma_async_tx_descriptor *tx);
  struct dma_chan *dma_get_slave_channel(struct dma_chan *chan);
  struct dma_chan *dma_get_any_slave_channel(struct dma_device *device);
- #define dma_request_channel(mask, x, y) __dma_request_channel(&(mask), x, y)
+ #define dma_request_channel(mask, x, y) \
+       __dma_request_channel(&(mask), x, y, NULL)
  #define dma_request_slave_channel_compat(mask, x, y, dev, name) \
        __dma_request_slave_channel_compat(&(mask), x, y, dev, name)
  
@@@ -1417,6 -1433,6 +1421,6 @@@ static inline struct dma_cha
        if (!fn || !fn_param)
                return NULL;
  
-       return __dma_request_channel(mask, fn, fn_param);
+       return __dma_request_channel(mask, fn, fn_param, NULL);
  }
  #endif /* DMAENGINE_H */
diff --combined include/linux/pci_ids.h
index 40015609c4b56838e2546e3e8b9cfd3c330089db,4aad69fc4d6b75fe620b35dbb38a518bb9774783..c842735a4f45a41d4ce305d236d08a8b2d0ef3b6
  
  #define PCI_VENDOR_ID_AL              0x10b9
  #define PCI_DEVICE_ID_AL_M1533                0x1533
 -#define PCI_DEVICE_ID_AL_M1535                0x1535
 +#define PCI_DEVICE_ID_AL_M1535                0x1535
  #define PCI_DEVICE_ID_AL_M1541                0x1541
  #define PCI_DEVICE_ID_AL_M1563                0x1563
  #define PCI_DEVICE_ID_AL_M1621                0x1621
  #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP78S_SMBUS    0x0752
  #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP77_IDE       0x0759
  #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_SMBUS     0x07D8
 +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_320M           0x08A0
  #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP79_SMBUS     0x0AA2
  #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP89_SATA            0x0D85
  
  #define PCI_VENDOR_ID_STALLION                0x124d
  
  /* Allied Telesyn */
 -#define PCI_VENDOR_ID_AT              0x1259
 +#define PCI_VENDOR_ID_AT              0x1259
  #define PCI_SUBDEVICE_ID_AT_2700FX    0x2701
  #define PCI_SUBDEVICE_ID_AT_2701FX    0x2703
  
  #define PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3               0xabcd
  #define PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3_AXI   0xabce
  #define PCI_DEVICE_ID_SYNOPSYS_HAPSUSB31      0xabcf
+ #define PCI_DEVICE_ID_SYNOPSYS_EDDA   0xedda
  
  #define PCI_VENDOR_ID_USR             0x16ec
  
  #define PCI_DEVICE_ID_KORENIX_JETCARDF2       0x1700
  #define PCI_DEVICE_ID_KORENIX_JETCARDF3       0x17ff
  
 -#define PCI_VENDOR_ID_HUAWEI          0x19e5
 +#define PCI_VENDOR_ID_HUAWEI          0x19e5
  
  #define PCI_VENDOR_ID_NETRONOME               0x19ee
  #define PCI_DEVICE_ID_NETRONOME_NFP4000       0x4000
index 80f9be858bd08ce63212bca09d56f1ee547ae360,7d964e787299e88f7450d8d0d8b1ebf58d57b78e..281adbb26e6bdabd0fd7548a1881f9d5565ebeff
@@@ -1,6 -1,9 +1,6 @@@
 +/* SPDX-License-Identifier: GPL-2.0-only */
  /*
   * Copyright 2004-2009 Freescale Semiconductor, Inc. All Rights Reserved.
 - *
 - * This program is free software; you can redistribute it and/or modify
 - * it under the terms of the GNU General Public License version 2 as
 - * published by the Free Software Foundation.
   */
  
  #ifndef __ASM_ARCH_MXC_DMA_H__
@@@ -52,7 -55,6 +52,6 @@@ struct imx_dma_data 
        int dma_request2; /* secondary DMA request line */
        enum sdma_peripheral_type peripheral_type;
        int priority;
-       struct device_node *of_node;
  };
  
  static inline int imx_dma_is_ipu(struct dma_chan *chan)