Merge tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 29 Oct 2018 22:16:01 +0000 (15:16 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 29 Oct 2018 22:16:01 +0000 (15:16 -0700)
Pull ARM SoC driver updates from Arnd Bergmann:
 "The most noteworthy SoC driver changes this time include:

   - The TEE subsystem gains an in-kernel interface to access the TEE
     from device drivers.

   - The reset controller subsystem gains a driver for the Qualcomm
     Snapdragon 845 Power Domain Controller.

   - The Xilinx Zynq platform now has a firmware interface for its
     platform management unit. This contains a firmware "ioctl"
     interface that was a little controversial at first, but the version
     we merged solved that by not exposing arbitrary firmware calls to
     user space.

   - The Amlogic Meson platform gains a "canvas" driver that is used for
     video processing and shared between different high-level drivers.

  The rest is more of the usual, mostly related to SoC specific power
  management support and core drivers in drivers/soc:

   - Several Renesas SoCs (RZ/G1N, RZ/G2M, R-Car V3M, RZ/A2M) gain new
     features related to power and reset control.

   - The Mediatek mt8183 and mt6765 SoC platforms gain support for their
     respective power management chips.

   - A new driver for NXP i.MX8, which need a firmware interface for
     power management.

   - The SCPI firmware interface now contains support estimating power
     usage of performance states

   - The NVIDIA Tegra "pmc" driver gains a few new features, in
     particular a pinctrl interface for configuring the pads.

   - Lots of small changes for Qualcomm, in particular the "smem" device
     driver.

   - Some cleanups for the TI OMAP series related to their sysc
     controller.

  Additional cleanups and bugfixes in SoC specific drivers include the
  Meson, Keystone, NXP, AT91, Sunxi, Actions, and Tegra platforms"

* tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (129 commits)
  firmware: tegra: bpmp: Implement suspend/resume support
  drivers: clk: Add ZynqMP clock driver
  dt-bindings: clock: Add bindings for ZynqMP clock driver
  firmware: xilinx: Add zynqmp IOCTL API for device control
  Documentation: xilinx: Add documentation for eemi APIs
  MAINTAINERS: imx: include drivers/firmware/imx path
  firmware: imx: add misc svc support
  firmware: imx: add SCU firmware driver support
  reset: Fix potential use-after-free in __of_reset_control_get()
  dt-bindings: arm: fsl: add scu binding doc
  soc: fsl: qbman: add interrupt coalesce changing APIs
  soc: fsl: bman_portals: defer probe after bman's probe
  soc: fsl: qbman: Use last response to determine valid bit
  soc: fsl: qbman: Add 64 bit DMA addressing requirement to QBMan
  soc: fsl: qbman: replace CPU 0 with any online CPU in hotplug handlers
  soc: fsl: qbman: Check if CPU is offline when initializing portals
  reset: qcom: PDC Global (Power Domain Controller) reset controller
  dt-bindings: reset: Add PDC Global binding for SDM845 SoCs
  reset: Grammar s/more then once/more than once/
  bus: ti-sysc: Just use SET_NOIRQ_SYSTEM_SLEEP_PM_OPS
  ...

1  2 
MAINTAINERS
arch/arm64/Kconfig.platforms
drivers/soc/qcom/apr.c
drivers/soc/tegra/pmc.c
drivers/soc/ti/knav_dma.c

diff --combined MAINTAINERS
@@@ -324,6 -324,7 +324,6 @@@ F: Documentation/ABI/testing/sysfs-bus-
  F:    Documentation/ABI/testing/configfs-acpi
  F:    drivers/pci/*acpi*
  F:    drivers/pci/*/*acpi*
 -F:    drivers/pci/*/*/*acpi*
  F:    tools/power/acpi/
  
  ACPI APEI
@@@ -535,7 -536,7 +535,7 @@@ F: Documentation/hwmon/adt747
  F:    drivers/hwmon/adt7475.c
  
  ADVANSYS SCSI DRIVER
 -M:    Matthew Wilcox <matthew@wil.cx>
 +M:    Matthew Wilcox <willy@infradead.org>
  M:    Hannes Reinecke <hare@suse.com>
  L:    linux-scsi@vger.kernel.org
  S:    Maintained
@@@ -549,15 -550,6 +549,15 @@@ W:       http://ez.analog.com/community/linux
  S:    Supported
  F:    drivers/input/misc/adxl34x.c
  
 +ADXL372 THREE-AXIS DIGITAL ACCELEROMETER DRIVER
 +M:    Stefan Popa <stefan.popa@analog.com>
 +W:    http://ez.analog.com/community/linux-device-drivers
 +S:    Supported
 +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
 +
  AF9013 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
@@@ -848,7 -840,7 +848,7 @@@ ANALOG DEVICES INC ADGS1408 DRIVE
  M:    Mircea Caprioru <mircea.caprioru@analog.com>
  S:    Supported
  F:    drivers/mux/adgs1408.c
 -F:    Documentation/devicetree/bindings/mux/adgs1408.txt
 +F:    Documentation/devicetree/bindings/mux/adi,adgs1408.txt
  
  ANALOG DEVICES INC ADP5061 DRIVER
  M:    Stefan Popa <stefan.popa@analog.com>
@@@ -941,7 -933,6 +941,7 @@@ M: Greg Kroah-Hartman <gregkh@linuxfoun
  M:    Arve Hjønnevåg <arve@android.com>
  M:    Todd Kjos <tkjos@android.com>
  M:    Martijn Coenen <maco@android.com>
 +M:    Joel Fernandes <joel@joelfernandes.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
  L:    devel@driverdev.osuosl.org
  S:    Supported
@@@ -1190,7 -1181,7 +1190,7 @@@ N:      ow
  F:    arch/arm/mach-actions/
  F:    arch/arm/boot/dts/owl-*
  F:    arch/arm64/boot/dts/actions/
 -F:    drivers/clocksource/owl-*
 +F:    drivers/clocksource/timer-owl*
  F:    drivers/pinctrl/actions/*
  F:    drivers/soc/actions/
  F:    include/dt-bindings/power/owl-*
@@@ -1471,7 -1462,9 +1471,9 @@@ F:      arch/arm/mach-mxs
  F:    arch/arm/boot/dts/imx*
  F:    arch/arm/configs/imx*_defconfig
  F:    drivers/clk/imx/
+ F:    drivers/firmware/imx/
  F:    drivers/soc/imx/
+ F:    include/linux/firmware/imx/
  F:    include/soc/imx/
  
  ARM/FREESCALE VYBRID ARM ARCHITECTURE
@@@ -1613,7 -1606,7 +1615,7 @@@ L:      linux-arm-kernel@lists.infradead.or
  S:    Maintained
  F:    arch/arm/boot/dts/lpc43*
  F:    drivers/clk/nxp/clk-lpc18xx*
 -F:    drivers/clocksource/time-lpc32xx.c
 +F:    drivers/clocksource/timer-lpc32xx.c
  F:    drivers/i2c/busses/i2c-lpc2k.c
  F:    drivers/memory/pl172.c
  F:    drivers/mtd/spi-nor/nxp-spifi.c
@@@ -2205,7 -2198,6 +2207,7 @@@ F:      drivers/clk/uniphier
  F:    drivers/gpio/gpio-uniphier.c
  F:    drivers/i2c/busses/i2c-uniphier*
  F:    drivers/irqchip/irq-uniphier-aidet.c
 +F:    drivers/mmc/host/uniphier-sd.c
  F:    drivers/pinctrl/uniphier/
  F:    drivers/reset/reset-uniphier.c
  F:    drivers/tty/serial/8250/8250_uniphier.c
@@@ -2230,7 -2222,7 +2232,7 @@@ F:      arch/arm/mach-vexpress
  F:    */*/vexpress*
  F:    */*/*/vexpress*
  F:    drivers/clk/versatile/clk-vexpress-osc.c
 -F:    drivers/clocksource/versatile.c
 +F:    drivers/clocksource/timer-versatile.c
  N:    mps2
  
  ARM/VFP SUPPORT
@@@ -2252,7 -2244,7 +2254,7 @@@ M:      Tony Prisk <linux@prisktech.co.nz
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-vt8500/
 -F:    drivers/clocksource/vt8500_timer.c
 +F:    drivers/clocksource/timer-vt8500.c
  F:    drivers/i2c/busses/i2c-wmt.c
  F:    drivers/mmc/host/wmt-sdmmc.c
  F:    drivers/pwm/pwm-vt8500.c
@@@ -2317,7 -2309,7 +2319,7 @@@ F:      drivers/cpuidle/cpuidle-zynq.
  F:    drivers/block/xsysace.c
  N:    zynq
  N:    xilinx
 -F:    drivers/clocksource/cadence_ttc_timer.c
 +F:    drivers/clocksource/timer-cadence-ttc.c
  F:    drivers/i2c/busses/i2c-cadence.c
  F:    drivers/mmc/host/sdhci-of-arasan.c
  F:    drivers/edac/synopsys_edac.c
@@@ -2966,6 -2958,7 +2968,6 @@@ F:      include/linux/bcm963xx_tag.
  
  BROADCOM BNX2 GIGABIT ETHERNET DRIVER
  M:    Rasesh Mody <rasesh.mody@cavium.com>
 -M:    Harish Patil <harish.patil@cavium.com>
  M:    Dept-GELinuxNICDev@cavium.com
  L:    netdev@vger.kernel.org
  S:    Supported
@@@ -2986,7 -2979,6 +2988,7 @@@ F:      drivers/scsi/bnx2i
  
  BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER
  M:    Ariel Elior <ariel.elior@cavium.com>
 +M:    Sudarsana Kalluru <sudarsana.kalluru@cavium.com>
  M:    everest-linux-l2@cavium.com
  L:    netdev@vger.kernel.org
  S:    Supported
@@@ -3017,14 -3009,6 +3019,14 @@@ S:    Supporte
  F:    drivers/gpio/gpio-brcmstb.c
  F:    Documentation/devicetree/bindings/gpio/brcm,brcmstb-gpio.txt
  
 +BROADCOM BRCMSTB I2C DRIVER
 +M:    Kamal Dasu <kdasu.kdev@gmail.com>
 +L:    linux-i2c@vger.kernel.org
 +L:    bcm-kernel-feedback-list@broadcom.com
 +S:    Supported
 +F:    drivers/i2c/busses/i2c-brcmstb.c
 +F:    Documentation/devicetree/bindings/i2c/i2c-brcmstb.txt
 +
  BROADCOM BRCMSTB USB2 and USB3 PHY DRIVER
  M:    Al Cooper <alcooperx@gmail.com>
  L:    linux-kernel@vger.kernel.org
@@@ -3132,15 -3116,6 +3134,15 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/memory-controllers/brcm,dpfe-cpu.txt
  F:    drivers/memory/brcmstb_dpfe.c
  
 +BROADCOM SPI DRIVER
 +M:    Kamal Dasu <kdasu.kdev@gmail.com>
 +M:    bcm-kernel-feedback-list@broadcom.com
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/spi/brcm,spi-bcm-qspi.txt
 +F:    drivers/spi/spi-bcm-qspi.*
 +F:    drivers/spi/spi-brcmstb-qspi.c
 +F:    drivers/spi/spi-iproc-qspi.c
 +
  BROADCOM SYSTEMPORT ETHERNET DRIVER
  M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    netdev@vger.kernel.org
@@@ -3238,15 -3213,6 +3240,15 @@@ T:    git git://git.alsa-project.org/alsa-
  S:    Maintained
  F:    sound/pci/oxygen/
  
 +C-SKY ARCHITECTURE
 +M:    Guo Ren <ren_guo@c-sky.com>
 +T:    git https://github.com/c-sky/csky-linux.git
 +S:    Supported
 +F:    arch/csky/
 +F:    Documentation/devicetree/bindings/csky/
 +K:    csky
 +N:    csky
 +
  C6X ARCHITECTURE
  M:    Mark Salter <msalter@redhat.com>
  M:    Aurelien Jacquiot <jacquiot.aurelien@gmail.com>
@@@ -3710,12 -3676,6 +3712,12 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/media/coda.txt
  F:    drivers/media/platform/coda/
  
 +CODE OF CONDUCT
 +M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 +S:    Supported
 +F:    Documentation/process/code-of-conduct.rst
 +F:    Documentation/process/code-of-conduct-interpretation.rst
 +
  COMMON CLK FRAMEWORK
  M:    Michael Turquette <mturquette@baylibre.com>
  M:    Stephen Boyd <sboyd@kernel.org>
@@@ -4074,7 -4034,7 +4076,7 @@@ M:      Uma Krishnan <ukrishn@linux.vnet.ibm
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    drivers/scsi/cxlflash/
 -F:    include/uapi/scsi/cxlflash_ioctls.h
 +F:    include/uapi/scsi/cxlflash_ioctl.h
  F:    Documentation/powerpc/cxlflash.txt
  
  CYBERPRO FB DRIVER
@@@ -4117,7 -4077,7 +4119,7 @@@ D-LINK DIR-685 TOUCHKEYS DRIVE
  M:    Linus Walleij <linus.walleij@linaro.org>
  L:    linux-input@vger.kernel.org
  S:    Supported
 -F:    drivers/input/dlink-dir685-touchkeys.c
 +F:    drivers/input/keyboard/dlink-dir685-touchkeys.c
  
  DALLAS/MAXIM DS1685-FAMILY REAL TIME CLOCK
  M:    Joshua Kinard <kumba@gentoo.org>
@@@ -4213,11 -4173,6 +4215,11 @@@ S:    Maintaine
  F:    drivers/platform/x86/dell-smbios-wmi.c
  F:    tools/wmi/dell-smbios-example.c
  
 +DEFZA FDDI NETWORK DRIVER
 +M:    "Maciej W. Rozycki" <macro@linux-mips.org>
 +S:    Maintained
 +F:    drivers/net/fddi/defza.*
 +
  DELL LAPTOP DRIVER
  M:    Matthew Garrett <mjg59@srcf.ucam.org>
  M:    Pali Rohár <pali.rohar@gmail.com>
@@@ -4397,6 -4352,13 +4399,6 @@@ L:     linux-gpio@vger.kernel.or
  S:    Maintained
  F:    drivers/gpio/gpio-gpio-mm.c
  
 -DIGI NEO AND CLASSIC PCI PRODUCTS
 -M:    Lidza Louina <lidza.louina@gmail.com>
 -M:    Mark Hounschell <markh@compro.net>
 -L:    driverdev-devel@linuxdriverproject.org
 -S:    Maintained
 -F:    drivers/staging/dgnc/
 -
  DIOLAN U2C-12 I2C DRIVER
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-i2c@vger.kernel.org
@@@ -4404,7 -4366,7 +4406,7 @@@ S:      Maintaine
  F:    drivers/i2c/busses/i2c-diolan-u2c.c
  
  FILESYSTEM DIRECT ACCESS (DAX)
 -M:    Matthew Wilcox <mawilcox@microsoft.com>
 +M:    Matthew Wilcox <willy@infradead.org>
  M:    Ross Zwisler <zwisler@kernel.org>
  M:    Jan Kara <jack@suse.cz>
  L:    linux-fsdevel@vger.kernel.org
@@@ -4526,12 -4488,11 +4528,12 @@@ S:   Maintaine
  F:    Documentation/
  F:    scripts/kernel-doc
  X:    Documentation/ABI/
 +X:    Documentation/acpi/
  X:    Documentation/devicetree/
 -X:    Documentation/acpi
 -X:    Documentation/power
 -X:    Documentation/spi
 -X:    Documentation/media
 +X:    Documentation/i2c/
 +X:    Documentation/media/
 +X:    Documentation/power/
 +X:    Documentation/spi/
  T:    git git://git.lwn.net/linux.git docs-next
  
  DOCUMENTATION/ITALIAN
@@@ -4546,15 -4507,13 +4548,15 @@@ L:   linux-media@vger.kernel.or
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/i2c/dw9714.c
 +F:    Documentation/devicetree/bindings/media/i2c/dongwoon,dw9714.txt
  
  DONGWOON DW9807 LENS VOICE COIL DRIVER
  M:    Sakari Ailus <sakari.ailus@linux.intel.com>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
 -F:    drivers/media/i2c/dw9807.c
 +F:    drivers/media/i2c/dw9807-vcm.c
 +F:    Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.txt
  
  DOUBLETALK DRIVER
  M:    "James R. Van Zandt" <jrv@vanzandt.mv.com>
@@@ -4571,13 -4530,9 +4573,13 @@@ F:    drivers/soc/fsl/dpi
  
  DPAA2 ETHERNET DRIVER
  M:    Ioana Radulescu <ruxandra.radulescu@nxp.com>
 -L:    linux-kernel@vger.kernel.org
 +L:    netdev@vger.kernel.org
  S:    Maintained
 -F:    drivers/staging/fsl-dpaa2/ethernet
 +F:    drivers/net/ethernet/freescale/dpaa2/dpaa2-eth*
 +F:    drivers/net/ethernet/freescale/dpaa2/dpni*
 +F:    drivers/net/ethernet/freescale/dpaa2/dpkg.h
 +F:    drivers/net/ethernet/freescale/dpaa2/Makefile
 +F:    drivers/net/ethernet/freescale/dpaa2/Kconfig
  
  DPAA2 ETHERNET SWITCH DRIVER
  M:    Ioana Radulescu <ruxandra.radulescu@nxp.com>
@@@ -4588,10 -4543,9 +4590,10 @@@ F:    drivers/staging/fsl-dpaa2/eths
  
  DPAA2 PTP CLOCK DRIVER
  M:    Yangbo Lu <yangbo.lu@nxp.com>
 -L:    linux-kernel@vger.kernel.org
 +L:    netdev@vger.kernel.org
  S:    Maintained
 -F:    drivers/staging/fsl-dpaa2/rtc
 +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>
@@@ -4769,11 -4723,8 +4771,11 @@@ F:    drivers/gpu/drm/tdfx
  
  DRM DRIVER FOR USB DISPLAYLINK VIDEO ADAPTERS
  M:    Dave Airlie <airlied@redhat.com>
 +R:    Sean Paul <sean@poorly.run>
 +L:    dri-devel@lists.freedesktop.org
  S:    Odd Fixes
  F:    drivers/gpu/drm/udl/
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  
  DRM DRIVER FOR VMWARE VIRTUAL GPU
  M:    "VMware Graphics" <linux-graphics-maintainer@vmware.com>
@@@ -4803,8 -4754,8 +4805,8 @@@ F:      include/uapi/drm
  F:    include/linux/vga*
  
  DRM DRIVERS AND MISC GPU PATCHES
 -M:    Gustavo Padovan <gustavo@padovan.org>
  M:    Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
 +M:    Maxime Ripard <maxime.ripard@bootlin.com>
  M:    Sean Paul <sean@poorly.run>
  W:    https://01.org/linuxgraphics/gfx-docs/maintainer-tools/drm-misc.html
  S:    Maintained
@@@ -4873,7 -4824,6 +4875,7 @@@ F:      drivers/gpu/drm/fsl-dcu
  F:    Documentation/devicetree/bindings/display/fsl,dcu.txt
  F:    Documentation/devicetree/bindings/display/fsl,tcon.txt
  F:    Documentation/devicetree/bindings/display/panel/nec,nl4827hc19-05b.txt
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  
  DRM DRIVERS FOR FREESCALE IMX
  M:    Philipp Zabel <p.zabel@pengutronix.de>
@@@ -4923,10 -4873,9 +4925,10 @@@ F:    Documentation/devicetree/bindings/di
  
  DRM DRIVERS FOR RENESAS
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 +M:    Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
  L:    dri-devel@lists.freedesktop.org
  L:    linux-renesas-soc@vger.kernel.org
 -T:    git git://linuxtv.org/pinchartl/fbdev
 +T:    git git://linuxtv.org/pinchartl/media drm/du/next
  S:    Supported
  F:    drivers/gpu/drm/rcar-du/
  F:    drivers/gpu/drm/shmobile/
@@@ -5383,8 -5332,7 +5385,8 @@@ S:      Maintaine
  F:    drivers/edac/r82600_edac.c
  
  EDAC-SBRIDGE
 -M:    Mauro Carvalho Chehab <mchehab@kernel.org>
 +M:    Tony Luck <tony.luck@intel.com>
 +R:    Qiuxu Zhuo <qiuxu.zhuo@intel.com>
  L:    linux-edac@vger.kernel.org
  S:    Maintained
  F:    drivers/edac/sb_edac.c
@@@ -5401,6 -5349,14 +5403,14 @@@ L:    linux-edac@vger.kernel.or
  S:    Maintained
  F:    drivers/edac/ti_edac.c
  
+ EDAC-QCOM
+ M:    Channagoud Kadabi <ckadabi@codeaurora.org>
+ M:    Venkata Narendra Kumar Gutta <vnkgutta@codeaurora.org>
+ L:    linux-arm-msm@vger.kernel.org
+ L:    linux-edac@vger.kernel.org
+ S:    Maintained
+ F:    drivers/edac/qcom_edac.c
  EDIROL UA-101/UA-1000 DRIVER
  M:    Clemens Ladisch <clemens@ladisch.de>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
@@@ -5524,8 -5480,7 +5534,8 @@@ S:      Odd Fixe
  F:    drivers/net/ethernet/agere/
  
  ETHERNET BRIDGE
 -M:    Stephen Hemminger <stephen@networkplumber.org>
 +M:    Roopa Prabhu <roopa@cumulusnetworks.com>
 +M:    Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
  L:    bridge@lists.linux-foundation.org (moderated for non-subscribers)
  L:    netdev@vger.kernel.org
  W:    http://www.linuxfoundation.org/en/Net:Bridge
@@@ -5569,7 -5524,7 +5579,7 @@@ W:      http://ext4.wiki.kernel.or
  Q:    http://patchwork.ozlabs.org/project/linux-ext4/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git
  S:    Maintained
 -F:    Documentation/filesystems/ext4.txt
 +F:    Documentation/filesystems/ext4/ext4.rst
  F:    fs/ext4/
  
  Extended Verification Module (EVM)
@@@ -5679,9 -5634,8 +5689,9 @@@ F:      Documentation/fault-injection
  F:    lib/fault-inject.c
  
  FBTFT Framebuffer drivers
 -M:    Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
 -S:    Maintained
 +S:    Orphan
 +L:    dri-devel@lists.freedesktop.org
 +L:    linux-fbdev@vger.kernel.org
  F:    drivers/staging/fbtft/
  
  FC0011 TUNER DRIVER
@@@ -6116,7 -6070,7 +6126,7 @@@ F:      Documentation/gcc-plugins.tx
  
  GASKET DRIVER FRAMEWORK
  M:    Rob Springer <rspringer@google.com>
 -M:    John Joseph <jnjoseph@google.com>
 +M:    Todd Poynor <toddpoynor@google.com>
  M:    Ben Chan <benchan@chromium.org>
  S:    Maintained
  F:    drivers/staging/gasket/
@@@ -6508,7 -6462,6 +6518,7 @@@ F:      Documentation/devicetree/bindings/hw
  F:    Documentation/hwmon/
  F:    drivers/hwmon/
  F:    include/linux/hwmon*.h
 +F:    include/trace/events/hwmon*.h
  
  HARDWARE RANDOM NUMBER GENERATOR CORE
  M:    Matt Mackall <mpm@selenic.com>
@@@ -6817,12 -6770,6 +6827,12 @@@ S:    Maintaine
  F:    mm/memory-failure.c
  F:    mm/hwpoison-inject.c
  
 +HYGON PROCESSOR SUPPORT
 +M:    Pu Wen <puwen@hygon.cn>
 +L:    linux-kernel@vger.kernel.org
 +S:    Maintained
 +F:    arch/x86/kernel/cpu/hygon.c
 +
  Hyper-V CORE AND DRIVERS
  M:    "K. Y. Srinivasan" <kys@microsoft.com>
  M:    Haiyang Zhang <haiyangz@microsoft.com>
@@@ -7079,20 -7026,6 +7089,20 @@@ F:    drivers/crypto/vmx/aes
  F:    drivers/crypto/vmx/ghash*
  F:    drivers/crypto/vmx/ppc-xlate.pl
  
 +IBM Power PCI Hotplug Driver for RPA-compliant PPC64 platform
 +M:    Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
 +L:    linux-pci@vger.kernel.org
 +L:    linuxppc-dev@lists.ozlabs.org
 +S:    Supported
 +F:    drivers/pci/hotplug/rpaphp*
 +
 +IBM Power IO DLPAR Driver for RPA-compliant PPC64 platform
 +M:    Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
 +L:    linux-pci@vger.kernel.org
 +L:    linuxppc-dev@lists.ozlabs.org
 +S:    Supported
 +F:    drivers/pci/hotplug/rpadlpar*
 +
  IBM ServeRAID RAID DRIVER
  S:    Orphan
  F:    drivers/scsi/ips.*
@@@ -7402,16 -7335,15 +7412,16 @@@ T:   git git://git.kernel.org/pub/scm/lin
  S:    Supported
  F:    Documentation/networking/e100.rst
  F:    Documentation/networking/e1000.rst
 -F:    Documentation/networking/e1000e.txt
 -F:    Documentation/networking/igb.txt
 -F:    Documentation/networking/igbvf.txt
 -F:    Documentation/networking/ixgb.txt
 -F:    Documentation/networking/ixgbe.txt
 -F:    Documentation/networking/ixgbevf.txt
 -F:    Documentation/networking/i40e.txt
 -F:    Documentation/networking/i40evf.txt
 -F:    Documentation/networking/ice.txt
 +F:    Documentation/networking/e1000e.rst
 +F:    Documentation/networking/fm10k.rst
 +F:    Documentation/networking/igb.rst
 +F:    Documentation/networking/igbvf.rst
 +F:    Documentation/networking/ixgb.rst
 +F:    Documentation/networking/ixgbe.rst
 +F:    Documentation/networking/ixgbevf.rst
 +F:    Documentation/networking/i40e.rst
 +F:    Documentation/networking/iavf.rst
 +F:    Documentation/networking/ice.rst
  F:    drivers/net/ethernet/intel/
  F:    drivers/net/ethernet/intel/*/
  F:    include/linux/avf/virtchnl.h
@@@ -7433,12 -7365,6 +7443,12 @@@ T:    git https://github.com/intel/gvt-lin
  S:    Supported
  F:    drivers/gpu/drm/i915/gvt/
  
 +INTEL PMIC GPIO DRIVER
 +R:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
 +S:    Maintained
 +F:    drivers/gpio/gpio-*cove.c
 +F:    drivers/gpio/gpio-msic.c
 +
  INTEL HID EVENT DRIVER
  M:    Alex Hung <alex.hung@canonical.com>
  L:    platform-driver-x86@vger.kernel.org
@@@ -7565,14 -7491,6 +7575,14 @@@ F:    drivers/platform/x86/intel_punit_ipc
  F:    arch/x86/include/asm/intel_pmc_ipc.h
  F:    arch/x86/include/asm/intel_punit_ipc.h
  
 +INTEL MULTIFUNCTION PMIC DEVICE DRIVERS
 +R:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
 +S:    Maintained
 +F:    drivers/mfd/intel_msic.c
 +F:    drivers/mfd/intel_soc_pmic*
 +F:    include/linux/mfd/intel_msic.h
 +F:    include/linux/mfd/intel_soc_pmic*
 +
  INTEL PRO/WIRELESS 2100, 2200BG, 2915ABG NETWORK CONNECTION SUPPORT
  M:    Stanislav Yakovlev <stas.yakovlev@gmail.com>
  L:    linux-wireless@vger.kernel.org
@@@ -7596,6 -7514,14 +7606,6 @@@ S:     Supporte
  F:    drivers/infiniband/hw/i40iw/
  F:    include/uapi/rdma/i40iw-abi.h
  
 -INTEL SHA MULTIBUFFER DRIVER
 -M:    Megha Dey <megha.dey@linux.intel.com>
 -R:    Tim Chen <tim.c.chen@linux.intel.com>
 -L:    linux-crypto@vger.kernel.org
 -S:    Supported
 -F:    arch/x86/crypto/sha*-mb/
 -F:    crypto/mcryptd.c
 -
  INTEL TELEMETRY DRIVER
  M:    Souvik Kumar Chakravarty <souvik.k.chakravarty@intel.com>
  L:    platform-driver-x86@vger.kernel.org
@@@ -7703,7 -7629,6 +7713,7 @@@ M:      Corey Minyard <minyard@acm.org
  L:    openipmi-developer@lists.sourceforge.net (moderated for non-subscribers)
  W:    http://openipmi.sourceforge.net/
  S:    Supported
 +F:    Documentation/devicetree/bindings/ipmi/
  F:    Documentation/IPMI.txt
  F:    drivers/char/ipmi/
  F:    include/linux/ipmi*
@@@ -7740,6 -7665,7 +7750,6 @@@ IPX NETWORK LAYE
  L:    netdev@vger.kernel.org
  S:    Obsolete
  F:    include/uapi/linux/ipx.h
 -F:    drivers/staging/ipx/
  
  IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
  M:    Marc Zyngier <marc.zyngier@arm.com>
@@@ -8174,7 -8100,6 +8184,7 @@@ F:      security/keys/encrypted-keys
  
  KEYS-TRUSTED
  M:    James Bottomley <jejb@linux.vnet.ibm.com>
 +M:      Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
  M:    Mimi Zohar <zohar@linux.vnet.ibm.com>
  L:    linux-integrity@vger.kernel.org
  L:    keyrings@vger.kernel.org
@@@ -8252,25 -8177,6 +8262,25 @@@ S:    Maintaine
  F:    net/l3mdev
  F:    include/net/l3mdev.h
  
 +L7 BPF FRAMEWORK
 +M:    John Fastabend <john.fastabend@gmail.com>
 +M:    Daniel Borkmann <daniel@iogearbox.net>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    include/linux/skmsg.h
 +F:    net/core/skmsg.c
 +F:    net/core/sock_map.c
 +F:    net/ipv4/tcp_bpf.c
 +
 +LANTIQ / INTEL Ethernet drivers
 +M:    Hauke Mehrtens <hauke@hauke-m.de>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    net/dsa/tag_gswip.c
 +F:    drivers/net/ethernet/lantiq_xrx200.c
 +F:    drivers/net/dsa/lantiq_pce.h
 +F:    drivers/net/dsa/lantiq_gswip.c
 +
  LANTIQ MIPS ARCHITECTURE
  M:    John Crispin <john@phrozen.org>
  L:    linux-mips@linux-mips.org
@@@ -8404,7 -8310,7 +8414,7 @@@ F:      include/linux/libata.
  F:    Documentation/devicetree/bindings/ata/
  
  LIBLOCKDEP
 -M:    Sasha Levin <alexander.levin@verizon.com>
 +M:    Sasha Levin <alexander.levin@microsoft.com>
  S:    Maintained
  F:    tools/lib/lockdep/
  
@@@ -8686,6 -8592,7 +8696,6 @@@ F:      include/linux/spinlock*.
  F:    arch/*/include/asm/spinlock*.h
  F:    include/linux/rwlock*.h
  F:    include/linux/mutex*.h
 -F:    arch/*/include/asm/mutex*.h
  F:    include/linux/rwsem*.h
  F:    arch/*/include/asm/rwsem.h
  F:    include/linux/seqlock.h
@@@ -8713,18 -8620,11 +8723,18 @@@ F:   drivers/message/fusion
  F:    drivers/scsi/mpt3sas/
  
  LSILOGIC/SYMBIOS/NCR 53C8XX and 53C1010 PCI-SCSI drivers
 -M:    Matthew Wilcox <matthew@wil.cx>
 +M:    Matthew Wilcox <willy@infradead.org>
  L:    linux-scsi@vger.kernel.org
  S:    Maintained
  F:    drivers/scsi/sym53c8xx_2/
  
 +LTC1660 DAC DRIVER
 +M:    Marcus Folkesson <marcus.folkesson@gmail.com>
 +L:    linux-iio@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/iio/dac/ltc1660.txt
 +F:    drivers/iio/dac/ltc1660.c
 +
  LTC4261 HARDWARE MONITOR DRIVER
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-hwmon@vger.kernel.org
@@@ -8838,7 -8738,7 +8848,7 @@@ M:      Vivien Didelot <vivien.didelot@savoi
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/dsa/mv88e6xxx/
 -F:    linux/platform_data/mv88e6xxx.h
 +F:    include/linux/platform_data/mv88e6xxx.h
  F:    Documentation/devicetree/bindings/net/dsa/marvell.txt
  
  MARVELL ARMADA DRM SUPPORT
@@@ -8928,15 -8828,6 +8938,15 @@@ S:    Supporte
  F:    drivers/mmc/host/sdhci-xenon*
  F:    Documentation/devicetree/bindings/mmc/marvell,xenon-sdhci.txt
  
 +MARVELL OCTEONTX2 RVU ADMIN FUNCTION DRIVER
 +M:    Sunil Goutham <sgoutham@marvell.com>
 +M:    Linu Cherian <lcherian@marvell.com>
 +M:    Geetha sowjanya <gakula@marvell.com>
 +M:    Jerin Jacob <jerinj@marvell.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/ethernet/marvell/octeontx2/af/
 +
  MATROX FRAMEBUFFER DRIVER
  L:    linux-fbdev@vger.kernel.org
  S:    Orphan
@@@ -8950,6 -8841,13 +8960,6 @@@ S:     Maintaine
  F:    Documentation/hwmon/max16065
  F:    drivers/hwmon/max16065.c
  
 -MAX20751 HARDWARE MONITOR DRIVER
 -M:    Guenter Roeck <linux@roeck-us.net>
 -L:    linux-hwmon@vger.kernel.org
 -S:    Maintained
 -F:    Documentation/hwmon/max20751
 -F:    drivers/hwmon/max20751.c
 -
  MAX2175 SDR TUNER DRIVER
  M:    Ramesh Shanmugasundaram <ramesh.shanmugasundaram@bp.renesas.com>
  L:    linux-media@vger.kernel.org
@@@ -9088,10 -8986,11 +9098,10 @@@ F:   drivers/media/dvb-frontends/cxd2880/
  F:    drivers/media/spi/cxd2880*
  
  MEDIA DRIVERS FOR DIGITAL DEVICES PCIE DEVICES
 -M:    Daniel Scheller <d.scheller.oss@gmail.com>
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
 -S:    Maintained
 +S:    Orphan
  F:    drivers/media/pci/ddbridge/*
  
  MEDIA DRIVERS FOR FREESCALE IMX
@@@ -9106,13 -9005,6 +9116,13 @@@ F:    drivers/staging/media/imx
  F:    include/linux/imx-media.h
  F:    include/media/imx.h
  
 +MEDIA DRIVER FOR FREESCALE IMX PXP
 +M:    Philipp Zabel <p.zabel@pengutronix.de>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/platform/imx-pxp.[ch]
 +
  MEDIA DRIVERS FOR HELENE
  M:    Abylay Ospan <aospan@netup.ru>
  L:    linux-media@vger.kernel.org
@@@ -9143,10 -9035,11 +9153,10 @@@ S:   Supporte
  F:    drivers/media/dvb-frontends/lnbh25*
  
  MEDIA DRIVERS FOR MXL5XX TUNER DEMODULATORS
 -M:    Daniel Scheller <d.scheller.oss@gmail.com>
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
 -S:    Maintained
 +S:    Orphan
  F:    drivers/media/dvb-frontends/mxl5xx*
  
  MEDIA DRIVERS FOR NETUP PCI UNIVERSAL DVB devices
@@@ -9189,7 -9082,7 +9199,7 @@@ F:      drivers/media/platform/rcar-fcp.
  F:    include/media/rcar-fcp.h
  
  MEDIA DRIVERS FOR RENESAS - FDP1
 -M:    Kieran Bingham <kieran@bingham.xyz>
 +M:    Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
  L:    linux-media@vger.kernel.org
  L:    linux-renesas-soc@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -9209,7 -9102,6 +9219,7 @@@ F:      drivers/media/platform/rcar-vin
  
  MEDIA DRIVERS FOR RENESAS - VSP1
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 +M:    Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
  L:    linux-media@vger.kernel.org
  L:    linux-renesas-soc@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -9218,17 -9110,19 +9228,17 @@@ F:   Documentation/devicetree/bindings/me
  F:    drivers/media/platform/vsp1/
  
  MEDIA DRIVERS FOR ST STV0910 DEMODULATOR ICs
 -M:    Daniel Scheller <d.scheller.oss@gmail.com>
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
 -S:    Maintained
 +S:    Orphan
  F:    drivers/media/dvb-frontends/stv0910*
  
  MEDIA DRIVERS FOR ST STV6111 TUNER ICs
 -M:    Daniel Scheller <d.scheller.oss@gmail.com>
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
 -S:    Maintained
 +S:    Orphan
  F:    drivers/media/dvb-frontends/stv6111*
  
  MEDIA DRIVERS FOR STM32 - DCMI
@@@ -9595,7 -9489,7 +9605,7 @@@ MEN Z069 WATCHDOG DRIVE
  M:    Johannes Thumshirn <jth@kernel.org>
  L:    linux-watchdog@vger.kernel.org
  S:    Maintained
 -F:    drivers/watchdog/menz069_wdt.c
 +F:    drivers/watchdog/menz69_wdt.c
  
  MESON AO CEC DRIVER FOR AMLOGIC SOCS
  M:    Neil Armstrong <narmstrong@baylibre.com>
@@@ -9619,7 -9513,6 +9629,7 @@@ M:      Richard Genoud <richard.genoud@gmail
  S:    Maintained
  F:    drivers/tty/serial/atmel_serial.c
  F:    drivers/tty/serial/atmel_serial.h
 +F:    Documentation/devicetree/bindings/mfd/atmel-usart.txt
  
  MICROCHIP / ATMEL DMA DRIVER
  M:    Ludovic Desroches <ludovic.desroches@microchip.com>
@@@ -9651,21 -9544,6 +9661,21 @@@ S:    Supporte
  F:    drivers/mtd/nand/raw/atmel/*
  F:    Documentation/devicetree/bindings/mtd/atmel-nand.txt
  
 +MICROCHIP AT91 USART MFD DRIVER
 +M:    Radu Pirea <radu_nicolae.pirea@upb.ro>
 +L:    linux-kernel@vger.kernel.org
 +S:    Supported
 +F:    drivers/mfd/at91-usart.c
 +F:    include/dt-bindings/mfd/at91-usart.h
 +F:    Documentation/devicetree/bindings/mfd/atmel-usart.txt
 +
 +MICROCHIP AT91 USART SPI DRIVER
 +M:    Radu Pirea <radu_nicolae.pirea@upb.ro>
 +L:    linux-spi@vger.kernel.org
 +S:    Supported
 +F:    drivers/spi/spi-at91-usart.c
 +F:    Documentation/devicetree/bindings/mfd/atmel-usart.txt
 +
  MICROCHIP KSZ SERIES ETHERNET SWITCH DRIVER
  M:    Woojung Huh <Woojung.Huh@microchip.com>
  M:    Microchip Linux Driver Support <UNGLinuxDriver@microchip.com>
@@@ -9683,14 -9561,6 +9693,14 @@@ L:    netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/microchip/lan743x_*
  
 +MICROCHIP / ATMEL MCP3911 ADC DRIVER
 +M:    Marcus Folkesson <marcus.folkesson@gmail.com>
 +M:    Kent Gustavsson <kent@minoris.se>
 +L:    linux-iio@vger.kernel.org
 +S:    Supported
 +F:    drivers/iio/adc/mcp3911.c
 +F:    Documentation/devicetree/bindings/iio/adc/mcp3911.txt
 +
  MICROCHIP USB251XB DRIVER
  M:    Richard Leitner <richard.leitner@skidata.com>
  L:    linux-usb@vger.kernel.org
@@@ -9782,8 -9652,7 +9792,8 @@@ MIPS/LOONGSON2 ARCHITECTUR
  M:    Jiaxun Yang <jiaxun.yang@flygoat.com>
  L:    linux-mips@linux-mips.org
  S:    Maintained
 -F:    arch/mips/loongson64/*{2e/2f}*
 +F:    arch/mips/loongson64/fuloong-2e/
 +F:    arch/mips/loongson64/lemote-2f/
  F:    arch/mips/include/asm/mach-loongson64/
  F:    drivers/*/*loongson2*
  F:    drivers/*/*/*loongson2*
@@@ -9823,19 -9692,6 +9833,19 @@@ S:    Maintaine
  F:    arch/arm/boot/dts/mmp*
  F:    arch/arm/mach-mmp/
  
 +MMU GATHER AND TLB INVALIDATION
 +M:    Will Deacon <will.deacon@arm.com>
 +M:    "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
 +M:    Andrew Morton <akpm@linux-foundation.org>
 +M:    Nick Piggin <npiggin@gmail.com>
 +M:    Peter Zijlstra <peterz@infradead.org>
 +L:    linux-arch@vger.kernel.org
 +L:    linux-mm@kvack.org
 +S:    Maintained
 +F:    arch/*/include/asm/tlb.h
 +F:    include/asm-generic/tlb.h
 +F:    mm/mmu_gather.c
 +
  MN88472 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
@@@ -9854,6 -9710,13 +9864,6 @@@ Q:     http://patchwork.linuxtv.org/project
  S:    Maintained
  F:    drivers/media/dvb-frontends/mn88473*
  
 -PCI DRIVER FOR MOBIVEIL PCIE IP
 -M:    Subrahmanya Lingappa <l.subrahmanya@mobiveil.co.in>
 -L:    linux-pci@vger.kernel.org
 -S:    Supported
 -F:    Documentation/devicetree/bindings/pci/mobiveil-pcie.txt
 -F:    drivers/pci/controller/pcie-mobiveil.c
 -
  MODULE SUPPORT
  M:    Jessica Yu <jeyu@kernel.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jeyu/linux.git modules-next
@@@ -10003,7 -9866,7 +10013,7 @@@ M:    Peter Rosin <peda@axentia.se
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-class-mux*
  F:    Documentation/devicetree/bindings/mux/
 -F:    include/linux/dt-bindings/mux/
 +F:    include/dt-bindings/mux/
  F:    include/linux/mux/
  F:    drivers/mux/
  
@@@ -10036,19 -9899,9 +10046,19 @@@ F:  drivers/media/tuners/mxl5007t.
  
  MXSFB DRM DRIVER
  M:    Marek Vasut <marex@denx.de>
 +M:    Stefan Agner <stefan@agner.ch>
 +L:    dri-devel@lists.freedesktop.org
  S:    Supported
  F:    drivers/gpu/drm/mxsfb/
  F:    Documentation/devicetree/bindings/display/mxsfb.txt
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +
 +MYLEX DAC960 PCI RAID Controller
 +M:    Hannes Reinecke <hare@kernel.org>
 +L:    linux-scsi@vger.kernel.org
 +S:    Supported
 +F:    drivers/scsi/myrb.*
 +F:    drivers/scsi/myrs.*
  
  MYRICOM MYRI-10G 10GbE DRIVER (MYRI10GE)
  M:    Chris Lee <christopher.lee@cspi.com>
@@@ -10081,6 -9934,11 +10091,6 @@@ NATSEMI ETHERNET DRIVER (DP8381x
  S:    Orphan
  F:    drivers/net/ethernet/natsemi/natsemi.c
  
 -NCP FILESYSTEM
 -M:    Petr Vandrovec <petr@vandrovec.name>
 -S:    Obsolete
 -F:    drivers/staging/ncpfs/
 -
  NCR 5380 SCSI DRIVERS
  M:    Finn Thain <fthain@telegraphics.com.au>
  M:    Michael Schmitz <schmitzmic@gmail.com>
@@@ -10265,6 -10123,7 +10275,6 @@@ L:   netdev@vger.kernel.or
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next.git
  S:    Maintained
 -F:    net/core/flow.c
  F:    net/xfrm/
  F:    net/key/
  F:    net/ipv4/xfrm*
@@@ -10327,8 -10186,6 +10337,8 @@@ NETWORKING [TLS
  M:    Boris Pismenny <borisp@mellanox.com>
  M:    Aviad Yehezkel <aviadye@mellanox.com>
  M:    Dave Watson <davejwatson@fb.com>
 +M:    John Fastabend <john.fastabend@gmail.com>
 +M:    Daniel Borkmann <daniel@iogearbox.net>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    net/tls/*
@@@ -11086,7 -10943,7 +11096,7 @@@ M:   Willy Tarreau <willy@haproxy.com
  M:    Ksenija Stanojevic <ksenija.stanojevic@gmail.com>
  S:    Odd Fixes
  F:    Documentation/auxdisplay/lcd-panel-cgram.txt
 -F:    drivers/misc/panel.c
 +F:    drivers/auxdisplay/panel.c
  
  PARALLEL PORT SUBSYSTEM
  M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
@@@ -11274,13 -11131,6 +11284,13 @@@ F: include/uapi/linux/switchtec_ioctl.
  F:    include/linux/switchtec.h
  F:    drivers/ntb/hw/mscc/
  
 +PCI DRIVER FOR MOBIVEIL PCIE IP
 +M:    Subrahmanya Lingappa <l.subrahmanya@mobiveil.co.in>
 +L:    linux-pci@vger.kernel.org
 +S:    Supported
 +F:    Documentation/devicetree/bindings/pci/mobiveil-pcie.txt
 +F:    drivers/pci/controller/pcie-mobiveil.c
 +
  PCI DRIVER FOR MVEBU (Marvell Armada 370 and Armada XP SOC support)
  M:    Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
  M:    Jason Cooper <jason@lakedaemon.net>
@@@ -11314,7 -11164,7 +11324,7 @@@ F:   drivers/pci/controller/dwc/pci-exyno
  
  PCI DRIVER FOR SYNOPSYS DESIGNWARE
  M:    Jingoo Han <jingoohan1@gmail.com>
 -M:    Joao Pinto <Joao.Pinto@synopsys.com>
 +M:    Gustavo Pimentel <gustavo.pimentel@synopsys.com>
  L:    linux-pci@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/pci/designware-pcie.txt
@@@ -11333,7 -11183,7 +11343,7 @@@ M:   Murali Karicheri <m-karicheri2@ti.co
  L:    linux-pci@vger.kernel.org
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -F:    drivers/pci/controller/dwc/*keystone*
 +F:    drivers/pci/controller/dwc/pci-keystone.c
  
  PCI ENDPOINT SUBSYSTEM
  M:    Kishon Vijay Abraham I <kishon@ti.com>
@@@ -11347,14 -11197,8 +11357,14 @@@ F: tools/pci
  
  PCI ENHANCED ERROR HANDLING (EEH) FOR POWERPC
  M:    Russell Currey <ruscur@russell.cc>
 +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:    drivers/pci/pcie/aer.c
 +F:    drivers/pci/pcie/dpc.c
 +F:    drivers/pci/pcie/err.c
  F:    Documentation/powerpc/eeh-pci-error-recovery.txt
  F:    arch/powerpc/kernel/eeh*.c
  F:    arch/powerpc/platforms/*/eeh*.c
@@@ -11512,10 -11356,10 +11522,10 @@@ S:        Maintaine
  F:    drivers/platform/x86/peaq-wmi.c
  
  PER-CPU MEMORY ALLOCATOR
 +M:    Dennis Zhou <dennis@kernel.org>
  M:    Tejun Heo <tj@kernel.org>
  M:    Christoph Lameter <cl@linux.com>
 -M:    Dennis Zhou <dennisszhou@gmail.com>
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/dennis/percpu.git
  S:    Maintained
  F:    include/linux/percpu*.h
  F:    mm/percpu*.c
@@@ -11633,12 -11477,15 +11643,12 @@@ S:        Maintaine
  F:    drivers/pinctrl/intel/
  
  PIN CONTROLLER - MEDIATEK
 -M:    Sean Wang <sean.wang@mediatek.com>
 +M:    Sean Wang <sean.wang@kernel.org>
  L:    linux-mediatek@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/devicetree/bindings/pinctrl/pinctrl-mt65xx.txt
  F:    Documentation/devicetree/bindings/pinctrl/pinctrl-mt7622.txt
 -F:    drivers/pinctrl/mediatek/mtk-eint.*
 -F:    drivers/pinctrl/mediatek/pinctrl-mtk-common.*
 -F:    drivers/pinctrl/mediatek/pinctrl-mt2701.c
 -F:    drivers/pinctrl/mediatek/pinctrl-mt7622.c
 +F:    drivers/pinctrl/mediatek/
  
  PIN CONTROLLER - QUALCOMM
  M:    Bjorn Andersson <bjorn.andersson@linaro.org>
@@@ -11716,26 -11563,7 +11726,26 @@@ W: http://hwmon.wiki.kernel.org
  W:    http://www.roeck-us.net/linux/drivers/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git
  S:    Maintained
 +F:    Documentation/devicetree/bindings/hwmon/ibm,cffps1.txt
 +F:    Documentation/devicetree/bindings/hwmon/max31785.txt
 +F:    Documentation/devicetree/bindings/hwmon/ltc2978.txt
 +F:    Documentation/hwmon/adm1275
 +F:    Documentation/hwmon/ibm-cffps
 +F:    Documentation/hwmon/ir35221
 +F:    Documentation/hwmon/lm25066
 +F:    Documentation/hwmon/ltc2978
 +F:    Documentation/hwmon/ltc3815
 +F:    Documentation/hwmon/max16064
 +F:    Documentation/hwmon/max20751
 +F:    Documentation/hwmon/max31785
 +F:    Documentation/hwmon/max34440
 +F:    Documentation/hwmon/max8688
  F:    Documentation/hwmon/pmbus
 +F:    Documentation/hwmon/pmbus-core
 +F:    Documentation/hwmon/tps40422
 +F:    Documentation/hwmon/ucd9000
 +F:    Documentation/hwmon/ucd9200
 +F:    Documentation/hwmon/zl6100
  F:    drivers/hwmon/pmbus/
  F:    include/linux/pmbus.h
  
@@@ -12139,7 -11967,7 +12149,7 @@@ F:   Documentation/scsi/LICENSE.qla4xx
  F:    drivers/scsi/qla4xxx/
  
  QLOGIC QLCNIC (1/10)Gb ETHERNET DRIVER
 -M:    Harish Patil <harish.patil@cavium.com>
 +M:    Shahed Shaikh <Shahed.Shaikh@cavium.com>
  M:    Manish Chopra <manish.chopra@cavium.com>
  M:    Dept-GELinuxNICDev@cavium.com
  L:    netdev@vger.kernel.org
@@@ -12147,6 -11975,7 +12157,6 @@@ S:   Supporte
  F:    drivers/net/ethernet/qlogic/qlcnic/
  
  QLOGIC QLGE 10Gb ETHERNET DRIVER
 -M:    Harish Patil <harish.patil@cavium.com>
  M:    Manish Chopra <manish.chopra@cavium.com>
  M:    Dept-GELinuxNICDev@cavium.com
  L:    netdev@vger.kernel.org
@@@ -12425,7 -12254,6 +12435,7 @@@ F:   Documentation/networking/rds.tx
  
  RDT - RESOURCE ALLOCATION
  M:    Fenghua Yu <fenghua.yu@intel.com>
 +M:    Reinette Chatre <reinette.chatre@intel.com>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
  F:    arch/x86/kernel/cpu/intel_rdt*
@@@ -12548,12 -12376,6 +12558,12 @@@ S: Supporte
  F:    drivers/i2c/busses/i2c-rcar.c
  F:    drivers/i2c/busses/i2c-sh_mobile.c
  
 +RENESAS RIIC DRIVER
 +M:    Chris Brandt <chris.brandt@renesas.com>
 +S:    Supported
 +F:    Documentation/devicetree/bindings/i2c/i2c-riic.txt
 +F:    drivers/i2c/busses/i2c-riic.c
 +
  RENESAS USB PHY DRIVER
  M:    Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
  L:    linux-renesas-soc@vger.kernel.org
@@@ -12840,18 -12662,6 +12850,18 @@@ W: http://www.ibm.com/developerworks/li
  S:    Supported
  F:    drivers/s390/crypto/
  
 +S390 VFIO AP DRIVER
 +M:    Tony Krowiak <akrowiak@linux.ibm.com>
 +M:    Pierre Morel <pmorel@linux.ibm.com>
 +M:    Halil Pasic <pasic@linux.ibm.com>
 +L:    linux-s390@vger.kernel.org
 +W:    http://www.ibm.com/developerworks/linux/linux390/
 +S:    Supported
 +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
 +
  S390 ZFCP DRIVER
  M:    Steffen Maier <maier@linux.ibm.com>
  M:    Benjamin Block <bblock@linux.ibm.com>
@@@ -13240,7 -13050,7 +13250,7 @@@ SELINUX SECURITY MODUL
  M:    Paul Moore <paul@paul-moore.com>
  M:    Stephen Smalley <sds@tycho.nsa.gov>
  M:    Eric Paris <eparis@parisplace.org>
 -L:    selinux@tycho.nsa.gov (moderated for non-subscribers)
 +L:    selinux@vger.kernel.org
  W:    https://selinuxproject.org
  W:    https://github.com/SELinuxProject
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/selinux.git
@@@ -13484,7 -13294,6 +13494,7 @@@ M:   Uwe Kleine-König <u.kleine-koenig@p
  R:    Pengutronix Kernel Team <kernel@pengutronix.de>
  S:    Supported
  F:    drivers/siox/*
 +F:    drivers/gpio/gpio-siox.c
  F:    include/trace/events/siox.h
  
  SIS 190 ETHERNET DRIVER
@@@ -13634,8 -13443,9 +13644,8 @@@ F:   drivers/i2c/busses/i2c-synquacer.
  F:    Documentation/devicetree/bindings/i2c/i2c-synquacer.txt
  
  SOCIONEXT UNIPHIER SOUND DRIVER
 -M:    Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 -S:    Maintained
 +S:    Orphan
  F:    sound/soc/uniphier/
  
  SOEKRIS NET48XX LED SUPPORT
@@@ -13668,8 -13478,8 +13678,8 @@@ L:   linux-arm-kernel@lists.infradead.or
  S:    Maintained
  F:    Documentation/devicetree/bindings/arm/firmware/sdei.txt
  F:    drivers/firmware/arm_sdei.c
 -F:    include/linux/sdei.h
 -F:    include/uapi/linux/sdei.h
 +F:    include/linux/arm_sdei.h
 +F:    include/uapi/linux/arm_sdei.h
  
  SOFTWARE RAID (Multiple Disks) SUPPORT
  M:    Shaohua Li <shli@kernel.org>
@@@ -13731,20 -13541,6 +13741,20 @@@ S: Maintaine
  F:    drivers/media/i2c/imx274.c
  F:    Documentation/devicetree/bindings/media/i2c/imx274.txt
  
 +SONY IMX319 SENSOR DRIVER
 +M:    Bingbu Cao <bingbu.cao@intel.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/i2c/imx319.c
 +
 +SONY IMX355 SENSOR DRIVER
 +M:    Tianshu Qiu <tian.shu.qiu@intel.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/i2c/imx355.c
 +
  SONY MEMORYSTICK CARD SUPPORT
  M:    Alex Dubov <oakad@yahoo.com>
  W:    http://tifmxx.berlios.de/
@@@ -13811,7 -13607,7 +13821,7 @@@ F:   sound/soc
  F:    include/sound/soc*
  
  SOUNDWIRE SUBSYSTEM
 -M:    Vinod Koul <vinod.koul@intel.com>
 +M:    Vinod Koul <vkoul@kernel.org>
  M:    Sanyog Kale <sanyog.r.kale@intel.com>
  R:    Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
@@@ -13947,13 -13743,6 +13957,13 @@@ L: linux-i2c@vger.kernel.or
  S:    Maintained
  F:    drivers/i2c/busses/i2c-stm32*
  
 +ST VL53L0X ToF RANGER(I2C) IIO DRIVER
 +M:    Song Qiang <songqiang1304521@gmail.com>
 +L:    linux-iio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/iio/proximity/vl53l0x-i2c.c
 +F:    Documentation/devicetree/bindings/iio/proximity/vl53l0x.txt
 +
  STABLE BRANCH
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  L:    stable@vger.kernel.org
@@@ -13973,6 -13762,11 +13983,6 @@@ L:  linux-erofs@lists.ozlabs.or
  S:    Maintained
  F:    drivers/staging/erofs/
  
 -STAGING - FLARION FT1000 DRIVERS
 -M:    Marek Belisko <marek.belisko@gmail.com>
 -S:    Odd Fixes
 -F:    drivers/staging/ft1000/
 -
  STAGING - INDUSTRIAL IO
  M:    Jonathan Cameron <jic23@kernel.org>
  L:    linux-iio@vger.kernel.org
@@@ -14064,7 -13858,7 +14074,7 @@@ F:   sound/soc/sti
  STI CEC DRIVER
  M:    Benjamin Gaignard <benjamin.gaignard@linaro.org>
  S:    Maintained
 -F:    drivers/staging/media/st-cec/
 +F:    drivers/media/platform/sti/cec/
  F:    Documentation/devicetree/bindings/media/stih-cec.txt
  
  STK1160 USB VIDEO CAPTURE DRIVER
@@@ -14228,12 -14022,6 +14238,12 @@@ S: Supporte
  F:    drivers/reset/reset-axs10x.c
  F:    Documentation/devicetree/bindings/reset/snps,axs10x-reset.txt
  
 +SYNOPSYS CREG GPIO DRIVER
 +M:    Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
 +S:    Maintained
 +F:    drivers/gpio/gpio-creg-snps.c
 +F:    Documentation/devicetree/bindings/gpio/snps,creg-gpio.txt
 +
  SYNOPSYS DESIGNWARE 8250 UART DRIVER
  R:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
  S:    Maintained
@@@ -14820,13 -14608,6 +14830,13 @@@ L: netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/ti/netcp*
  
 +TI PCM3060 ASoC CODEC DRIVER
 +M:    Kirill Marinushkin <kmarinushkin@birdec.tech>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/sound/pcm3060.txt
 +F:    sound/soc/codecs/pcm3060*
 +
  TI TAS571X FAMILY ASoC CODEC DRIVER
  M:    Kevin Cernekee <cernekee@chromium.org>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
@@@ -15499,12 -15280,6 +15509,12 @@@ F: Documentation/driver-api/usb/typec_b
  F:    drivers/usb/typec/altmodes/
  F:    include/linux/usb/typec_altmode.h
  
 +USB TYPEC PORT CONTROLLER DRIVERS
 +M:    Guenter Roeck <linux@roeck-us.net>
 +L:    linux-usb@vger.kernel.org
 +S:    Maintained
 +F:    drivers/usb/typec/tcpm/
 +
  USB UHCI DRIVER
  M:    Alan Stern <stern@rowland.harvard.edu>
  L:    linux-usb@vger.kernel.org
@@@ -15579,27 -15354,13 +15589,27 @@@ F:        arch/x86/um
  F:    fs/hostfs/
  F:    fs/hppfs/
  
 +USERSPACE COPYIN/COPYOUT (UIOVEC)
 +M:    Alexander Viro <viro@zeniv.linux.org.uk>
 +S:    Maintained
 +F:    lib/iov_iter.c
 +F:    include/linux/uio.h
 +
 +USERSPACE DMA BUFFER DRIVER
 +M:    Gerd Hoffmann <kraxel@redhat.com>
 +S:    Maintained
 +L:    dri-devel@lists.freedesktop.org
 +F:    drivers/dma-buf/udmabuf.c
 +F:    include/uapi/linux/udmabuf.h
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +
  USERSPACE I/O (UIO)
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
  F:    Documentation/driver-api/uio-howto.rst
  F:    drivers/uio/
 -F:    include/linux/uio*.h
 +F:    include/linux/uio_driver.h
  
  UTIL-LINUX PACKAGE
  M:    Karel Zak <kzak@redhat.com>
@@@ -15622,7 -15383,7 +15632,7 @@@ S:   Maintaine
  UVESAFB DRIVER
  M:    Michal Januszewski <spock@gentoo.org>
  L:    linux-fbdev@vger.kernel.org
 -W:    http://dev.gentoo.org/~spock/projects/uvesafb/
 +W:    https://github.com/mjanusz/v86d
  S:    Maintained
  F:    Documentation/fb/uvesafb.txt
  F:    drivers/video/fbdev/uvesafb.*
@@@ -15723,7 -15484,7 +15733,7 @@@ M:   Marek Szyprowski <m.szyprowski@samsu
  M:    Kyungmin Park <kyungmin.park@samsung.com>
  L:    linux-media@vger.kernel.org
  S:    Maintained
 -F:    drivers/media/v4l2-core/videobuf2-*
 +F:    drivers/media/common/videobuf2/*
  F:    include/media/videobuf2-*
  
  VIMC VIRTUAL MEDIA CONTROLLER DRIVER
@@@ -15935,7 -15696,7 +15945,7 @@@ F:   include/linux/regulator
  
  VRF
  M:    David Ahern <dsa@cumulusnetworks.com>
 -M:    Shrijeet Mukherjee <shm@cumulusnetworks.com>
 +M:    Shrijeet Mukherjee <shrijeet@gmail.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/vrf.c
@@@ -16146,7 -15907,6 +16156,7 @@@ F:   net/x25
  X86 ARCHITECTURE (32-BIT AND 64-BIT)
  M:    Thomas Gleixner <tglx@linutronix.de>
  M:    Ingo Molnar <mingo@redhat.com>
 +M:    Borislav Petkov <bp@alien8.de>
  R:    "H. Peter Anvin" <hpa@zytor.com>
  M:    x86@kernel.org
  L:    linux-kernel@vger.kernel.org
@@@ -16175,15 -15935,6 +16185,15 @@@ M: Borislav Petkov <bp@alien8.de
  S:    Maintained
  F:    arch/x86/kernel/cpu/microcode/*
  
 +X86 MM
 +M:    Dave Hansen <dave.hansen@linux.intel.com>
 +M:    Andy Lutomirski <luto@kernel.org>
 +M:    Peter Zijlstra <peterz@infradead.org>
 +L:    linux-kernel@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/mm
 +S:    Maintained
 +F:    arch/x86/mm/
 +
  X86 PLATFORM DRIVERS
  M:    Darren Hart <dvhart@infradead.org>
  M:    Andy Shevchenko <andy@infradead.org>
@@@ -16200,17 -15951,6 +16210,17 @@@ T: git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    arch/x86/entry/vdso/
  
 +XARRAY
 +M:    Matthew Wilcox <willy@infradead.org>
 +L:    linux-fsdevel@vger.kernel.org
 +S:    Supported
 +F:    Documentation/core-api/xarray.rst
 +F:    lib/idr.c
 +F:    lib/xarray.c
 +F:    include/linux/idr.h
 +F:    include/linux/xarray.h
 +F:    tools/testing/radix-tree
 +
  XC2028/3028 TUNER DRIVER
  M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  L:    linux-media@vger.kernel.org
@@@ -128,7 -128,6 +128,7 @@@ config ARCH_MVEB
        select MVEBU_ICU
        select MVEBU_ODMI
        select MVEBU_PIC
 +      select MVEBU_SEI
        select OF_GPIO
        select PINCTRL
        select PINCTRL_ARMADA_37XX
@@@ -302,6 -301,7 +302,7 @@@ config ARCH_Z
  
  config ARCH_ZYNQMP
        bool "Xilinx ZynqMP Family"
+       select ZYNQMP_FIRMWARE
        help
          This enables support for Xilinx ZynqMP Family
  
diff --combined drivers/soc/qcom/apr.c
@@@ -87,7 -87,7 +87,7 @@@ static int apr_callback(struct rpmsg_de
        }
  
        if (hdr->pkt_size < APR_HDR_SIZE || hdr->pkt_size != len) {
-               dev_err(apr->dev, "APR: Wrong paket size\n");
+               dev_err(apr->dev, "APR: Wrong packet size\n");
                return -EINVAL;
        }
  
@@@ -219,9 -219,9 +219,9 @@@ static int apr_add_device(struct devic
        adev->domain_id = id->domain_id;
        adev->version = id->svc_version;
        if (np)
 -              strscpy(adev->name, np->name, APR_NAME_SIZE);
 +              snprintf(adev->name, APR_NAME_SIZE, "%pOFn", np);
        else
-               strncpy(adev->name, id->name, APR_NAME_SIZE);
+               strscpy(adev->name, id->name, APR_NAME_SIZE);
  
        dev_set_name(&adev->dev, "aprsvc:%s:%x:%x", adev->name,
                     id->domain_id, id->svc_id);
diff --combined drivers/soc/tegra/pmc.c
@@@ -33,6 -33,9 +33,9 @@@
  #include <linux/of_address.h>
  #include <linux/of_clk.h>
  #include <linux/of_platform.h>
+ #include <linux/pinctrl/pinctrl.h>
+ #include <linux/pinctrl/pinconf.h>
+ #include <linux/pinctrl/pinconf-generic.h>
  #include <linux/platform_device.h>
  #include <linux/pm_domain.h>
  #include <linux/reboot.h>
@@@ -45,6 -48,8 +48,8 @@@
  #include <soc/tegra/fuse.h>
  #include <soc/tegra/pmc.h>
  
+ #include <dt-bindings/pinctrl/pinctrl-tegra-io-pad.h>
  #define PMC_CNTRL                     0x0
  #define  PMC_CNTRL_INTR_POLARITY      BIT(17) /* inverts INTR polarity */
  #define  PMC_CNTRL_CPU_PWRREQ_OE      BIT(16) /* CPU pwr req enable */
@@@ -65,6 -70,8 +70,8 @@@
  
  #define PWRGATE_STATUS                        0x38
  
+ #define PMC_IMPL_E_33V_PWR            0x40
  #define PMC_PWR_DET                   0x48
  
  #define PMC_SCRATCH0_MODE_RECOVERY    BIT(31)
@@@ -135,6 -142,7 +142,7 @@@ struct tegra_io_pad_soc 
        enum tegra_io_pad id;
        unsigned int dpd;
        unsigned int voltage;
+       const char *name;
  };
  
  struct tegra_pmc_regs {
@@@ -154,10 -162,14 +162,14 @@@ struct tegra_pmc_soc 
        bool has_tsense_reset;
        bool has_gpu_clamps;
        bool needs_mbist_war;
+       bool has_impl_33v_pwr;
  
        const struct tegra_io_pad_soc *io_pads;
        unsigned int num_io_pads;
  
+       const struct pinctrl_pin_desc *pin_descs;
+       unsigned int num_pin_descs;
        const struct tegra_pmc_regs *regs;
        void (*init)(struct tegra_pmc *pmc);
        void (*setup_irq_polarity)(struct tegra_pmc *pmc,
@@@ -216,6 -228,8 +228,8 @@@ struct tegra_pmc 
        DECLARE_BITMAP(powergates_available, TEGRA_POWERGATE_MAX);
  
        struct mutex powergates_lock;
+       struct pinctrl_dev *pctl_dev;
  };
  
  static struct tegra_pmc *pmc = &(struct tegra_pmc) {
@@@ -796,7 -810,7 +810,7 @@@ static void tegra_powergate_add(struct 
  
        id = tegra_powergate_lookup(pmc, np->name);
        if (id < 0) {
 -              pr_err("powergate lookup failed for %s: %d\n", np->name, id);
 +              pr_err("powergate lookup failed for %pOFn: %d\n", np, id);
                goto free_mem;
        }
  
  
        err = tegra_powergate_of_get_clks(pg, np);
        if (err < 0) {
 -              pr_err("failed to get clocks for %s: %d\n", np->name, err);
 +              pr_err("failed to get clocks for %pOFn: %d\n", np, err);
                goto set_available;
        }
  
        err = tegra_powergate_of_get_resets(pg, np, off);
        if (err < 0) {
 -              pr_err("failed to get resets for %s: %d\n", np->name, err);
 +              pr_err("failed to get resets for %pOFn: %d\n", np, err);
                goto remove_clks;
        }
  
  
        err = pm_genpd_init(&pg->genpd, NULL, off);
        if (err < 0) {
 -              pr_err("failed to initialise PM domain %s: %d\n", np->name,
 +              pr_err("failed to initialise PM domain %pOFn: %d\n", np,
                       err);
                goto remove_resets;
        }
  
        err = of_genpd_add_provider_simple(np, &pg->genpd);
        if (err < 0) {
 -              pr_err("failed to add PM domain provider for %s: %d\n",
 -                     np->name, err);
 +              pr_err("failed to add PM domain provider for %pOFn: %d\n",
 +                     np, err);
                goto remove_genpd;
        }
  
@@@ -919,11 -933,12 +933,12 @@@ tegra_io_pad_find(struct tegra_pmc *pmc
        return NULL;
  }
  
- static int tegra_io_pad_prepare(enum tegra_io_pad id, unsigned long *request,
-                               unsigned long *status, u32 *mask)
+ static int tegra_io_pad_get_dpd_register_bit(enum tegra_io_pad id,
+                                            unsigned long *request,
+                                            unsigned long *status,
+                                            u32 *mask)
  {
        const struct tegra_io_pad_soc *pad;
-       unsigned long rate, value;
  
        pad = tegra_io_pad_find(pmc, id);
        if (!pad) {
                *request = pmc->soc->regs->dpd2_req;
        }
  
+       return 0;
+ }
+ static int tegra_io_pad_prepare(enum tegra_io_pad id, unsigned long *request,
+                               unsigned long *status, u32 *mask)
+ {
+       unsigned long rate, value;
+       int err;
+       err = tegra_io_pad_get_dpd_register_bit(id, request, status, mask);
+       if (err)
+               return err;
        if (pmc->clk) {
                rate = clk_get_rate(pmc->clk);
                if (!rate) {
@@@ -1058,8 -1086,22 +1086,22 @@@ unlock
  }
  EXPORT_SYMBOL(tegra_io_pad_power_disable);
  
- int tegra_io_pad_set_voltage(enum tegra_io_pad id,
-                            enum tegra_io_pad_voltage voltage)
+ static int tegra_io_pad_is_powered(enum tegra_io_pad id)
+ {
+       unsigned long request, status;
+       u32 mask, value;
+       int err;
+       err = tegra_io_pad_get_dpd_register_bit(id, &request, &status, &mask);
+       if (err)
+               return err;
+       value = tegra_pmc_readl(status);
+       return !(value & mask);
+ }
+ static int tegra_io_pad_set_voltage(enum tegra_io_pad id, int voltage)
  {
        const struct tegra_io_pad_soc *pad;
        u32 value;
  
        mutex_lock(&pmc->powergates_lock);
  
-       /* write-enable PMC_PWR_DET_VALUE[pad->voltage] */
-       value = tegra_pmc_readl(PMC_PWR_DET);
-       value |= BIT(pad->voltage);
-       tegra_pmc_writel(value, PMC_PWR_DET);
+       if (pmc->soc->has_impl_33v_pwr) {
+               value = tegra_pmc_readl(PMC_IMPL_E_33V_PWR);
  
-       /* update I/O voltage */
-       value = tegra_pmc_readl(PMC_PWR_DET_VALUE);
+               if (voltage == TEGRA_IO_PAD_VOLTAGE_1V8)
+                       value &= ~BIT(pad->voltage);
+               else
+                       value |= BIT(pad->voltage);
  
-       if (voltage == TEGRA_IO_PAD_1800000UV)
-               value &= ~BIT(pad->voltage);
-       else
+               tegra_pmc_writel(value, PMC_IMPL_E_33V_PWR);
+       } else {
+               /* write-enable PMC_PWR_DET_VALUE[pad->voltage] */
+               value = tegra_pmc_readl(PMC_PWR_DET);
                value |= BIT(pad->voltage);
+               tegra_pmc_writel(value, PMC_PWR_DET);
  
-       tegra_pmc_writel(value, PMC_PWR_DET_VALUE);
+               /* update I/O voltage */
+               value = tegra_pmc_readl(PMC_PWR_DET_VALUE);
+               if (voltage == TEGRA_IO_PAD_VOLTAGE_1V8)
+                       value &= ~BIT(pad->voltage);
+               else
+                       value |= BIT(pad->voltage);
+               tegra_pmc_writel(value, PMC_PWR_DET_VALUE);
+       }
  
        mutex_unlock(&pmc->powergates_lock);
  
  
        return 0;
  }
- EXPORT_SYMBOL(tegra_io_pad_set_voltage);
  
- int tegra_io_pad_get_voltage(enum tegra_io_pad id)
static int tegra_io_pad_get_voltage(enum tegra_io_pad id)
  {
        const struct tegra_io_pad_soc *pad;
        u32 value;
        if (pad->voltage == UINT_MAX)
                return -ENOTSUPP;
  
-       value = tegra_pmc_readl(PMC_PWR_DET_VALUE);
+       if (pmc->soc->has_impl_33v_pwr)
+               value = tegra_pmc_readl(PMC_IMPL_E_33V_PWR);
+       else
+               value = tegra_pmc_readl(PMC_PWR_DET_VALUE);
  
        if ((value & BIT(pad->voltage)) == 0)
-               return TEGRA_IO_PAD_1800000UV;
+               return TEGRA_IO_PAD_VOLTAGE_1V8;
  
-       return TEGRA_IO_PAD_3300000UV;
+       return TEGRA_IO_PAD_VOLTAGE_3V3;
  }
- EXPORT_SYMBOL(tegra_io_pad_get_voltage);
  
  /**
   * tegra_io_rail_power_on() - enable power to I/O rail
@@@ -1288,7 -1342,7 +1342,7 @@@ static void tegra_pmc_init_tsense_reset
        if (!pmc->soc->has_tsense_reset)
                return;
  
-       np = of_find_node_by_name(pmc->dev->of_node, "i2c-thermtrip");
+       np = of_get_child_by_name(pmc->dev->of_node, "i2c-thermtrip");
        if (!np) {
                dev_warn(dev, "i2c-thermtrip node not found, %s.\n", disabled);
                return;
        of_node_put(np);
  }
  
+ static int tegra_io_pad_pinctrl_get_groups_count(struct pinctrl_dev *pctl_dev)
+ {
+       return pmc->soc->num_io_pads;
+ }
+ static const char *tegra_io_pad_pinctrl_get_group_name(
+               struct pinctrl_dev *pctl, unsigned int group)
+ {
+       return pmc->soc->io_pads[group].name;
+ }
+ static int tegra_io_pad_pinctrl_get_group_pins(struct pinctrl_dev *pctl_dev,
+                                              unsigned int group,
+                                              const unsigned int **pins,
+                                              unsigned int *num_pins)
+ {
+       *pins = &pmc->soc->io_pads[group].id;
+       *num_pins = 1;
+       return 0;
+ }
+ static const struct pinctrl_ops tegra_io_pad_pinctrl_ops = {
+       .get_groups_count = tegra_io_pad_pinctrl_get_groups_count,
+       .get_group_name = tegra_io_pad_pinctrl_get_group_name,
+       .get_group_pins = tegra_io_pad_pinctrl_get_group_pins,
+       .dt_node_to_map = pinconf_generic_dt_node_to_map_pin,
+       .dt_free_map = pinconf_generic_dt_free_map,
+ };
+ static int tegra_io_pad_pinconf_get(struct pinctrl_dev *pctl_dev,
+                                   unsigned int pin, unsigned long *config)
+ {
+       const struct tegra_io_pad_soc *pad = tegra_io_pad_find(pmc, pin);
+       enum pin_config_param param = pinconf_to_config_param(*config);
+       int ret;
+       u32 arg;
+       if (!pad)
+               return -EINVAL;
+       switch (param) {
+       case PIN_CONFIG_POWER_SOURCE:
+               ret = tegra_io_pad_get_voltage(pad->id);
+               if (ret < 0)
+                       return ret;
+               arg = ret;
+               break;
+       case PIN_CONFIG_LOW_POWER_MODE:
+               ret = tegra_io_pad_is_powered(pad->id);
+               if (ret < 0)
+                       return ret;
+               arg = !ret;
+               break;
+       default:
+               return -EINVAL;
+       }
+       *config = pinconf_to_config_packed(param, arg);
+       return 0;
+ }
+ static int tegra_io_pad_pinconf_set(struct pinctrl_dev *pctl_dev,
+                                   unsigned int pin, unsigned long *configs,
+                                   unsigned int num_configs)
+ {
+       const struct tegra_io_pad_soc *pad = tegra_io_pad_find(pmc, pin);
+       enum pin_config_param param;
+       unsigned int i;
+       int err;
+       u32 arg;
+       if (!pad)
+               return -EINVAL;
+       for (i = 0; i < num_configs; ++i) {
+               param = pinconf_to_config_param(configs[i]);
+               arg = pinconf_to_config_argument(configs[i]);
+               switch (param) {
+               case PIN_CONFIG_LOW_POWER_MODE:
+                       if (arg)
+                               err = tegra_io_pad_power_disable(pad->id);
+                       else
+                               err = tegra_io_pad_power_enable(pad->id);
+                       if (err)
+                               return err;
+                       break;
+               case PIN_CONFIG_POWER_SOURCE:
+                       if (arg != TEGRA_IO_PAD_VOLTAGE_1V8 &&
+                           arg != TEGRA_IO_PAD_VOLTAGE_3V3)
+                               return -EINVAL;
+                       err = tegra_io_pad_set_voltage(pad->id, arg);
+                       if (err)
+                               return err;
+                       break;
+               default:
+                       return -EINVAL;
+               }
+       }
+       return 0;
+ }
+ static const struct pinconf_ops tegra_io_pad_pinconf_ops = {
+       .pin_config_get = tegra_io_pad_pinconf_get,
+       .pin_config_set = tegra_io_pad_pinconf_set,
+       .is_generic = true,
+ };
+ static struct pinctrl_desc tegra_pmc_pctl_desc = {
+       .pctlops = &tegra_io_pad_pinctrl_ops,
+       .confops = &tegra_io_pad_pinconf_ops,
+ };
+ static int tegra_pmc_pinctrl_init(struct tegra_pmc *pmc)
+ {
+       int err = 0;
+       if (!pmc->soc->num_pin_descs)
+               return 0;
+       tegra_pmc_pctl_desc.name = dev_name(pmc->dev);
+       tegra_pmc_pctl_desc.pins = pmc->soc->pin_descs;
+       tegra_pmc_pctl_desc.npins = pmc->soc->num_pin_descs;
+       pmc->pctl_dev = devm_pinctrl_register(pmc->dev, &tegra_pmc_pctl_desc,
+                                             pmc);
+       if (IS_ERR(pmc->pctl_dev)) {
+               err = PTR_ERR(pmc->pctl_dev);
+               dev_err(pmc->dev, "unable to register pinctrl, %d\n", err);
+       }
+       return err;
+ }
  static int tegra_pmc_probe(struct platform_device *pdev)
  {
        void __iomem *base;
  
        err = register_restart_handler(&tegra_pmc_restart_handler);
        if (err) {
-               debugfs_remove(pmc->debugfs);
                dev_err(&pdev->dev, "unable to register restart handler, %d\n",
                        err);
-               return err;
+               goto cleanup_debugfs;
        }
  
+       err = tegra_pmc_pinctrl_init(pmc);
+       if (err)
+               goto cleanup_restart_handler;
        mutex_lock(&pmc->powergates_lock);
        iounmap(pmc->base);
        pmc->base = base;
        mutex_unlock(&pmc->powergates_lock);
  
        return 0;
+ cleanup_restart_handler:
+       unregister_restart_handler(&tegra_pmc_restart_handler);
+ cleanup_debugfs:
+       debugfs_remove(pmc->debugfs);
+       return err;
  }
  
  #if defined(CONFIG_PM_SLEEP) && defined(CONFIG_ARM)
@@@ -1531,6 -1730,8 +1730,8 @@@ static const struct tegra_pmc_soc tegra
        .has_gpu_clamps = false,
        .num_io_pads = 0,
        .io_pads = NULL,
+       .num_pin_descs = 0,
+       .pin_descs = NULL,
        .regs = &tegra20_pmc_regs,
        .init = tegra20_pmc_init,
        .setup_irq_polarity = tegra20_pmc_setup_irq_polarity,
@@@ -1567,8 -1768,11 +1768,11 @@@ static const struct tegra_pmc_soc tegra
        .cpu_powergates = tegra30_cpu_powergates,
        .has_tsense_reset = true,
        .has_gpu_clamps = false,
+       .has_impl_33v_pwr = false,
        .num_io_pads = 0,
        .io_pads = NULL,
+       .num_pin_descs = 0,
+       .pin_descs = NULL,
        .regs = &tegra20_pmc_regs,
        .init = tegra20_pmc_init,
        .setup_irq_polarity = tegra20_pmc_setup_irq_polarity,
@@@ -1609,8 -1813,11 +1813,11 @@@ static const struct tegra_pmc_soc tegra
        .cpu_powergates = tegra114_cpu_powergates,
        .has_tsense_reset = true,
        .has_gpu_clamps = false,
+       .has_impl_33v_pwr = false,
        .num_io_pads = 0,
        .io_pads = NULL,
+       .num_pin_descs = 0,
+       .pin_descs = NULL,
        .regs = &tegra20_pmc_regs,
        .init = tegra20_pmc_init,
        .setup_irq_polarity = tegra20_pmc_setup_irq_polarity,
@@@ -1649,37 -1856,59 +1856,59 @@@ static const u8 tegra124_cpu_powergates
        TEGRA_POWERGATE_CPU3,
  };
  
+ #define TEGRA_IO_PAD(_id, _dpd, _voltage, _name)      \
+       ((struct tegra_io_pad_soc) {                    \
+               .id     = (_id),                        \
+               .dpd    = (_dpd),                       \
+               .voltage = (_voltage),                  \
+               .name   = (_name),                      \
+       })
+ #define TEGRA_IO_PIN_DESC(_id, _dpd, _voltage, _name) \
+       ((struct pinctrl_pin_desc) {                    \
+               .number = (_id),                        \
+               .name   = (_name)                       \
+       })
+ #define TEGRA124_IO_PAD_TABLE(_pad)                                   \
+       /* .id                          .dpd    .voltage  .name */      \
+       _pad(TEGRA_IO_PAD_AUDIO,        17,     UINT_MAX, "audio"),     \
+       _pad(TEGRA_IO_PAD_BB,           15,     UINT_MAX, "bb"),        \
+       _pad(TEGRA_IO_PAD_CAM,          36,     UINT_MAX, "cam"),       \
+       _pad(TEGRA_IO_PAD_COMP,         22,     UINT_MAX, "comp"),      \
+       _pad(TEGRA_IO_PAD_CSIA,         0,      UINT_MAX, "csia"),      \
+       _pad(TEGRA_IO_PAD_CSIB,         1,      UINT_MAX, "csb"),       \
+       _pad(TEGRA_IO_PAD_CSIE,         44,     UINT_MAX, "cse"),       \
+       _pad(TEGRA_IO_PAD_DSI,          2,      UINT_MAX, "dsi"),       \
+       _pad(TEGRA_IO_PAD_DSIB,         39,     UINT_MAX, "dsib"),      \
+       _pad(TEGRA_IO_PAD_DSIC,         40,     UINT_MAX, "dsic"),      \
+       _pad(TEGRA_IO_PAD_DSID,         41,     UINT_MAX, "dsid"),      \
+       _pad(TEGRA_IO_PAD_HDMI,         28,     UINT_MAX, "hdmi"),      \
+       _pad(TEGRA_IO_PAD_HSIC,         19,     UINT_MAX, "hsic"),      \
+       _pad(TEGRA_IO_PAD_HV,           38,     UINT_MAX, "hv"),        \
+       _pad(TEGRA_IO_PAD_LVDS,         57,     UINT_MAX, "lvds"),      \
+       _pad(TEGRA_IO_PAD_MIPI_BIAS,    3,      UINT_MAX, "mipi-bias"), \
+       _pad(TEGRA_IO_PAD_NAND,         13,     UINT_MAX, "nand"),      \
+       _pad(TEGRA_IO_PAD_PEX_BIAS,     4,      UINT_MAX, "pex-bias"),  \
+       _pad(TEGRA_IO_PAD_PEX_CLK1,     5,      UINT_MAX, "pex-clk1"),  \
+       _pad(TEGRA_IO_PAD_PEX_CLK2,     6,      UINT_MAX, "pex-clk2"),  \
+       _pad(TEGRA_IO_PAD_PEX_CNTRL,    32,     UINT_MAX, "pex-cntrl"), \
+       _pad(TEGRA_IO_PAD_SDMMC1,       33,     UINT_MAX, "sdmmc1"),    \
+       _pad(TEGRA_IO_PAD_SDMMC3,       34,     UINT_MAX, "sdmmc3"),    \
+       _pad(TEGRA_IO_PAD_SDMMC4,       35,     UINT_MAX, "sdmmc4"),    \
+       _pad(TEGRA_IO_PAD_SYS_DDC,      58,     UINT_MAX, "sys_ddc"),   \
+       _pad(TEGRA_IO_PAD_UART,         14,     UINT_MAX, "uart"),      \
+       _pad(TEGRA_IO_PAD_USB0,         9,      UINT_MAX, "usb0"),      \
+       _pad(TEGRA_IO_PAD_USB1,         10,     UINT_MAX, "usb1"),      \
+       _pad(TEGRA_IO_PAD_USB2,         11,     UINT_MAX, "usb2"),      \
+       _pad(TEGRA_IO_PAD_USB_BIAS,     12,     UINT_MAX, "usb_bias")
  static const struct tegra_io_pad_soc tegra124_io_pads[] = {
-       { .id = TEGRA_IO_PAD_AUDIO, .dpd = 17, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_BB, .dpd = 15, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_CAM, .dpd = 36, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_COMP, .dpd = 22, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_CSIA, .dpd = 0, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_CSIB, .dpd = 1, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_CSIE, .dpd = 44, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_DSI, .dpd = 2, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_DSIB, .dpd = 39, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_DSIC, .dpd = 40, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_DSID, .dpd = 41, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_HDMI, .dpd = 28, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_HSIC, .dpd = 19, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_HV, .dpd = 38, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_LVDS, .dpd = 57, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_MIPI_BIAS, .dpd = 3, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_NAND, .dpd = 13, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_PEX_BIAS, .dpd = 4, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_PEX_CLK1, .dpd = 5, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_PEX_CLK2, .dpd = 6, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_PEX_CNTRL, .dpd = 32, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_SDMMC1, .dpd = 33, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_SDMMC3, .dpd = 34, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_SDMMC4, .dpd = 35, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_SYS_DDC, .dpd = 58, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_UART, .dpd = 14, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_USB0, .dpd = 9, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_USB1, .dpd = 10, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_USB2, .dpd = 11, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_USB_BIAS, .dpd = 12, .voltage = UINT_MAX },
+       TEGRA124_IO_PAD_TABLE(TEGRA_IO_PAD)
+ };
+ static const struct pinctrl_pin_desc tegra124_pin_descs[] = {
+       TEGRA124_IO_PAD_TABLE(TEGRA_IO_PIN_DESC)
  };
  
  static const struct tegra_pmc_soc tegra124_pmc_soc = {
        .cpu_powergates = tegra124_cpu_powergates,
        .has_tsense_reset = true,
        .has_gpu_clamps = true,
+       .has_impl_33v_pwr = false,
        .num_io_pads = ARRAY_SIZE(tegra124_io_pads),
        .io_pads = tegra124_io_pads,
+       .num_pin_descs = ARRAY_SIZE(tegra124_pin_descs),
+       .pin_descs = tegra124_pin_descs,
        .regs = &tegra20_pmc_regs,
        .init = tegra20_pmc_init,
        .setup_irq_polarity = tegra20_pmc_setup_irq_polarity,
@@@ -1730,45 -1962,53 +1962,53 @@@ static const u8 tegra210_cpu_powergates
        TEGRA_POWERGATE_CPU3,
  };
  
+ #define TEGRA210_IO_PAD_TABLE(_pad)                                      \
+       /*   .id                        .dpd     .voltage  .name */        \
+       _pad(TEGRA_IO_PAD_AUDIO,       17,       5,        "audio"),       \
+       _pad(TEGRA_IO_PAD_AUDIO_HV,    61,       18,       "audio-hv"),    \
+       _pad(TEGRA_IO_PAD_CAM,         36,       10,       "cam"),         \
+       _pad(TEGRA_IO_PAD_CSIA,        0,        UINT_MAX, "csia"),        \
+       _pad(TEGRA_IO_PAD_CSIB,        1,        UINT_MAX, "csib"),        \
+       _pad(TEGRA_IO_PAD_CSIC,        42,       UINT_MAX, "csic"),        \
+       _pad(TEGRA_IO_PAD_CSID,        43,       UINT_MAX, "csid"),        \
+       _pad(TEGRA_IO_PAD_CSIE,        44,       UINT_MAX, "csie"),        \
+       _pad(TEGRA_IO_PAD_CSIF,        45,       UINT_MAX, "csif"),        \
+       _pad(TEGRA_IO_PAD_DBG,         25,       19,       "dbg"),         \
+       _pad(TEGRA_IO_PAD_DEBUG_NONAO, 26,       UINT_MAX, "debug-nonao"), \
+       _pad(TEGRA_IO_PAD_DMIC,        50,       20,       "dmic"),        \
+       _pad(TEGRA_IO_PAD_DP,          51,       UINT_MAX, "dp"),          \
+       _pad(TEGRA_IO_PAD_DSI,         2,        UINT_MAX, "dsi"),         \
+       _pad(TEGRA_IO_PAD_DSIB,        39,       UINT_MAX, "dsib"),        \
+       _pad(TEGRA_IO_PAD_DSIC,        40,       UINT_MAX, "dsic"),        \
+       _pad(TEGRA_IO_PAD_DSID,        41,       UINT_MAX, "dsid"),        \
+       _pad(TEGRA_IO_PAD_EMMC,        35,       UINT_MAX, "emmc"),        \
+       _pad(TEGRA_IO_PAD_EMMC2,       37,       UINT_MAX, "emmc2"),       \
+       _pad(TEGRA_IO_PAD_GPIO,        27,       21,       "gpio"),        \
+       _pad(TEGRA_IO_PAD_HDMI,        28,       UINT_MAX, "hdmi"),        \
+       _pad(TEGRA_IO_PAD_HSIC,        19,       UINT_MAX, "hsic"),        \
+       _pad(TEGRA_IO_PAD_LVDS,        57,       UINT_MAX, "lvds"),        \
+       _pad(TEGRA_IO_PAD_MIPI_BIAS,   3,        UINT_MAX, "mipi-bias"),   \
+       _pad(TEGRA_IO_PAD_PEX_BIAS,    4,        UINT_MAX, "pex-bias"),    \
+       _pad(TEGRA_IO_PAD_PEX_CLK1,    5,        UINT_MAX, "pex-clk1"),    \
+       _pad(TEGRA_IO_PAD_PEX_CLK2,    6,        UINT_MAX, "pex-clk2"),    \
+       _pad(TEGRA_IO_PAD_PEX_CNTRL,   UINT_MAX, 11,       "pex-cntrl"),   \
+       _pad(TEGRA_IO_PAD_SDMMC1,      33,       12,       "sdmmc1"),      \
+       _pad(TEGRA_IO_PAD_SDMMC3,      34,       13,       "sdmmc3"),      \
+       _pad(TEGRA_IO_PAD_SPI,         46,       22,       "spi"),         \
+       _pad(TEGRA_IO_PAD_SPI_HV,      47,       23,       "spi-hv"),      \
+       _pad(TEGRA_IO_PAD_UART,        14,       2,        "uart"),        \
+       _pad(TEGRA_IO_PAD_USB0,        9,        UINT_MAX, "usb0"),        \
+       _pad(TEGRA_IO_PAD_USB1,        10,       UINT_MAX, "usb1"),        \
+       _pad(TEGRA_IO_PAD_USB2,        11,       UINT_MAX, "usb2"),        \
+       _pad(TEGRA_IO_PAD_USB3,        18,       UINT_MAX, "usb3"),        \
+       _pad(TEGRA_IO_PAD_USB_BIAS,    12,       UINT_MAX, "usb-bias")
  static const struct tegra_io_pad_soc tegra210_io_pads[] = {
-       { .id = TEGRA_IO_PAD_AUDIO, .dpd = 17, .voltage = 5 },
-       { .id = TEGRA_IO_PAD_AUDIO_HV, .dpd = 61, .voltage = 18 },
-       { .id = TEGRA_IO_PAD_CAM, .dpd = 36, .voltage = 10 },
-       { .id = TEGRA_IO_PAD_CSIA, .dpd = 0, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_CSIB, .dpd = 1, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_CSIC, .dpd = 42, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_CSID, .dpd = 43, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_CSIE, .dpd = 44, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_CSIF, .dpd = 45, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_DBG, .dpd = 25, .voltage = 19 },
-       { .id = TEGRA_IO_PAD_DEBUG_NONAO, .dpd = 26, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_DMIC, .dpd = 50, .voltage = 20 },
-       { .id = TEGRA_IO_PAD_DP, .dpd = 51, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_DSI, .dpd = 2, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_DSIB, .dpd = 39, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_DSIC, .dpd = 40, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_DSID, .dpd = 41, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_EMMC, .dpd = 35, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_EMMC2, .dpd = 37, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_GPIO, .dpd = 27, .voltage = 21 },
-       { .id = TEGRA_IO_PAD_HDMI, .dpd = 28, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_HSIC, .dpd = 19, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_LVDS, .dpd = 57, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_MIPI_BIAS, .dpd = 3, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_PEX_BIAS, .dpd = 4, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_PEX_CLK1, .dpd = 5, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_PEX_CLK2, .dpd = 6, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_PEX_CNTRL, .dpd = UINT_MAX, .voltage = 11 },
-       { .id = TEGRA_IO_PAD_SDMMC1, .dpd = 33, .voltage = 12 },
-       { .id = TEGRA_IO_PAD_SDMMC3, .dpd = 34, .voltage = 13 },
-       { .id = TEGRA_IO_PAD_SPI, .dpd = 46, .voltage = 22 },
-       { .id = TEGRA_IO_PAD_SPI_HV, .dpd = 47, .voltage = 23 },
-       { .id = TEGRA_IO_PAD_UART, .dpd = 14, .voltage = 2 },
-       { .id = TEGRA_IO_PAD_USB0, .dpd = 9, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_USB1, .dpd = 10, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_USB2, .dpd = 11, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_USB3, .dpd = 18, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_USB_BIAS, .dpd = 12, .voltage = UINT_MAX },
+       TEGRA210_IO_PAD_TABLE(TEGRA_IO_PAD)
+ };
+ static const struct pinctrl_pin_desc tegra210_pin_descs[] = {
+       TEGRA210_IO_PAD_TABLE(TEGRA_IO_PIN_DESC)
  };
  
  static const struct tegra_pmc_soc tegra210_pmc_soc = {
        .cpu_powergates = tegra210_cpu_powergates,
        .has_tsense_reset = true,
        .has_gpu_clamps = true,
+       .has_impl_33v_pwr = false,
        .needs_mbist_war = true,
        .num_io_pads = ARRAY_SIZE(tegra210_io_pads),
        .io_pads = tegra210_io_pads,
+       .num_pin_descs = ARRAY_SIZE(tegra210_pin_descs),
+       .pin_descs = tegra210_pin_descs,
        .regs = &tegra20_pmc_regs,
        .init = tegra20_pmc_init,
        .setup_irq_polarity = tegra20_pmc_setup_irq_polarity,
  };
  
+ #define TEGRA186_IO_PAD_TABLE(_pad)                                        \
+       /*   .id                        .dpd      .voltage  .name */         \
+       _pad(TEGRA_IO_PAD_CSIA,         0,        UINT_MAX, "csia"),         \
+       _pad(TEGRA_IO_PAD_CSIB,         1,        UINT_MAX, "csib"),         \
+       _pad(TEGRA_IO_PAD_DSI,          2,        UINT_MAX, "dsi"),          \
+       _pad(TEGRA_IO_PAD_MIPI_BIAS,    3,        UINT_MAX, "mipi-bias"),    \
+       _pad(TEGRA_IO_PAD_PEX_CLK_BIAS, 4,        UINT_MAX, "pex-clk-bias"), \
+       _pad(TEGRA_IO_PAD_PEX_CLK3,     5,        UINT_MAX, "pex-clk3"),     \
+       _pad(TEGRA_IO_PAD_PEX_CLK2,     6,        UINT_MAX, "pex-clk2"),     \
+       _pad(TEGRA_IO_PAD_PEX_CLK1,     7,        UINT_MAX, "pex-clk1"),     \
+       _pad(TEGRA_IO_PAD_USB0,         9,        UINT_MAX, "usb0"),         \
+       _pad(TEGRA_IO_PAD_USB1,         10,       UINT_MAX, "usb1"),         \
+       _pad(TEGRA_IO_PAD_USB2,         11,       UINT_MAX, "usb2"),         \
+       _pad(TEGRA_IO_PAD_USB_BIAS,     12,       UINT_MAX, "usb-bias"),     \
+       _pad(TEGRA_IO_PAD_UART,         14,       UINT_MAX, "uart"),         \
+       _pad(TEGRA_IO_PAD_AUDIO,        17,       UINT_MAX, "audio"),        \
+       _pad(TEGRA_IO_PAD_HSIC,         19,       UINT_MAX, "hsic"),         \
+       _pad(TEGRA_IO_PAD_DBG,          25,       UINT_MAX, "dbg"),          \
+       _pad(TEGRA_IO_PAD_HDMI_DP0,     28,       UINT_MAX, "hdmi-dp0"),     \
+       _pad(TEGRA_IO_PAD_HDMI_DP1,     29,       UINT_MAX, "hdmi-dp1"),     \
+       _pad(TEGRA_IO_PAD_PEX_CNTRL,    32,       UINT_MAX, "pex-cntrl"),    \
+       _pad(TEGRA_IO_PAD_SDMMC2_HV,    34,       5,        "sdmmc2-hv"),    \
+       _pad(TEGRA_IO_PAD_SDMMC4,       36,       UINT_MAX, "sdmmc4"),       \
+       _pad(TEGRA_IO_PAD_CAM,          38,       UINT_MAX, "cam"),          \
+       _pad(TEGRA_IO_PAD_DSIB,         40,       UINT_MAX, "dsib"),         \
+       _pad(TEGRA_IO_PAD_DSIC,         41,       UINT_MAX, "dsic"),         \
+       _pad(TEGRA_IO_PAD_DSID,         42,       UINT_MAX, "dsid"),         \
+       _pad(TEGRA_IO_PAD_CSIC,         43,       UINT_MAX, "csic"),         \
+       _pad(TEGRA_IO_PAD_CSID,         44,       UINT_MAX, "csid"),         \
+       _pad(TEGRA_IO_PAD_CSIE,         45,       UINT_MAX, "csie"),         \
+       _pad(TEGRA_IO_PAD_CSIF,         46,       UINT_MAX, "csif"),         \
+       _pad(TEGRA_IO_PAD_SPI,          47,       UINT_MAX, "spi"),          \
+       _pad(TEGRA_IO_PAD_UFS,          49,       UINT_MAX, "ufs"),          \
+       _pad(TEGRA_IO_PAD_DMIC_HV,      52,       2,        "dmic-hv"),      \
+       _pad(TEGRA_IO_PAD_EDP,          53,       UINT_MAX, "edp"),          \
+       _pad(TEGRA_IO_PAD_SDMMC1_HV,    55,       4,        "sdmmc1-hv"),    \
+       _pad(TEGRA_IO_PAD_SDMMC3_HV,    56,       6,        "sdmmc3-hv"),    \
+       _pad(TEGRA_IO_PAD_CONN,         60,       UINT_MAX, "conn"),         \
+       _pad(TEGRA_IO_PAD_AUDIO_HV,     61,       1,        "audio-hv"),     \
+       _pad(TEGRA_IO_PAD_AO_HV,        UINT_MAX, 0,        "ao-hv")
  static const struct tegra_io_pad_soc tegra186_io_pads[] = {
-       { .id = TEGRA_IO_PAD_CSIA, .dpd = 0, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_CSIB, .dpd = 1, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_DSI, .dpd = 2, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_MIPI_BIAS, .dpd = 3, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_PEX_CLK_BIAS, .dpd = 4, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_PEX_CLK3, .dpd = 5, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_PEX_CLK2, .dpd = 6, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_PEX_CLK1, .dpd = 7, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_USB0, .dpd = 9, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_USB1, .dpd = 10, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_USB2, .dpd = 11, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_USB_BIAS, .dpd = 12, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_UART, .dpd = 14, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_AUDIO, .dpd = 17, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_HSIC, .dpd = 19, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_DBG, .dpd = 25, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_HDMI_DP0, .dpd = 28, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_HDMI_DP1, .dpd = 29, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_PEX_CNTRL, .dpd = 32, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_SDMMC2_HV, .dpd = 34, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_SDMMC4, .dpd = 36, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_CAM, .dpd = 38, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_DSIB, .dpd = 40, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_DSIC, .dpd = 41, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_DSID, .dpd = 42, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_CSIC, .dpd = 43, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_CSID, .dpd = 44, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_CSIE, .dpd = 45, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_CSIF, .dpd = 46, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_SPI, .dpd = 47, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_UFS, .dpd = 49, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_DMIC_HV, .dpd = 52, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_EDP, .dpd = 53, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_SDMMC1_HV, .dpd = 55, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_SDMMC3_HV, .dpd = 56, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_CONN, .dpd = 60, .voltage = UINT_MAX },
-       { .id = TEGRA_IO_PAD_AUDIO_HV, .dpd = 61, .voltage = UINT_MAX },
+       TEGRA186_IO_PAD_TABLE(TEGRA_IO_PAD)
+ };
+ static const struct pinctrl_pin_desc tegra186_pin_descs[] = {
+       TEGRA186_IO_PAD_TABLE(TEGRA_IO_PIN_DESC)
  };
  
  static const struct tegra_pmc_regs tegra186_pmc_regs = {
@@@ -1876,8 -2128,11 +2128,11 @@@ static const struct tegra_pmc_soc tegra
        .cpu_powergates = NULL,
        .has_tsense_reset = false,
        .has_gpu_clamps = false,
+       .has_impl_33v_pwr = true,
        .num_io_pads = ARRAY_SIZE(tegra186_io_pads),
        .io_pads = tegra186_io_pads,
+       .num_pin_descs = ARRAY_SIZE(tegra186_pin_descs),
+       .pin_descs = tegra186_pin_descs,
        .regs = &tegra186_pmc_regs,
        .init = NULL,
        .setup_irq_polarity = tegra186_pmc_setup_irq_polarity,
@@@ -438,7 -438,7 +438,7 @@@ void *knav_dma_open_channel(struct devi
  
        chan_num = of_channel_match_helper(dev->of_node, name, &instance);
        if (chan_num < 0) {
-               dev_err(kdev->dev, "No DMA instace with name %s\n", name);
+               dev_err(kdev->dev, "No DMA instance with name %s\n", name);
                return (void *)-EINVAL;
        }
  
                }
        }
        if (!found) {
-               dev_err(kdev->dev, "No DMA instace with name %s\n", instance);
+               dev_err(kdev->dev, "No DMA instance with name %s\n", instance);
                return (void *)-EINVAL;
        }
  
@@@ -544,15 -544,15 +544,15 @@@ static void __iomem *pktdma_get_regs(st
  
        ret = of_address_to_resource(node, index, &res);
        if (ret) {
 -              dev_err(dev, "Can't translate of node(%s) address for index(%d)\n",
 -                      node->name, index);
 +              dev_err(dev, "Can't translate of node(%pOFn) address for index(%d)\n",
 +                      node, index);
                return ERR_PTR(ret);
        }
  
        regs = devm_ioremap_resource(kdev->dev, &res);
        if (IS_ERR(regs))
 -              dev_err(dev, "Failed to map register base for index(%d) node(%s)\n",
 -                      index, node->name);
 +              dev_err(dev, "Failed to map register base for index(%d) node(%pOFn)\n",
 +                      index, node);
        if (_size)
                *_size = resource_size(&res);