]> Git Repo - J-linux.git/commitdiff
Merge tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
authorLinus Torvalds <[email protected]>
Mon, 29 Oct 2018 22:16:01 +0000 (15:16 -0700)
committerLinus Torvalds <[email protected]>
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
index 2c7a9b3544ffb93eb455e92b7ea56b2dc23bc94b,427210ee7035d1e955f459531822eadacc837ea9..85365afe30598013ead89e288a68a16def2e86eb
@@@ -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 <[email protected]>
 +M:    Matthew Wilcox <[email protected]>
  M:    Hannes Reinecke <[email protected]>
  L:    [email protected]
  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 <[email protected]>
 +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 <[email protected]>
  L:    [email protected]
@@@ -848,7 -840,7 +848,7 @@@ ANALOG DEVICES INC ADGS1408 DRIVE
  M:    Mircea Caprioru <[email protected]>
  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 <[email protected]>
@@@ -941,7 -933,6 +941,7 @@@ M: Greg Kroah-Hartman <gregkh@linuxfoun
  M:    Arve Hjønnevåg <[email protected]>
  M:    Todd Kjos <[email protected]>
  M:    Martijn Coenen <[email protected]>
 +M:    Joel Fernandes <[email protected]>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
  L:    [email protected]
  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:      [email protected]
  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 <[email protected]
  L:    [email protected] (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 <[email protected]>
 -M:    Harish Patil <[email protected]>
  M:    [email protected]
  L:    [email protected]
  S:    Supported
@@@ -2986,7 -2979,6 +2988,7 @@@ F:      drivers/scsi/bnx2i
  
  BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER
  M:    Ariel Elior <[email protected]>
 +M:    Sudarsana Kalluru <[email protected]>
  M:    [email protected]
  L:    [email protected]
  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 <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +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 <[email protected]>
  L:    [email protected]
@@@ -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 <[email protected]>
 +M:    [email protected]
 +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 <[email protected]>
  L:    [email protected]
@@@ -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 <[email protected]>
 +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 <[email protected]>
  M:    Aurelien Jacquiot <[email protected]>
@@@ -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 <[email protected]>
 +S:    Supported
 +F:    Documentation/process/code-of-conduct.rst
 +F:    Documentation/process/code-of-conduct-interpretation.rst
 +
  COMMON CLK FRAMEWORK
  M:    Michael Turquette <[email protected]>
  M:    Stephen Boyd <[email protected]>
@@@ -4074,7 -4034,7 +4076,7 @@@ M:      Uma Krishnan <[email protected]
  L:    [email protected]
  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 <[email protected]>
  L:    [email protected]
  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 <[email protected]>
@@@ -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" <[email protected]>
 +S:    Maintained
 +F:    drivers/net/fddi/defza.*
 +
  DELL LAPTOP DRIVER
  M:    Matthew Garrett <[email protected]>
  M:    Pali Rohár <[email protected]>
  S:    Maintained
  F:    drivers/gpio/gpio-gpio-mm.c
  
 -DIGI NEO AND CLASSIC PCI PRODUCTS
 -M:    Lidza Louina <[email protected]>
 -M:    Mark Hounschell <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    drivers/staging/dgnc/
 -
  DIOLAN U2C-12 I2C DRIVER
  M:    Guenter Roeck <[email protected]>
  L:    [email protected]
@@@ -4404,7 -4366,7 +4406,7 @@@ S:      Maintaine
  F:    drivers/i2c/busses/i2c-diolan-u2c.c
  
  FILESYSTEM DIRECT ACCESS (DAX)
 -M:    Matthew Wilcox <[email protected]>
 +M:    Matthew Wilcox <[email protected]>
  M:    Ross Zwisler <[email protected]>
  M:    Jan Kara <[email protected]>
  L:    [email protected]
@@@ -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
  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 <[email protected]>
  L:    [email protected]
  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" <[email protected]>
@@@ -4571,13 -4530,9 +4573,13 @@@ F:    drivers/soc/fsl/dpi
  
  DPAA2 ETHERNET DRIVER
  M:    Ioana Radulescu <[email protected]>
 -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 <[email protected]>
@@@ -4588,10 -4543,9 +4590,10 @@@ F:    drivers/staging/fsl-dpaa2/eths
  
  DPAA2 PTP CLOCK DRIVER
  M:    Yangbo Lu <[email protected]>
 -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 <[email protected]>
@@@ -4769,11 -4723,8 +4771,11 @@@ F:    drivers/gpu/drm/tdfx
  
  DRM DRIVER FOR USB DISPLAYLINK VIDEO ADAPTERS
  M:    Dave Airlie <[email protected]>
 +R:    Sean Paul <[email protected]>
 +L:    [email protected]
  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" <[email protected]>
@@@ -4803,8 -4754,8 +4805,8 @@@ F:      include/uapi/drm
  F:    include/linux/vga*
  
  DRM DRIVERS AND MISC GPU PATCHES
 -M:    Gustavo Padovan <[email protected]>
  M:    Maarten Lankhorst <[email protected]>
 +M:    Maxime Ripard <[email protected]>
  M:    Sean Paul <[email protected]>
  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 <[email protected]>
@@@ -4923,10 -4873,9 +4925,10 @@@ F:    Documentation/devicetree/bindings/di
  
  DRM DRIVERS FOR RENESAS
  M:    Laurent Pinchart <[email protected]>
 +M:    Kieran Bingham <[email protected]>
  L:    [email protected]
  L:    [email protected]
 -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 <[email protected]>
 +M:    Tony Luck <[email protected]>
 +R:    Qiuxu Zhuo <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/edac/sb_edac.c
  S:    Maintained
  F:    drivers/edac/ti_edac.c
  
+ EDAC-QCOM
+ M:    Channagoud Kadabi <[email protected]>
+ M:    Venkata Narendra Kumar Gutta <[email protected]>
+ L:    [email protected]
+ L:    [email protected]
+ S:    Maintained
+ F:    drivers/edac/qcom_edac.c
  EDIROL UA-101/UA-1000 DRIVER
  M:    Clemens Ladisch <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -5524,8 -5480,7 +5534,8 @@@ S:      Odd Fixe
  F:    drivers/net/ethernet/agere/
  
  ETHERNET BRIDGE
 -M:    Stephen Hemminger <[email protected]>
 +M:    Roopa Prabhu <[email protected]>
 +M:    Nikolay Aleksandrov <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected]
  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 <[email protected]>
 -S:    Maintained
 +S:    Orphan
 +L:    [email protected]
 +L:    [email protected]
  F:    drivers/staging/fbtft/
  
  FC0011 TUNER DRIVER
@@@ -6116,7 -6070,7 +6126,7 @@@ F:      Documentation/gcc-plugins.tx
  
  GASKET DRIVER FRAMEWORK
  M:    Rob Springer <[email protected]>
 -M:    John Joseph <jnjoseph@google.com>
 +M:    Todd Poynor <toddpoynor@google.com>
  M:    Ben Chan <[email protected]>
  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 <[email protected]>
@@@ -6817,12 -6770,6 +6827,12 @@@ S:    Maintaine
  F:    mm/memory-failure.c
  F:    mm/hwpoison-inject.c
  
 +HYGON PROCESSOR SUPPORT
 +M:    Pu Wen <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    arch/x86/kernel/cpu/hygon.c
 +
  Hyper-V CORE AND DRIVERS
  M:    "K. Y. Srinivasan" <[email protected]>
  M:    Haiyang Zhang <[email protected]>
@@@ -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 <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/pci/hotplug/rpaphp*
 +
 +IBM Power IO DLPAR Driver for RPA-compliant PPC64 platform
 +M:    Tyrel Datwyler <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +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 <[email protected]>
 +S:    Maintained
 +F:    drivers/gpio/gpio-*cove.c
 +F:    drivers/gpio/gpio-msic.c
 +
  INTEL HID EVENT DRIVER
  M:    Alex Hung <[email protected]>
  L:    [email protected]
@@@ -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 <[email protected]>
 +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 <[email protected]>
  L:    [email protected]
@@@ -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 <[email protected]>
 -R:    Tim Chen <[email protected]>
 -L:    [email protected]
 -S:    Supported
 -F:    arch/x86/crypto/sha*-mb/
 -F:    crypto/mcryptd.c
 -
  INTEL TELEMETRY DRIVER
  M:    Souvik Kumar Chakravarty <[email protected]>
  L:    [email protected]
@@@ -7703,7 -7629,6 +7713,7 @@@ M:      Corey Minyard <[email protected]
  L:    [email protected] (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:    [email protected]
  S:    Obsolete
  F:    include/uapi/linux/ipx.h
 -F:    drivers/staging/ipx/
  
  IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
  M:    Marc Zyngier <[email protected]>
@@@ -8174,7 -8100,6 +8184,7 @@@ F:      security/keys/encrypted-keys
  
  KEYS-TRUSTED
  M:    James Bottomley <[email protected]>
 +M:      Jarkko Sakkinen <[email protected]>
  M:    Mimi Zohar <[email protected]>
  L:    [email protected]
  L:    [email protected]
@@@ -8252,25 -8177,6 +8262,25 @@@ S:    Maintaine
  F:    net/l3mdev
  F:    include/net/l3mdev.h
  
 +L7 BPF FRAMEWORK
 +M:    John Fastabend <[email protected]>
 +M:    Daniel Borkmann <[email protected]>
 +L:    [email protected]
 +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 <[email protected]>
 +L:    [email protected]
 +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 <[email protected]>
  L:    [email protected]
@@@ -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 <[email protected]>
 +M:    Matthew Wilcox <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/scsi/sym53c8xx_2/
  
 +LTC1660 DAC DRIVER
 +M:    Marcus Folkesson <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/iio/dac/ltc1660.txt
 +F:    drivers/iio/dac/ltc1660.c
 +
  LTC4261 HARDWARE MONITOR DRIVER
  M:    Guenter Roeck <[email protected]>
  L:    [email protected]
@@@ -8838,7 -8738,7 +8848,7 @@@ M:      Vivien Didelot <vivien.didelot@savoi
  L:    [email protected]
  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 <[email protected]>
 +M:    Linu Cherian <[email protected]>
 +M:    Geetha sowjanya <[email protected]>
 +M:    Jerin Jacob <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/net/ethernet/marvell/octeontx2/af/
 +
  MATROX FRAMEBUFFER DRIVER
  L:    [email protected]
  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 <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    Documentation/hwmon/max20751
 -F:    drivers/hwmon/max20751.c
 -
  MAX2175 SDR TUNER DRIVER
  M:    Ramesh Shanmugasundaram <[email protected]>
  L:    [email protected]
@@@ -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 <[email protected]>
  L:    [email protected]
  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 <[email protected]>
 +L:    [email protected]
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/platform/imx-pxp.[ch]
 +
  MEDIA DRIVERS FOR HELENE
  M:    Abylay Ospan <[email protected]>
  L:    [email protected]
@@@ -9143,10 -9035,11 +9153,10 @@@ S:   Supporte
  F:    drivers/media/dvb-frontends/lnbh25*
  
  MEDIA DRIVERS FOR MXL5XX TUNER DEMODULATORS
 -M:    Daniel Scheller <[email protected]>
  L:    [email protected]
  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[email protected]>
  L:    [email protected]
  L:    [email protected]
  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 <[email protected]>
 +M:    Kieran Bingham <[email protected]>
  L:    [email protected]
  L:    [email protected]
  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 <[email protected]>
  L:    [email protected]
  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 <[email protected]>
  L:    [email protected]
  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 <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    drivers/watchdog/menz069_wdt.c
 +F:    drivers/watchdog/menz69_wdt.c
  
  MESON AO CEC DRIVER FOR AMLOGIC SOCS
  M:    Neil Armstrong <[email protected]>
@@@ -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 <[email protected]>
@@@ -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 <[email protected]>
 +L:    [email protected]
 +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 <[email protected]>
 +L:    [email protected]
 +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 <[email protected]>
  M:    Microchip Linux Driver Support <[email protected]>
  S:    Maintained
  F:    drivers/net/ethernet/microchip/lan743x_*
  
 +MICROCHIP / ATMEL MCP3911 ADC DRIVER
 +M:    Marcus Folkesson <[email protected]>
 +M:    Kent Gustavsson <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/iio/adc/mcp3911.c
 +F:    Documentation/devicetree/bindings/iio/adc/mcp3911.txt
 +
  MICROCHIP USB251XB DRIVER
  M:    Richard Leitner <[email protected]>
  L:    [email protected]
@@@ -9782,8 -9652,7 +9792,8 @@@ MIPS/LOONGSON2 ARCHITECTUR
  M:    Jiaxun Yang <[email protected]>
  L:    [email protected]
  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 <[email protected]>
 +M:    "Aneesh Kumar K.V" <[email protected]>
 +M:    Andrew Morton <[email protected]>
 +M:    Nick Piggin <[email protected]>
 +M:    Peter Zijlstra <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +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 <[email protected]>
  L:    [email protected]
@@@ -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 <[email protected]>
 -L:    [email protected]
 -S:    Supported
 -F:    Documentation/devicetree/bindings/pci/mobiveil-pcie.txt
 -F:    drivers/pci/controller/pcie-mobiveil.c
 -
  MODULE SUPPORT
  M:    Jessica Yu <[email protected]>
  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 <[email protected]
  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 <[email protected]>
 +M:    Stefan Agner <[email protected]>
 +L:    [email protected]
  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 <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/scsi/myrb.*
 +F:    drivers/scsi/myrs.*
  
  MYRICOM MYRI-10G 10GbE DRIVER (MYRI10GE)
  M:    Chris Lee <[email protected]>
@@@ -10081,6 -9934,11 +10091,6 @@@ NATSEMI ETHERNET DRIVER (DP8381x
  S:    Orphan
  F:    drivers/net/ethernet/natsemi/natsemi.c
  
 -NCP FILESYSTEM
 -M:    Petr Vandrovec <[email protected]>
 -S:    Obsolete
 -F:    drivers/staging/ncpfs/
 -
  NCR 5380 SCSI DRIVERS
  M:    Finn Thain <[email protected]>
  M:    Michael Schmitz <[email protected]>
  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 <[email protected]>
  M:    Aviad Yehezkel <[email protected]>
  M:    Dave Watson <[email protected]>
 +M:    John Fastabend <[email protected]>
 +M:    Daniel Borkmann <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    net/tls/*
@@@ -11086,7 -10943,7 +11096,7 @@@ M:   Willy Tarreau <[email protected]
  M:    Ksenija Stanojevic <[email protected]>
  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 <[email protected]>
@@@ -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 <[email protected]>
 +L:    [email protected]
 +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 <[email protected]>
  M:    Jason Cooper <[email protected]>
@@@ -11314,7 -11164,7 +11324,7 @@@ F:   drivers/pci/controller/dwc/pci-exyno
  
  PCI DRIVER FOR SYNOPSYS DESIGNWARE
  M:    Jingoo Han <[email protected]>
 -M:    Joao Pinto <Joao.Pinto@synopsys.com>
 +M:    Gustavo Pimentel <gustavo.pimentel@synopsys.com>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/pci/designware-pcie.txt
@@@ -11333,7 -11183,7 +11343,7 @@@ M:   Murali Karicheri <[email protected]
  L:    [email protected]
  L:    [email protected] (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 <[email protected]>
@@@ -11347,14 -11197,8 +11357,14 @@@ F: tools/pci
  
  PCI ENHANCED ERROR HANDLING (EEH) FOR POWERPC
  M:    Russell Currey <[email protected]>
 +M:    Sam Bobroff <[email protected]>
 +M:    Oliver O'Halloran <[email protected]>
  L:    [email protected]
  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 <[email protected]>
  M:    Tejun Heo <[email protected]>
  M:    Christoph Lameter <[email protected]>
 -M:    Dennis Zhou <[email protected]>
 -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:    [email protected] (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 <[email protected]>
@@@ -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 <[email protected]>
  M:    [email protected]
  L:    [email protected]
@@@ -12147,6 -11975,7 +12157,6 @@@ S:   Supporte
  F:    drivers/net/ethernet/qlogic/qlcnic/
  
  QLOGIC QLGE 10Gb ETHERNET DRIVER
 -M:    Harish Patil <[email protected]>
  M:    Manish Chopra <[email protected]>
  M:    [email protected]
  L:    [email protected]
@@@ -12425,7 -12254,6 +12435,7 @@@ F:   Documentation/networking/rds.tx
  
  RDT - RESOURCE ALLOCATION
  M:    Fenghua Yu <[email protected]>
 +M:    Reinette Chatre <[email protected]>
  L:    [email protected]
  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 <[email protected]>
 +S:    Supported
 +F:    Documentation/devicetree/bindings/i2c/i2c-riic.txt
 +F:    drivers/i2c/busses/i2c-riic.c
 +
  RENESAS USB PHY DRIVER
  M:    Yoshihiro Shimoda <[email protected]>
  L:    [email protected]
@@@ -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 <[email protected]>
 +M:    Pierre Morel <[email protected]>
 +M:    Halil Pasic <[email protected]>
 +L:    [email protected]
 +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 <[email protected]>
  M:    Benjamin Block <[email protected]>
@@@ -13240,7 -13050,7 +13250,7 @@@ SELINUX SECURITY MODUL
  M:    Paul Moore <[email protected]>
  M:    Stephen Smalley <[email protected]>
  M:    Eric Paris <[email protected]>
 -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 <[email protected]>
  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 <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 +S:    Orphan
  F:    sound/soc/uniphier/
  
  SOEKRIS NET48XX LED SUPPORT
  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 <[email protected]>
@@@ -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 <[email protected]>
 +L:    [email protected]
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/i2c/imx319.c
 +
 +SONY IMX355 SENSOR DRIVER
 +M:    Tianshu Qiu <[email protected]>
 +L:    [email protected]
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/i2c/imx355.c
 +
  SONY MEMORYSTICK CARD SUPPORT
  M:    Alex Dubov <[email protected]>
  W:    http://tifmxx.berlios.de/
@@@ -13811,7 -13607,7 +13821,7 @@@ F:   sound/soc
  F:    include/sound/soc*
  
  SOUNDWIRE SUBSYSTEM
 -M:    Vinod Koul <v[email protected]>
 +M:    Vinod Koul <v[email protected]>
  M:    Sanyog Kale <[email protected]>
  R:    Pierre-Louis Bossart <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  F:    drivers/i2c/busses/i2c-stm32*
  
 +ST VL53L0X ToF RANGER(I2C) IIO DRIVER
 +M:    Song Qiang <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/iio/proximity/vl53l0x-i2c.c
 +F:    Documentation/devicetree/bindings/iio/proximity/vl53l0x.txt
 +
  STABLE BRANCH
  M:    Greg Kroah-Hartman <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/staging/erofs/
  
 -STAGING - FLARION FT1000 DRIVERS
 -M:    Marek Belisko <[email protected]>
 -S:    Odd Fixes
 -F:    drivers/staging/ft1000/
 -
  STAGING - INDUSTRIAL IO
  M:    Jonathan Cameron <[email protected]>
  L:    [email protected]
@@@ -14064,7 -13858,7 +14074,7 @@@ F:   sound/soc/sti
  STI CEC DRIVER
  M:    Benjamin Gaignard <[email protected]>
  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 <[email protected]>
 +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 <[email protected]>
  S:    Maintained
  S:    Maintained
  F:    drivers/net/ethernet/ti/netcp*
  
 +TI PCM3060 ASoC CODEC DRIVER
 +M:    Kirill Marinushkin <[email protected]>
 +L:    [email protected] (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 <[email protected]>
  L:    [email protected] (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 <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/usb/typec/tcpm/
 +
  USB UHCI DRIVER
  M:    Alan Stern <[email protected]>
  L:    [email protected]
@@@ -15579,27 -15354,13 +15589,27 @@@ F:        arch/x86/um
  F:    fs/hostfs/
  F:    fs/hppfs/
  
 +USERSPACE COPYIN/COPYOUT (UIOVEC)
 +M:    Alexander Viro <[email protected]>
 +S:    Maintained
 +F:    lib/iov_iter.c
 +F:    include/linux/uio.h
 +
 +USERSPACE DMA BUFFER DRIVER
 +M:    Gerd Hoffmann <[email protected]>
 +S:    Maintained
 +L:    [email protected]
 +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 <[email protected]>
  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 <[email protected]>
@@@ -15622,7 -15383,7 +15632,7 @@@ S:   Maintaine
  UVESAFB DRIVER
  M:    Michal Januszewski <[email protected]>
  L:    [email protected]
 -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 <[email protected]>
  L:    [email protected]
  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 <[email protected]>
 -M:    Shrijeet Mukherjee <shm@cumulusnetworks.com>
 +M:    Shrijeet Mukherjee <shrijeet@gmail.com>
  L:    [email protected]
  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 <[email protected]>
  M:    Ingo Molnar <[email protected]>
 +M:    Borislav Petkov <[email protected]>
  R:    "H. Peter Anvin" <[email protected]>
  M:    [email protected]
  L:    [email protected]
@@@ -16175,15 -15935,6 +16185,15 @@@ M: Borislav Petkov <[email protected]
  S:    Maintained
  F:    arch/x86/kernel/cpu/microcode/*
  
 +X86 MM
 +M:    Dave Hansen <[email protected]>
 +M:    Andy Lutomirski <[email protected]>
 +M:    Peter Zijlstra <[email protected]>
 +L:    [email protected]
 +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 <[email protected]>
  M:    Andy Shevchenko <[email protected]>
@@@ -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 <[email protected]>
 +L:    [email protected]
 +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 <[email protected]>
  L:    [email protected]
index 5a89a957641b5270ed4b370f72e813e16cf1d765,23f3928743c9e9a7dab6aee9bab2905fe228e08c..138d8eb58374021378473345cc4240a7e7c56c61
@@@ -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
index 4bda793ba6ae5bbc2d73082397700ae276255470,716762d59c1fb2da9f47ff5814be8d8348a26b8a..74f8b9607daa16fc3e7bbd6e26e6fcd67244dcde
@@@ -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
index acbe63e925d597c270b54a846b54791d6c0e3655,ab719fa901503df738f36336fc9cf2f89a189c46..1fa840e3d930dcc3058d272e15b3ed85885c49c8
@@@ -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,
index bbd4e5bc8707ff4601a39783f74ec94fd822ea0b,23f09dce23e0413a472387bb75d25547810a7c0c..e05ab16d9a9e3c10224e93745f57f1d477616a22
@@@ -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);
  
This page took 0.229204 seconds and 4 git commands to generate.