Merge tag 'gpio-updates-for-v5.15' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 7 Sep 2021 19:27:27 +0000 (12:27 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 7 Sep 2021 19:27:27 +0000 (12:27 -0700)
Pull gpio updates from Bartosz Golaszewski:
 "We mostly have various improvements and refactoring all over the place
  but also some interesting new features - like the virtio GPIO driver
  that allows guest VMs to use host's GPIOs. We also have a new/old GPIO
  driver for rockchip - this one has been split out of the pinctrl
  driver.

  Summary:

   - new driver: gpio-virtio allowing a guest VM running linux to access
     GPIO lines provided by the host

   - split the GPIO driver out of the rockchip pin control driver

   - add support for a new model to gpio-aspeed-sgpio, refactor the
     driver and use generic device property interfaces, improve property
     sanitization

   - add ACPI support to gpio-tegra186

   - improve the code setting the line names to support multiple GPIO
     banks per device

   - constify a bunch of OF functions in the core GPIO code and make the
     declaration for one of the core OF functions we use consistent
     within its header

   - use software nodes in intel_quark_i2c_gpio

   - add support for the gpio-line-names property in gpio-mt7621

   - use the standard GPIO function for setting the GPIO names in
     gpio-brcmstb

   - fix a bunch of leaks and other bugs in gpio-mpc8xxx

   - use generic pm callbacks in gpio-ml-ioh

   - improve resource management and PM handling in gpio-mlxbf2

   - modernize and improve the gpio-dwapb driver

   - coding style improvements in gpio-rcar

   - documentation fixes and improvements

   - update the MAINTAINERS entry for gpio-zynq

   - minor tweaks in several drivers"

* tag 'gpio-updates-for-v5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux: (35 commits)
  gpio: mpc8xxx: Use 'devm_gpiochip_add_data()' to simplify the code and avoid a leak
  gpio: mpc8xxx: Fix a potential double iounmap call in 'mpc8xxx_probe()'
  gpio: mpc8xxx: Fix a resources leak in the error handling path of 'mpc8xxx_probe()'
  gpio: viperboard: remove platform_set_drvdata() call in probe
  gpio: virtio: Add missing mailings lists in MAINTAINERS entry
  gpio: virtio: Fix sparse warnings
  gpio: remove the obsolete MX35 3DS BOARD MC9S08DZ60 GPIO functions
  gpio: max730x: Use the right include
  gpio: Add virtio-gpio driver
  gpio: mlxbf2: Use DEFINE_RES_MEM_NAMED() helper macro
  gpio: mlxbf2: Use devm_platform_ioremap_resource()
  gpio: mlxbf2: Drop wrong use of ACPI_PTR()
  gpio: mlxbf2: Convert to device PM ops
  gpio: dwapb: Get rid of legacy platform data
  mfd: intel_quark_i2c_gpio: Convert GPIO to use software nodes
  gpio: dwapb: Read GPIO base from gpio-base property
  gpio: dwapb: Unify ACPI enumeration checks in get_irq() and configure_irqs()
  gpiolib: Deduplicate forward declaration in the consumer.h header
  MAINTAINERS: update gpio-zynq.yaml reference
  gpio: tegra186: Add ACPI support
  ...

1  2 
MAINTAINERS
drivers/gpio/gpio-aspeed-sgpio.c
drivers/gpio/gpio-brcmstb.c
drivers/gpio/gpio-mpc8xxx.c
drivers/gpio/gpio-mt7621.c
drivers/gpio/gpio-rcar.c
drivers/gpio/gpio-tegra186.c
include/linux/of.h
include/uapi/linux/virtio_ids.h

diff --combined MAINTAINERS
@@@ -445,7 -445,7 +445,7 @@@ F: drivers/platform/x86/wmi.
  F:    include/uapi/linux/wmi.h
  
  ACRN HYPERVISOR SERVICE MODULE
 -M:    Shuo Liu <shuo.a.liu@intel.com>
 +M:    Fei Li <fei1.li@intel.com>
  L:    acrn-dev@lists.projectacrn.org (subscribers-only)
  S:    Supported
  W:    https://projectacrn.org
@@@ -459,12 -459,6 +459,12 @@@ S:       Maintaine
  W:    https://parisc.wiki.kernel.org/index.php/AD1889
  F:    sound/pci/ad1889.*
  
 +AD5110 ANALOG DEVICES DIGITAL POTENTIOMETERS DRIVER
 +M:    Mugilraj Dhavachelvan <dmugil2000@gmail.com>
 +L:    linux-iio@vger.kernel.org
 +S:    Supported
 +F:    drivers/iio/potentiometer/ad5110.c
 +
  AD525X ANALOG DEVICES DIGITAL POTENTIOMETERS DRIVER
  M:    Michael Hennerich <michael.hennerich@analog.com>
  S:    Supported
@@@ -798,7 -792,7 +798,7 @@@ F: Documentation/devicetree/bindings/i2
  F:    drivers/i2c/busses/i2c-altera.c
  
  ALTERA MAILBOX DRIVER
 -M:    Ley Foon Tan <ley.foon.tan@intel.com>
 +M:    Joyce Ooi <joyce.ooi@intel.com>
  S:    Maintained
  F:    drivers/mailbox/mailbox-altera.c
  
@@@ -939,7 -933,6 +939,7 @@@ F: drivers/video/fbdev/geode
  
  AMD IOMMU (AMD-VI)
  M:    Joerg Roedel <joro@8bytes.org>
 +R:    Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
  L:    iommu@lists.linux-foundation.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
@@@ -1268,13 -1261,6 +1268,13 @@@ L:    linux-input@vger.kernel.or
  S:    Odd fixes
  F:    drivers/input/mouse/bcm5974.c
  
 +APPLE DART IOMMU DRIVER
 +M:    Sven Peter <sven@svenpeter.dev>
 +L:    iommu@lists.linux-foundation.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/iommu/apple,dart.yaml
 +F:    drivers/iommu/apple-dart.c
 +
  APPLE SMC DRIVER
  M:    Henrik Rydberg <rydberg@bitmath.org>
  L:    linux-hwmon@vger.kernel.org
@@@ -1329,13 -1315,6 +1329,13 @@@ L:    linux-media@vger.kernel.or
  S:    Maintained
  F:    drivers/media/i2c/aptina-pll.*
  
 +AQUACOMPUTER D5 NEXT PUMP SENSOR DRIVER
 +M:    Aleksa Savic <savicaleksa83@gmail.com>
 +L:    linux-hwmon@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/hwmon/aquacomputer_d5next.rst
 +F:    drivers/hwmon/aquacomputer_d5next.c
 +
  AQUANTIA ETHERNET DRIVER (atlantic)
  M:    Igor Russkikh <irusskikh@marvell.com>
  L:    netdev@vger.kernel.org
@@@ -1402,7 -1381,7 +1402,7 @@@ F:      Documentation/devicetree/bindings/ar
  F:    Documentation/devicetree/bindings/arm/arm,realview.yaml
  F:    Documentation/devicetree/bindings/arm/arm,versatile.yaml
  F:    Documentation/devicetree/bindings/arm/arm,vexpress-juno.yaml
 -F:    Documentation/devicetree/bindings/auxdisplay/arm-charlcd.txt
 +F:    Documentation/devicetree/bindings/auxdisplay/arm,versatile-lcd.yaml
  F:    Documentation/devicetree/bindings/clock/arm,syscon-icst.yaml
  F:    Documentation/devicetree/bindings/i2c/i2c-versatile.txt
  F:    Documentation/devicetree/bindings/interrupt-controller/arm,versatile-fpga-irq.txt
@@@ -1496,7 -1475,7 +1496,7 @@@ F:      drivers/amba
  F:    include/linux/amba/bus.h
  
  ARM PRIMECELL PL35X NAND CONTROLLER DRIVER
 -M:    Miquel Raynal <miquel.raynal@bootlin.com@bootlin.com>
 +M:    Miquel Raynal <miquel.raynal@bootlin.com>
  M:    Naga Sureshkumar Relli <nagasure@xilinx.com>
  L:    linux-mtd@lists.infradead.org
  S:    Maintained
@@@ -1504,11 -1483,11 +1504,11 @@@ F:   Documentation/devicetree/bindings/mt
  F:    drivers/mtd/nand/raw/pl35x-nand-controller.c
  
  ARM PRIMECELL PL35X SMC DRIVER
 -M:    Miquel Raynal <miquel.raynal@bootlin.com@bootlin.com>
 +M:    Miquel Raynal <miquel.raynal@bootlin.com>
  M:    Naga Sureshkumar Relli <nagasure@xilinx.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -F:    Documentation/devicetree/bindings/mtd/arm,pl353-smc.yaml
 +F:    Documentation/devicetree/bindings/memory-controllers/arm,pl353-smc.yaml
  F:    drivers/memory/pl353-smc.c
  
  ARM PRIMECELL CLCD PL110 DRIVER
@@@ -1710,7 -1689,7 +1710,7 @@@ L:      linux-arm-kernel@lists.infradead.or
  S:    Maintained
  W:    https://asahilinux.org
  B:    https://github.com/AsahiLinux/linux/issues
 -C:    irc://chat.freenode.net/asahi-dev
 +C:    irc://irc.oftc.net/asahi-dev
  T:    git https://github.com/AsahiLinux/linux.git
  F:    Documentation/devicetree/bindings/arm/apple.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/apple,aic.yaml
@@@ -2030,12 -2009,10 +2030,12 @@@ M:   Krzysztof Halasa <khalasa@piap.pl
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/devicetree/bindings/arm/intel-ixp4xx.yaml
 +F:    Documentation/devicetree/bindings/bus/intel,ixp4xx-expansion-bus-controller.yaml
  F:    Documentation/devicetree/bindings/gpio/intel,ixp4xx-gpio.txt
  F:    Documentation/devicetree/bindings/interrupt-controller/intel,ixp4xx-interrupt.yaml
  F:    Documentation/devicetree/bindings/timer/intel,ixp4xx-timer.yaml
  F:    arch/arm/mach-ixp4xx/
 +F:    drivers/bus/intel-ixp4xx-eb.c
  F:    drivers/clocksource/timer-ixp4xx.c
  F:    drivers/crypto/ixp4xx_crypto.c
  F:    drivers/gpio/gpio-ixp4xx.c
@@@ -2864,7 -2841,7 +2864,7 @@@ AS3645A LED FLASH CONTROLLER DRIVE
  M:    Sakari Ailus <sakari.ailus@iki.fi>
  L:    linux-leds@vger.kernel.org
  S:    Maintained
 -F:    drivers/leds/leds-as3645a.c
 +F:    drivers/leds/flash/leds-as3645a.c
  
  ASAHI KASEI AK7375 LENS VOICE COIL DRIVER
  M:    Tianshu Qiu <tian.shu.qiu@intel.com>
@@@ -3219,7 -3196,7 +3219,7 @@@ S:      Maintaine
  W:    https://www.open-mesh.org/
  Q:    https://patchwork.open-mesh.org/project/batman/list/
  B:    https://www.open-mesh.org/projects/batman-adv/issues
 -C:    irc://chat.freenode.net/batman
 +C:    ircs://irc.hackint.org/batadv
  T:    git https://git.open-mesh.org/linux-merge.git
  F:    Documentation/networking/batman-adv.rst
  F:    include/uapi/linux/batadv_packet.h
@@@ -3431,6 -3408,7 +3431,6 @@@ F:      drivers/net/ethernet/netronome/nfp/b
  
  BPF JIT for POWERPC (32-BIT AND 64-BIT)
  M:    Naveen N. Rao <naveen.n.rao@linux.ibm.com>
 -M:    Sandipan Das <sandipan@linux.ibm.com>
  L:    netdev@vger.kernel.org
  L:    bpf@vger.kernel.org
  S:    Maintained
@@@ -3876,7 -3854,7 +3876,7 @@@ M:      Markus Mayer <mmayer@broadcom.com
  M:    bcm-kernel-feedback-list@broadcom.com
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -F:    Documentation/devicetree/bindings/memory-controllers/brcm,dpfe-cpu.txt
 +F:    Documentation/devicetree/bindings/memory-controllers/brcm,dpfe-cpu.yaml
  F:    drivers/memory/brcmstb_dpfe.c
  
  BROADCOM STB NAND FLASH DRIVER
@@@ -3887,16 -3865,6 +3887,16 @@@ L:    bcm-kernel-feedback-list@broadcom.co
  S:    Maintained
  F:    drivers/mtd/nand/raw/brcmnand/
  
 +BROADCOM STB PCIE DRIVER
 +M:    Jim Quinlan <jim2101024@gmail.com>
 +M:    Nicolas Saenz Julienne <nsaenz@kernel.org>
 +M:    Florian Fainelli <f.fainelli@gmail.com>
 +M:    bcm-kernel-feedback-list@broadcom.com
 +L:    linux-pci@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
 +F:    drivers/pci/controller/pcie-brcmstb.c
 +
  BROADCOM SYSTEMPORT ETHERNET DRIVER
  M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    bcm-kernel-feedback-list@broadcom.com
@@@ -4529,10 -4497,9 +4529,10 @@@ L:    clang-built-linux@googlegroups.co
  S:    Supported
  W:    https://clangbuiltlinux.github.io/
  B:    https://github.com/ClangBuiltLinux/linux/issues
 -C:    irc://chat.freenode.net/clangbuiltlinux
 +C:    irc://irc.libera.chat/clangbuiltlinux
  F:    Documentation/kbuild/llvm.rst
  F:    include/linux/compiler-clang.h
 +F:    scripts/Makefile.clang
  F:    scripts/clang-tools/
  K:    \b(?i:clang|llvm)\b
  
@@@ -4642,7 -4609,7 +4642,7 @@@ F:      include/linux/clk
  F:    include/linux/of_clk.h
  X:    drivers/clk/clkdev.c
  
 -COMMON INTERNET FILE SYSTEM (CIFS)
 +COMMON INTERNET FILE SYSTEM CLIENT (CIFS)
  M:    Steve French <sfrench@samba.org>
  L:    linux-cifs@vger.kernel.org
  L:    samba-technical@lists.samba.org (moderated for non-subscribers)
@@@ -4651,7 -4618,6 +4651,7 @@@ W:      http://linux-cifs.samba.org
  T:    git git://git.samba.org/sfrench/cifs-2.6.git
  F:    Documentation/admin-guide/cifs/
  F:    fs/cifs/
 +F:    fs/cifs_common/
  
  COMPACTPCI HOTPLUG CORE
  M:    Scott Murray <scott@spiteful.org>
@@@ -5603,7 -5569,7 +5603,7 @@@ M:      Lukasz Luba <lukasz.luba@arm.com
  L:    linux-pm@vger.kernel.org
  L:    linux-samsung-soc@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/memory-controllers/exynos5422-dmc.txt
 +F:    Documentation/devicetree/bindings/memory-controllers/samsung,exynos5422-dmc.yaml
  F:    drivers/memory/samsung/exynos5422-dmc.c
  
  DME1737 HARDWARE MONITOR DRIVER
@@@ -5717,7 -5683,6 +5717,7 @@@ DPAA2 ETHERNET SWITCH DRIVE
  M:    Ioana Ciornei <ioana.ciornei@nxp.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
 +F:    Documentation/networking/device_drivers/ethernet/freescale/dpaa2/switch-driver.rst
  F:    drivers/net/ethernet/freescale/dpaa2/dpaa2-switch*
  F:    drivers/net/ethernet/freescale/dpaa2/dpsw*
  
@@@ -5741,11 -5706,6 +5741,11 @@@ F:    Documentation/admin-guide/blockdev
  F:    drivers/block/drbd/
  F:    lib/lru_cache.c
  
 +DRIVER COMPONENT FRAMEWORK
 +L:    dri-devel@lists.freedesktop.org
 +F:    drivers/base/component.c
 +F:    include/linux/component.h
 +
  DRIVER CORE, KOBJECTS, DEBUGFS AND SYSFS
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  R:    "Rafael J. Wysocki" <rafael@kernel.org>
@@@ -5809,7 -5769,7 +5809,7 @@@ M:      Gerd Hoffmann <kraxel@redhat.com
  L:    virtualization@lists.linux-foundation.org
  S:    Maintained
  T:    git git://anongit.freedesktop.org/drm/drm-misc
 -F:    drivers/gpu/drm/bochs/
 +F:    drivers/gpu/drm/tiny/bochs.c
  
  DRM DRIVER FOR BOE HIMAX8279D PANELS
  M:    Jerry Han <hanxu5@huaqin.corp-partner.google.com>
@@@ -5994,13 -5954,6 +5994,13 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/display/panel/raydium,rm67191.yaml
  F:    drivers/gpu/drm/panel/panel-raydium-rm67191.c
  
 +DRM DRIVER FOR SAMSUNG DB7430 PANELS
 +M:    Linus Walleij <linus.walleij@linaro.org>
 +S:    Maintained
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    Documentation/devicetree/bindings/display/panel/samsung,lms397kf04.yaml
 +F:    drivers/gpu/drm/panel/panel-samsung-db7430.c
 +
  DRM DRIVER FOR SITRONIX ST7703 PANELS
  M:    Guido Günther <agx@sigxcpu.org>
  R:    Purism Kernel Team <kernel@puri.sm>
@@@ -6099,27 -6052,21 +6099,27 @@@ F:   drivers/gpu/drm/vboxvideo
  
  DRM DRIVER FOR VMWARE VIRTUAL GPU
  M:    "VMware Graphics" <linux-graphics-maintainer@vmware.com>
 -M:    Roland Scheidegger <sroland@vmware.com>
  M:    Zack Rusin <zackr@vmware.com>
  L:    dri-devel@lists.freedesktop.org
  S:    Supported
 -T:    git git://people.freedesktop.org/~sroland/linux
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  F:    drivers/gpu/drm/vmwgfx/
  F:    include/uapi/drm/vmwgfx_drm.h
  
 +DRM DRIVER FOR WIDECHIPS WS2401 PANELS
 +M:    Linus Walleij <linus.walleij@linaro.org>
 +S:    Maintained
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    Documentation/devicetree/bindings/display/panel/samsung,lms380kf01.yaml
 +F:    drivers/gpu/drm/panel/panel-widechips-ws2401.c
 +
  DRM DRIVERS
  M:    David Airlie <airlied@linux.ie>
  M:    Daniel Vetter <daniel@ffwll.ch>
  L:    dri-devel@lists.freedesktop.org
  S:    Maintained
  B:    https://gitlab.freedesktop.org/drm
 -C:    irc://chat.freenode.net/dri-devel
 +C:    irc://irc.oftc.net/dri-devel
  T:    git git://anongit.freedesktop.org/drm/drm
  F:    Documentation/devicetree/bindings/display/
  F:    Documentation/devicetree/bindings/gpu/
@@@ -6612,7 -6559,6 +6612,7 @@@ EDAC-ARMAD
  M:    Jan Luebbe <jlu@pengutronix.de>
  L:    linux-edac@vger.kernel.org
  S:    Maintained
 +F:    Documentation/devicetree/bindings/memory-controllers/marvell,mvebu-sdram-controller.yaml
  F:    drivers/edac/armada_xp_*
  
  EDAC-AST2500
@@@ -6854,6 -6800,7 +6854,6 @@@ F:      Documentation/admin-guide/media/em28
  F:    drivers/media/usb/em28xx/
  
  EMBEDDED LINUX
 -M:    Paul Gortmaker <paul.gortmaker@windriver.com>
  M:    Matt Mackall <mpm@selenic.com>
  M:    David Woodhouse <dwmw2@infradead.org>
  L:    linux-embedded@vger.kernel.org
@@@ -6956,12 -6903,6 +6956,12 @@@ M:    Mark Einon <mark.einon@gmail.com
  S:    Odd Fixes
  F:    drivers/net/ethernet/agere/
  
 +ETAS ES58X CAN/USB DRIVER
 +M:    Vincent Mailhol <mailhol.vincent@wanadoo.fr>
 +L:    linux-can@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/can/usb/etas_es58x/
 +
  ETHERNET BRIDGE
  M:    Roopa Prabhu <roopa@nvidia.com>
  M:    Nikolay Aleksandrov <nikolay@nvidia.com>
@@@ -7003,7 -6944,7 +7003,7 @@@ F:      include/uapi/linux/mdio.
  F:    include/uapi/linux/mii.h
  
  EXFAT FILE SYSTEM
 -M:    Namjae Jeon <namjae.jeon@samsung.com>
 +M:    Namjae Jeon <linkinjeon@kernel.org>
  M:    Sungjong Seo <sj1557.seo@samsung.com>
  L:    linux-fsdevel@vger.kernel.org
  S:    Maintained
@@@ -7916,9 -7857,9 +7916,9 @@@ S:      Maintaine
  F:    drivers/input/touchscreen/goodix.c
  
  GOOGLE ETHERNET DRIVERS
 -M:    Catherine Sullivan <csully@google.com>
 -R:    Sagi Shahar <sagis@google.com>
 -R:    Jon Olson <jonolson@google.com>
 +M:    Jeroen de Borst <jeroendb@google.com>
 +R:    Catherine Sullivan <csully@google.com>
 +R:    David Awogbemila <awogbemila@google.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    Documentation/networking/device_drivers/ethernet/google/gve.rst
@@@ -8453,7 -8394,7 +8453,7 @@@ F:      drivers/crypto/hisilicon/sgl.
  F:    drivers/crypto/hisilicon/zip/
  
  HISILICON ROCE DRIVER
 -M:    Lijun Ou <oulijun@huawei.com>
 +M:    Wenpeng Liang <liangwenpeng@huawei.com>
  M:    Weihang Li <liweihang@huawei.com>
  L:    linux-rdma@vger.kernel.org
  S:    Maintained
@@@ -8491,12 -8432,10 +8491,12 @@@ S:   Maintaine
  F:    Documentation/devicetree/bindings/spmi/hisilicon,hisi-spmi-controller.yaml
  F:    drivers/spmi/hisi-spmi-controller.c
  
 -HISILICON STAGING DRIVERS FOR HIKEY 960/970
 +HISILICON SPMI PMIC DRIVER FOR HIKEY 6421v600
  M:    Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
 +L:    linux-kernel@vger.kernel.org
  S:    Maintained
 -F:    drivers/staging/hikey9xx/
 +F:    Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml
 +F:    drivers/mfd/hi6421-spmi-pmic.c
  
  HISILICON TRUE RANDOM NUMBER GENERATOR V2 SUPPORT
  M:    Zaibo Xu <xuzaibo@huawei.com>
@@@ -8655,9 -8594,6 +8655,9 @@@ T:      git git://git.kernel.org/pub/scm/lin
  F:    Documentation/ABI/stable/sysfs-bus-vmbus
  F:    Documentation/ABI/testing/debugfs-hyperv
  F:    Documentation/networking/device_drivers/ethernet/microsoft/netvsc.rst
 +F:    arch/arm64/hyperv
 +F:    arch/arm64/include/asm/hyperv-tlfs.h
 +F:    arch/arm64/include/asm/mshyperv.h
  F:    arch/x86/hyperv
  F:    arch/x86/include/asm/hyperv-tlfs.h
  F:    arch/x86/include/asm/mshyperv.h
@@@ -9104,7 -9040,7 +9104,7 @@@ F:      drivers/usb/atm/ueagle-atm.
  IMGTEC ASCII LCD DRIVER
  M:    Paul Burton <paulburton@kernel.org>
  S:    Maintained
 -F:    Documentation/devicetree/bindings/auxdisplay/img-ascii-lcd.txt
 +F:    Documentation/devicetree/bindings/auxdisplay/img,ascii-lcd.yaml
  F:    drivers/auxdisplay/img-ascii-lcd.c
  
  IMGTEC IR DECODER DRIVER
@@@ -9276,20 -9212,13 +9276,20 @@@ INTEL ATOMISP2 DUMMY / POWER-MANAGEMEN
  M:    Hans de Goede <hdegoede@redhat.com>
  L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
 -F:    drivers/platform/x86/intel_atomisp2_pm.c
 +F:    drivers/platform/x86/intel/atomisp2/pm.c
  
  INTEL ATOMISP2 LED DRIVER
  M:    Hans de Goede <hdegoede@redhat.com>
  L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
 -F:    drivers/platform/x86/intel_atomisp2_led.c
 +F:    drivers/platform/x86/intel/atomisp2/led.c
 +
 +INTEL BIOS SAR INT1092 DRIVER
 +M:    Shravan S <s.shravan@intel.com>
 +M:    Intel Corporation <linuxwwan@intel.com>
 +L:    platform-driver-x86@vger.kernel.org
 +S:    Maintained
 +F:    drivers/platform/x86/intel/int1092/
  
  INTEL BROXTON PMC DRIVER
  M:    Mika Westerberg <mika.westerberg@linux.intel.com>
@@@ -9321,7 -9250,7 +9321,7 @@@ S:      Supporte
  W:    https://01.org/linuxgraphics/
  Q:    http://patchwork.freedesktop.org/project/intel-gfx/
  B:    https://gitlab.freedesktop.org/drm/intel/-/wikis/How-to-file-i915-bugs
 -C:    irc://chat.freenode.net/intel-gfx
 +C:    irc://irc.oftc.net/intel-gfx
  T:    git git://anongit.freedesktop.org/drm-intel
  F:    Documentation/gpu/i915.rst
  F:    drivers/gpu/drm/i915/
@@@ -9385,7 -9314,7 +9385,7 @@@ INTEL HID EVENT DRIVE
  M:    Alex Hung <alex.hung@canonical.com>
  L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
 -F:    drivers/platform/x86/intel-hid.c
 +F:    drivers/platform/x86/intel/hid.c
  
  INTEL I/OAT DMA DRIVER
  M:    Dave Jiang <dave.jiang@intel.com>
@@@ -9529,17 -9458,17 +9529,17 @@@ F:   include/linux/mfd/intel-m10-bmc.
  
  INTEL MENLOW THERMAL DRIVER
  M:    Sujith Thomas <sujith.thomas@intel.com>
 -L:    platform-driver-x86@vger.kernel.org
 +L:    linux-pm@vger.kernel.org
  S:    Supported
  W:    https://01.org/linux-acpi
 -F:    drivers/platform/x86/intel_menlow.c
 +F:    drivers/thermal/intel/intel_menlow.c
  
  INTEL P-Unit IPC DRIVER
  M:    Zha Qipeng <qipeng.zha@intel.com>
  L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
  F:    arch/x86/include/asm/intel_punit_ipc.h
 -F:    drivers/platform/x86/intel_punit_ipc.c
 +F:    drivers/platform/x86/intel/punit_ipc.c
  
  INTEL PMC CORE DRIVER
  M:    Rajneesh Bhardwaj <irenic.rajneesh@gmail.com>
@@@ -9547,7 -9476,7 +9547,7 @@@ M:      David E Box <david.e.box@intel.com
  L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-platform-intel-pmc
 -F:    drivers/platform/x86/intel_pmc_core*
 +F:    drivers/platform/x86/intel/pmc/
  
  INTEL PMIC GPIO DRIVERS
  M:    Andy Shevchenko <andy@kernel.org>
@@@ -9565,7 -9494,7 +9565,7 @@@ INTEL PMT DRIVE
  M:    "David E. Box" <david.e.box@linux.intel.com>
  S:    Maintained
  F:    drivers/mfd/intel_pmt.c
 -F:    drivers/platform/x86/intel_pmt_*
 +F:    drivers/platform/x86/intel/pmt/
  
  INTEL PRO/WIRELESS 2100, 2200BG, 2915ABG NETWORK CONNECTION SUPPORT
  M:    Stanislav Yakovlev <stas.yakovlev@gmail.com>
@@@ -9602,7 -9531,7 +9602,7 @@@ INTEL SPEED SELECT TECHNOLOG
  M:    Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
  L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
 -F:    drivers/platform/x86/intel_speed_select_if/
 +F:    drivers/platform/x86/intel/speed_select_if/
  F:    include/uapi/linux/isst_if.h
  F:    tools/power/x86/intel-speed-select/
  
@@@ -9623,19 -9552,19 +9623,19 @@@ M:   "David E. Box" <david.e.box@linux.in
  L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
  F:    arch/x86/include/asm/intel_telemetry.h
 -F:    drivers/platform/x86/intel_telemetry*
 +F:    drivers/platform/x86/intel/telemetry/
  
  INTEL UNCORE FREQUENCY CONTROL
  M:    Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
  L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
 -F:    drivers/platform/x86/intel-uncore-frequency.c
 +F:    drivers/platform/x86/intel/uncore-frequency.c
  
  INTEL VIRTUAL BUTTON DRIVER
  M:    AceLan Kao <acelan.kao@canonical.com>
  L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
 -F:    drivers/platform/x86/intel-vbtn.c
 +F:    drivers/platform/x86/intel/vbtn.c
  
  INTEL WIRELESS 3945ABG/BG, 4965AGN (iwlegacy)
  M:    Stanislaw Gruszka <stf_xl@wp.pl>
@@@ -9656,12 -9585,12 +9656,12 @@@ M:   Jithu Joseph <jithu.joseph@intel.com
  R:    Maurice Ma <maurice.ma@intel.com>
  S:    Maintained
  W:    https://slimbootloader.github.io/security/firmware-update.html
 -F:    drivers/platform/x86/intel-wmi-sbl-fw-update.c
 +F:    drivers/platform/x86/intel/wmi/sbl-fw-update.c
  
  INTEL WMI THUNDERBOLT FORCE POWER DRIVER
  L:    Dell.Client.Kernel@dell.com
  S:    Maintained
 -F:    drivers/platform/x86/intel-wmi-thunderbolt.c
 +F:    drivers/platform/x86/intel/wmi/thunderbolt.c
  
  INTEL WWAN IOSM DRIVER
  M:    M Chetan Kumar <m.chetan.kumar@intel.com>
@@@ -9819,6 -9748,11 +9819,6 @@@ M:     David Sterba <dsterba@suse.com
  S:    Odd Fixes
  F:    drivers/tty/ipwireless/
  
 -IPX NETWORK LAYER
 -L:    netdev@vger.kernel.org
 -S:    Obsolete
 -F:    include/uapi/linux/ipx.h
 -
  IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
  M:    Marc Zyngier <maz@kernel.org>
  S:    Maintained
@@@ -10117,7 -10051,6 +10117,7 @@@ F:   fs/autofs
  KERNEL BUILD + files below scripts/ (unless maintained elsewhere)
  M:    Masahiro Yamada <masahiroy@kernel.org>
  M:    Michal Marek <michal.lkml@markovi.net>
 +R:    Nick Desaulniers <ndesaulniers@google.com>
  L:    linux-kbuild@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git
@@@ -10169,17 -10102,6 +10169,17 @@@ T: git git://git.kernel.org/pub/scm/lin
  F:    Documentation/dev-tools/kselftest*
  F:    tools/testing/selftests/
  
 +KERNEL SMB3 SERVER (KSMBD)
 +M:    Namjae Jeon <linkinjeon@kernel.org>
 +M:    Sergey Senozhatsky <senozhatsky@chromium.org>
 +M:    Steve French <sfrench@samba.org>
 +M:    Hyunchul Lee <hyc.lee@gmail.com>
 +L:    linux-cifs@vger.kernel.org
 +S:    Maintained
 +T:    git git://git.samba.org/ksmbd.git
 +F:    fs/cifs_common/
 +F:    fs/ksmbd/
 +
  KERNEL UNIT TESTING FRAMEWORK (KUnit)
  M:    Brendan Higgins <brendanhiggins@google.com>
  L:    linux-kselftest@vger.kernel.org
@@@ -10465,7 -10387,6 +10465,7 @@@ F:   net/core/skmsg.
  F:    net/core/sock_map.c
  F:    net/ipv4/tcp_bpf.c
  F:    net/ipv4/udp_bpf.c
 +F:    net/unix/unix_bpf.c
  
  LANDLOCK SECURITY MODULE
  M:    Mickaël Salaün <mic@digikod.net>
@@@ -10687,6 -10608,15 +10687,6 @@@ F:  LICENSES
  F:    scripts/spdxcheck-test.sh
  F:    scripts/spdxcheck.py
  
 -LIGHTNVM PLATFORM SUPPORT
 -M:    Matias Bjorling <mb@lightnvm.io>
 -L:    linux-block@vger.kernel.org
 -S:    Maintained
 -W:    http://github/OpenChannelSSD
 -F:    drivers/lightnvm/
 -F:    include/linux/lightnvm.h
 -F:    include/uapi/linux/lightnvm.h
 -
  LINEAR RANGES HELPERS
  M:    Mark Brown <broonie@kernel.org>
  R:    Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
@@@ -11099,18 -11029,6 +11099,18 @@@ F: drivers/mailbox/arm_mhuv2.
  F:    include/linux/mailbox/arm_mhuv2_message.h
  F:    Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
  
 +MANAGEMENT COMPONENT TRANSPORT PROTOCOL (MCTP)
 +M:    Jeremy Kerr <jk@codeconstruct.com.au>
 +M:    Matt Johnston <matt@codeconstruct.com.au>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/networking/mctp.rst
 +F:    drivers/net/mctp/
 +F:    include/net/mctp.h
 +F:    include/net/mctpdevice.h
 +F:    include/net/netns/mctp.h
 +F:    net/mctp/
 +
  MAN-PAGES: MANUAL PAGES FOR LINUX -- Sections 2, 3, 4, 5, and 7
  M:    Michael Kerrisk <mtk.manpages@gmail.com>
  L:    linux-man@vger.kernel.org
@@@ -11121,7 -11039,7 +11121,7 @@@ MARDUK (CREATOR CI40) DEVICE TREE SUPPO
  M:    Rahul Bedarkar <rahulbedarkar89@gmail.com>
  L:    linux-mips@vger.kernel.org
  S:    Maintained
 -F:    arch/mips/boot/dts/img/pistachio_marduk.dts
 +F:    arch/mips/boot/dts/img/pistachio*
  
  MARVELL 88E6XXX ETHERNET SWITCH FABRIC DRIVER
  M:    Andrew Lunn <andrew@lunn.ch>
@@@ -11408,18 -11326,6 +11408,18 @@@ W: https://linuxtv.or
  T:    git git://linuxtv.org/media_tree.git
  F:    drivers/media/radio/radio-maxiradio*
  
 +MAXLINEAR ETHERNET PHY DRIVER
 +M:    Xu Liang <lxu@maxlinear.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/phy/mxl-gpy.c
 +
 +MCBA MICROCHIP CAN BUS ANALYZER TOOL DRIVER
 +R:    Yasushi SHOJI <yashi@spacecubics.com>
 +L:    linux-can@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/can/usb/mcba_usb.c
 +
  MCAN MMIO DEVICE DRIVER
  M:    Chandrasekar Ramakrishnan <rcsekar@samsung.com>
  L:    linux-can@vger.kernel.org
@@@ -11851,7 -11757,6 +11851,7 @@@ F:   drivers/char/hw_random/mtk-rng.
  MEDIATEK SWITCH DRIVER
  M:    Sean Wang <sean.wang@mediatek.com>
  M:    Landen Chao <Landen.Chao@mediatek.com>
 +M:    DENG Qingfang <dqfext@gmail.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/dsa/mt7530.*
@@@ -13340,15 -13245,6 +13340,15 @@@ T: git git://git.kernel.org/pub/scm/lin
  F:    Documentation/filesystems/ntfs.rst
  F:    fs/ntfs/
  
 +NTFS3 FILESYSTEM
 +M:    Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
 +L:    ntfs3@lists.linux.dev
 +S:    Supported
 +W:    http://www.paragon-software.com/
 +T:    git https://github.com/Paragon-Software-Group/linux-ntfs3.git
 +F:    Documentation/filesystems/ntfs3.rst
 +F:    fs/ntfs3/
 +
  NUBUS SUBSYSTEM
  M:    Finn Thain <fthain@linux-m68k.org>
  L:    linux-m68k@lists.linux-m68k.org
@@@ -13876,15 -13772,6 +13876,15 @@@ T: git git://linuxtv.org/media_tree.gi
  F:    Documentation/devicetree/bindings/media/i2c/ov8856.yaml
  F:    drivers/media/i2c/ov8856.c
  
 +OMNIVISION OV9282 SENSOR DRIVER
 +M:    Paul J. Murphy <paul.j.murphy@intel.com>
 +M:    Daniele Alessandrelli <daniele.alessandrelli@intel.com>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/devicetree/bindings/media/i2c/ovti,ov9282.yaml
 +F:    drivers/media/i2c/ov9282.c
 +
  OMNIVISION OV9640 SENSOR DRIVER
  M:    Petr Cvek <petrcvekcz@gmail.com>
  L:    linux-media@vger.kernel.org
@@@ -13975,12 -13862,6 +13975,12 @@@ F: Documentation/devicetree
  F:    arch/*/boot/dts/
  F:    include/dt-bindings/
  
 +OPENCOMPUTE PTP CLOCK DRIVER
 +M:    Jonathan Lemon <jonathan.lemon@gmail.com>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/ptp/ptp_ocp.c
 +
  OPENCORES I2C BUS DRIVER
  M:    Peter Korsgaard <peter@korsgaard.com>
  M:    Andrew Lunn <andrew@lunn.ch>
@@@ -14306,7 -14187,7 +14306,7 @@@ M:   Lucas Stach <l.stach@pengutronix.de
  L:    linux-pci@vger.kernel.org
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -F:    Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt
 +F:    Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml
  F:    drivers/pci/controller/dwc/*imx6*
  
  PCI DRIVER FOR FU740
@@@ -14394,8 -14275,7 +14394,8 @@@ M:   Jingoo Han <jingoohan1@gmail.com
  M:    Gustavo Pimentel <gustavo.pimentel@synopsys.com>
  L:    linux-pci@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/pci/designware-pcie.txt
 +F:    Documentation/devicetree/bindings/pci/snps,dw-pcie.yaml
 +F:    Documentation/devicetree/bindings/pci/snps,dw-pcie-ep.yaml
  F:    drivers/pci/controller/dwc/*designware*
  
  PCI DRIVER FOR TI DRA7XX/J721E
@@@ -14532,7 -14412,7 +14532,7 @@@ M:   Xiaowei Song <songxiaowei@hisilicon.
  M:    Binghui Wang <wangbinghui@hisilicon.com>
  L:    linux-pci@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/pci/kirin-pcie.txt
 +F:    Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml
  F:    drivers/pci/controller/dwc/pcie-kirin.c
  
  PCIE DRIVER FOR HISILICON STB
@@@ -14542,13 -14422,6 +14542,13 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/pci/hisilicon-histb-pcie.txt
  F:    drivers/pci/controller/dwc/pcie-histb.c
  
 +PCIE DRIVER FOR INTEL LGM GW SOC
 +M:    Rahul Tanwar <rtanwar@maxlinear.com>
 +L:    linux-pci@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/pci/intel-gw-pcie.yaml
 +F:    drivers/pci/controller/dwc/pcie-intel-gw.c
 +
  PCIE DRIVER FOR MEDIATEK
  M:    Ryder Lee <ryder.lee@mediatek.com>
  M:    Jianjun Wang <jianjun.wang@mediatek.com>
@@@ -14744,12 -14617,6 +14744,12 @@@ F: Documentation/driver-api/pin-control
  F:    drivers/pinctrl/
  F:    include/linux/pinctrl/
  
 +PIN CONTROLLER - AMD
 +M:    Basavaraj Natikar <Basavaraj.Natikar@amd.com>
 +M:    Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
 +S:    Maintained
 +F:    drivers/pinctrl/pinctrl-amd.c
 +
  PIN CONTROLLER - FREESCALE
  M:    Dong Aisheng <aisheng.dong@nxp.com>
  M:    Fabio Estevam <festevam@gmail.com>
@@@ -14768,19 -14635,12 +14768,19 @@@ S:        Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/intel.git
  F:    drivers/pinctrl/intel/
  
 +PIN CONTROLLER - KEEMBAY
 +M:    Lakshmi Sowjanya D <lakshmi.sowjanya.d@intel.com>
 +S:    Supported
 +F:    drivers/pinctrl/pinctrl-keembay*
 +
  PIN CONTROLLER - MEDIATEK
  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:    Documentation/devicetree/bindings/pinctrl/mediatek,mt65xx-pinctrl.yaml
 +F:    Documentation/devicetree/bindings/pinctrl/mediatek,mt6797-pinctrl.yaml
 +F:    Documentation/devicetree/bindings/pinctrl/mediatek,mt7622-pinctrl.yaml
 +F:    Documentation/devicetree/bindings/pinctrl/mediatek,mt8183-pinctrl.yaml
  F:    drivers/pinctrl/mediatek/
  
  PIN CONTROLLER - MICROCHIP AT91
@@@ -14834,6 -14694,14 +14834,6 @@@ S:  Maintaine
  W:    http://www.st.com/spear
  F:    drivers/pinctrl/spear/
  
 -PISTACHIO SOC SUPPORT
 -M:    James Hartley <james.hartley@sondrel.com>
 -L:    linux-mips@vger.kernel.org
 -S:    Odd Fixes
 -F:    arch/mips/boot/dts/img/pistachio*
 -F:    arch/mips/configs/pistachio*_defconfig
 -F:    arch/mips/pistachio/
 -
  PKTCDVD DRIVER
  M:    linux-block@vger.kernel.org
  S:    Orphan
@@@ -15050,10 -14918,12 +15050,10 @@@ S:        Maintaine
  F:    include/linux/printk.h
  F:    kernel/printk/
  
 -PRISM54 WIRELESS DRIVER
 -M:    Luis Chamberlain <mcgrof@kernel.org>
 -L:    linux-wireless@vger.kernel.org
 -S:    Obsolete
 -W:    https://wireless.wiki.kernel.org/en/users/Drivers/p54
 -F:    drivers/net/wireless/intersil/prism54/
 +PRINTK INDEXING
 +R:    Chris Down <chris@chrisdown.name>
 +S:    Maintained
 +F:    kernel/printk/index.c
  
  PROC FILESYSTEM
  L:    linux-kernel@vger.kernel.org
@@@ -15139,13 -15009,6 +15139,13 @@@ F: drivers/net/phy/dp83640
  F:    drivers/ptp/*
  F:    include/linux/ptp_cl*
  
 +PTP VIRTUAL CLOCK SUPPORT
 +M:    Yangbo Lu <yangbo.lu@nxp.com>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/ptp/ptp_vclock.c
 +F:    net/ethtool/phc_vclocks.c
 +
  PTRACE SUPPORT
  M:    Oleg Nesterov <oleg@redhat.com>
  S:    Maintained
@@@ -15596,8 -15459,6 +15596,8 @@@ M:   Pan, Xinhui <Xinhui.Pan@amd.com
  L:    amd-gfx@lists.freedesktop.org
  S:    Supported
  T:    git https://gitlab.freedesktop.org/agd5f/linux.git
 +B:    https://gitlab.freedesktop.org/drm/amd/-/issues
 +C:    irc://irc.oftc.net/radeon
  F:    drivers/gpu/drm/amd/
  F:    drivers/gpu/drm/radeon/
  F:    include/uapi/drm/amdgpu_drm.h
@@@ -15925,7 -15786,7 +15925,7 @@@ F:   Documentation/devicetree/bindings/i2
  F:    drivers/i2c/busses/i2c-emev2.c
  
  RENESAS ETHERNET DRIVERS
 -R:    Sergei Shtylyov <sergei.shtylyov@gmail.com>
 +R:    Sergey Shtylyov <s.shtylyov@omp.ru>
  L:    netdev@vger.kernel.org
  L:    linux-renesas-soc@vger.kernel.org
  F:    Documentation/devicetree/bindings/net/renesas,*.yaml
@@@ -15970,14 -15831,6 +15970,14 @@@ L: linux-renesas-soc@vger.kernel.or
  S:    Maintained
  F:    drivers/phy/renesas/phy-rcar-gen3-usb*.c
  
 +RENESAS RZ/G2L A/D DRIVER
 +M:    Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
 +L:    linux-iio@vger.kernel.org
 +L:    linux-renesas-soc@vger.kernel.org
 +S:    Supported
 +F:    Documentation/devicetree/bindings/iio/adc/renesas,rzg2l-adc.yaml
 +F:    drivers/iio/adc/rzg2l_adc.c
 +
  RESET CONTROLLER FRAMEWORK
  M:    Philipp Zabel <p.zabel@pengutronix.de>
  S:    Maintained
@@@ -16448,7 -16301,7 +16448,7 @@@ SAMSUNG EXYNOS TRUE RANDOM NUMBER GENER
  M:    Łukasz Stelmach <l.stelmach@samsung.com>
  L:    linux-samsung-soc@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/rng/samsung,exynos5250-trng.txt
 +F:    Documentation/devicetree/bindings/rng/samsung,exynos5250-trng.yaml
  F:    drivers/char/hw_random/exynos-trng.c
  
  SAMSUNG FRAMEBUFFER DRIVER
@@@ -16541,14 -16394,10 +16541,14 @@@ L:        linux-samsung-soc@vger.kernel.or
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/snawrocki/clk.git
  F:    Documentation/devicetree/bindings/clock/exynos*.txt
 +F:    Documentation/devicetree/bindings/clock/samsung,*.yaml
  F:    Documentation/devicetree/bindings/clock/samsung,s3c*
  F:    Documentation/devicetree/bindings/clock/samsung,s5p*
  F:    drivers/clk/samsung/
  F:    include/dt-bindings/clock/exynos*.h
 +F:    include/dt-bindings/clock/s3c*.h
 +F:    include/dt-bindings/clock/s5p*.h
 +F:    include/dt-bindings/clock/samsung,*.h
  F:    include/linux/clk/samsung.h
  F:    include/linux/platform_data/clk-s3c2410.h
  
@@@ -16590,12 -16439,6 +16590,12 @@@ F: drivers/phy/samsung/phy-s5pv210-usb2
  F:    drivers/phy/samsung/phy-samsung-usb2.c
  F:    drivers/phy/samsung/phy-samsung-usb2.h
  
 +SANCLOUD BEAGLEBONE ENHANCED DEVICE TREE
 +M:    Paul Barker <paul.barker@sancloud.com>
 +R:    Marc Murphy <marc.murphy@sancloud.com>
 +S:    Supported
 +F:    arch/arm/boot/dts/am335x-sancloud*
 +
  SC1200 WDT DRIVER
  M:    Zwane Mwaikambo <zwanem@gmail.com>
  S:    Maintained
@@@ -16855,12 -16698,6 +16855,12 @@@ F: drivers/iio/chemical/scd30_core.
  F:    drivers/iio/chemical/scd30_i2c.c
  F:    drivers/iio/chemical/scd30_serial.c
  
 +SENSIRION SGP40 GAS SENSOR DRIVER
 +M:    Andreas Klinger <ak@it-klinger.de>
 +S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-bus-iio-chemical-sgp40
 +F:    drivers/iio/chemical/sgp40.c
 +
  SENSIRION SPS30 AIR POLLUTION SENSOR DRIVER
  M:    Tomasz Duszynski <tduszyns@gmail.com>
  S:    Maintained
@@@ -17439,15 -17276,6 +17439,15 @@@ T: git git://linuxtv.org/media_tree.gi
  F:    Documentation/devicetree/bindings/media/i2c/sony,imx334.yaml
  F:    drivers/media/i2c/imx334.c
  
 +SONY IMX335 SENSOR DRIVER
 +M:    Paul J. Murphy <paul.j.murphy@intel.com>
 +M:    Daniele Alessandrelli <daniele.alessandrelli@intel.com>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/devicetree/bindings/media/i2c/sony,imx335.yaml
 +F:    drivers/media/i2c/imx335.c
 +
  SONY IMX355 SENSOR DRIVER
  M:    Tianshu Qiu <tian.shu.qiu@intel.com>
  L:    linux-media@vger.kernel.org
@@@ -17455,15 -17283,6 +17455,15 @@@ S: Maintaine
  T:    git git://linuxtv.org/media_tree.git
  F:    drivers/media/i2c/imx355.c
  
 +SONY IMX412 SENSOR DRIVER
 +M:    Paul J. Murphy <paul.j.murphy@intel.com>
 +M:    Daniele Alessandrelli <daniele.alessandrelli@intel.com>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/devicetree/bindings/media/i2c/sony,imx412.yaml
 +F:    drivers/media/i2c/imx412.c
 +
  SONY MEMORYSTICK SUBSYSTEM
  M:    Maxim Levitsky <maximlevitsky@gmail.com>
  M:    Alex Dubov <oakad@yahoo.com>
@@@ -17783,9 -17602,8 +17783,9 @@@ F:   drivers/staging/olpc_dcon
  
  STAGING - REALTEK RTL8188EU DRIVERS
  M:    Larry Finger <Larry.Finger@lwfinger.net>
 -S:    Odd Fixes
 -F:    drivers/staging/rtl8188eu/
 +M:    Phillip Potter <phil@philpotter.co.uk>
 +S:    Supported
 +F:    drivers/staging/r8188eu/
  
  STAGING - REALTEK RTL8712U DRIVERS
  M:    Larry Finger <Larry.Finger@lwfinger.net>
@@@ -17980,7 -17798,7 +17980,7 @@@ F:   include/linux/sync_file.
  F:    include/uapi/linux/sync_file.h
  
  SYNOPSYS ARC ARCHITECTURE
 -M:    Vineet Gupta <vgupta@synopsys.com>
 +M:    Vineet Gupta <vgupta@kernel.org>
  L:    linux-snps-arc@lists.infradead.org
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc.git
@@@ -18122,7 -17940,6 +18122,7 @@@ F:   drivers/regulator/scmi-regulator.
  F:    drivers/reset/reset-scmi.c
  F:    include/linux/sc[mp]i_protocol.h
  F:    include/trace/events/scmi.h
 +F:    include/uapi/linux/virtio_scmi.h
  
  SYSTEM RESET/SHUTDOWN DRIVERS
  M:    Sebastian Reichel <sre@kernel.org>
@@@ -18973,28 -18790,6 +18973,28 @@@ F: arch/x86/mm/testmmiotrace.
  F:    include/linux/mmiotrace.h
  F:    kernel/trace/trace_mmiotrace.c
  
 +TRACING OS NOISE / LATENCY TRACERS
 +M:    Steven Rostedt <rostedt@goodmis.org>
 +M:    Daniel Bristot de Oliveira <bristot@kernel.org>
 +S:    Maintained
 +F:    kernel/trace/trace_osnoise.c
 +F:    include/trace/events/osnoise.h
 +F:    kernel/trace/trace_hwlat.c
 +F:    kernel/trace/trace_irqsoff.c
 +F:    kernel/trace/trace_sched_wakeup.c
 +F:    Documentation/trace/osnoise-tracer.rst
 +F:    Documentation/trace/timerlat-tracer.rst
 +F:    Documentation/trace/hwlat_detector.rst
 +F:    arch/*/kernel/trace.c
 +
 +TRADITIONAL CHINESE DOCUMENTATION
 +M:    Hu Haowen <src.res@email.cn>
 +L:    linux-doc-tw-discuss@lists.sourceforge.net
 +S:    Maintained
 +W:    https://github.com/srcres258/linux-doc
 +T:    git git://github.com/srcres258/linux-doc.git doc-zh-tw
 +F:    Documentation/translations/zh_TW/
 +
  TRIVIAL PATCHES
  M:    Jiri Kosina <trivial@kernel.org>
  S:    Maintained
@@@ -19167,8 -18962,9 +19167,8 @@@ W:   http://dotat.at/prog/unifde
  F:    scripts/unifdef.c
  
  UNIFORM CDROM DRIVER
 -M:    Jens Axboe <axboe@kernel.dk>
 +M:    Phillip Potter <phil@philpotter.co.uk>
  S:    Maintained
 -W:    http://www.kernel.dk
  F:    Documentation/cdrom/
  F:    drivers/cdrom/cdrom.c
  F:    include/linux/cdrom.h
@@@ -19318,7 -19114,7 +19318,7 @@@ M:   Mauro Carvalho Chehab <mchehab@kerne
  L:    linux-usb@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/phy/hisilicon,hi3670-usb3.yaml
 -F:    drivers/phy/hisilicon/phy-kirin970-usb3.c
 +F:    drivers/phy/hisilicon/phy-hi3670-usb3.c
  
  USB ISP116X DRIVER
  M:    Olav Kongas <ok@artecdesign.ee>
@@@ -19653,7 -19449,6 +19653,7 @@@ T:   git git://github.com/awilliam/linux-
  F:    Documentation/driver-api/vfio.rst
  F:    drivers/vfio/
  F:    include/linux/vfio.h
 +F:    include/linux/vfio_pci_core.h
  F:    include/uapi/linux/vfio.h
  
  VFIO FSL-MC DRIVER
@@@ -19852,6 -19647,15 +19852,15 @@@ F: Documentation/filesystems/virtiofs.r
  F:    fs/fuse/virtio_fs.c
  F:    include/uapi/linux/virtio_fs.h
  
+ VIRTIO GPIO DRIVER
+ M:    Enrico Weigelt, metux IT consult <info@metux.net>
+ M:    Viresh Kumar <vireshk@kernel.org>
+ L:    linux-gpio@vger.kernel.org
+ L:    virtualization@lists.linux-foundation.org
+ S:    Maintained
+ F:    drivers/gpio/gpio-virtio.c
+ F:    include/uapi/linux/virtio_gpio.h
  VIRTIO GPU DRIVER
  M:    David Airlie <airlied@linux.ie>
  M:    Gerd Hoffmann <kraxel@redhat.com>
@@@ -19904,15 -19708,6 +19913,15 @@@ S: Maintaine
  F:    include/uapi/linux/virtio_snd.h
  F:    sound/virtio/*
  
 +VIRTIO I2C DRIVER
 +M:    Jie Deng <jie.deng@intel.com>
 +M:    Viresh Kumar <viresh.kumar@linaro.org>
 +L:    linux-i2c@vger.kernel.org
 +L:    virtualization@lists.linux-foundation.org
 +S:    Maintained
 +F:    drivers/i2c/busses/i2c-virtio.c
 +F:    include/uapi/linux/virtio_i2c.h
 +
  VIRTUAL BOX GUEST DEVICE DRIVER
  M:    Hans de Goede <hdegoede@redhat.com>
  M:    Arnd Bergmann <arnd@arndb.de>
@@@ -20006,14 -19801,6 +20015,14 @@@ L: netdev@vger.kernel.or
  S:    Supported
  F:    drivers/ptp/ptp_vmw.c
  
 +VMWARE VMCI DRIVER
 +M:    Jorgen Hansen <jhansen@vmware.com>
 +M:    Vishnu Dasa <vdasa@vmware.com>
 +L:    linux-kernel@vger.kernel.org
 +L:    pv-drivers@vmware.com (private)
 +S:    Maintained
 +F:    drivers/misc/vmw_vmci/
 +
  VMWARE VMMOUSE SUBDRIVER
  M:    "VMware Graphics" <linux-graphics-maintainer@vmware.com>
  M:    "VMware, Inc." <pv-drivers@vmware.com>
@@@ -20214,8 -20001,7 +20223,8 @@@ F:   Documentation/devicetree/bindings/ex
  F:    Documentation/devicetree/bindings/mfd/wlf,arizona.yaml
  F:    Documentation/devicetree/bindings/mfd/wm831x.txt
  F:    Documentation/devicetree/bindings/regulator/wlf,arizona.yaml
 -F:    Documentation/devicetree/bindings/sound/wlf,arizona.yaml
 +F:    Documentation/devicetree/bindings/sound/wlf,*.yaml
 +F:    Documentation/devicetree/bindings/sound/wm*
  F:    Documentation/hwmon/wm83??.rst
  F:    arch/arm/mach-s3c/mach-crag6410*
  F:    drivers/clk/clk-wm83*.c
@@@ -20546,7 -20332,7 +20555,7 @@@ R:   Srinivas Neeli <srinivas.neeli@xilin
  R:    Michal Simek <michal.simek@xilinx.com>
  S:    Maintained
  F:    Documentation/devicetree/bindings/gpio/gpio-xilinx.txt
- F:    Documentation/devicetree/bindings/gpio/gpio-zynq.txt
+ F:    Documentation/devicetree/bindings/gpio/gpio-zynq.yaml
  F:    drivers/gpio/gpio-xilinx.c
  F:    drivers/gpio/gpio-zynq.c
  
  #include <linux/spinlock.h>
  #include <linux/string.h>
  
- /*
-  * MAX_NR_HW_GPIO represents the number of actual hardware-supported GPIOs (ie,
-  * slots within the clocked serial GPIO data). Since each HW GPIO is both an
-  * input and an output, we provide MAX_NR_HW_GPIO * 2 lines on our gpiochip
-  * device.
-  *
-  * We use SGPIO_OUTPUT_OFFSET to define the split between the inputs and
-  * outputs; the inputs start at line 0, the outputs start at OUTPUT_OFFSET.
-  */
- #define MAX_NR_HW_SGPIO                       80
- #define SGPIO_OUTPUT_OFFSET           MAX_NR_HW_SGPIO
  #define ASPEED_SGPIO_CTRL             0x54
  
- #define ASPEED_SGPIO_PINS_MASK                GENMASK(9, 6)
  #define ASPEED_SGPIO_CLK_DIV_MASK     GENMASK(31, 16)
  #define ASPEED_SGPIO_ENABLE           BIT(0)
+ #define ASPEED_SGPIO_PINS_SHIFT               6
+ struct aspeed_sgpio_pdata {
+       const u32 pin_mask;
+ };
  
  struct aspeed_sgpio {
        struct gpio_chip chip;
+       struct irq_chip intc;
        struct clk *pclk;
        spinlock_t lock;
        void __iomem *base;
        int irq;
-       int n_sgpio;
  };
  
  struct aspeed_sgpio_bank {
-       uint16_t    val_regs;
-       uint16_t    rdata_reg;
-       uint16_t    irq_regs;
+       u16    val_regs;
+       u16    rdata_reg;
+       u16    irq_regs;
+       u16    tolerance_regs;
        const char  names[4][3];
  };
  
@@@ -63,19 -56,29 +56,29 @@@ static const struct aspeed_sgpio_bank a
                .val_regs = 0x0000,
                .rdata_reg = 0x0070,
                .irq_regs = 0x0004,
+               .tolerance_regs = 0x0018,
                .names = { "A", "B", "C", "D" },
        },
        {
                .val_regs = 0x001C,
                .rdata_reg = 0x0074,
                .irq_regs = 0x0020,
+               .tolerance_regs = 0x0034,
                .names = { "E", "F", "G", "H" },
        },
        {
                .val_regs = 0x0038,
                .rdata_reg = 0x0078,
                .irq_regs = 0x003C,
-               .names = { "I", "J" },
+               .tolerance_regs = 0x0050,
+               .names = { "I", "J", "K", "L" },
+       },
+       {
+               .val_regs = 0x0090,
+               .rdata_reg = 0x007C,
+               .irq_regs = 0x0094,
+               .tolerance_regs = 0x00A8,
+               .names = { "M", "N", "O", "P" },
        },
  };
  
@@@ -87,6 -90,7 +90,7 @@@ enum aspeed_sgpio_reg 
        reg_irq_type1,
        reg_irq_type2,
        reg_irq_status,
+       reg_tolerance,
  };
  
  #define GPIO_VAL_VALUE      0x00
@@@ -115,15 -119,17 +119,17 @@@ static void __iomem *bank_reg(struct as
                return gpio->base + bank->irq_regs + GPIO_IRQ_TYPE2;
        case reg_irq_status:
                return gpio->base + bank->irq_regs + GPIO_IRQ_STATUS;
+       case reg_tolerance:
+               return gpio->base + bank->tolerance_regs;
        default:
                /* acturally if code runs to here, it's an error case */
                BUG();
        }
  }
  
- #define GPIO_BANK(x)    ((x % SGPIO_OUTPUT_OFFSET) >> 5)
- #define GPIO_OFFSET(x)  ((x % SGPIO_OUTPUT_OFFSET) & 0x1f)
- #define GPIO_BIT(x)     BIT(GPIO_OFFSET(x))
+ #define GPIO_BANK(x)    ((x) >> 6)
+ #define GPIO_OFFSET(x)  ((x) & GENMASK(5, 0))
+ #define GPIO_BIT(x)     BIT(GPIO_OFFSET(x) >> 1)
  
  static const struct aspeed_sgpio_bank *to_bank(unsigned int offset)
  {
  static int aspeed_sgpio_init_valid_mask(struct gpio_chip *gc,
                unsigned long *valid_mask, unsigned int ngpios)
  {
-       struct aspeed_sgpio *sgpio = gpiochip_get_data(gc);
-       int n = sgpio->n_sgpio;
-       int c = SGPIO_OUTPUT_OFFSET - n;
-       WARN_ON(ngpios < MAX_NR_HW_SGPIO * 2);
-       /* input GPIOs in the lower range */
-       bitmap_set(valid_mask, 0, n);
-       bitmap_clear(valid_mask, n, c);
-       /* output GPIOS above SGPIO_OUTPUT_OFFSET */
-       bitmap_set(valid_mask, SGPIO_OUTPUT_OFFSET, n);
-       bitmap_clear(valid_mask, SGPIO_OUTPUT_OFFSET + n, c);
+       bitmap_set(valid_mask, 0, ngpios);
        return 0;
  }
  
  static void aspeed_sgpio_irq_init_valid_mask(struct gpio_chip *gc,
                unsigned long *valid_mask, unsigned int ngpios)
  {
-       struct aspeed_sgpio *sgpio = gpiochip_get_data(gc);
-       int n = sgpio->n_sgpio;
+       unsigned int i;
  
-       WARN_ON(ngpios < MAX_NR_HW_SGPIO * 2);
-       /* input GPIOs in the lower range */
-       bitmap_set(valid_mask, 0, n);
-       bitmap_clear(valid_mask, n, ngpios - n);
+       /* input GPIOs are even bits */
+       for (i = 0; i < ngpios; i++) {
+               if (i % 2)
+                       clear_bit(i, valid_mask);
+       }
  }
  
  static bool aspeed_sgpio_is_input(unsigned int offset)
  {
-       return offset < SGPIO_OUTPUT_OFFSET;
+       return !(offset % 2);
  }
  
  static int aspeed_sgpio_get(struct gpio_chip *gc, unsigned int offset)
@@@ -392,7 -384,7 +384,7 @@@ static void aspeed_sgpio_irq_handler(st
        struct gpio_chip *gc = irq_desc_get_handler_data(desc);
        struct irq_chip *ic = irq_desc_get_chip(desc);
        struct aspeed_sgpio *data = gpiochip_get_data(gc);
 -      unsigned int i, p, girq;
 +      unsigned int i, p;
        unsigned long reg;
  
        chained_irq_enter(ic, desc);
  
                reg = ioread32(bank_reg(data, bank, reg_irq_status));
  
 -              for_each_set_bit(p, &reg, 32) {
 -                      girq = irq_find_mapping(gc->irq.domain, i * 32 + p);
 -                      generic_handle_irq(girq);
 -              }
 -
 +              for_each_set_bit(p, &reg, 32)
 +                      generic_handle_domain_irq(gc->irq.domain, i * 32 + p);
        }
  
        chained_irq_exit(ic, desc);
  }
  
- static struct irq_chip aspeed_sgpio_irqchip = {
-       .name       = "aspeed-sgpio",
-       .irq_ack    = aspeed_sgpio_irq_ack,
-       .irq_mask   = aspeed_sgpio_irq_mask,
-       .irq_unmask = aspeed_sgpio_irq_unmask,
-       .irq_set_type   = aspeed_sgpio_set_type,
- };
  static int aspeed_sgpio_setup_irqs(struct aspeed_sgpio *gpio,
                                   struct platform_device *pdev)
  {
                iowrite32(0xffffffff, bank_reg(gpio, bank, reg_irq_status));
        }
  
+       gpio->intc.name = dev_name(&pdev->dev);
+       gpio->intc.irq_ack = aspeed_sgpio_irq_ack;
+       gpio->intc.irq_mask = aspeed_sgpio_irq_mask;
+       gpio->intc.irq_unmask = aspeed_sgpio_irq_unmask;
+       gpio->intc.irq_set_type = aspeed_sgpio_set_type;
        irq = &gpio->chip.irq;
-       irq->chip = &aspeed_sgpio_irqchip;
+       irq->chip = &gpio->intc;
        irq->init_valid_mask = aspeed_sgpio_irq_init_valid_mask;
        irq->handler = handle_bad_irq;
        irq->default_type = IRQ_TYPE_NONE;
        return 0;
  }
  
+ static const struct aspeed_sgpio_pdata ast2400_sgpio_pdata = {
+       .pin_mask = GENMASK(9, 6),
+ };
+ static int aspeed_sgpio_reset_tolerance(struct gpio_chip *chip,
+                                       unsigned int offset, bool enable)
+ {
+       struct aspeed_sgpio *gpio = gpiochip_get_data(chip);
+       unsigned long flags;
+       void __iomem *reg;
+       u32 val;
+       reg = bank_reg(gpio, to_bank(offset), reg_tolerance);
+       spin_lock_irqsave(&gpio->lock, flags);
+       val = readl(reg);
+       if (enable)
+               val |= GPIO_BIT(offset);
+       else
+               val &= ~GPIO_BIT(offset);
+       writel(val, reg);
+       spin_unlock_irqrestore(&gpio->lock, flags);
+       return 0;
+ }
+ static int aspeed_sgpio_set_config(struct gpio_chip *chip, unsigned int offset,
+                                  unsigned long config)
+ {
+       unsigned long param = pinconf_to_config_param(config);
+       u32 arg = pinconf_to_config_argument(config);
+       if (param == PIN_CONFIG_PERSIST_STATE)
+               return aspeed_sgpio_reset_tolerance(chip, offset, arg);
+       return -ENOTSUPP;
+ }
+ static const struct aspeed_sgpio_pdata ast2600_sgpiom_pdata = {
+       .pin_mask = GENMASK(10, 6),
+ };
  static const struct of_device_id aspeed_sgpio_of_table[] = {
-       { .compatible = "aspeed,ast2400-sgpio" },
-       { .compatible = "aspeed,ast2500-sgpio" },
+       { .compatible = "aspeed,ast2400-sgpio", .data = &ast2400_sgpio_pdata, },
+       { .compatible = "aspeed,ast2500-sgpio", .data = &ast2400_sgpio_pdata, },
+       { .compatible = "aspeed,ast2600-sgpiom", .data = &ast2600_sgpiom_pdata, },
        {}
  };
  
@@@ -473,10 -513,11 +510,11 @@@ MODULE_DEVICE_TABLE(of, aspeed_sgpio_of
  
  static int __init aspeed_sgpio_probe(struct platform_device *pdev)
  {
+       u32 nr_gpios, sgpio_freq, sgpio_clk_div, gpio_cnt_regval, pin_mask;
+       const struct aspeed_sgpio_pdata *pdata;
        struct aspeed_sgpio *gpio;
-       u32 nr_gpios, sgpio_freq, sgpio_clk_div;
-       int rc;
        unsigned long apb_freq;
+       int rc;
  
        gpio = devm_kzalloc(&pdev->dev, sizeof(*gpio), GFP_KERNEL);
        if (!gpio)
        if (IS_ERR(gpio->base))
                return PTR_ERR(gpio->base);
  
-       rc = of_property_read_u32(pdev->dev.of_node, "ngpios", &nr_gpios);
+       pdata = device_get_match_data(&pdev->dev);
+       if (!pdata)
+               return -EINVAL;
+       pin_mask = pdata->pin_mask;
+       rc = device_property_read_u32(&pdev->dev, "ngpios", &nr_gpios);
        if (rc < 0) {
                dev_err(&pdev->dev, "Could not read ngpios property\n");
                return -EINVAL;
-       } else if (nr_gpios > MAX_NR_HW_SGPIO) {
-               dev_err(&pdev->dev, "Number of GPIOs exceeds the maximum of %d: %d\n",
-                       MAX_NR_HW_SGPIO, nr_gpios);
+       } else if (nr_gpios % 8) {
+               dev_err(&pdev->dev, "Number of GPIOs not multiple of 8: %d\n",
+                       nr_gpios);
                return -EINVAL;
        }
-       gpio->n_sgpio = nr_gpios;
  
-       rc = of_property_read_u32(pdev->dev.of_node, "bus-frequency", &sgpio_freq);
+       rc = device_property_read_u32(&pdev->dev, "bus-frequency", &sgpio_freq);
        if (rc < 0) {
                dev_err(&pdev->dev, "Could not read bus-frequency property\n");
                return -EINVAL;
        if (sgpio_clk_div > (1 << 16) - 1)
                return -EINVAL;
  
-       iowrite32(FIELD_PREP(ASPEED_SGPIO_CLK_DIV_MASK, sgpio_clk_div) |
-                 FIELD_PREP(ASPEED_SGPIO_PINS_MASK, (nr_gpios / 8)) |
-                 ASPEED_SGPIO_ENABLE,
-                 gpio->base + ASPEED_SGPIO_CTRL);
+       gpio_cnt_regval = ((nr_gpios / 8) << ASPEED_SGPIO_PINS_SHIFT) & pin_mask;
+       iowrite32(FIELD_PREP(ASPEED_SGPIO_CLK_DIV_MASK, sgpio_clk_div) | gpio_cnt_regval |
+                 ASPEED_SGPIO_ENABLE, gpio->base + ASPEED_SGPIO_CTRL);
  
        spin_lock_init(&gpio->lock);
  
        gpio->chip.parent = &pdev->dev;
-       gpio->chip.ngpio = MAX_NR_HW_SGPIO * 2;
+       gpio->chip.ngpio = nr_gpios * 2;
        gpio->chip.init_valid_mask = aspeed_sgpio_init_valid_mask;
        gpio->chip.direction_input = aspeed_sgpio_dir_in;
        gpio->chip.direction_output = aspeed_sgpio_dir_out;
        gpio->chip.free = NULL;
        gpio->chip.get = aspeed_sgpio_get;
        gpio->chip.set = aspeed_sgpio_set;
-       gpio->chip.set_config = NULL;
+       gpio->chip.set_config = aspeed_sgpio_set_config;
        gpio->chip.label = dev_name(&pdev->dev);
        gpio->chip.base = -1;
  
@@@ -277,14 -277,15 +277,14 @@@ static void brcmstb_gpio_irq_bank_handl
        unsigned long status;
  
        while ((status = brcmstb_gpio_get_active_irqs(bank))) {
 -              unsigned int irq, offset;
 +              unsigned int offset;
  
                for_each_set_bit(offset, &status, 32) {
                        if (offset >= bank->width)
                                dev_warn(&priv->pdev->dev,
                                         "IRQ for invalid GPIO (bank=%d, offset=%d)\n",
                                         bank->id, offset);
 -                      irq = irq_linear_revmap(domain, hwbase + offset);
 -                      generic_handle_irq(irq);
 +                      generic_handle_domain_irq(domain, hwbase + offset);
                }
        }
  }
@@@ -602,49 -603,6 +602,6 @@@ static const struct dev_pm_ops brcmstb_
        .resume_noirq = brcmstb_gpio_resume,
  };
  
- static void brcmstb_gpio_set_names(struct device *dev,
-                                  struct brcmstb_gpio_bank *bank)
- {
-       struct device_node *np = dev->of_node;
-       const char **names;
-       int nstrings, base;
-       unsigned int i;
-       base = bank->id * MAX_GPIO_PER_BANK;
-       nstrings = of_property_count_strings(np, "gpio-line-names");
-       if (nstrings <= base)
-               /* Line names not present */
-               return;
-       names = devm_kcalloc(dev, MAX_GPIO_PER_BANK, sizeof(*names),
-                            GFP_KERNEL);
-       if (!names)
-               return;
-       /*
-        * Make sure to not index beyond the end of the number of descriptors
-        * of the GPIO device.
-        */
-       for (i = 0; i < bank->width; i++) {
-               const char *name;
-               int ret;
-               ret = of_property_read_string_index(np, "gpio-line-names",
-                                                   base + i, &name);
-               if (ret) {
-                       if (ret != -ENODATA)
-                               dev_err(dev, "unable to name line %d: %d\n",
-                                       base + i, ret);
-                       break;
-               }
-               if (*name)
-                       names[i] = name;
-       }
-       bank->gc.names = names;
- }
  static int brcmstb_gpio_probe(struct platform_device *pdev)
  {
        struct device *dev = &pdev->dev;
                gc->of_xlate = brcmstb_gpio_of_xlate;
                /* not all ngpio lines are valid, will use bank width later */
                gc->ngpio = MAX_GPIO_PER_BANK;
+               gc->offset = bank->id * MAX_GPIO_PER_BANK;
                if (priv->parent_irq > 0)
                        gc->to_irq = brcmstb_gpio_to_irq;
  
                need_wakeup_event |= !!__brcmstb_gpio_get_active_irqs(bank);
                gc->write_reg(reg_base + GIO_MASK(bank->id), 0);
  
-               brcmstb_gpio_set_names(dev, bank);
                err = gpiochip_add_data(gc, bank);
                if (err) {
                        dev_err(dev, "Could not add gpiochip for bank %d\n",
@@@ -120,7 -120,7 +120,7 @@@ static irqreturn_t mpc8xxx_gpio_irq_cas
        mask = gc->read_reg(mpc8xxx_gc->regs + GPIO_IER)
                & gc->read_reg(mpc8xxx_gc->regs + GPIO_IMR);
        for_each_set_bit(i, &mask, 32)
 -              generic_handle_irq(irq_linear_revmap(mpc8xxx_gc->irq, 31 - i));
 +              generic_handle_domain_irq(mpc8xxx_gc->irq, 31 - i);
  
        return IRQ_HANDLED;
  }
@@@ -332,7 -332,7 +332,7 @@@ static int mpc8xxx_probe(struct platfor
                                 mpc8xxx_gc->regs + GPIO_DIR, NULL,
                                 BGPIOF_BIG_ENDIAN);
                if (ret)
-                       goto err;
+                       return ret;
                dev_dbg(&pdev->dev, "GPIO registers are LITTLE endian\n");
        } else {
                ret = bgpio_init(gc, &pdev->dev, 4,
                                 BGPIOF_BIG_ENDIAN
                                 | BGPIOF_BIG_ENDIAN_BYTE_ORDER);
                if (ret)
-                       goto err;
+                       return ret;
                dev_dbg(&pdev->dev, "GPIO registers are BIG endian\n");
        }
  
            is_acpi_node(fwnode))
                gc->write_reg(mpc8xxx_gc->regs + GPIO_IBE, 0xffffffff);
  
-       ret = gpiochip_add_data(gc, mpc8xxx_gc);
+       ret = devm_gpiochip_add_data(&pdev->dev, gc, mpc8xxx_gc);
        if (ret) {
                dev_err(&pdev->dev,
                        "GPIO chip registration failed with status %d\n", ret);
-               goto err;
+               return ret;
        }
  
        mpc8xxx_gc->irqn = platform_get_irq(pdev, 0);
  
        ret = devm_request_irq(&pdev->dev, mpc8xxx_gc->irqn,
                               mpc8xxx_gpio_irq_cascade,
 -                             IRQF_SHARED, "gpio-cascade",
 +                             IRQF_NO_THREAD | IRQF_SHARED, "gpio-cascade",
                               mpc8xxx_gc);
        if (ret) {
                dev_err(&pdev->dev,
  
        return 0;
  err:
-       iounmap(mpc8xxx_gc->regs);
+       irq_domain_remove(mpc8xxx_gc->irq);
        return ret;
  }
  
@@@ -429,9 -429,6 +429,6 @@@ static int mpc8xxx_remove(struct platfo
                irq_domain_remove(mpc8xxx_gc->irq);
        }
  
-       gpiochip_remove(&mpc8xxx_gc->gc);
-       iounmap(mpc8xxx_gc->regs);
        return 0;
  }
  
@@@ -95,7 -95,9 +95,7 @@@ mediatek_gpio_irq_handler(int irq, voi
        pending = mtk_gpio_r32(rg, GPIO_REG_STAT);
  
        for_each_set_bit(bit, &pending, MTK_BANK_WIDTH) {
 -              u32 map = irq_find_mapping(gc->irq.domain, bit);
 -
 -              generic_handle_irq(map);
 +              generic_handle_domain_irq(gc->irq.domain, bit);
                mtk_gpio_w32(rg, GPIO_REG_STAT, BIT(bit));
                ret |= IRQ_HANDLED;
        }
@@@ -239,6 -241,7 +239,7 @@@ mediatek_gpio_bank_probe(struct device 
        if (!rg->chip.label)
                return -ENOMEM;
  
+       rg->chip.offset = bank * MTK_BANK_WIDTH;
        rg->irq_chip.name = dev_name(dev);
        rg->irq_chip.parent_device = dev;
        rg->irq_chip.irq_unmask = mediatek_gpio_irq_unmask;
diff --combined drivers/gpio/gpio-rcar.c
@@@ -213,8 -213,8 +213,8 @@@ static irqreturn_t gpio_rcar_irq_handle
                          gpio_rcar_read(p, INTMSK))) {
                offset = __ffs(pending);
                gpio_rcar_write(p, INTCLR, BIT(offset));
 -              generic_handle_irq(irq_find_mapping(p->gpio_chip.irq.domain,
 -                                                  offset));
 +              generic_handle_domain_irq(p->gpio_chip.irq.domain,
 +                                        offset);
                irqs_handled++;
        }
  
@@@ -564,9 -564,9 +564,9 @@@ static int gpio_rcar_probe(struct platf
        }
  
        if (p->info.has_inen) {
-               pm_runtime_get_sync(p->dev);
+               pm_runtime_get_sync(dev);
                gpio_rcar_enable_inputs(p);
-               pm_runtime_put(p->dev);
+               pm_runtime_put(dev);
        }
  
        dev_info(dev, "driving %d GPIOs\n", npins);
@@@ -456,7 -456,7 +456,7 @@@ static void tegra186_gpio_irq(struct ir
  
        for (i = 0; i < gpio->soc->num_ports; i++) {
                const struct tegra_gpio_port *port = &gpio->soc->ports[i];
 -              unsigned int pin, irq;
 +              unsigned int pin;
                unsigned long value;
                void __iomem *base;
  
                value = readl(base + TEGRA186_GPIO_INTERRUPT_STATUS(1));
  
                for_each_set_bit(pin, &value, port->pins) {
 -                      irq = irq_find_mapping(domain, offset + pin);
 -                      if (WARN_ON(irq == 0))
 -                              continue;
 -
 -                      generic_handle_irq(irq);
 +                      int ret = generic_handle_domain_irq(domain, offset + pin);
 +                      WARN_RATELIMIT(ret, "hwirq = %d", offset + pin);
                }
  
  skip:
@@@ -607,15 -610,21 +607,21 @@@ static int tegra186_gpio_probe(struct p
        if (!gpio)
                return -ENOMEM;
  
-       gpio->soc = of_device_get_match_data(&pdev->dev);
+       gpio->soc = device_get_match_data(&pdev->dev);
  
        gpio->secure = devm_platform_ioremap_resource_byname(pdev, "security");
-       if (IS_ERR(gpio->secure))
-               return PTR_ERR(gpio->secure);
+       if (IS_ERR(gpio->secure)) {
+               gpio->secure = devm_platform_ioremap_resource(pdev, 0);
+               if (IS_ERR(gpio->secure))
+                       return PTR_ERR(gpio->secure);
+       }
  
        gpio->base = devm_platform_ioremap_resource_byname(pdev, "gpio");
-       if (IS_ERR(gpio->base))
-               return PTR_ERR(gpio->base);
+       if (IS_ERR(gpio->base)) {
+               gpio->base = devm_platform_ioremap_resource(pdev, 1);
+               if (IS_ERR(gpio->base))
+                       return PTR_ERR(gpio->base);
+       }
  
        err = platform_irq_count(pdev);
        if (err < 0)
  
        gpio->gpio.names = (const char * const *)names;
  
+ #if defined(CONFIG_OF_GPIO)
        gpio->gpio.of_node = pdev->dev.of_node;
        gpio->gpio.of_gpio_n_cells = 2;
        gpio->gpio.of_xlate = tegra186_gpio_of_xlate;
+ #endif /* CONFIG_OF_GPIO */
  
-       gpio->intc.name = pdev->dev.of_node->name;
+       gpio->intc.name = dev_name(&pdev->dev);
        gpio->intc.irq_ack = tegra186_irq_ack;
        gpio->intc.irq_mask = tegra186_irq_mask;
        gpio->intc.irq_unmask = tegra186_irq_unmask;
@@@ -893,10 -904,20 +901,20 @@@ static const struct of_device_id tegra1
  };
  MODULE_DEVICE_TABLE(of, tegra186_gpio_of_match);
  
+ static const struct acpi_device_id  tegra186_gpio_acpi_match[] = {
+       { .id = "NVDA0108", .driver_data = (kernel_ulong_t)&tegra186_main_soc },
+       { .id = "NVDA0208", .driver_data = (kernel_ulong_t)&tegra186_aon_soc },
+       { .id = "NVDA0308", .driver_data = (kernel_ulong_t)&tegra194_main_soc },
+       { .id = "NVDA0408", .driver_data = (kernel_ulong_t)&tegra194_aon_soc },
+       {}
+ };
+ MODULE_DEVICE_TABLE(acpi, tegra186_gpio_acpi_match);
  static struct platform_driver tegra186_gpio_driver = {
        .driver = {
                .name = "tegra186-gpio",
                .of_match_table = tegra186_gpio_of_match,
+               .acpi_match_table = tegra186_gpio_acpi_match,
        },
        .probe = tegra186_gpio_probe,
  };
diff --combined include/linux/of.h
@@@ -896,7 -896,7 +896,7 @@@ static inline int of_parse_phandle_with
        return -ENOSYS;
  }
  
- static inline int of_count_phandle_with_args(struct device_node *np,
+ static inline int of_count_phandle_with_args(const struct device_node *np,
                                             const char *list_name,
                                             const char *cells_name)
  {
@@@ -946,11 -946,6 +946,11 @@@ static inline int of_machine_is_compati
        return 0;
  }
  
 +static inline int of_add_property(struct device_node *np, struct property *prop)
 +{
 +      return 0;
 +}
 +
  static inline int of_remove_property(struct device_node *np, struct property *prop)
  {
        return 0;
  #define VIRTIO_ID_FS                  26 /* virtio filesystem */
  #define VIRTIO_ID_PMEM                        27 /* virtio pmem */
  #define VIRTIO_ID_MAC80211_HWSIM      29 /* virtio mac80211-hwsim */
 +#define VIRTIO_ID_SCMI                        32 /* virtio SCMI */
 +#define VIRTIO_ID_I2C_ADAPTER         34 /* virtio i2c adapter */
  #define VIRTIO_ID_BT                  40 /* virtio bluetooth */
+ #define VIRTIO_ID_GPIO                        41 /* virtio gpio */
  
  /*
   * Virtio Transitional IDs