]> Git Repo - J-linux.git/commitdiff
Merge tag 'drivers-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
authorLinus Torvalds <[email protected]>
Thu, 4 Nov 2021 00:00:52 +0000 (17:00 -0700)
committerLinus Torvalds <[email protected]>
Thu, 4 Nov 2021 00:00:52 +0000 (17:00 -0700)
Pull ARM SoC driver updates from Arnd Bergmann:
 "These are all the driver updates for SoC specific drivers. There are a
  couple of subsystems with individual maintainers picking up their
  patches here:

   - The reset controller subsystem add support for a few new SoC
     variants to existing drivers, along with other minor improvements

   - The OP-TEE subsystem gets a driver for the ARM FF-A transport

   - The memory controller subsystem has improvements for Tegra,
     Mediatek, Renesas, Freescale and Broadcom specific drivers.

   - The tegra cpuidle driver changes get merged through this tree this
     time. There are only minor changes, but they depend on other tegra
     driver updates here.

   - The ep93xx platform finally moves to using the drivers/clk/
     subsystem, moving the code out of arch/arm in the process. This
     depends on a small sound driver change that is included here as
     well.

   - There are some minor updates for Qualcomm and Tegra specific
     firmware drivers.

  The other driver updates are mainly for drivers/soc, which contains a
  mixture of vendor specific drivers that don't really fit elsewhere:

   - Mediatek drivers gain more support for MT8192, with new support for
     hw-mutex and mmsys routing, plus support for reset lines in the
     mmsys driver.

   - Qualcomm gains a new "sleep stats" driver, and support for the
     "Generic Packet Router" in the APR driver.

   - There is a new user interface for routing the UARTS on ASpeed BMCs,
     something that apparently nobody else has needed so far.

   - More drivers can now be built as loadable modules, in particular
     for Broadcom and Samsung platforms.

   - Lots of improvements to the TI sysc driver for better
     suspend/resume support"

  Finally, there are lots of minor cleanups and new device IDs for
  amlogic, renesas, tegra, qualcomm, mediateka, samsung, imx,
  layerscape, allwinner, broadcom, and omap"

* tag 'drivers-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (179 commits)
  optee: Fix spelling mistake "reclain" -> "reclaim"
  Revert "firmware: qcom: scm: Add support for MC boot address API"
  qcom: spm: allow compile-testing
  firmware: arm_ffa: Remove unused 'compat_version' variable
  soc: samsung: exynos-chipid: add exynosautov9 SoC support
  firmware: qcom: scm: Don't break compile test on non-ARM platforms
  soc: qcom: smp2p: Add of_node_put() before goto
  soc: qcom: apr: Add of_node_put() before return
  soc: qcom: qcom_stats: Fix client votes offset
  soc: qcom: rpmhpd: fix sm8350_mxc's peer domain
  dt-bindings: arm: cpus: Document qcom,msm8916-smp enable-method
  ARM: qcom: Add qcom,msm8916-smp enable-method identical to MSM8226
  firmware: qcom: scm: Add support for MC boot address API
  soc: qcom: spm: Add 8916 SPM register data
  dt-bindings: soc: qcom: spm: Document qcom,msm8916-saw2-v3.0-cpu
  soc: qcom: socinfo: Add PM8150C and SMB2351 models
  firmware: qcom_scm: Fix error retval in __qcom_scm_is_call_available()
  soc: aspeed: Add UART routing support
  soc: fsl: dpio: rename the enqueue descriptor variable
  soc: fsl: dpio: use an explicit NULL instead of 0
  ...

15 files changed:
1  2 
Documentation/devicetree/bindings/arm/cpus.yaml
Documentation/devicetree/bindings/display/msm/dp-controller.yaml
Documentation/devicetree/bindings/sram/sram.yaml
Documentation/devicetree/bindings/vendor-prefixes.yaml
MAINTAINERS
arch/arm/Kconfig
arch/arm64/Kconfig.platforms
drivers/bus/Kconfig
drivers/bus/ti-sysc.c
drivers/of/platform.c
drivers/reset/Kconfig
drivers/soc/fsl/dpio/dpio-service.c
drivers/soc/fsl/dpio/qbman-portal.c
drivers/soc/qcom/socinfo.c
sound/soc/cirrus/ep93xx-i2s.c

index 49bbaf1a3ea6e5afc29bc49360aff95f5e1701ff,cd52f5c9b762f43df50456795f5abb24778ff4bb..f2ab6423b4af1de24f90cb773793a6252735b097
@@@ -171,8 -171,6 +171,8 @@@ properties
        - qcom,kryo385
        - qcom,kryo468
        - qcom,kryo485
 +      - qcom,kryo560
 +      - qcom,kryo570
        - qcom,kryo685
        - qcom,scorpion
  
            - qcom,gcc-msm8660
            - qcom,kpss-acc-v1
            - qcom,kpss-acc-v2
+           - qcom,msm8226-smp
+           # Only valid on ARM 32-bit, see above for ARM v8 64-bit
+           - qcom,msm8916-smp
            - renesas,apmu
            - renesas,r9a06g032-smp
            - rockchip,rk3036-smp
        DMIPS/MHz, relative to highest capacity-dmips-mhz
        in the system.
  
 +  cci-control-port: true
 +
    dynamic-power-coefficient:
      $ref: '/schemas/types.yaml#/definitions/uint32'
      description:
        Specifies the ACC* node associated with this CPU.
  
        Required for systems that have an "enable-method" property
-       value of "qcom,kpss-acc-v1" or "qcom,kpss-acc-v2"
+       value of "qcom,kpss-acc-v1", "qcom,kpss-acc-v2", "qcom,msm8226-smp" or
+       "qcom,msm8916-smp".
  
        * arm/msm/qcom,kpss-acc.txt
  
index b36d74c1da7c1bbf91c6416746d65d5fb2b34874,d89b3c510c279d234447cb5f2b6ae967d734f2ba..63e585f48789330402bac842a005586de77badff
@@@ -17,16 -17,9 +17,16 @@@ properties
    compatible:
      enum:
        - qcom,sc7180-dp
 +      - qcom,sc8180x-dp
 +      - qcom,sc8180x-edp
  
    reg:
 -    maxItems: 1
 +    items:
 +      - description: ahb register block
 +      - description: aux register block
 +      - description: link register block
 +      - description: p0 register block
 +      - description: p1 register block
  
    interrupts:
      maxItems: 1
@@@ -102,16 -95,11 +102,15 @@@ examples
    - |
      #include <dt-bindings/interrupt-controller/arm-gic.h>
      #include <dt-bindings/clock/qcom,dispcc-sc7180.h>
-     #include <dt-bindings/power/qcom-aoss-qmp.h>
      #include <dt-bindings/power/qcom-rpmpd.h>
  
      displayport-controller@ae90000 {
          compatible = "qcom,sc7180-dp";
 -        reg = <0xae90000 0x1400>;
 +        reg = <0xae90000 0x200>,
 +              <0xae90200 0x200>,
 +              <0xae90400 0xc00>,
 +              <0xae91000 0x400>,
 +              <0xae91400 0x400>;
          interrupt-parent = <&mdss>;
          interrupts = <12>;
          clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
index 939cf2418445385a46cecb42c33df407f1741dbf,e3311b54db339269772a050f26b486f12e87932e..d4e418b6a1c147b5455912b45fb21775b10e08ed
@@@ -31,6 -31,7 +31,7 @@@ properties
          - amlogic,meson-gxbb-sram
          - arm,juno-sram-ns
          - atmel,sama5d2-securam
+         - qcom,rpm-msg-ram
          - rockchip,rk3288-pmu-sram
  
    reg:
@@@ -60,7 -61,7 +61,7 @@@
      type: boolean
  
  patternProperties:
 -  "^([a-z]*-)?sram(-section)?@[a-f0-9]+$":
 +  "^([a-z0-9]*-)?sram(-section)?@[a-f0-9]+$":
      type: object
      description:
        Each child of the sram node specifies a region of reserved memory.
@@@ -135,7 -136,9 +136,9 @@@ if
    properties:
      compatible:
        contains:
-         const: rockchip,rk3288-pmu-sram
+         enum:
+           - qcom,rpm-msg-ram
+           - rockchip,rk3288-pmu-sram
  
  else:
    required:
index 518487ec65e59c5f94b78e3a2c531279290fcd09,47995833089e8f4cfe3025e780825625242a2896..3c28347f873eff0f9aa2450853c60426e301625b
@@@ -131,8 -131,6 +131,8 @@@ patternProperties
      description: Asahi Kasei Corp.
    "^asc,.*":
      description: All Sensors Corporation
 +  "^asix,.*":
 +    description: ASIX Electronics Corporation
    "^aspeed,.*":
      description: ASPEED Technology Inc.
    "^asus,.*":
      description: B&R Industrial Automation GmbH
    "^bticino,.*":
      description: Bticino International
 +  "^calamp,.*":
 +    description: CalAmp Corp.
    "^calaosystems,.*":
      description: CALAO Systems SAS
    "^calxeda,.*":
      description: EBV Elektronik
    "^eckelmann,.*":
      description: Eckelmann AG
 +  "^edimax,.*":
 +    description: EDIMAX Technology Co., Ltd
    "^edt,.*":
      description: Emerging Display Technologies
    "^eeti,.*":
      description: Shenzhen Elida Technology Co., Ltd.
    "^elimo,.*":
      description: Elimo Engineering Ltd.
+   "^elpida,.*":
+     description: Elpida Memory, Inc.
    "^embest,.*":
      description: Shenzhen Embest Technology Co., Ltd.
    "^emlid,.*":
      description: Exar Corporation
    "^excito,.*":
      description: Excito
 +  "^exegin,.*":
 +    description: Exegin Technologies Limited
    "^ezchip,.*":
      description: EZchip Semiconductor
    "^facebook,.*":
      description: Hycon Technology Corp.
    "^hydis,.*":
      description: Hydis Technologies
 +  "^hynix,.*":
 +    description: SK Hynix Inc.
    "^hyundai,.*":
      description: Hyundai Technology
    "^i2se,.*":
      description: JEDEC Solid State Technology Association
    "^jesurun,.*":
      description: Shenzhen Jesurun Electronics Business Dept.
 +  "^jethome,.*":
 +    description: JetHome (IP Sokolov P.A.)
    "^jianda,.*":
      description: Jiandangjing Technology Co., Ltd.
    "^kam,.*":
      description: Spansion Inc.
    "^sparkfun,.*":
      description: SparkFun Electronics
 +  "^spinalhdl,.*":
 +    description: SpinalHDL
    "^sprd,.*":
      description: Spreadtrum Communications Inc.
 +  "^ssi,.*":
 +    description: SSI Computer Corp
    "^sst,.*":
      description: Silicon Storage Technology, Inc.
    "^sstar,.*":
diff --combined MAINTAINERS
index 83321332f63e0c6bb408fe3da061c97cef4e2a0b,fbd002c59bf56c1bb64b6cb45bf224ec96dd916e..8f72885961578e88f2d13270981d9f28ce8ac7ab
@@@ -334,7 -334,7 +334,7 @@@ F: drivers/platform/x86/acer-wmi.
  
  ACPI
  M:    "Rafael J. Wysocki" <[email protected]>
 -M:    Len Brown <[email protected]>
 +R:    Len Brown <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    https://01.org/linux-acpi
@@@ -355,7 -355,7 +355,7 @@@ F: tools/power/acpi
  
  ACPI APEI
  M:    "Rafael J. Wysocki" <[email protected]>
 -M:    Len Brown <[email protected]>
 +R:    Len Brown <[email protected]>
  R:    James Morse <[email protected]>
  R:    Tony Luck <[email protected]>
  R:    Borislav Petkov <[email protected]>
@@@ -378,6 -378,14 +378,6 @@@ F:        drivers/acpi/acpica
  F:    include/acpi/
  F:    tools/power/acpi/
  
 -ACPI FAN DRIVER
 -M:    Zhang Rui <[email protected]>
 -L:    [email protected]
 -S:    Supported
 -W:    https://01.org/linux-acpi
 -B:    https://bugzilla.kernel.org
 -F:    drivers/acpi/fan.c
 -
  ACPI FOR ARM64 (ACPI/arm64)
  M:    Lorenzo Pieralisi <[email protected]>
  M:    Hanjun Guo <[email protected]>
@@@ -393,12 -401,6 +393,12 @@@ L:       [email protected]
  S:    Maintained
  F:    drivers/platform/x86/i2c-multi-instantiate.c
  
 +ACPI PCC(Platform Communication Channel) MAILBOX DRIVER
 +M:    Sudeep Holla <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/mailbox/pcc.c
 +
  ACPI PMIC DRIVERS
  M:    "Rafael J. Wysocki" <[email protected]>
  M:    Len Brown <[email protected]>
@@@ -412,14 -414,21 +412,14 @@@ T:      git git://git.kernel.org/pub/scm/lin
  F:    drivers/acpi/pmic/
  
  ACPI THERMAL DRIVER
 -M:    Zhang Rui <[email protected]>
 +M:    Rafael J. Wysocki <[email protected]>
 +R:    Zhang Rui <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    https://01.org/linux-acpi
  B:    https://bugzilla.kernel.org
  F:    drivers/acpi/*thermal*
  
 -ACPI VIDEO DRIVER
 -M:    Zhang Rui <[email protected]>
 -L:    [email protected]
 -S:    Supported
 -W:    https://01.org/linux-acpi
 -B:    https://bugzilla.kernel.org
 -F:    drivers/acpi/acpi_video.c
 -
  ACPI VIOT DRIVER
  M:    Jean-Philippe Brucker <[email protected]>
  L:    [email protected]
@@@ -788,7 -797,7 +788,7 @@@ F: Documentation/devicetree/bindings/i2
  F:    drivers/i2c/busses/i2c-altera.c
  
  ALTERA MAILBOX DRIVER
 -M:    Joyce Ooi <joyce.ooi@intel.com>
 +M:    Mun Yew Tham <mun.yew.tham@intel.com>
  S:    Maintained
  F:    drivers/mailbox/mailbox-altera.c
  
@@@ -801,7 -810,7 +801,7 @@@ F: Documentation/devicetree/bindings/dm
  F:    drivers/dma/altera-msgdma.c
  
  ALTERA PIO DRIVER
 -M:    Joyce Ooi <joyce.ooi@intel.com>
 +M:    Mun Yew Tham <mun.yew.tham@intel.com>
  L:    [email protected]
  S:    Maintained
  F:    drivers/gpio/gpio-altera.c
@@@ -893,7 -902,6 +893,7 @@@ F: include/uapi/linux/psp-sev.
  AMD DISPLAY CORE
  M:    Harry Wentland <[email protected]>
  M:    Leo Li <[email protected]>
 +M:    Rodrigo Siqueira <[email protected]>
  L:    [email protected]
  S:    Supported
  T:    git https://gitlab.freedesktop.org/agd5f/linux.git
@@@ -1011,14 -1019,6 +1011,14 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/iio/light/ams,as73211.yaml
  F:    drivers/iio/light/as73211.c
  
 +AMT (Automatic Multicast Tunneling)
 +M:    Taehee Yoo <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git
 +F:    drivers/net/amt.c
 +
  ANALOG DEVICES INC AD7192 DRIVER
  M:    Alexandru Tachici <[email protected]>
  L:    [email protected]
@@@ -1275,7 -1275,6 +1275,7 @@@ F:      drivers/input/mouse/bcm5974.
  
  APPLE DART IOMMU DRIVER
  M:    Sven Peter <[email protected]>
 +R:    Alyssa Rosenzweig <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/iommu/apple,dart.yaml
@@@ -1412,7 -1411,7 +1412,7 @@@ F:      Documentation/devicetree/bindings/au
  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
 -F:    Documentation/devicetree/bindings/mtd/arm-versatile.txt
 +F:    Documentation/devicetree/bindings/mtd/mtd-physmap.yaml
  F:    arch/arm/boot/dts/arm-realview-*
  F:    arch/arm/boot/dts/integrator*
  F:    arch/arm/boot/dts/versatile*
@@@ -1551,7 -1550,7 +1551,7 @@@ ARM PRIMECELL VIC PL190/PL192 DRIVE
  M:    Linus Walleij <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
 -F:    Documentation/devicetree/bindings/interrupt-controller/arm,vic.txt
 +F:    Documentation/devicetree/bindings/interrupt-controller/arm,vic.yaml
  F:    drivers/irqchip/irq-vic.c
  
  ARM SMC WATCHDOG DRIVER
@@@ -1712,8 -1711,6 +1712,8 @@@ F:      drivers/*/*alpine
  
  ARM/APPLE MACHINE SUPPORT
  M:    Hector Martin <[email protected]>
 +M:    Sven Peter <[email protected]>
 +R:    Alyssa Rosenzweig <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  W:    https://asahilinux.org
@@@ -1721,20 -1718,12 +1721,20 @@@ B:   https://github.com/AsahiLinux/linux/
  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/i2c/apple,i2c.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/apple,aic.yaml
 +F:    Documentation/devicetree/bindings/mailbox/apple,mailbox.yaml
 +F:    Documentation/devicetree/bindings/pci/apple,pcie.yaml
  F:    Documentation/devicetree/bindings/pinctrl/apple,pinctrl.yaml
  F:    arch/arm64/boot/dts/apple/
 +F:    drivers/i2c/busses/i2c-pasemi-core.c
 +F:    drivers/i2c/busses/i2c-pasemi-platform.c
  F:    drivers/irqchip/irq-apple-aic.c
 +F:    drivers/mailbox/apple-mailbox.c
 +F:    drivers/pinctrl/pinctrl-apple-gpio.c
  F:    include/dt-bindings/interrupt-controller/apple-aic.h
  F:    include/dt-bindings/pinctrl/apple.h
 +F:    include/linux/apple-mailbox.h
  
  ARM/ARTPEC MACHINE SUPPORT
  M:    Jesper Nilsson <[email protected]>
@@@ -1756,7 -1745,7 +1756,7 @@@ R:      Joel Stanley <[email protected]
  L:    [email protected]
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
 -F:    Documentation/devicetree/bindings/i2c/i2c-aspeed.txt
 +F:    Documentation/devicetree/bindings/i2c/aspeed,i2c.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/aspeed,ast2400-i2c-ic.txt
  F:    drivers/i2c/busses/i2c-aspeed.c
  F:    drivers/irqchip/irq-aspeed-i2c-ic.c
@@@ -1883,10 -1872,10 +1883,10 @@@ M:   Linus Walleij <linus.walleij@linaro.
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  T:    git git://github.com/ulli-kroll/linux.git
 -F:    Documentation/devicetree/bindings/arm/gemini.txt
 +F:    Documentation/devicetree/bindings/arm/gemini.yaml
  F:    Documentation/devicetree/bindings/net/cortina,gemini-ethernet.txt
  F:    Documentation/devicetree/bindings/pinctrl/cortina,gemini-pinctrl.txt
 -F:    Documentation/devicetree/bindings/rtc/faraday,ftrtc010.txt
 +F:    Documentation/devicetree/bindings/rtc/faraday,ftrtc010.yaml
  F:    arch/arm/boot/dts/gemini*
  F:    arch/arm/mach-gemini/
  F:    drivers/crypto/gemini/
@@@ -2247,7 -2236,6 +2247,7 @@@ F:      arch/arm/mach-pxa/mioa701.
  
  ARM/MStar/Sigmastar Armv7 SoC support
  M:    Daniel Palmer <[email protected]>
 +M:    Romain Perier <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  W:    http://linux-chenxing.org/
@@@ -2319,14 -2307,6 +2319,14 @@@ F:    arch/arm/boot/dts/nuvoton-wpcm450
  F:    arch/arm/mach-npcm/wpcm450.c
  F:    drivers/*/*wpcm*
  
 +ARM/NXP S32G ARCHITECTURE
 +M:    Chester Lin <[email protected]>
 +R:    Andreas Färber <[email protected]>
 +R:    Matthias Brugger <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Maintained
 +F:    arch/arm64/boot/dts/freescale/s32g*.dts*
 +
  ARM/OPENMOKO NEO FREERUNNER (GTA02) MACHINE SUPPORT
  L:    [email protected] (subscribers-only)
  S:    Orphan
@@@ -2732,7 -2712,6 +2732,7 @@@ F:      drivers/power/reset/keystone-reset.
  
  ARM/TEXAS INSTRUMENTS K3 ARCHITECTURE
  M:    Nishanth Menon <[email protected]>
 +M:    Vignesh Raghavendra <[email protected]>
  M:    Tero Kristo <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
@@@ -2914,12 -2893,6 +2914,12 @@@ S:    Maintaine
  F:    Documentation/hwmon/asc7621.rst
  F:    drivers/hwmon/asc7621.c
  
 +ASIX AX88796C SPI ETHERNET ADAPTER
 +M:    Łukasz Stelmach <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/net/asix,ax88796c.yaml
 +F:    drivers/net/ethernet/asix/ax88796c_*
 +
  ASPEED PINCTRL DRIVERS
  M:    Andrew Jeffery <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -2988,7 -2961,7 +2988,7 @@@ F:      crypto/async_tx
  F:    include/linux/async_tx.h
  
  AT24 EEPROM DRIVER
 -M:    Bartosz Golaszewski <b[email protected]>
 +M:    Bartosz Golaszewski <b[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git
@@@ -3139,7 -3112,6 +3139,7 @@@ W:      https://github.com/linux-audi
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/audit.git
  F:    include/asm-generic/audit_*.h
  F:    include/linux/audit.h
 +F:    include/linux/audit_arch.h
  F:    include/uapi/linux/audit.h
  F:    kernel/audit*
  F:    lib/*audit.c
@@@ -3242,12 -3214,6 +3242,12 @@@ F:    drivers/video/backlight
  F:    include/linux/backlight.h
  F:    include/linux/pwm_backlight.h
  
 +BARCO P50 GPIO DRIVER
 +M:    Santosh Kumar Yadav <[email protected]>
 +M:    Peter Korsgaard <[email protected]>
 +S:    Maintained
 +F:    drivers/platform/x86/barco-p50-gpio.c
 +
  BATMAN ADVANCED
  M:    Marek Lindner <[email protected]>
  M:    Simon Wunderlich <[email protected]>
@@@ -3418,11 -3384,9 +3418,11 @@@ F:    Documentation/networking/filter.rs
  F:    Documentation/userspace-api/ebpf/
  F:    arch/*/net/*
  F:    include/linux/bpf*
 +F:    include/linux/btf*
  F:    include/linux/filter.h
  F:    include/trace/events/xdp.h
  F:    include/uapi/linux/bpf*
 +F:    include/uapi/linux/btf*
  F:    include/uapi/linux/filter.h
  F:    kernel/bpf/
  F:    kernel/trace/bpf_trace.c
@@@ -3456,7 -3420,6 +3456,7 @@@ S:      Supporte
  F:    arch/arm64/net/
  
  BPF JIT for MIPS (32-BIT AND 64-BIT)
 +M:    Johan Almbladh <[email protected]>
  M:    Paul Burton <[email protected]>
  L:    [email protected]
  L:    [email protected]
@@@ -3645,8 -3608,6 +3645,8 @@@ F:      arch/arm/mm/cache-b15-rac.
  F:    drivers/bus/brcmstb_gisb.c
  F:    drivers/pci/controller/pcie-brcmstb.c
  N:    brcmstb
 +N:    bcm7038
 +N:    bcm7120
  
  BROADCOM BDC DRIVER
  M:    Al Cooper <[email protected]>
@@@ -3794,7 -3755,7 +3794,7 @@@ L:      [email protected]
  L:    [email protected]
  S:    Supported
  F:    Documentation/devicetree/bindings/net/brcm,bcmgenet.txt
 -F:    Documentation/devicetree/bindings/net/brcm,unimac-mdio.txt
 +F:    Documentation/devicetree/bindings/net/brcm,unimac-mdio.yaml
  F:    drivers/net/ethernet/broadcom/genet/
  F:    drivers/net/ethernet/broadcom/unimac.h
  F:    drivers/net/mdio/mdio-bcm-unimac.c
@@@ -3859,6 -3820,7 +3859,6 @@@ F:      drivers/scsi/mpi3mr
  
  BROADCOM NETXTREME-E ROCE DRIVER
  M:    Selvin Xavier <[email protected]>
 -M:    Naresh Kumar PBS <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    http://www.broadcom.com
@@@ -4467,7 -4429,7 +4467,7 @@@ N:      cros_e
  N:    cros-ec
  
  CHRONTEL CH7322 CEC DRIVER
 -M:    Jeff Chase <jnchase@google.com>
 +M:    Joe Tessler <jrt@google.com>
  L:    [email protected]
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    sound/soc/codecs/cs*
  
 +CIRRUS LOGIC DSP FIRMWARE DRIVER
 +M:    Simon Trimmer <[email protected]>
 +M:    Charles Keepax <[email protected]>
 +M:    Richard Fitzgerald <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +W:    https://github.com/CirrusLogic/linux-drivers/wiki
 +T:    git https://github.com/CirrusLogic/linux-drivers.git
 +F:    drivers/firmware/cirrus/*
 +F:    include/linux/firmware/cirrus/*
 +
  CIRRUS LOGIC EP93XX ETHERNET DRIVER
  M:    Hartley Sweeten <[email protected]>
  L:    [email protected]
@@@ -4704,7 -4655,7 +4704,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/
 +F:    fs/smbfs_common/
  
  COMPACTPCI HOTPLUG CORE
  M:    Scott Murray <[email protected]>
@@@ -5500,19 -5451,6 +5500,19 @@@ F:    include/net/devlink.
  F:    include/uapi/linux/devlink.h
  F:    net/core/devlink.c
  
 +DH ELECTRONICS IMX6 DHCOM BOARD SUPPORT
 +M:    Christoph Niedermaier <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    arch/arm/boot/dts/imx6*-dhcom-*
 +
 +DH ELECTRONICS STM32MP1 DHCOM/DHCOR BOARD SUPPORT
 +M:    Marek Vasut <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    arch/arm/boot/dts/stm32mp1*-dhcom-*
 +F:    arch/arm/boot/dts/stm32mp1*-dhcor-*
 +
  DIALOG SEMICONDUCTOR DRIVERS
  M:    Support Opensource <[email protected]>
  S:    Supported
@@@ -6079,12 -6017,6 +6079,12 @@@ T:    git git://anongit.freedesktop.org/dr
  F:    Documentation/devicetree/bindings/display/panel/samsung,lms397kf04.yaml
  F:    drivers/gpu/drm/panel/panel-samsung-db7430.c
  
 +DRM DRIVER FOR SAMSUNG S6D27A1 PANELS
 +M:    Markuss Broks <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/display/panel/samsung,s6d27a1.yaml
 +F:    drivers/gpu/drm/panel/panel-samsung-s6d27a1.c
 +
  DRM DRIVER FOR SITRONIX ST7703 PANELS
  M:    Guido Günther <[email protected]>
  R:    Purism Kernel Team <[email protected]>
@@@ -6208,7 -6140,8 +6208,7 @@@ T:      git git://anongit.freedesktop.org/dr
  F:    Documentation/devicetree/bindings/display/
  F:    Documentation/devicetree/bindings/gpu/
  F:    Documentation/gpu/
 -F:    drivers/gpu/drm/
 -F:    drivers/gpu/vga/
 +F:    drivers/gpu/
  F:    include/drm/
  F:    include/linux/vga*
  F:    include/uapi/drm/
@@@ -6352,7 -6285,6 +6352,7 @@@ L:      [email protected]
  S:    Supported
  T:    git git://anongit.freedesktop.org/tegra/linux.git
  F:    Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt
 +F:    Documentation/devicetree/bindings/gpu/host1x/
  F:    drivers/gpu/drm/tegra/
  F:    drivers/gpu/host1x/
  F:    include/linux/host1x.h
@@@ -6492,14 -6424,6 +6492,14 @@@ T:    git git://anongit.freedesktop.org/dr
  F:    drivers/gpu/drm/ttm/
  F:    include/drm/ttm/
  
 +DRM GPU SCHEDULER
 +M:    Andrey Grodzovsky <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    drivers/gpu/drm/scheduler/
 +F:    include/drm/gpu_scheduler.h
 +
  DSBR100 USB FM RADIO DRIVER
  M:    Alexey Klimov <[email protected]>
  L:    [email protected]
@@@ -6758,7 -6682,7 +6758,7 @@@ S:      Supporte
  F:    drivers/edac/dmc520_edac.c
  
  EDAC-E752X
 -M:    Mark Gross <mark[email protected]>
 +M:    Mark Gross <mark[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/edac/e752x_edac.c
@@@ -7081,6 -7005,7 +7081,6 @@@ F:      drivers/net/mdio/fwnode_mdio.
  F:    drivers/net/mdio/of_mdio.c
  F:    drivers/net/pcs/
  F:    drivers/net/phy/
 -F:    drivers/of/of_net.c
  F:    include/dt-bindings/net/qca-ar803x.h
  F:    include/linux/*mdio*.h
  F:    include/linux/mdio/*.h
@@@ -7092,7 -7017,6 +7092,7 @@@ F:      include/linux/platform_data/mdio-gpi
  F:    include/trace/events/mdio.h
  F:    include/uapi/linux/mdio.h
  F:    include/uapi/linux/mii.h
 +F:    net/core/of_net.c
  
  EXFAT FILE SYSTEM
  M:    Namjae Jeon <[email protected]>
  S:    Maintained
  F:    drivers/net/ethernet/nvidia/*
  
 +FORTIFY_SOURCE
 +M:    Kees Cook <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    include/linux/fortify-string.h
 +F:    lib/test_fortify/*
 +F:    scripts/test_fortify.sh
 +K:    \b__NO_FORTIFY\b
 +
  FPGA DFL DRIVERS
  M:    Wu Hao <[email protected]>
  R:    Tom Rix <[email protected]>
@@@ -7421,11 -7336,10 +7421,11 @@@ F:   include/uapi/linux/fpga-dfl.
  
  FPGA MANAGER FRAMEWORK
  M:    Moritz Fischer <[email protected]>
 +M:    Wu Hao <[email protected]>
 +M:    Xu Yilun <[email protected]>
  R:    Tom Rix <[email protected]>
  L:    [email protected]
  S:    Maintained
 -W:    http://www.rocketboards.org
  Q:    http://patchwork.kernel.org/project/linux-fpga/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mdf/linux-fpga.git
  F:    Documentation/devicetree/bindings/fpga/
@@@ -7519,7 -7433,7 +7519,7 @@@ FREESCALE IMX / MXC FEC DRIVE
  M:    Joakim Zhang <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/net/fsl-fec.txt
 +F:    Documentation/devicetree/bindings/net/fsl,fec.yaml
  F:    drivers/net/ethernet/freescale/fec.h
  F:    drivers/net/ethernet/freescale/fec_main.c
  F:    drivers/net/ethernet/freescale/fec_ptp.c
@@@ -7803,7 -7717,6 +7803,7 @@@ M:      Ingo Molnar <[email protected]
  R:    Peter Zijlstra <[email protected]>
  R:    Darren Hart <[email protected]>
  R:    Davidlohr Bueso <[email protected]>
 +R:    André Almeida <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking/core
@@@ -7811,7 -7724,7 +7811,7 @@@ F:      Documentation/locking/*futex
  F:    include/asm-generic/futex.h
  F:    include/linux/futex.h
  F:    include/uapi/linux/futex.h
 -F:    kernel/futex.c
 +F:    kernel/futex/*
  F:    tools/perf/bench/futex*
  F:    tools/testing/selftests/futex/
  
@@@ -8072,7 -7985,7 +8072,7 @@@ F:      include/linux/gpio/regmap.
  
  GPIO SUBSYSTEM
  M:    Linus Walleij <[email protected]>
 -M:    Bartosz Golaszewski <b[email protected]>
 +M:    Bartosz Golaszewski <b[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git
@@@ -8277,7 -8190,7 +8277,7 @@@ T:      git git://linuxtv.org/anttip/media_t
  F:    drivers/media/usb/hackrf/
  
  HANTRO VPU CODEC DRIVER
 -M:    Ezequiel Garcia <ezequiel@collabora.com>
 +M:    Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
  M:    Philipp Zabel <[email protected]>
  L:    [email protected]
  L:    [email protected]
@@@ -8694,8 -8607,9 +8694,8 @@@ F:      Documentation/devicetree/bindings/ii
  F:    drivers/iio/humidity/hts221*
  
  HUAWEI ETHERNET DRIVER
 -M:    Bin Luo <[email protected]>
  L:    [email protected]
 -S:    Supported
 +S:    Orphan
  F:    Documentation/networking/device_drivers/ethernet/huawei/hinic.rst
  F:    drivers/net/ethernet/huawei/hinic/
  
@@@ -8745,12 -8659,6 +8745,12 @@@ S:    Maintaine
  T:    git git://linuxtv.org/media_tree.git
  F:    drivers/media/i2c/hi556.c
  
 +HYNIX HI846 SENSOR DRIVER
 +M:    Martin Kepplinger <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/media/i2c/hi846.c
 +
  Hyper-V/Azure CORE AND DRIVERS
  M:    "K. Y. Srinivasan" <[email protected]>
  M:    Haiyang Zhang <[email protected]>
@@@ -9393,7 -9301,7 +9393,7 @@@ S:      Maintaine
  F:    drivers/platform/x86/intel/atomisp2/led.c
  
  INTEL BIOS SAR INT1092 DRIVER
 -M:    Shravan S <[email protected]>
 +M:    Shravan Sudhakar <[email protected]>
  M:    Intel Corporation <[email protected]>
  L:    [email protected]
  S:    Maintained
  S:    Maintained
  F:    drivers/crypto/ixp4xx_crypto.c
  
 +INTEL ISHTP ECLITE DRIVER
 +M:    Sumesh K Naduvalath <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/platform/x86/intel/ishtp_eclite.c
 +
  INTEL IXP4XX QMGR, NPE, ETHERNET and HSS SUPPORT
  M:    Krzysztof Halasa <[email protected]>
  S:    Maintained
@@@ -9589,7 -9491,7 +9589,7 @@@ F:      include/linux/soc/ixp4xx/qmgr.
  INTEL IXP4XX RANDOM NUMBER GENERATOR SUPPORT
  M:    Deepak Saxena <[email protected]>
  S:    Maintained
 -F:    Documentation/devicetree/bindings/display/intel,ixp46x-rng.yaml
 +F:    Documentation/devicetree/bindings/rng/intel,ixp46x-rng.yaml
  F:    drivers/char/hw_random/ixp4xx-rng.c
  
  INTEL KEEM BAY DRM DRIVER
@@@ -9609,17 -9511,6 +9609,17 @@@ F:    drivers/crypto/keembay/keembay-ocs-a
  F:    drivers/crypto/keembay/ocs-aes.c
  F:    drivers/crypto/keembay/ocs-aes.h
  
 +INTEL KEEM BAY OCS ECC CRYPTO DRIVER
 +M:    Daniele Alessandrelli <[email protected]>
 +M:    Prabhjot Khurana <[email protected]>
 +M:    Mark Gross <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/crypto/intel,keembay-ocs-ecc.yaml
 +F:    drivers/crypto/keembay/Kconfig
 +F:    drivers/crypto/keembay/Makefile
 +F:    drivers/crypto/keembay/keembay-ocs-ecc.c
 +F:    drivers/crypto/keembay/ocs-ecc-curve-defs.h
 +
  INTEL KEEM BAY OCS HCU CRYPTO DRIVER
  M:    Daniele Alessandrelli <[email protected]>
  M:    Declan Murphy <[email protected]>
@@@ -9732,7 -9623,7 +9732,7 @@@ F:      include/uapi/linux/isst_if.
  F:    tools/power/x86/intel-speed-select/
  
  INTEL STRATIX10 FIRMWARE DRIVERS
 -M:    Richard Gong <[email protected]>
 +M:    Dinh Nguyen <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-devices-platform-stratix10-rsu
@@@ -10103,7 -9994,6 +10103,7 @@@ JC42.4 TEMPERATURE SENSOR DRIVE
  M:    Guenter Roeck <[email protected]>
  L:    [email protected]
  S:    Maintained
 +F:    Documentation/devicetree/bindings/hwmon/jedec,jc42.yaml
  F:    Documentation/hwmon/jc42.rst
  F:    drivers/hwmon/jc42.c
  
@@@ -10143,7 -10033,6 +10143,7 @@@ F:   include/linux/jbd2.
  JPU V4L2 MEM2MEM DRIVER FOR RENESAS
  M:    Mikhail Ulyanov <[email protected]>
  L:    [email protected]
 +L:    [email protected]
  S:    Maintained
  F:    drivers/media/platform/rcar_jpu.c
  
@@@ -10304,8 -10193,8 +10304,8 @@@ M:   Hyunchul Lee <[email protected]
  L:    [email protected]
  S:    Maintained
  T:    git git://git.samba.org/ksmbd.git
 -F:    fs/cifs_common/
  F:    fs/ksmbd/
 +F:    fs/smbfs_common/
  
  KERNEL UNIT TESTING FRAMEWORK (KUnit)
  M:    Brendan Higgins <[email protected]>
@@@ -10380,22 -10269,11 +10380,22 @@@ F:        arch/powerpc/include/uapi/asm/kvm
  F:    arch/powerpc/kernel/kvm*
  F:    arch/powerpc/kvm/
  
 +KERNEL VIRTUAL MACHINE FOR RISC-V (KVM/riscv)
 +M:    Anup Patel <[email protected]>
 +R:    Atish Patra <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://github.com/kvm-riscv/linux.git
 +F:    arch/riscv/include/asm/kvm*
 +F:    arch/riscv/include/uapi/asm/kvm*
 +F:    arch/riscv/kvm/
 +
  KERNEL VIRTUAL MACHINE for s390 (KVM/s390)
  M:    Christian Borntraeger <[email protected]>
  M:    Janosch Frank <[email protected]>
  R:    David Hildenbrand <[email protected]>
 -R:    Cornelia Huck <[email protected]>
  R:    Claudio Imbrenda <[email protected]>
  L:    [email protected]
  S:    Supported
@@@ -10559,13 -10437,10 +10559,13 @@@ M:        Anil S Keshavamurthy <anil.s.keshava
  M:    "David S. Miller" <[email protected]>
  M:    Masami Hiramatsu <[email protected]>
  S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace.git
  F:    Documentation/trace/kprobes.rst
  F:    include/asm-generic/kprobes.h
  F:    include/linux/kprobes.h
  F:    kernel/kprobes.c
 +F:    lib/test_kprobes.c
 +F:    samples/kprobes
  
  KS0108 LCD CONTROLLER DRIVER
  M:    Miguel Ojeda <[email protected]>
@@@ -11013,7 -10888,7 +11013,7 @@@ LM90 HARDWARE MONITOR DRIVE
  M:    Jean Delvare <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/hwmon/lm90.txt
 +F:    Documentation/devicetree/bindings/hwmon/national,lm90.yaml
  F:    Documentation/hwmon/lm90.rst
  F:    drivers/hwmon/lm90.c
  F:    include/dt-bindings/thermal/lm90.h
@@@ -11272,7 -11147,6 +11272,7 @@@ S:   Maintaine
  F:    Documentation/devicetree/bindings/net/dsa/marvell.txt
  F:    Documentation/networking/devlink/mv88e6xxx.rst
  F:    drivers/net/dsa/mv88e6xxx/
 +F:    include/linux/dsa/mv88e6xxx.h
  F:    include/linux/platform_data/mv88e6xxx.h
  
  MARVELL ARMADA 3700 PHY DRIVERS
@@@ -11397,6 -11271,7 +11397,6 @@@ F:   Documentation/networking/device_driv
  F:    drivers/net/ethernet/marvell/octeontx2/af/
  
  MARVELL PRESTERA ETHERNET SWITCH DRIVER
 -M:    Vadym Kochan <[email protected]>
  M:    Taras Chornyi <[email protected]>
  S:    Supported
  W:    https://github.com/Marvell-switching/switchdev-prestera
@@@ -11491,7 -11366,7 +11491,7 @@@ F:   Documentation/devicetree/bindings/ii
  F:    drivers/iio/proximity/mb1232.c
  
  MAXIM MAX77650 PMIC MFD DRIVER
 -M:    Bartosz Golaszewski <b[email protected]>
 +M:    Bartosz Golaszewski <b[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/*/*max77650.yaml
@@@ -11797,7 -11672,6 +11797,7 @@@ T:   git git://linuxtv.org/media_tree.gi
  F:    Documentation/devicetree/bindings/media/renesas,csi2.yaml
  F:    Documentation/devicetree/bindings/media/renesas,isp.yaml
  F:    Documentation/devicetree/bindings/media/renesas,vin.yaml
 +F:    drivers/media/platform/rcar-isp.c
  F:    drivers/media/platform/rcar-vin/
  
  MEDIA DRIVERS FOR RENESAS - VSP1
@@@ -11943,9 -11817,7 +11943,9 @@@ F:   drivers/mmc/host/mtk-sd.
  MEDIATEK MT76 WIRELESS LAN DRIVER
  M:    Felix Fietkau <[email protected]>
  M:    Lorenzo Bianconi <[email protected]>
 -R:    Ryder Lee <[email protected]>
 +M:    Ryder Lee <[email protected]>
 +R:    Shayne Chen <[email protected]>
 +R:    Sean Wang <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/net/wireless/mediatek/mt76/
  S:    Maintained
  F:    drivers/char/hw_random/mtk-rng.c
  
+ MEDIATEK SMI DRIVER
+ M:    Yong Wu <[email protected]>
+ L:    [email protected] (moderated for non-subscribers)
+ S:    Supported
+ F:    Documentation/devicetree/bindings/memory-controllers/mediatek,smi*
+ F:    drivers/memory/mtk-smi.c
+ F:    include/soc/mediatek/smi.h
  MEDIATEK SWITCH DRIVER
  M:    Sean Wang <[email protected]>
  M:    Landen Chao <[email protected]>
@@@ -12106,7 -11986,7 +12114,7 @@@ F:   drivers/net/ethernet/mellanox/mlxfw
  
  MELLANOX HARDWARE PLATFORM SUPPORT
  M:    Hans de Goede <[email protected]>
 -M:    Mark Gross <m[email protected]>
 +M:    Mark Gross <m[email protected]>
  M:    Vadim Pasternak <[email protected]>
  L:    [email protected]
  S:    Supported
  S:    Maintained
  F:    drivers/crypto/atmel-ecc.*
  
 +MICROCHIP EIC DRIVER
 +M:    Claudiu Beznea <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Supported
 +F:    drivers/irqchip/irq-mchp-eic.c
 +
  MICROCHIP I2C DRIVER
  M:    Codrin Ciubotariu <[email protected]>
  L:    [email protected]
@@@ -12564,7 -12438,7 +12572,7 @@@ F:   drivers/platform/surface/surface_gpe
  
  MICROSOFT SURFACE HARDWARE PLATFORM SUPPORT
  M:    Hans de Goede <[email protected]>
 -M:    Mark Gross <m[email protected]>
 +M:    Mark Gross <m[email protected]>
  M:    Maximilian Luz <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -12881,7 -12755,6 +12889,7 @@@ M:   Laurent Pinchart <laurent.pinchart@i
  L:    [email protected]
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/devicetree/bindings/media/i2c/aptina,mt9p031.yaml
  F:    drivers/media/i2c/mt9p031.c
  F:    include/media/i2c/mt9p031.h
  
@@@ -13176,7 -13049,6 +13184,7 @@@ F:   include/linux/dsa
  F:    include/linux/platform_data/dsa.h
  F:    include/net/dsa.h
  F:    net/dsa/
 +F:    tools/testing/selftests/drivers/net/dsa/
  
  NETWORKING [GENERAL]
  M:    "David S. Miller" <[email protected]>
@@@ -13518,12 -13390,6 +13526,12 @@@ S: Maintaine
  F:    drivers/video/fbdev/nvidia/
  F:    drivers/video/fbdev/riva/
  
 +NVIDIA WMI EC BACKLIGHT DRIVER
 +M:    Daniel Dadap <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/platform/x86/nvidia-wmi-ec-backlight.c
 +
  NVM EXPRESS DRIVER
  M:    Keith Busch <[email protected]>
  M:    Jens Axboe <[email protected]>
@@@ -13578,7 -13444,7 +13586,7 @@@ M:   Ashish Kumar <[email protected]
  R:    Yogesh Gaur <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/spi/spi-nxp-fspi.txt
 +F:    Documentation/devicetree/bindings/spi/spi-nxp-fspi.yaml
  F:    drivers/spi/spi-nxp-fspi.c
  
  NXP FXAS21002C DRIVER
@@@ -13661,7 -13527,6 +13669,7 @@@ NXP-NCI NFC DRIVE
  R:    Charles Gorand <[email protected]>
  L:    [email protected] (subscribers-only)
  S:    Supported
 +F:    Documentation/devicetree/bindings/net/nfc/nxp,nci.yaml
  F:    drivers/nfc/nxp-nci
  
  NXP i.MX 8QXP/8QM JPEG V4L2 DRIVER
@@@ -13669,7 -13534,7 +13677,7 @@@ M:   Mirela Rabulea <[email protected]
  R:    NXP Linux Team <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/media/imx8-jpeg.yaml
 +F:    Documentation/devicetree/bindings/media/nxp,imx8-jpeg.yaml
  F:    drivers/media/platform/imx-jpeg
  
  NZXT-KRAKEN2 HARDWARE MONITORING DRIVER
@@@ -13942,13 -13807,6 +13950,13 @@@ S: Maintaine
  T:    git git://linuxtv.org/media_tree.git
  F:    drivers/media/i2c/ov13858.c
  
 +OMNIVISION OV13B10 SENSOR DRIVER
 +M:    Arec Kao <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://linuxtv.org/media_tree.git
 +F:    drivers/media/i2c/ov13b10.c
 +
  OMNIVISION OV2680 SENSOR DRIVER
  M:    Rui Miguel Silva <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/pinctrl/pinctrl-single.c
  
 -PIN CONTROLLER - ST SPEAR
 -M:    Viresh Kumar <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -W:    http://www.st.com/spear
 -F:    drivers/pinctrl/spear/
 -
  PKTCDVD DRIVER
  M:    [email protected]
  S:    Orphan
@@@ -15050,6 -14915,7 +15058,6 @@@ S:   Maintaine
  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
 -F:    Documentation/devicetree/bindings/hwmon/ibm,cffps1.txt
  F:    Documentation/devicetree/bindings/hwmon/ltc2978.txt
  F:    Documentation/devicetree/bindings/hwmon/max31785.txt
  F:    Documentation/hwmon/adm1275.rst
@@@ -15288,7 -15154,7 +15296,7 @@@ S:   Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/pstore
  F:    Documentation/admin-guide/ramoops.rst
  F:    Documentation/admin-guide/pstore-blk.rst
 -F:    Documentation/devicetree/bindings/reserved-memory/ramoops.txt
 +F:    Documentation/devicetree/bindings/reserved-memory/ramoops.yaml
  F:    drivers/acpi/apei/erst.c
  F:    drivers/firmware/efi/efi-pstore.c
  F:    fs/pstore/
  L:    [email protected]
  S:    Supported
  W:    https://wireless.wiki.kernel.org/en/users/Drivers/ath9k
 +F:    Documentation/devicetree/bindings/net/wireless/qca,ath9k.yaml
  F:    drivers/net/wireless/ath/ath9k/
  
  QUALCOMM CAMERA SUBSYSTEM DRIVER
  S:    Maintained
  F:    drivers/net/wireless/realtek/rtw88/
  
 +REALTEK WIRELESS DRIVER (rtw89)
 +M:    Ping-Ke Shih <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/net/wireless/realtek/rtw89/
 +
  REDPINE WIRELESS DRIVER
  M:    Amitkumar Karwar <[email protected]>
  M:    Siva Rebbagondla <[email protected]>
@@@ -16246,13 -16105,6 +16254,13 @@@ F: Documentation/ABI/*/sysfs-driver-hid
  F:    drivers/hid/hid-roccat*
  F:    include/linux/hid-roccat*
  
 +ROCKCHIP I2S TDM DRIVER
 +M:    Nicolas Frattaroli <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/sound/rockchip,i2s-tdm.yaml
 +F:    sound/soc/rockchip/rockchip_i2s_tdm.*
 +
  ROCKCHIP ISP V1 DRIVER
  M:    Helen Koike <[email protected]>
  M:    Dafna Hirschfeld <[email protected]>
@@@ -16267,7 -16119,7 +16275,7 @@@ F:   include/uapi/linux/rkisp1-config.
  
  ROCKCHIP RASTER 2D GRAPHIC ACCELERATION UNIT DRIVER
  M:    Jacob Chen <[email protected]>
 -M:    Ezequiel Garcia <ezequiel@collabora.com>
 +M:    Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -16275,7 -16127,7 +16283,7 @@@ F:   Documentation/devicetree/bindings/me
  F:    drivers/media/platform/rockchip/rga/
  
  ROCKCHIP VIDEO DECODER DRIVER
 -M:    Ezequiel Garcia <ezequiel@collabora.com>
 +M:    Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
  M:    Heiko Carstens <[email protected]>
  M:    Vasily Gorbik <[email protected]>
  M:    Christian Borntraeger <[email protected]>
 +R:    Alexander Gordeev <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    http://www.ibm.com/developerworks/linux/linux390/
@@@ -16530,6 -16381,7 +16538,6 @@@ F:   drivers/s390/crypto/vfio_ap_ops.
  F:    drivers/s390/crypto/vfio_ap_private.h
  
  S390 VFIO-CCW DRIVER
 -M:    Cornelia Huck <[email protected]>
  M:    Eric Farman <[email protected]>
  M:    Matthew Rosato <[email protected]>
  R:    Halil Pasic <[email protected]>
@@@ -16658,10 -16510,10 +16666,10 @@@ M:        Bartlomiej Zolnierkiewicz <b.zolnier
  L:    [email protected]
  L:    [email protected]
  S:    Supported
 -F:    Documentation/devicetree/bindings/clock/samsung,s2mps11.txt
 +F:    Documentation/devicetree/bindings/clock/samsung,s2mps11.yaml
  F:    Documentation/devicetree/bindings/mfd/samsung,sec-core.txt
 -F:    Documentation/devicetree/bindings/regulator/samsung,s2m*.txt
 -F:    Documentation/devicetree/bindings/regulator/samsung,s5m*.txt
 +F:    Documentation/devicetree/bindings/regulator/samsung,s2m*.yaml
 +F:    Documentation/devicetree/bindings/regulator/samsung,s5m*.yaml
  F:    drivers/clk/clk-s2mps11.c
  F:    drivers/mfd/sec*.c
  F:    drivers/regulator/s2m*.c
@@@ -16945,6 -16797,7 +16953,6 @@@ M:   Adrian Hunter <[email protected]
  L:    [email protected]
  S:    Maintained
  F:    drivers/mmc/host/sdhci*
 -F:    include/linux/mmc/sdhci*
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) MICROCHIP DRIVER
  M:    Eugen Hristev <[email protected]>
@@@ -17779,17 -17632,21 +17787,17 @@@ W:        https://github.com/linux-speakup/spe
  B:    https://github.com/linux-speakup/speakup/issues
  F:    drivers/accessibility/speakup/
  
 -SPEAR CLOCK FRAMEWORK SUPPORT
 -M:    Viresh Kumar <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -W:    http://www.st.com/spear
 -F:    drivers/clk/spear/
 -
 -SPEAR PLATFORM SUPPORT
 +SPEAR PLATFORM/CLOCK/PINCTRL SUPPORT
  M:    Viresh Kumar <[email protected]>
  M:    Shiraz Hashim <[email protected]>
 +M:    [email protected]
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  W:    http://www.st.com/spear
  F:    arch/arm/boot/dts/spear*
  F:    arch/arm/mach-spear/
 +F:    drivers/clk/spear/
 +F:    drivers/pinctrl/spear/
  
  SPI NOR SUBSYSTEM
  M:    Tudor Ambarus <[email protected]>
@@@ -17943,6 -17800,7 +17951,6 @@@ F:   drivers/staging/nvec
  
  STAGING - OLPC SECONDARY DISPLAY CONTROLLER (DCON)
  M:    Jens Frederich <[email protected]>
 -M:    Daniel Drake <[email protected]>
  M:    Jon Nettleton <[email protected]>
  S:    Maintained
  W:    http://wiki.laptop.org/go/DCON
@@@ -18033,8 -17891,7 +18041,8 @@@ M:   Olivier Moysan <olivier.moysan@foss.
  M:    Arnaud Pouliquen <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
 -F:    Documentation/devicetree/bindings/iio/adc/st,stm32-*.yaml
 +F:    Documentation/devicetree/bindings/iio/adc/st,stm32-dfsdm-adc.yaml
 +F:    Documentation/devicetree/bindings/sound/st,stm32-*.yaml
  F:    sound/soc/stm/
  
  STM32 TIMER/LPTIMER DRIVERS
@@@ -18131,7 -17988,7 +18139,7 @@@ F:   net/switchdev
  SY8106A REGULATOR DRIVER
  M:    Icenowy Zheng <[email protected]>
  S:    Maintained
 -F:    Documentation/devicetree/bindings/regulator/sy8106a-regulator.txt
 +F:    Documentation/devicetree/bindings/regulator/silergy,sy8106a.yaml
  F:    drivers/regulator/sy8106a-regulator.c
  
  SYNC FILE FRAMEWORK
@@@ -18603,7 -18460,7 +18611,7 @@@ S:   Supporte
  F:    drivers/net/ethernet/tehuti/*
  
  TELECOM CLOCK DRIVER FOR MCPL0010
 -M:    Mark Gross <mark[email protected]>
 +M:    Mark Gross <mark[email protected]>
  S:    Supported
  F:    drivers/char/tlclk.c
  
@@@ -18656,7 -18513,7 +18664,7 @@@ M:   Santosh Shilimkar <[email protected]
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/devicetree/bindings/arm/keystone/ti,k3-sci-common.yaml
 -F:    Documentation/devicetree/bindings/arm/keystone/ti,sci.txt
 +F:    Documentation/devicetree/bindings/arm/keystone/ti,sci.yaml
  F:    Documentation/devicetree/bindings/clock/ti,sci-clk.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/ti,sci-inta.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.yaml
@@@ -18698,17 -18555,14 +18706,17 @@@ T:        git git://linuxtv.org/media_tree.gi
  F:    drivers/media/radio/radio-raremono.c
  
  THERMAL
 -M:    Zhang Rui <[email protected]>
 +M:    Rafael J. Wysocki <[email protected]>
  M:    Daniel Lezcano <[email protected]>
  R:    Amit Kucheria <[email protected]>
 +R:    Zhang Rui <[email protected]>
  L:    [email protected]
  S:    Supported
  Q:    https://patchwork.kernel.org/project/linux-pm/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/thermal/linux.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git thermal
 +F:    Documentation/ABI/testing/sysfs-class-thermal
  F:    Documentation/devicetree/bindings/thermal/
 +F:    Documentation/driver-api/thermal/
  F:    drivers/thermal/
  F:    include/linux/cpu_cooling.h
  F:    include/linux/thermal.h
@@@ -18836,7 -18690,7 +18844,7 @@@ F:   include/linux/clk/ti.
  
  TI DAVINCI MACHINE SUPPORT
  M:    Sekhar Nori <[email protected]>
 -R:    Bartosz Golaszewski <b[email protected]>
 +R:    Bartosz Golaszewski <b[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci.git
@@@ -18926,7 -18780,7 +18934,7 @@@ M:   Mark Greer <[email protected]
  L:    [email protected]
  L:    [email protected] (subscribers-only)
  S:    Supported
 -F:    Documentation/devicetree/bindings/net/nfc/trf7970a.txt
 +F:    Documentation/devicetree/bindings/net/nfc/ti,trf7970a.yaml
  F:    drivers/nfc/trf7970a.c
  
  TI TSC2046 ADC DRIVER
@@@ -19121,7 -18975,7 +19129,7 @@@ TRACIN
  M:    Steven Rostedt <[email protected]>
  M:    Ingo Molnar <[email protected]>
  S:    Maintained
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf/core
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace.git
  F:    Documentation/trace/ftrace.rst
  F:    arch/*/*/*/ftrace.h
  F:    arch/*/kernel/ftrace.c
@@@ -20087,13 -19941,6 +20095,13 @@@ S: Maintaine
  F:    drivers/i2c/busses/i2c-virtio.c
  F:    include/uapi/linux/virtio_i2c.h
  
 +VIRTIO PMEM DRIVER
 +M:    Pankaj Gupta <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/nvdimm/virtio_pmem.c
 +F:    drivers/nvdimm/nd_virtio.c
 +
  VIRTUAL BOX GUEST DEVICE DRIVER
  M:    Hans de Goede <[email protected]>
  M:    Arnd Bergmann <[email protected]>
@@@ -20489,7 -20336,6 +20497,7 @@@ X86 ARCHITECTURE (32-BIT AND 64-BIT
  M:    Thomas Gleixner <[email protected]>
  M:    Ingo Molnar <[email protected]>
  M:    Borislav Petkov <[email protected]>
 +M:    Dave Hansen <[email protected]>
  M:    [email protected]
  R:    "H. Peter Anvin" <[email protected]>
  L:    [email protected]
@@@ -20529,7 -20375,7 +20537,7 @@@ F:   arch/x86/mm
  
  X86 PLATFORM DRIVERS
  M:    Hans de Goede <[email protected]>
 -M:    Mark Gross <m[email protected]>
 +M:    Mark Gross <m[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git
@@@ -20858,6 -20704,7 +20866,6 @@@ S:   Maintaine
  F:    mm/zbud.c
  
  ZD1211RW WIRELESS DRIVER
 -M:    Daniel Drake <[email protected]>
  M:    Ulrich Kunitz <[email protected]>
  L:    [email protected]
  L:    [email protected] (subscribers-only)
diff --combined arch/arm/Kconfig
index d96209b20736c8bb854394fadc139a3cf47b9029,2633c541a5204146d083795adcd63cfb80e497a5..f0f9e8bec83acfa6ca3108664f8f815e0715bd34
@@@ -3,7 -3,6 +3,7 @@@ config AR
        bool
        default y
        select ARCH_32BIT_OFF_T
 +      select ARCH_CORRECT_STACKTRACE_ON_KRETPROBE if HAVE_KRETPROBES && FRAME_POINTER && !ARM_UNWIND
        select ARCH_HAS_BINFMT_FLAT
        select ARCH_HAS_DEBUG_VIRTUAL if MMU
        select ARCH_HAS_DMA_WRITE_COMBINE if !ARM_DMA_MEM_BUFFERABLE
@@@ -65,6 -64,7 +65,6 @@@
        select GENERIC_PCI_IOMAP
        select GENERIC_SCHED_CLOCK
        select GENERIC_SMP_IDLE_THREAD
 -      select HANDLE_DOMAIN_IRQ
        select HARDIRQS_SW_RESEND
        select HAVE_ARCH_AUDITSYSCALL if AEABI && !OABI_COMPAT
        select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6
@@@ -91,8 -91,7 +91,8 @@@
        select HAVE_FAST_GUP if ARM_LPAE
        select HAVE_FTRACE_MCOUNT_RECORD if !XIP_KERNEL
        select HAVE_FUNCTION_GRAPH_TRACER if !THUMB2_KERNEL && !CC_IS_CLANG
 -      select HAVE_FUNCTION_TRACER if !XIP_KERNEL
 +      select HAVE_FUNCTION_TRACER if !XIP_KERNEL && !(THUMB2_KERNEL && CC_IS_CLANG)
 +      select HAVE_FUTEX_CMPXCHG if FUTEX
        select HAVE_GCC_PLUGINS
        select HAVE_HW_BREAKPOINT if PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7)
        select HAVE_IRQ_TIME_ACCOUNTING
        select PERF_USE_VMALLOC
        select RTC_LIB
        select SYS_SUPPORTS_APM_EMULATION
 +      select THREAD_INFO_IN_TASK if CURRENT_POINTER_IN_TPIDRURO
        select TRACE_IRQFLAGS_SUPPORT if !CPU_V7M
        # Above selects are sorted alphabetically; please add new ones
        # according to that.  Thanks.
@@@ -266,12 -264,10 +266,12 @@@ config PHYS_OFFSE
        hex "Physical address of main memory" if MMU
        depends on !ARM_PATCH_PHYS_VIRT
        default DRAM_BASE if !MMU
 -      default 0x00000000 if ARCH_FOOTBRIDGE
 +      default 0x00000000 if ARCH_FOOTBRIDGE || ARCH_IXP4XX
        default 0x10000000 if ARCH_OMAP1 || ARCH_RPC
 -      default 0x20000000 if ARCH_S5PV210
 -      default 0xc0000000 if ARCH_SA1100
 +      default 0x30000000 if ARCH_S3C24XX
 +      default 0xa0000000 if ARCH_IOP32X || ARCH_PXA
 +      default 0xc0000000 if ARCH_EP93XX || ARCH_SA1100
 +      default 0
        help
          Please provide the physical address corresponding to the
          location of main memory in your system.
@@@ -351,7 -347,7 +351,7 @@@ config ARCH_EP93X
        select CLKSRC_MMIO
        select CPU_ARM920T
        select GPIOLIB
-       select HAVE_LEGACY_CLK
+       select COMMON_CLK
        help
          This enables support for the Cirrus EP93xx series of CPUs.
  
@@@ -436,7 -432,6 +436,7 @@@ config ARCH_PX
  config ARCH_RPC
        bool "RiscPC"
        depends on MMU
 +      depends on !CC_IS_CLANG && GCC_VERSION < 90100 && GCC_VERSION >= 60000
        select ARCH_ACORN
        select ARCH_MAY_HAVE_PC_FDC
        select ARCH_SPARSEMEM_ENABLE
@@@ -480,7 -475,6 +480,6 @@@ config ARCH_S3C24X
        select GPIOLIB
        select GENERIC_IRQ_MULTI_HANDLER
        select HAVE_S3C2410_I2C if I2C
-       select HAVE_S3C_RTC if RTC_CLASS
        select NEED_MACH_IO_H
        select S3C2410_WATCHDOG
        select SAMSUNG_ATAGS
@@@ -1162,11 -1156,6 +1161,11 @@@ config SMP_ON_U
  
          If you don't know what to do here, say Y.
  
 +
 +config CURRENT_POINTER_IN_TPIDRURO
 +      def_bool y
 +      depends on SMP && CPU_32v6K && !CPU_V6
 +
  config ARM_CPU_TOPOLOGY
        bool "Support cpu topology definition"
        depends on SMP && CPU_V7
@@@ -1610,7 -1599,7 +1609,7 @@@ config XE
  
  config STACKPROTECTOR_PER_TASK
        bool "Use a unique stack canary value for each task"
 -      depends on GCC_PLUGINS && STACKPROTECTOR && SMP && !XIP_DEFLATED_DATA
 +      depends on GCC_PLUGINS && STACKPROTECTOR && THREAD_INFO_IN_TASK && !XIP_DEFLATED_DATA
        select GCC_PLUGIN_ARM_SSP_PER_TASK
        default y
        help
@@@ -1999,6 -1988,8 +1998,6 @@@ config ARCH_HIBERNATION_POSSIBL
  
  endmenu
  
 -source "drivers/firmware/Kconfig"
 -
  if CRYPTO
  source "arch/arm/crypto/Kconfig"
  endif
index 96a81967c3bf1c272bb27122beb98c984ee803e9,d5f0f4cdf09381115a723472219709f65b8eeed0..1aa8b70732186e167f065b7175030529d2d1e293
@@@ -44,6 -44,7 +44,6 @@@ config ARCH_BCM283
        select ARM_AMBA
        select ARM_GIC
        select ARM_TIMER_SP804
 -      select BRCMSTB_L2_IRQ
        help
          This enables support for the Broadcom BCM2837 and BCM2711 SoC.
          These SoCs are used in the Raspberry Pi 3 and 4 devices.
@@@ -81,6 -82,8 +81,6 @@@ config ARCH_BITMAI
  config ARCH_BRCMSTB
        bool "Broadcom Set-Top-Box SoCs"
        select ARCH_HAS_RESET_CONTROLLER
 -      select BCM7038_L1_IRQ
 -      select BRCMSTB_L2_IRQ
        select GENERIC_IRQ_CHIP
        select PINCTRL
        help
  config ARCH_EXYNOS
        bool "ARMv8 based Samsung Exynos SoC family"
        select COMMON_CLK_SAMSUNG
-       select EXYNOS_CHIPID
        select EXYNOS_PM_DOMAINS if PM_GENERIC_DOMAINS
        select EXYNOS_PMU
-       select HAVE_S3C_RTC if RTC_CLASS
        select PINCTRL
        select PINCTRL_EXYNOS
        select PM_GENERIC_DOMAINS if PM
@@@ -164,6 -165,7 +162,6 @@@ config ARCH_MEDIATE
  config ARCH_MESON
        bool "Amlogic Platforms"
        select COMMON_CLK
 -      select MESON_IRQ_GPIO
        help
          This enables support for the arm64 based Amlogic SoCs
          such as the s905, S905X/D, S912, A113X/D or S905X/D2
diff --combined drivers/bus/Kconfig
index a4cf3d692dc30137023e8d2b361e804cc593b505,9cfeae3fc244a58a0e2b59cb12b78d3c71d2ed25..3c68e174a113fcaa76337c55cca40a190d9cad53
@@@ -30,7 -30,7 +30,7 @@@ config ARM_INTEGRATOR_L
          found on the ARM Integrator AP (Application Platform)
  
  config BRCMSTB_GISB_ARB
-       bool "Broadcom STB GISB bus arbiter"
+       tristate "Broadcom STB GISB bus arbiter"
        depends on ARM || ARM64 || MIPS
        default ARCH_BRCMSTB || BMIPS_GENERIC
        help
@@@ -152,6 -152,18 +152,6 @@@ config QCOM_EBI
          Interface 2, which can be used to connect things like NAND Flash,
          SRAM, ethernet adapters, FPGAs and LCD displays.
  
 -config SIMPLE_PM_BUS
 -      tristate "Simple Power-Managed Bus Driver"
 -      depends on OF && PM
 -      help
 -        Driver for transparent busses that don't need a real driver, but
 -        where the bus controller is part of a PM domain, or under the control
 -        of a functional clock, and thus relies on runtime PM for managing
 -        this PM domain and/or clock.
 -        An example of such a bus controller is the Renesas Bus State
 -        Controller (BSC, sometimes called "LBSC within Bus Bridge", or
 -        "External Bus Interface") as found on several Renesas ARM SoCs.
 -
  config SUN50I_DE2_BUS
        bool "Allwinner A64 DE2 Bus Driver"
          default ARM64
diff --combined drivers/bus/ti-sysc.c
index 6a8b7fb5be58df3aeb0270854aace22c2b956899,a1e60753ae5a194749867051bcd8f6b46cf3e0d4..54c0ee6dda3021e80943543662e8628743d75df5
@@@ -6,6 -6,7 +6,7 @@@
  #include <linux/io.h>
  #include <linux/clk.h>
  #include <linux/clkdev.h>
+ #include <linux/cpu_pm.h>
  #include <linux/delay.h>
  #include <linux/list.h>
  #include <linux/module.h>
@@@ -17,6 -18,7 +18,7 @@@
  #include <linux/of_platform.h>
  #include <linux/slab.h>
  #include <linux/sys_soc.h>
+ #include <linux/timekeeping.h>
  #include <linux/iopoll.h>
  
  #include <linux/platform_data/ti-sysc.h>
@@@ -51,11 -53,18 +53,18 @@@ struct sysc_address 
        struct list_head node;
  };
  
+ struct sysc_module {
+       struct sysc *ddata;
+       struct list_head node;
+ };
  struct sysc_soc_info {
        unsigned long general_purpose:1;
        enum sysc_soc soc;
-       struct mutex list_lock;                 /* disabled modules list lock */
+       struct mutex list_lock; /* disabled and restored modules list lock */
        struct list_head disabled_modules;
+       struct list_head restored_modules;
+       struct notifier_block nb;
  };
  
  enum sysc_clocks {
@@@ -131,6 -140,7 +140,7 @@@ struct sysc 
        struct ti_sysc_cookie cookie;
        const char *name;
        u32 revision;
+       u32 sysconfig;
        unsigned int reserved:1;
        unsigned int enabled:1;
        unsigned int needs_resume:1;
  
  static void sysc_parse_dts_quirks(struct sysc *ddata, struct device_node *np,
                                  bool is_child);
+ static int sysc_reset(struct sysc *ddata);
  
  static void sysc_write(struct sysc *ddata, int offset, u32 value)
  {
@@@ -223,37 -234,77 +234,77 @@@ static u32 sysc_read_sysstatus(struct s
        return sysc_read(ddata, offset);
  }
  
- /* Poll on reset status */
- static int sysc_wait_softreset(struct sysc *ddata)
+ static int sysc_poll_reset_sysstatus(struct sysc *ddata)
  {
-       u32 sysc_mask, syss_done, rstval;
-       int syss_offset, error = 0;
-       if (ddata->cap->regbits->srst_shift < 0)
-               return 0;
-       syss_offset = ddata->offsets[SYSC_SYSSTATUS];
-       sysc_mask = BIT(ddata->cap->regbits->srst_shift);
+       int error, retries;
+       u32 syss_done, rstval;
  
        if (ddata->cfg.quirks & SYSS_QUIRK_RESETDONE_INVERTED)
                syss_done = 0;
        else
                syss_done = ddata->cfg.syss_mask;
  
-       if (syss_offset >= 0) {
+       if (likely(!timekeeping_suspended)) {
                error = readx_poll_timeout_atomic(sysc_read_sysstatus, ddata,
                                rstval, (rstval & ddata->cfg.syss_mask) ==
                                syss_done, 100, MAX_MODULE_SOFTRESET_WAIT);
+       } else {
+               retries = MAX_MODULE_SOFTRESET_WAIT;
+               while (retries--) {
+                       rstval = sysc_read_sysstatus(ddata);
+                       if ((rstval & ddata->cfg.syss_mask) == syss_done)
+                               return 0;
+                       udelay(2); /* Account for udelay flakeyness */
+               }
+               error = -ETIMEDOUT;
+       }
+       return error;
+ }
+ static int sysc_poll_reset_sysconfig(struct sysc *ddata)
+ {
+       int error, retries;
+       u32 sysc_mask, rstval;
+       sysc_mask = BIT(ddata->cap->regbits->srst_shift);
  
-       } else if (ddata->cfg.quirks & SYSC_QUIRK_RESET_STATUS) {
+       if (likely(!timekeeping_suspended)) {
                error = readx_poll_timeout_atomic(sysc_read_sysconfig, ddata,
                                rstval, !(rstval & sysc_mask),
                                100, MAX_MODULE_SOFTRESET_WAIT);
+       } else {
+               retries = MAX_MODULE_SOFTRESET_WAIT;
+               while (retries--) {
+                       rstval = sysc_read_sysconfig(ddata);
+                       if (!(rstval & sysc_mask))
+                               return 0;
+                       udelay(2); /* Account for udelay flakeyness */
+               }
+               error = -ETIMEDOUT;
        }
  
        return error;
  }
  
+ /* Poll on reset status */
+ static int sysc_wait_softreset(struct sysc *ddata)
+ {
+       int syss_offset, error = 0;
+       if (ddata->cap->regbits->srst_shift < 0)
+               return 0;
+       syss_offset = ddata->offsets[SYSC_SYSSTATUS];
+       if (syss_offset >= 0)
+               error = sysc_poll_reset_sysstatus(ddata);
+       else if (ddata->cfg.quirks & SYSC_QUIRK_RESET_STATUS)
+               error = sysc_poll_reset_sysconfig(ddata);
+       return error;
+ }
  static int sysc_add_named_clock_from_child(struct sysc *ddata,
                                           const char *name,
                                           const char *optfck_name)
@@@ -1094,7 -1145,8 +1145,8 @@@ set_midle
        best_mode = fls(ddata->cfg.midlemodes) - 1;
        if (best_mode > SYSC_IDLE_MASK) {
                dev_err(dev, "%s: invalid midlemode\n", __func__);
-               return -EINVAL;
+               error = -EINVAL;
+               goto save_context;
        }
  
        if (ddata->cfg.quirks & SYSC_QUIRK_SWSUP_MSTANDBY)
@@@ -1112,13 -1164,16 +1164,16 @@@ set_autoidle
                sysc_write_sysconfig(ddata, reg);
        }
  
-       /* Flush posted write */
-       sysc_read(ddata, ddata->offsets[SYSC_SYSCONFIG]);
+       error = 0;
+ save_context:
+       /* Save context and flush posted write */
+       ddata->sysconfig = sysc_read(ddata, ddata->offsets[SYSC_SYSCONFIG]);
  
        if (ddata->module_enable_quirk)
                ddata->module_enable_quirk(ddata);
  
-       return 0;
+       return error;
  }
  
  static int sysc_best_idle_mode(u32 idlemodes, u32 *best_mode)
@@@ -1175,8 -1230,10 +1230,10 @@@ static int sysc_disable_module(struct d
  set_sidle:
        /* Set SIDLE mode */
        idlemodes = ddata->cfg.sidlemodes;
-       if (!idlemodes || regbits->sidle_shift < 0)
-               return 0;
+       if (!idlemodes || regbits->sidle_shift < 0) {
+               ret = 0;
+               goto save_context;
+       }
  
        if (ddata->cfg.quirks & SYSC_QUIRK_SWSUP_SIDLE) {
                best_mode = SYSC_IDLE_FORCE;
                ret = sysc_best_idle_mode(idlemodes, &best_mode);
                if (ret) {
                        dev_err(dev, "%s: invalid sidlemode\n", __func__);
-                       return ret;
+                       ret = -EINVAL;
+                       goto save_context;
                }
        }
  
                reg |= 1 << regbits->autoidle_shift;
        sysc_write_sysconfig(ddata, reg);
  
-       /* Flush posted write */
-       sysc_read(ddata, ddata->offsets[SYSC_SYSCONFIG]);
+       ret = 0;
  
-       return 0;
+ save_context:
+       /* Save context and flush posted write */
+       ddata->sysconfig = sysc_read(ddata, ddata->offsets[SYSC_SYSCONFIG]);
+       return ret;
  }
  
  static int __maybe_unused sysc_runtime_suspend_legacy(struct device *dev,
@@@ -1336,13 -1397,40 +1397,40 @@@ err_allow_idle
        return error;
  }
  
+ /*
+  * Checks if device context was lost. Assumes the sysconfig register value
+  * after lost context is different from the configured value. Only works for
+  * enabled devices.
+  *
+  * Eventually we may want to also add support to using the context lost
+  * registers that some SoCs have.
+  */
+ static int sysc_check_context(struct sysc *ddata)
+ {
+       u32 reg;
+       if (!ddata->enabled)
+               return -ENODATA;
+       reg = sysc_read(ddata, ddata->offsets[SYSC_SYSCONFIG]);
+       if (reg == ddata->sysconfig)
+               return 0;
+       return -EACCES;
+ }
  static int sysc_reinit_module(struct sysc *ddata, bool leave_enabled)
  {
        struct device *dev = ddata->dev;
        int error;
  
-       /* Disable target module if it is enabled */
        if (ddata->enabled) {
+               /* Nothing to do if enabled and context not lost */
+               error = sysc_check_context(ddata);
+               if (!error)
+                       return 0;
+               /* Disable target module if it is enabled */
                error = sysc_runtime_suspend(dev);
                if (error)
                        dev_warn(dev, "reinit suspend failed: %i\n", error);
        if (error)
                dev_warn(dev, "reinit resume failed: %i\n", error);
  
+       /* Some modules like am335x gpmc need reset and restore of sysconfig */
+       if (ddata->cfg.quirks & SYSC_QUIRK_RESET_ON_CTX_LOST) {
+               error = sysc_reset(ddata);
+               if (error)
+                       dev_warn(dev, "reinit reset failed: %i\n", error);
+               sysc_write_sysconfig(ddata, ddata->sysconfig);
+       }
        if (leave_enabled)
                return error;
  
@@@ -1442,10 -1539,6 +1539,6 @@@ struct sysc_revision_quirk 
  
  static const struct sysc_revision_quirk sysc_revision_quirks[] = {
        /* These drivers need to be fixed to not use pm_runtime_irq_safe() */
-       SYSC_QUIRK("gpio", 0, 0, 0x10, 0x114, 0x50600801, 0xffff00ff,
-                  SYSC_QUIRK_LEGACY_IDLE | SYSC_QUIRK_OPT_CLKS_IN_RESET),
-       SYSC_QUIRK("sham", 0, 0x100, 0x110, 0x114, 0x40000c03, 0xffffffff,
-                  SYSC_QUIRK_LEGACY_IDLE),
        SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x00000046, 0xffffffff,
                   SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_LEGACY_IDLE),
        SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x00000052, 0xffffffff,
        /* Quirks that need to be set based on detected module */
        SYSC_QUIRK("aess", 0, 0, 0x10, -ENODEV, 0x40000000, 0xffffffff,
                   SYSC_MODULE_QUIRK_AESS),
 +      /* Errata i893 handling for dra7 dcan1 and 2 */
 +      SYSC_QUIRK("dcan", 0x4ae3c000, 0x20, -ENODEV, -ENODEV, 0xa3170504, 0xffffffff,
 +                 SYSC_QUIRK_CLKDM_NOAUTO),
        SYSC_QUIRK("dcan", 0x48480000, 0x20, -ENODEV, -ENODEV, 0xa3170504, 0xffffffff,
                   SYSC_QUIRK_CLKDM_NOAUTO),
        SYSC_QUIRK("dss", 0x4832a000, 0, 0x10, 0x14, 0x00000020, 0xffffffff,
                   SYSC_QUIRK_CLKDM_NOAUTO),
        SYSC_QUIRK("dwc3", 0x488c0000, 0, 0x10, -ENODEV, 0x500a0200, 0xffffffff,
                   SYSC_QUIRK_CLKDM_NOAUTO),
+       SYSC_QUIRK("gpio", 0, 0, 0x10, 0x114, 0x50600801, 0xffff00ff,
+                  SYSC_QUIRK_OPT_CLKS_IN_RESET),
        SYSC_QUIRK("gpmc", 0, 0, 0x10, 0x14, 0x00000060, 0xffffffff,
+                  SYSC_QUIRK_REINIT_ON_CTX_LOST | SYSC_QUIRK_RESET_ON_CTX_LOST |
                   SYSC_QUIRK_GPMC_DEBUG),
        SYSC_QUIRK("hdmi", 0, 0, 0x10, -ENODEV, 0x50030200, 0xffffffff,
                   SYSC_QUIRK_OPT_CLKS_NEEDED),
        SYSC_QUIRK("usb_host_hs", 0, 0, 0x10, -ENODEV, 0x50700101, 0xffffffff,
                   SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_SWSUP_MSTANDBY),
        SYSC_QUIRK("usb_otg_hs", 0, 0x400, 0x404, 0x408, 0x00000050,
-                  0xffffffff, SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_SWSUP_MSTANDBY),
+                  0xffffffff, SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_SWSUP_MSTANDBY |
+                  SYSC_MODULE_QUIRK_OTG),
        SYSC_QUIRK("usb_otg_hs", 0, 0, 0x10, -ENODEV, 0x4ea2080d, 0xffffffff,
                   SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_SWSUP_MSTANDBY |
-                  SYSC_QUIRK_REINIT_ON_RESUME),
+                  SYSC_QUIRK_REINIT_ON_CTX_LOST),
        SYSC_QUIRK("wdt", 0, 0, 0x10, 0x14, 0x502a0500, 0xfffff0f0,
                   SYSC_MODULE_QUIRK_WDT),
        /* PRUSS on am3, am4 and am5 */
        SYSC_QUIRK("sdio", 0, 0, 0x10, -ENODEV, 0x40202301, 0xffff0ff0, 0),
        SYSC_QUIRK("sdio", 0, 0x2fc, 0x110, 0x114, 0x31010000, 0xffffffff, 0),
        SYSC_QUIRK("sdma", 0, 0, 0x2c, 0x28, 0x00010900, 0xffffffff, 0),
+       SYSC_QUIRK("sham", 0, 0x100, 0x110, 0x114, 0x40000c03, 0xffffffff, 0),
        SYSC_QUIRK("slimbus", 0, 0, 0x10, -ENODEV, 0x40000902, 0xffffffff, 0),
        SYSC_QUIRK("slimbus", 0, 0, 0x10, -ENODEV, 0x40002903, 0xffffffff, 0),
        SYSC_QUIRK("smartreflex", 0, -ENODEV, 0x24, -ENODEV, 0x00000000, 0xffffffff, 0),
@@@ -1874,6 -1969,22 +1972,22 @@@ static void sysc_module_lock_quirk_rtc(
        sysc_quirk_rtc(ddata, true);
  }
  
+ /* OTG omap2430 glue layer up to omap4 needs OTG_FORCESTDBY configured */
+ static void sysc_module_enable_quirk_otg(struct sysc *ddata)
+ {
+       int offset = 0x414;     /* OTG_FORCESTDBY */
+       sysc_write(ddata, offset, 0);
+ }
+ static void sysc_module_disable_quirk_otg(struct sysc *ddata)
+ {
+       int offset = 0x414;     /* OTG_FORCESTDBY */
+       u32 val = BIT(0);       /* ENABLEFORCE */
+       sysc_write(ddata, offset, val);
+ }
  /* 36xx SGX needs a quirk for to bypass OCP IPG interrupt logic */
  static void sysc_module_enable_quirk_sgx(struct sysc *ddata)
  {
@@@ -1956,6 -2067,11 +2070,11 @@@ static void sysc_init_module_quirks(str
                return;
        }
  
+       if (ddata->cfg.quirks & SYSC_MODULE_QUIRK_OTG) {
+               ddata->module_enable_quirk = sysc_module_enable_quirk_otg;
+               ddata->module_disable_quirk = sysc_module_disable_quirk_otg;
+       }
        if (ddata->cfg.quirks & SYSC_MODULE_QUIRK_SGX)
                ddata->module_enable_quirk = sysc_module_enable_quirk_sgx;
  
@@@ -2401,6 -2517,78 +2520,78 @@@ static struct dev_pm_domain sysc_child_
        }
  };
  
+ /* Caller needs to take list_lock if ever used outside of cpu_pm */
+ static void sysc_reinit_modules(struct sysc_soc_info *soc)
+ {
+       struct sysc_module *module;
+       struct list_head *pos;
+       struct sysc *ddata;
+       list_for_each(pos, &sysc_soc->restored_modules) {
+               module = list_entry(pos, struct sysc_module, node);
+               ddata = module->ddata;
+               sysc_reinit_module(ddata, ddata->enabled);
+       }
+ }
+ /**
+  * sysc_context_notifier - optionally reset and restore module after idle
+  * @nb: notifier block
+  * @cmd: unused
+  * @v: unused
+  *
+  * Some interconnect target modules need to be restored, or reset and restored
+  * on CPU_PM CPU_PM_CLUSTER_EXIT notifier. This is needed at least for am335x
+  * OTG and GPMC target modules even if the modules are unused.
+  */
+ static int sysc_context_notifier(struct notifier_block *nb, unsigned long cmd,
+                                void *v)
+ {
+       struct sysc_soc_info *soc;
+       soc = container_of(nb, struct sysc_soc_info, nb);
+       switch (cmd) {
+       case CPU_CLUSTER_PM_ENTER:
+               break;
+       case CPU_CLUSTER_PM_ENTER_FAILED:       /* No need to restore context */
+               break;
+       case CPU_CLUSTER_PM_EXIT:
+               sysc_reinit_modules(soc);
+               break;
+       }
+       return NOTIFY_OK;
+ }
+ /**
+  * sysc_add_restored - optionally add reset and restore quirk hanlling
+  * @ddata: device data
+  */
+ static void sysc_add_restored(struct sysc *ddata)
+ {
+       struct sysc_module *restored_module;
+       restored_module = kzalloc(sizeof(*restored_module), GFP_KERNEL);
+       if (!restored_module)
+               return;
+       restored_module->ddata = ddata;
+       mutex_lock(&sysc_soc->list_lock);
+       list_add(&restored_module->node, &sysc_soc->restored_modules);
+       if (sysc_soc->nb.notifier_call)
+               goto out_unlock;
+       sysc_soc->nb.notifier_call = sysc_context_notifier;
+       cpu_pm_register_notifier(&sysc_soc->nb);
+ out_unlock:
+       mutex_unlock(&sysc_soc->list_lock);
+ }
  /**
   * sysc_legacy_idle_quirk - handle children in omap_device compatible way
   * @ddata: device driver data
@@@ -2900,12 -3088,14 +3091,14 @@@ static int sysc_add_disabled(unsigned l
  }
  
  /*
-  * One time init to detect the booted SoC and disable unavailable features.
+  * One time init to detect the booted SoC, disable unavailable features
+  * and initialize list for optional cpu_pm notifier.
+  *
   * Note that we initialize static data shared across all ti-sysc instances
   * so ddata is only used for SoC type. This can be called from module_init
   * once we no longer need to rely on platform data.
   */
- static int sysc_init_soc(struct sysc *ddata)
+ static int sysc_init_static_data(struct sysc *ddata)
  {
        const struct soc_device_attribute *match;
        struct ti_sysc_platform_data *pdata;
  
        mutex_init(&sysc_soc->list_lock);
        INIT_LIST_HEAD(&sysc_soc->disabled_modules);
+       INIT_LIST_HEAD(&sysc_soc->restored_modules);
        sysc_soc->general_purpose = true;
  
        pdata = dev_get_platdata(ddata->dev);
                        break;
                case SOC_AM3:
                        sysc_add_disabled(0x48310000);  /* rng */
 +                      break;
                default:
                        break;
                }
        return 0;
  }
  
- static void sysc_cleanup_soc(void)
+ static void sysc_cleanup_static_data(void)
  {
+       struct sysc_module *restored_module;
        struct sysc_address *disabled_module;
        struct list_head *pos, *tmp;
  
        if (!sysc_soc)
                return;
  
+       if (sysc_soc->nb.notifier_call)
+               cpu_pm_unregister_notifier(&sysc_soc->nb);
        mutex_lock(&sysc_soc->list_lock);
+       list_for_each_safe(pos, tmp, &sysc_soc->restored_modules) {
+               restored_module = list_entry(pos, struct sysc_module, node);
+               list_del(pos);
+               kfree(restored_module);
+       }
        list_for_each_safe(pos, tmp, &sysc_soc->disabled_modules) {
                disabled_module = list_entry(pos, struct sysc_address, node);
                list_del(pos);
@@@ -3061,7 -3260,7 +3264,7 @@@ static int sysc_probe(struct platform_d
        ddata->dev = &pdev->dev;
        platform_set_drvdata(pdev, ddata);
  
-       error = sysc_init_soc(ddata);
+       error = sysc_init_static_data(ddata);
        if (error)
                return error;
  
                pm_runtime_put(&pdev->dev);
        }
  
+       if (ddata->cfg.quirks & SYSC_QUIRK_REINIT_ON_CTX_LOST)
+               sysc_add_restored(ddata);
        return 0;
  
  err:
@@@ -3240,7 -3442,7 +3446,7 @@@ static void __exit sysc_exit(void
  {
        bus_unregister_notifier(&platform_bus_type, &sysc_nb);
        platform_driver_unregister(&sysc_driver);
-       sysc_cleanup_soc();
+       sysc_cleanup_static_data();
  }
  module_exit(sysc_exit);
  
diff --combined drivers/of/platform.c
index 32d5ff8df74719edf56e2ad4b1f732c6ed5267a5,19ba8e4d4f8dcb5876c56d2032acf0dcd980827a..07813fb1ef37f32e82828e922c77dcc1a9fea1dd
@@@ -222,7 -222,7 +222,7 @@@ static struct amba_device *of_amba_devi
  {
        struct amba_device *dev;
        const void *prop;
 -      int i, ret;
 +      int ret;
  
        pr_debug("Creating amba device %pOF\n", node);
  
        if (prop)
                dev->periphid = of_read_ulong(prop, 1);
  
 -      /* Decode the IRQs and address ranges */
 -      for (i = 0; i < AMBA_NR_IRQS; i++)
 -              dev->irq[i] = irq_of_parse_and_map(node, i);
 -
        ret = of_address_to_resource(node, 0, &dev->res);
        if (ret) {
                pr_err("amba: of_address_to_resource() failed (%d) for %pOF\n",
@@@ -505,6 -509,7 +505,7 @@@ EXPORT_SYMBOL_GPL(of_platform_default_p
  static const struct of_device_id reserved_mem_matches[] = {
        { .compatible = "qcom,rmtfs-mem" },
        { .compatible = "qcom,cmd-db" },
+       { .compatible = "qcom,smem" },
        { .compatible = "ramoops" },
        { .compatible = "nvmem-rmem" },
        {}
diff --combined drivers/reset/Kconfig
index b0056ae5d463aedd5d3de68f720afdaf47eafc79,c1973dcbbac8d6dbfc96c9571380cae2007190a8..85024eb1d2eac56191aebe1c5392c9e816f26363
@@@ -58,7 -58,7 +58,7 @@@ config RESET_BRCMST
          a SUN_TOP_CTRL_SW_INIT style controller.
  
  config RESET_BRCMSTB_RESCAL
-       bool "Broadcom STB RESCAL reset controller"
+       tristate "Broadcom STB RESCAL reset controller"
        depends on HAS_IOMEM
        depends on ARCH_BRCMSTB || COMPILE_TEST
        default ARCH_BRCMSTB
@@@ -116,7 -116,7 +116,7 @@@ config RESET_LPC18X
  
  config RESET_MCHP_SPARX5
        bool "Microchip Sparx5 reset driver"
-       depends on ARCH_SPARX5 || COMPILE_TEST
+       depends on ARCH_SPARX5 || SOC_LAN966 || COMPILE_TEST
        default y if SPARX5_SWITCH
        select MFD_SYSCON
        help
@@@ -147,8 -147,8 +147,8 @@@ config RESET_OXNA
        bool
  
  config RESET_PISTACHIO
 -      bool "Pistachio Reset Driver" if COMPILE_TEST
 -      default MACH_PISTACHIO
 +      bool "Pistachio Reset Driver"
 +      depends on MIPS || COMPILE_TEST
        help
          This enables the reset driver for ImgTec Pistachio SoCs.
  
index 3fd0d08402877c5ac9c400a437d896375a018a03,23ff027b998612fa5c5ad0e46ddf190c73ed961b..db0d3910fee4436f53582415ee9c11731f496e18
@@@ -12,7 -12,6 +12,7 @@@
  #include <linux/platform_device.h>
  #include <linux/interrupt.h>
  #include <linux/dma-mapping.h>
 +#include <linux/dim.h>
  #include <linux/slab.h>
  
  #include "dpio.h"
@@@ -29,14 -28,6 +29,14 @@@ struct dpaa2_io 
        spinlock_t lock_notifications;
        struct list_head notifications;
        struct device *dev;
 +
 +      /* Net DIM */
 +      struct dim rx_dim;
 +      /* protect against concurrent Net DIM updates */
 +      spinlock_t dim_lock;
 +      u16 event_ctr;
 +      u64 bytes;
 +      u64 frames;
  };
  
  struct dpaa2_io_store {
@@@ -109,17 -100,6 +109,17 @@@ struct dpaa2_io *dpaa2_io_service_selec
  }
  EXPORT_SYMBOL_GPL(dpaa2_io_service_select);
  
 +static void dpaa2_io_dim_work(struct work_struct *w)
 +{
 +      struct dim *dim = container_of(w, struct dim, work);
 +      struct dim_cq_moder moder =
 +              net_dim_get_rx_moderation(dim->mode, dim->profile_ix);
 +      struct dpaa2_io *d = container_of(dim, struct dpaa2_io, rx_dim);
 +
 +      dpaa2_io_set_irq_coalescing(d, moder.usec);
 +      dim->state = DIM_START_MEASURE;
 +}
 +
  /**
   * dpaa2_io_create() - create a dpaa2_io object.
   * @desc: the dpaa2_io descriptor
@@@ -134,7 -114,6 +134,7 @@@ struct dpaa2_io *dpaa2_io_create(const 
                                 struct device *dev)
  {
        struct dpaa2_io *obj = kmalloc(sizeof(*obj), GFP_KERNEL);
 +      u32 qman_256_cycles_per_ns;
  
        if (!obj)
                return NULL;
        obj->dpio_desc = *desc;
        obj->swp_desc.cena_bar = obj->dpio_desc.regs_cena;
        obj->swp_desc.cinh_bar = obj->dpio_desc.regs_cinh;
 +      obj->swp_desc.qman_clk = obj->dpio_desc.qman_clk;
        obj->swp_desc.qman_version = obj->dpio_desc.qman_version;
 +
 +      /* Compute how many 256 QBMAN cycles fit into one ns. This is because
 +       * the interrupt timeout period register needs to be specified in QBMAN
 +       * clock cycles in increments of 256.
 +       */
 +      qman_256_cycles_per_ns = 256000 / (obj->swp_desc.qman_clk / 1000000);
 +      obj->swp_desc.qman_256_cycles_per_ns = qman_256_cycles_per_ns;
        obj->swp = qbman_swp_init(&obj->swp_desc);
  
        if (!obj->swp) {
        INIT_LIST_HEAD(&obj->node);
        spin_lock_init(&obj->lock_mgmt_cmd);
        spin_lock_init(&obj->lock_notifications);
 +      spin_lock_init(&obj->dim_lock);
        INIT_LIST_HEAD(&obj->notifications);
  
        /* For now only enable DQRR interrupts */
  
        obj->dev = dev;
  
 +      memset(&obj->rx_dim, 0, sizeof(obj->rx_dim));
 +      INIT_WORK(&obj->rx_dim.work, dpaa2_io_dim_work);
 +      obj->event_ctr = 0;
 +      obj->bytes = 0;
 +      obj->frames = 0;
 +
        return obj;
  }
  
@@@ -230,8 -194,6 +230,8 @@@ irqreturn_t dpaa2_io_irq(struct dpaa2_i
        struct qbman_swp *swp;
        u32 status;
  
 +      obj->event_ctr++;
 +
        swp = obj->swp;
        status = qbman_swp_interrupt_read_status(swp);
        if (!status)
@@@ -500,7 -462,7 +500,7 @@@ int dpaa2_io_service_enqueue_multiple_f
        qbman_eq_desc_set_no_orp(&ed, 0);
        qbman_eq_desc_set_fq(&ed, fqid);
  
-       return qbman_swp_enqueue_multiple(d->swp, &ed, fd, 0, nb);
+       return qbman_swp_enqueue_multiple(d->swp, &ed, fd, NULL, nb);
  }
  EXPORT_SYMBOL(dpaa2_io_service_enqueue_multiple_fq);
  
@@@ -817,82 -779,3 +817,82 @@@ int dpaa2_io_query_bp_count(struct dpaa
        return 0;
  }
  EXPORT_SYMBOL_GPL(dpaa2_io_query_bp_count);
 +
 +/**
 + * dpaa2_io_set_irq_coalescing() - Set new IRQ coalescing values
 + * @d: the given DPIO object
 + * @irq_holdoff: interrupt holdoff (timeout) period in us
 + *
 + * Return 0 for success, or negative error code on error.
 + */
 +int dpaa2_io_set_irq_coalescing(struct dpaa2_io *d, u32 irq_holdoff)
 +{
 +      struct qbman_swp *swp = d->swp;
 +
 +      return qbman_swp_set_irq_coalescing(swp, swp->dqrr.dqrr_size - 1,
 +                                          irq_holdoff);
 +}
 +EXPORT_SYMBOL(dpaa2_io_set_irq_coalescing);
 +
 +/**
 + * dpaa2_io_get_irq_coalescing() - Get the current IRQ coalescing parameters
 + * @d: the given DPIO object
 + * @irq_holdoff: interrupt holdoff (timeout) period in us
 + */
 +void dpaa2_io_get_irq_coalescing(struct dpaa2_io *d, u32 *irq_holdoff)
 +{
 +      struct qbman_swp *swp = d->swp;
 +
 +      qbman_swp_get_irq_coalescing(swp, NULL, irq_holdoff);
 +}
 +EXPORT_SYMBOL(dpaa2_io_get_irq_coalescing);
 +
 +/**
 + * dpaa2_io_set_adaptive_coalescing() - Enable/disable adaptive coalescing
 + * @d: the given DPIO object
 + * @use_adaptive_rx_coalesce: adaptive coalescing state
 + */
 +void dpaa2_io_set_adaptive_coalescing(struct dpaa2_io *d,
 +                                    int use_adaptive_rx_coalesce)
 +{
 +      d->swp->use_adaptive_rx_coalesce = use_adaptive_rx_coalesce;
 +}
 +EXPORT_SYMBOL(dpaa2_io_set_adaptive_coalescing);
 +
 +/**
 + * dpaa2_io_get_adaptive_coalescing() - Query adaptive coalescing state
 + * @d: the given DPIO object
 + *
 + * Return 1 when adaptive coalescing is enabled on the DPIO object and 0
 + * otherwise.
 + */
 +int dpaa2_io_get_adaptive_coalescing(struct dpaa2_io *d)
 +{
 +      return d->swp->use_adaptive_rx_coalesce;
 +}
 +EXPORT_SYMBOL(dpaa2_io_get_adaptive_coalescing);
 +
 +/**
 + * dpaa2_io_update_net_dim() - Update Net DIM
 + * @d: the given DPIO object
 + * @frames: how many frames have been dequeued by the user since the last call
 + * @bytes: how many bytes have been dequeued by the user since the last call
 + */
 +void dpaa2_io_update_net_dim(struct dpaa2_io *d, __u64 frames, __u64 bytes)
 +{
 +      struct dim_sample dim_sample = {};
 +
 +      if (!d->swp->use_adaptive_rx_coalesce)
 +              return;
 +
 +      spin_lock(&d->dim_lock);
 +
 +      d->bytes += bytes;
 +      d->frames += frames;
 +
 +      dim_update_sample(d->event_ctr, d->frames, d->bytes, &dim_sample);
 +      net_dim(&d->rx_dim, dim_sample);
 +
 +      spin_unlock(&d->dim_lock);
 +}
 +EXPORT_SYMBOL(dpaa2_io_update_net_dim);
index 3474bf5f88d5d9b1738eee0506879955da19dcc9,caddcf0dbc60c27ad3b9fc9f3f07f7a5a314a822..e46bcf78ed59f448089024492813c8233055a5b2
@@@ -29,7 -29,6 +29,7 @@@
  #define QBMAN_CINH_SWP_EQCR_AM_RT   0x980
  #define QBMAN_CINH_SWP_RCR_AM_RT    0x9c0
  #define QBMAN_CINH_SWP_DQPI    0xa00
 +#define QBMAN_CINH_SWP_DQRR_ITR     0xa80
  #define QBMAN_CINH_SWP_DCAP    0xac0
  #define QBMAN_CINH_SWP_SDQCR   0xb00
  #define QBMAN_CINH_SWP_EQCR_AM_RT2  0xb40
@@@ -39,7 -38,6 +39,7 @@@
  #define QBMAN_CINH_SWP_IER     0xe40
  #define QBMAN_CINH_SWP_ISDR    0xe80
  #define QBMAN_CINH_SWP_IIR     0xec0
 +#define QBMAN_CINH_SWP_ITPR    0xf40
  
  /* CENA register offsets */
  #define QBMAN_CENA_SWP_EQCR(n) (0x000 + ((u32)(n) << 6))
@@@ -357,9 -355,6 +357,9 @@@ struct qbman_swp *qbman_swp_init(const 
                        & p->eqcr.pi_ci_mask;
        p->eqcr.available = p->eqcr.pi_ring_size;
  
 +      /* Initialize the software portal with a irq timeout period of 0us */
 +      qbman_swp_set_irq_coalescing(p, p->dqrr.dqrr_size - 1, 0);
 +
        return p;
  }
  
@@@ -693,9 -688,9 +693,9 @@@ int qbman_swp_enqueue_multiple_direct(s
                p = (s->addr_cena + QBMAN_CENA_SWP_EQCR(eqcr_pi & half_mask));
                p[0] = cl[0] | s->eqcr.pi_vb;
                if (flags && (flags[i] & QBMAN_ENQUEUE_FLAG_DCA)) {
-                       struct qbman_eq_desc *d = (struct qbman_eq_desc *)p;
+                       struct qbman_eq_desc *eq_desc = (struct qbman_eq_desc *)p;
  
-                       d->dca = (1 << QB_ENQUEUE_CMD_DCA_EN_SHIFT) |
+                       eq_desc->dca = (1 << QB_ENQUEUE_CMD_DCA_EN_SHIFT) |
                                ((flags[i]) & QBMAN_EQCR_DCA_IDXMASK);
                }
                eqcr_pi++;
@@@ -775,9 -770,9 +775,9 @@@ int qbman_swp_enqueue_multiple_mem_back
                p = (s->addr_cena + QBMAN_CENA_SWP_EQCR(eqcr_pi & half_mask));
                p[0] = cl[0] | s->eqcr.pi_vb;
                if (flags && (flags[i] & QBMAN_ENQUEUE_FLAG_DCA)) {
-                       struct qbman_eq_desc *d = (struct qbman_eq_desc *)p;
+                       struct qbman_eq_desc *eq_desc = (struct qbman_eq_desc *)p;
  
-                       d->dca = (1 << QB_ENQUEUE_CMD_DCA_EN_SHIFT) |
+                       eq_desc->dca = (1 << QB_ENQUEUE_CMD_DCA_EN_SHIFT) |
                                ((flags[i]) & QBMAN_EQCR_DCA_IDXMASK);
                }
                eqcr_pi++;
@@@ -1801,56 -1796,3 +1801,56 @@@ u32 qbman_bp_info_num_free_bufs(struct 
  {
        return le32_to_cpu(a->fill);
  }
 +
 +/**
 + * qbman_swp_set_irq_coalescing() - Set new IRQ coalescing values
 + * @p: the software portal object
 + * @irq_threshold: interrupt threshold
 + * @irq_holdoff: interrupt holdoff (timeout) period in us
 + *
 + * Return 0 for success, or negative error code on error.
 + */
 +int qbman_swp_set_irq_coalescing(struct qbman_swp *p, u32 irq_threshold,
 +                               u32 irq_holdoff)
 +{
 +      u32 itp, max_holdoff;
 +
 +      /* Convert irq_holdoff value from usecs to 256 QBMAN clock cycles
 +       * increments. This depends on the QBMAN internal frequency.
 +       */
 +      itp = (irq_holdoff * 1000) / p->desc->qman_256_cycles_per_ns;
 +      if (itp > 4096) {
 +              max_holdoff = (p->desc->qman_256_cycles_per_ns * 4096) / 1000;
 +              pr_err("irq_holdoff must be <= %uus\n", max_holdoff);
 +              return -EINVAL;
 +      }
 +
 +      if (irq_threshold >= p->dqrr.dqrr_size) {
 +              pr_err("irq_threshold must be < %u\n", p->dqrr.dqrr_size - 1);
 +              return -EINVAL;
 +      }
 +
 +      p->irq_threshold = irq_threshold;
 +      p->irq_holdoff = irq_holdoff;
 +
 +      qbman_write_register(p, QBMAN_CINH_SWP_DQRR_ITR, irq_threshold);
 +      qbman_write_register(p, QBMAN_CINH_SWP_ITPR, itp);
 +
 +      return 0;
 +}
 +
 +/**
 + * qbman_swp_get_irq_coalescing() - Get the current IRQ coalescing parameters
 + * @p: the software portal object
 + * @irq_threshold: interrupt threshold (an IRQ is generated when there are more
 + * DQRR entries in the portal than the threshold)
 + * @irq_holdoff: interrupt holdoff (timeout) period in us
 + */
 +void qbman_swp_get_irq_coalescing(struct qbman_swp *p, u32 *irq_threshold,
 +                                u32 *irq_holdoff)
 +{
 +      if (irq_threshold)
 +              *irq_threshold = p->irq_threshold;
 +      if (irq_holdoff)
 +              *irq_holdoff = p->irq_holdoff;
 +}
index 52e581167115599127c8b8b89395bb5a7699c66f,553554e7116e41e01526a1a6a119dcac7bff34b2..9a0eb59405e83e731cd741f068e24761f6ce2252
@@@ -87,8 -87,8 +87,8 @@@ static const char *const pmic_models[] 
        [15] = "PM8901",
        [16] = "PM8950/PM8027",
        [17] = "PMI8950/ISL9519",
-       [18] = "PM8921",
-       [19] = "PM8018",
+       [18] = "PMK8001/PM8921",
+       [19] = "PMI8996/PM8018",
        [20] = "PM8998/PM8015",
        [21] = "PMI8998/PM8014",
        [22] = "PM8821",
        [32] = "PM8150B",
        [33] = "PMK8002",
        [36] = "PM8009",
+       [38] = "PM8150C",
+       [41] = "SMB2351",
  };
  #endif /* CONFIG_DEBUG_FS */
  
@@@ -281,19 -283,31 +283,31 @@@ static const struct soc_id soc_id[] = 
        { 319, "APQ8098" },
        { 321, "SDM845" },
        { 322, "MDM9206" },
+       { 323, "IPQ8074" },
        { 324, "SDA660" },
        { 325, "SDM658" },
        { 326, "SDA658" },
        { 327, "SDA630" },
        { 338, "SDM450" },
        { 341, "SDA845" },
+       { 342, "IPQ8072" },
+       { 343, "IPQ8076" },
+       { 344, "IPQ8078" },
        { 345, "SDM636" },
        { 346, "SDA636" },
        { 349, "SDM632" },
        { 350, "SDA632" },
        { 351, "SDA450" },
        { 356, "SM8250" },
+       { 375, "IPQ8070" },
+       { 376, "IPQ8071" },
+       { 389, "IPQ8072A" },
+       { 390, "IPQ8074A" },
+       { 391, "IPQ8076A" },
+       { 392, "IPQ8078A" },
        { 394, "SM6125" },
+       { 395, "IPQ8070A" },
+       { 396, "IPQ8071A" },
        { 402, "IPQ6018" },
        { 403, "IPQ6028" },
        { 421, "IPQ6000" },
@@@ -628,7 -642,7 +642,7 @@@ static int qcom_socinfo_probe(struct pl
        /* Feed the soc specific unique data into entropy pool */
        add_device_randomness(info, item_size);
  
 -      platform_set_drvdata(pdev, qs->soc_dev);
 +      platform_set_drvdata(pdev, qs);
  
        return 0;
  }
index 06c315a4d20af2ccbb73f55905af5f6d42cdee06,4d3179f032027d4f17d4bb7e0daeb55fc2641586..2c8cd843d049cdb2a5d60d0ef68bf34a85e2f7ac
@@@ -111,9 -111,9 +111,9 @@@ static void ep93xx_i2s_enable(struct ep
        if ((ep93xx_i2s_read_reg(info, EP93XX_I2S_TX0EN) & 0x1) == 0 &&
            (ep93xx_i2s_read_reg(info, EP93XX_I2S_RX0EN) & 0x1) == 0) {
                /* Enable clocks */
-               clk_enable(info->mclk);
-               clk_enable(info->sclk);
-               clk_enable(info->lrclk);
+               clk_prepare_enable(info->mclk);
+               clk_prepare_enable(info->sclk);
+               clk_prepare_enable(info->lrclk);
  
                /* Enable i2s */
                ep93xx_i2s_write_reg(info, EP93XX_I2S_GLCTRL, 1);
@@@ -156,9 -156,9 +156,9 @@@ static void ep93xx_i2s_disable(struct e
                ep93xx_i2s_write_reg(info, EP93XX_I2S_GLCTRL, 0);
  
                /* Disable clocks */
-               clk_disable(info->lrclk);
-               clk_disable(info->sclk);
-               clk_disable(info->mclk);
+               clk_disable_unprepare(info->lrclk);
+               clk_disable_unprepare(info->sclk);
+               clk_disable_unprepare(info->mclk);
        }
  }
  
@@@ -245,14 -245,14 +245,14 @@@ static int ep93xx_i2s_set_dai_fmt(struc
                return -EINVAL;
        }
  
 -      switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
 -      case SND_SOC_DAIFMT_CBS_CFS:
 -              /* CPU is master */
 +      switch (fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) {
 +      case SND_SOC_DAIFMT_CBC_CFC:
 +              /* CPU is provider */
                clk_cfg |= EP93XX_I2S_CLKCFG_MASTER;
                break;
  
 -      case SND_SOC_DAIFMT_CBM_CFM:
 -              /* Codec is master */
 +      case SND_SOC_DAIFMT_CBP_CFP:
 +              /* Codec is provider */
                clk_cfg &= ~EP93XX_I2S_CLKCFG_MASTER;
                break;
  
This page took 0.238486 seconds and 4 git commands to generate.