Merge branch 'for-next' into for-linus
authorTakashi Iwai <tiwai@suse.de>
Mon, 3 Aug 2020 06:10:08 +0000 (08:10 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 3 Aug 2020 06:10:08 +0000 (08:10 +0200)
13 files changed:
1  2 
Documentation/devicetree/bindings/sound/simple-card.yaml
MAINTAINERS
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_controller.h
sound/pci/hda/hda_intel.c
sound/pci/hda/patch_hdmi.c
sound/pci/hda/patch_realtek.c
sound/usb/endpoint.c
sound/usb/line6/driver.c
sound/usb/midi.c
sound/usb/pcm.c
sound/usb/quirks-table.h
sound/usb/quirks.c

@@@ -13,15 -13,13 +13,13 @@@ definitions
  
    frame-master:
      description: Indicates dai-link frame master.
-     allOf:
-       - $ref: /schemas/types.yaml#/definitions/phandle-array
-       - maxItems: 1
+     $ref: /schemas/types.yaml#/definitions/phandle-array
+     maxItems: 1
  
    bitclock-master:
      description: Indicates dai-link bit clock master
-     allOf:
-       - $ref: /schemas/types.yaml#/definitions/phandle-array
-       - maxItems: 1
+     $ref: /schemas/types.yaml#/definitions/phandle-array
+     maxItems: 1
  
    frame-inversion:
      description: dai-link uses frame clock inversion
@@@ -380,8 -378,6 +378,8 @@@ examples
    - |
      sound {
          compatible = "simple-audio-card";
 +        #address-cells = <1>;
 +        #size-cells = <0>;
  
          simple-audio-card,name = "rsnd-ak4643";
          simple-audio-card,format = "left_j";
                                      "ak4642 Playback", "DAI1 Playback";
  
          dpcmcpu: simple-audio-card,cpu@0 {
 +            reg = <0>;
              sound-dai = <&rcar_sound 0>;
          };
  
          simple-audio-card,cpu@1 {
 +            reg = <1>;
              sound-dai = <&rcar_sound 1>;
          };
  
    - |
      sound {
          compatible = "simple-audio-card";
 +        #address-cells = <1>;
 +        #size-cells = <0>;
  
          simple-audio-card,routing =
              "pcm3168a Playback", "DAI1 Playback",
              "pcm3168a Playback", "DAI4 Playback";
  
          simple-audio-card,dai-link@0 {
 +            reg = <0>;
              format = "left_j";
              bitclock-master = <&sndcpu0>;
              frame-master = <&sndcpu0>;
          };
  
          simple-audio-card,dai-link@1 {
 +            reg = <1>;
              format = "i2s";
              bitclock-master = <&sndcpu1>;
              frame-master = <&sndcpu1>;
  
              convert-channels = <8>; /* TDM Split */
  
 -            sndcpu1: cpu@0 {
 +            sndcpu1: cpu0 {
                  sound-dai = <&rcar_sound 1>;
              };
 -            cpu@1 {
 +            cpu1 {
                  sound-dai = <&rcar_sound 2>;
              };
 -            cpu@2 {
 +            cpu2 {
                  sound-dai = <&rcar_sound 3>;
              };
 -            cpu@3 {
 +            cpu3 {
                  sound-dai = <&rcar_sound 4>;
              };
              codec {
          };
  
          simple-audio-card,dai-link@2 {
 +            reg = <2>;
              format = "i2s";
              bitclock-master = <&sndcpu2>;
              frame-master = <&sndcpu2>;
diff --combined MAINTAINERS
@@@ -147,7 -147,7 +147,7 @@@ Maintainers Lis
  M:    Steffen Klassert <klassert@kernel.org>
  L:    netdev@vger.kernel.org
  S:    Odd Fixes
- F:    Documentation/networking/device_drivers/3com/vortex.txt
+ F:    Documentation/networking/device_drivers/3com/vortex.rst
  F:    drivers/net/ethernet/3com/3c59x.c
  
  3CR990 NETWORK DRIVER
@@@ -193,7 -193,7 +193,7 @@@ W: https://wireless.wiki.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
  F:    Documentation/driver-api/80211/cfg80211.rst
- F:    Documentation/networking/regulatory.txt
+ F:    Documentation/networking/regulatory.rst
  F:    include/linux/ieee80211.h
  F:    include/net/cfg80211.h
  F:    include/net/ieee80211_radiotap.h
@@@ -294,6 -294,7 +294,7 @@@ F: drivers/gpio/gpio-104-idio-16.
  
  ACCES 104-QUAD-8 DRIVER
  M:    William Breathitt Gray <vilhelm.gray@gmail.com>
+ M:    Syed Nayyar Waris <syednwaris@gmail.com>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-bus-counter-104-quad-8
@@@ -815,7 -816,7 +816,7 @@@ R: Saeed Bishara <saeedb@amazon.com
  R:    Zorik Machulsky <zorik@amazon.com>
  L:    netdev@vger.kernel.org
  S:    Supported
- F:    Documentation/networking/device_drivers/amazon/ena.txt
+ F:    Documentation/networking/device_drivers/amazon/ena.rst
  F:    drivers/net/ethernet/amazon/
  
  AMAZON RDMA EFA DRIVER
@@@ -842,6 -843,13 +843,13 @@@ S:       Supporte
  T:    git git://people.freedesktop.org/~agd5f/linux
  F:    drivers/gpu/drm/amd/display/
  
+ AMD ENERGY DRIVER
+ M:    Naveen Krishna Chatradhi <nchatrad@amd.com>
+ L:    linux-hwmon@vger.kernel.org
+ S:    Maintained
+ F:    Documentation/hwmon/amd_energy.rst
+ F:    drivers/hwmon/amd_energy.c
  AMD FAM15H PROCESSOR POWER MONITORING DRIVER
  M:    Huang Rui <ray.huang@amd.com>
  L:    linux-hwmon@vger.kernel.org
@@@ -876,7 -884,7 +884,7 @@@ M: Joerg Roedel <joro@8bytes.org
  L:    iommu@lists.linux-foundation.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
- F:    drivers/iommu/amd_iommu*.[ch]
+ F:    drivers/iommu/amd/
  F:    include/linux/amd-iommu.h
  
  AMD KFD
@@@ -892,6 -900,11 +900,11 @@@ F:       drivers/gpu/drm/amd/include/v9_struc
  F:    drivers/gpu/drm/amd/include/vi_structs.h
  F:    include/uapi/linux/kfd_ioctl.h
  
+ AMD SPI DRIVER
+ M:    Sanjay R Mehta <sanju.mehta@amd.com>
+ S:    Maintained
+ F:    drivers/spi/spi-amd.c
  AMD MP2 I2C DRIVER
  M:    Elie Morisse <syniurge@gmail.com>
  M:    Nehal Shah <nehal-bakulchandra.shah@amd.com>
@@@ -1030,6 -1043,14 +1043,14 @@@ W:    http://ez.analog.com/community/linux
  F:    Documentation/devicetree/bindings/iio/imu/adi,adis16460.yaml
  F:    drivers/iio/imu/adis16460.c
  
+ ANALOG DEVICES INC ADIS16475 DRIVER
+ M:    Nuno Sa <nuno.sa@analog.com>
+ L:    linux-iio@vger.kernel.org
+ W:    http://ez.analog.com/community/linux-device-drivers
+ S:    Supported
+ F:    drivers/iio/imu/adis16475.c
+ F:    Documentation/devicetree/bindings/iio/imu/adi,adis16475.yaml
  ANALOG DEVICES INC ADM1177 DRIVER
  M:    Beniamin Bia <beniamin.bia@analog.com>
  M:    Michael Hennerich <Michael.Hennerich@analog.com>
@@@ -1274,7 -1295,7 +1295,7 @@@ L:      netdev@vger.kernel.or
  S:    Supported
  W:    https://www.marvell.com/
  Q:    http://patchwork.ozlabs.org/project/netdev/list/
- F:    Documentation/networking/device_drivers/aquantia/atlantic.txt
+ F:    Documentation/networking/device_drivers/aquantia/atlantic.rst
  F:    drivers/net/ethernet/aquantia/atlantic/
  
  AQUANTIA ETHERNET DRIVER PTP SUBSYSTEM
@@@ -1284,6 -1305,13 +1305,13 @@@ S:    Supporte
  W:    http://www.aquantia.com
  F:    drivers/net/ethernet/aquantia/atlantic/aq_ptp*
  
+ ARASAN NAND CONTROLLER DRIVER
+ M:    Naga Sureshkumar Relli <nagasure@xilinx.com>
+ L:    linux-mtd@lists.infradead.org
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/mtd/arasan,nand-controller.yaml
+ F:    drivers/mtd/nand/raw/arasan-nand-controller.c
  ARC FRAMEBUFFER DRIVER
  M:    Jaya Kumar <jayalk@intworks.biz>
  S:    Maintained
@@@ -1338,10 -1366,11 +1366,11 @@@ F:   arch/arm/mach-integrator
  F:    arch/arm/mach-realview/
  F:    arch/arm/mach-versatile/
  F:    arch/arm/plat-versatile/
+ F:    drivers/bus/arm-integrator-lm.c
  F:    drivers/clk/versatile/
  F:    drivers/i2c/busses/i2c-versatile.c
  F:    drivers/irqchip/irq-versatile-fpga.c
- F:    drivers/mtd/maps/physmap_of_versatile.c
+ F:    drivers/mtd/maps/physmap-versatile.*
  F:    drivers/power/reset/arm-versatile-reboot.c
  F:    drivers/soc/versatile/
  
@@@ -1456,6 -1485,13 +1485,13 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/interrupt-controller/arm,vic.txt
  F:    drivers/irqchip/irq-vic.c
  
+ ARM SMC WATCHDOG DRIVER
+ M:    Julius Werner <jwerner@chromium.org>
+ R:    Evan Benn <evanbenn@chromium.org>
+ S:    Maintained
+ F:    devicetree/bindings/watchdog/arm-smc-wdt.yaml
+ F:    drivers/watchdog/arm_smc_wdt.c
  ARM SMMU DRIVERS
  M:    Will Deacon <will@kernel.org>
  R:    Robin Murphy <robin.murphy@arm.com>
@@@ -1684,11 -1720,6 +1720,6 @@@ S:     Maintaine
  T:    git git://git.armlinux.org.uk/~rmk/linux-arm.git clkdev
  F:    drivers/clk/clkdev.c
  
- ARM/COMPULAB CM-X270/EM-X270 and CM-X300 MACHINE SUPPORT
- M:    Mike Rapoport <mike@compulab.co.il>
- L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
- S:    Maintained
  ARM/CONEXANT DIGICOLOR MACHINE SUPPORT
  M:    Baruch Siach <baruch@tkos.co.il>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1997,6 -2028,7 +2028,7 @@@ F:      arch/arm/mach-dove
  F:    arch/arm/mach-mv78xx0/
  F:    arch/arm/mach-orion5x/
  F:    arch/arm/plat-orion/
+ F:    drivers/soc/dove/
  
  ARM/Marvell Kirkwood and Armada 370, 375, 38x, 39x, XP, 3700, 7K/8K, CN9130 SOC support
  M:    Jason Cooper <jason@lakedaemon.net>
@@@ -2142,6 -2174,7 +2174,7 @@@ F:      Documentation/devicetree/bindings/*/
  F:    arch/arm/boot/dts/nuvoton-npcm*
  F:    arch/arm/mach-npcm/
  F:    drivers/*/*npcm*
+ F:    drivers/*/*/*npcm*
  F:    include/dt-bindings/clock/nuvoton,npcm7xx-clock.h
  
  ARM/OPENMOKO NEO FREERUNNER (GTA02) MACHINE SUPPORT
@@@ -2165,6 -2198,7 +2198,7 @@@ L:      linux-oxnas@groups.io (moderated fo
  S:    Maintained
  F:    arch/arm/boot/dts/ox8*.dts*
  F:    arch/arm/mach-oxnas/
+ F:    drivers/power/reset/oxnas-restart.c
  N:    oxnas
  
  ARM/PALM TREO SUPPORT
@@@ -2225,6 -2259,7 +2259,7 @@@ F:      drivers/*/qcom
  F:    drivers/*/qcom/
  F:    drivers/bluetooth/btqcomsmd.c
  F:    drivers/clocksource/timer-qcom.c
+ F:    drivers/cpuidle/cpuidle-qcom-spm.c
  F:    drivers/extcon/extcon-qcom*
  F:    drivers/i2c/busses/i2c-qcom-geni.c
  F:    drivers/i2c/busses/i2c-qup.c
@@@ -2272,6 -2307,8 +2307,8 @@@ L:      linux-arm-kernel@lists.infradead.or
  L:    linux-realtek-soc@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/devicetree/bindings/arm/realtek.yaml
+ F:    arch/arm/boot/dts/rtd*
+ F:    arch/arm/mach-realtek/
  F:    arch/arm64/boot/dts/realtek/
  
  ARM/RENESAS ARM64 ARCHITECTURE
@@@ -2694,8 -2731,8 +2731,8 @@@ L:      linux-arm-kernel@lists.infradead.or
  S:    Supported
  W:    http://wiki.xilinx.com
  T:    git https://github.com/Xilinx/linux-xlnx.git
- F:    Documentation/devicetree/bindings/i2c/i2c-cadence.txt
- F:    Documentation/devicetree/bindings/i2c/i2c-xiic.txt
+ F:    Documentation/devicetree/bindings/i2c/cdns,i2c-r1p10.yaml
+ F:    Documentation/devicetree/bindings/i2c/xlnx,xps-iic-2.00.a.yaml
  F:    arch/arm/mach-zynq/
  F:    drivers/block/xsysace.c
  F:    drivers/clocksource/timer-cadence-ttc.c
@@@ -3191,7 -3228,7 +3228,7 @@@ Q:      https://patchwork.ozlabs.org/project
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git
  F:    Documentation/bpf/
- F:    Documentation/networking/filter.txt
+ F:    Documentation/networking/filter.rst
  F:    arch/*/net/*
  F:    include/linux/bpf*
  F:    include/linux/filter.h
@@@ -3320,7 -3357,7 +3357,7 @@@ L:      bcm-kernel-feedback-list@broadcom.co
  L:    linux-rpi-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
- T:    git git://github.com/anholt/linux
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/nsaenz/linux-rpi.git
  F:    Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
  F:    drivers/pci/controller/pcie-brcmstb.c
  F:    drivers/staging/vc04_services
@@@ -3481,6 -3518,14 +3518,14 @@@ S:    Supporte
  F:    Documentation/devicetree/bindings/i2c/brcm,brcmstb-i2c.yaml
  F:    drivers/i2c/busses/i2c-brcmstb.c
  
+ BROADCOM BRCMSTB USB EHCI DRIVER
+ M:    Al Cooper <alcooperx@gmail.com>
+ L:    linux-usb@vger.kernel.org
+ L:    bcm-kernel-feedback-list@broadcom.com
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/usb/brcm,bcm7445-ehci.yaml
+ F:    drivers/usb/host/ehci-brcm.*
  BROADCOM BRCMSTB USB2 and USB3 PHY DRIVER
  M:    Al Cooper <alcooperx@gmail.com>
  L:    linux-kernel@vger.kernel.org
@@@ -3669,7 -3714,7 +3714,7 @@@ L:      linux-media@vger.kernel.or
  S:    Odd fixes
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
- F:    Documentation/media/v4l-drivers/bttv*
+ F:    Documentation/driver-api/media/drivers/bttv*
  F:    drivers/media/pci/bt8xx/bttv*
  
  BUS FREQUENCY DRIVER FOR SAMSUNG EXYNOS
@@@ -3730,7 -3775,7 +3775,7 @@@ CACHEFILES: FS-CACHE BACKEND FOR CACHIN
  M:    David Howells <dhowells@redhat.com>
  L:    linux-cachefs@redhat.com (moderated for non-subscribers)
  S:    Supported
- F:    Documentation/filesystems/caching/cachefiles.txt
+ F:    Documentation/filesystems/caching/cachefiles.rst
  F:    fs/cachefiles/
  
  CADENCE MIPI-CSI2 BRIDGES
@@@ -3741,9 -3786,8 +3786,8 @@@ F:      Documentation/devicetree/bindings/me
  F:    drivers/media/platform/cadence/cdns-csi2*
  
  CADENCE NAND DRIVER
- M:    Piotr Sroka <piotrs@cadence.com>
  L:    linux-mtd@lists.infradead.org
- S:    Maintained
+ S:    Orphan
  F:    Documentation/devicetree/bindings/mtd/cadence-nand-controller.txt
  F:    drivers/mtd/nand/raw/cadence-nand-controller.c
  
@@@ -3760,7 -3804,7 +3804,7 @@@ M:      Jonathan Corbet <corbet@lwn.net
  L:    linux-media@vger.kernel.org
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
- F:    Documentation/media/v4l-drivers/cafe_ccic*
+ F:    Documentation/admin-guide/media/cafe_ccic*
  F:    drivers/media/platform/marvell-ccic/
  
  CAIF NETWORK LAYER
@@@ -3896,6 -3940,15 +3940,15 @@@ S:    Supporte
  W:    https://developer.arm.com/products/system-ip/trustzone-cryptocell/cryptocell-700-family
  F:    drivers/crypto/ccree/
  
+ CCTRNG ARM TRUSTZONE CRYPTOCELL TRUE RANDOM NUMBER GENERATOR (TRNG) DRIVER
+ M:    Hadar Gat <hadar.gat@arm.com>
+ L:    linux-crypto@vger.kernel.org
+ S:    Supported
+ F:    drivers/char/hw_random/cctrng.c
+ F:    drivers/char/hw_random/cctrng.h
+ F:    Documentation/devicetree/bindings/rng/arm-cctrng.txt
+ W:    https://developer.arm.com/products/system-ip/trustzone-cryptocell/cryptocell-700-family
  CEC FRAMEWORK
  M:    Hans Verkuil <hverkuil-cisco@xs4all.nl>
  L:    linux-media@vger.kernel.org
@@@ -3904,8 -3957,8 +3957,8 @@@ W:      http://linuxtv.or
  T:    git git://linuxtv.org/media_tree.git
  F:    Documentation/ABI/testing/debugfs-cec-error-inj
  F:    Documentation/devicetree/bindings/media/cec.txt
- F:    Documentation/media/kapi/cec-core.rst
- F:    Documentation/media/uapi/cec
+ F:    Documentation/driver-api/media/cec-core.rst
+ F:    Documentation/userspace-api/media/cec
  F:    drivers/media/cec/
  F:    drivers/media/rc/keymaps/rc-cec.c
  F:    include/media/cec-notifier.h
@@@ -3933,6 -3986,12 +3986,12 @@@ F:    arch/powerpc/include/uapi/asm/spu*.
  F:    arch/powerpc/oprofile/*cell*
  F:    arch/powerpc/platforms/cell/
  
+ CELLWISE CW2015 BATTERY DRIVER
+ M:    Tobias Schrammm <t.schramm@manjaro.org>
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/power/supply/cw2015_battery.yaml
+ F:    drivers/power/supply/cw2015_battery.c
  CEPH COMMON CODE (LIBCEPH)
  M:    Ilya Dryomov <idryomov@gmail.com>
  M:    Jeff Layton <jlayton@kernel.org>
@@@ -4060,12 -4119,11 +4119,11 @@@ M:   Charles Keepax <ckeepax@opensource.c
  M:    Richard Fitzgerald <rf@opensource.cirrus.com>
  L:    patches@opensource.cirrus.com
  S:    Supported
- F:    Documentation/devicetree/bindings/clock/cirrus,lochnagar.txt
- F:    Documentation/devicetree/bindings/hwmon/cirrus,lochnagar.txt
- F:    Documentation/devicetree/bindings/mfd/cirrus,lochnagar.txt
- F:    Documentation/devicetree/bindings/pinctrl/cirrus,lochnagar.txt
- F:    Documentation/devicetree/bindings/regulator/cirrus,lochnagar.txt
- F:    Documentation/devicetree/bindings/sound/cirrus,lochnagar.txt
+ F:    Documentation/devicetree/bindings/clock/cirrus,lochnagar.yaml
+ F:    Documentation/devicetree/bindings/hwmon/cirrus,lochnagar.yaml
+ F:    Documentation/devicetree/bindings/mfd/cirrus,lochnagar.yaml
+ F:    Documentation/devicetree/bindings/pinctrl/cirrus,lochnagar.yaml
+ F:    Documentation/devicetree/bindings/sound/cirrus,lochnagar.yaml
  F:    Documentation/hwmon/lochnagar.rst
  F:    drivers/clk/clk-lochnagar.c
  F:    drivers/hwmon/lochnagar-hwmon.c
@@@ -4085,9 -4143,9 +4143,9 @@@ L:      patches@opensource.cirrus.co
  S:    Supported
  W:    https://github.com/CirrusLogic/linux-drivers/wiki
  T:    git https://github.com/CirrusLogic/linux-drivers.git
- F:    Documentation/devicetree/bindings/mfd/madera.txt
- F:    Documentation/devicetree/bindings/pinctrl/cirrus,madera-pinctrl.txt
- F:    Documentation/devicetree/bindings/sound/madera.txt
+ F:    Documentation/devicetree/bindings/mfd/cirrus,madera.yaml
+ F:    Documentation/devicetree/bindings/pinctrl/cirrus,madera.yaml
+ F:    Documentation/devicetree/bindings/sound/cirrus,madera.yaml
  F:    drivers/gpio/gpio-madera*
  F:    drivers/irqchip/irq-madera*
  F:    drivers/mfd/cs47l*
@@@ -4198,7 -4256,7 +4256,7 @@@ M:      coda@cs.cmu.ed
  L:    codalist@coda.cs.cmu.edu
  S:    Maintained
  W:    http://www.coda.cs.cmu.edu/
- F:    Documentation/filesystems/coda.txt
+ F:    Documentation/filesystems/coda.rst
  F:    fs/coda/
  F:    include/linux/coda*.h
  F:    include/uapi/linux/coda*.h
@@@ -4537,7 -4595,7 +4595,7 @@@ L:      linux-media@vger.kernel.or
  S:    Odd fixes
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
- F:    Documentation/media/v4l-drivers/cx88*
+ F:    Documentation/driver-api/media/drivers/cx88*
  F:    drivers/media/pci/cx88/
  
  CXD2820R MEDIA DRIVER
@@@ -4653,6 -4711,12 +4711,12 @@@ Q:    http://patchwork.linuxtv.org/project
  T:    git git://linuxtv.org/anttip/media_tree.git
  F:    drivers/media/common/cypress_firmware*
  
+ CYPRESS CY8CTMA140 TOUCHSCREEN DRIVER
+ M:    Linus Walleij <linus.walleij@linaro.org>
+ L:    linux-input@vger.kernel.org
+ S:    Maintained
+ F:    drivers/input/touchscreen/cy8ctma140.c
  CYTTSP TOUCHSCREEN DRIVER
  M:    Ferruh Yigit <fery@cypress.com>
  L:    linux-input@vger.kernel.org
@@@ -4689,7 -4753,7 +4753,7 @@@ F:      net/ax25/sysctl_net_ax25.
  DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER
  L:    netdev@vger.kernel.org
  S:    Orphan
- F:    Documentation/networking/device_drivers/dec/dmfe.txt
+ F:    Documentation/networking/device_drivers/dec/dmfe.rst
  F:    drivers/net/ethernet/dec/tulip/dmfe.c
  
  DC390/AM53C974 SCSI driver
@@@ -4723,7 -4787,7 +4787,7 @@@ DECnet NETWORK LAYE
  L:    linux-decnet-user@lists.sourceforge.net
  S:    Orphan
  W:    http://linux-decnet.sourceforge.net
- F:    Documentation/networking/decnet.txt
+ F:    Documentation/networking/decnet.rst
  F:    net/decnet/
  
  DECSTATION PLATFORM SUPPORT
@@@ -4991,7 -5055,7 +5055,7 @@@ M:      Jan Kara <jack@suse.cz
  R:    Amir Goldstein <amir73il@gmail.com>
  L:    linux-fsdevel@vger.kernel.org
  S:    Maintained
- F:    Documentation/filesystems/dnotify.txt
+ F:    Documentation/filesystems/dnotify.rst
  F:    fs/notify/dnotify/
  F:    include/linux/dnotify.h
  
@@@ -5005,7 -5069,7 +5069,7 @@@ W:      http://www.win.tue.nl/~aeb/partition
  DISKQUOTA
  M:    Jan Kara <jack@suse.com>
  S:    Maintained
- F:    Documentation/filesystems/quota.txt
+ F:    Documentation/filesystems/quota.rst
  F:    fs/quota/
  F:    include/linux/quota*.h
  F:    include/uapi/linux/quota*.h
@@@ -5040,7 -5104,7 +5104,7 @@@ F:      drivers/dma-buf
  F:    include/linux/*fence.h
  F:    include/linux/dma-buf*
  F:    include/linux/dma-resv.h
- K:    dma_(buf|fence|resv)
+ K:    \bdma_(?:buf|fence|resv)\b
  
  DMA GENERIC OFFLOAD ENGINE SUBSYSTEM
  M:    Vinod Koul <vkoul@kernel.org>
@@@ -5120,12 -5184,14 +5184,14 @@@ F:   scripts/documentation-file-ref-chec
  F:    scripts/kernel-doc
  F:    scripts/sphinx-pre-install
  X:    Documentation/ABI/
+ X:    Documentation/admin-guide/media/
  X:    Documentation/devicetree/
+ X:    Documentation/driver-api/media/
  X:    Documentation/firmware-guide/acpi/
  X:    Documentation/i2c/
- X:    Documentation/media/
  X:    Documentation/power/
  X:    Documentation/spi/
+ X:    Documentation/userspace-api/media/
  
  DOCUMENTATION SCRIPTS
  M:    Mauro Carvalho Chehab <mchehab@kernel.org>
@@@ -5252,7 -5318,7 +5318,7 @@@ DRM DRIVER FOR ARM VERSATILE TFT PANEL
  M:    Linus Walleij <linus.walleij@linaro.org>
  S:    Maintained
  T:    git git://anongit.freedesktop.org/drm/drm-misc
- F:    Documentation/devicetree/bindings/display/panel/arm,versatile-tft-panel.txt
+ F:    Documentation/devicetree/bindings/display/panel/arm,versatile-tft-panel.yaml
  F:    drivers/gpu/drm/panel/panel-arm-versatile.c
  
  DRM DRIVER FOR ASPEED BMC GFX
@@@ -5278,7 -5344,7 +5344,7 @@@ F:      drivers/gpu/drm/bochs
  DRM DRIVER FOR BOE HIMAX8279D PANELS
  M:    Jerry Han <hanxu5@huaqin.corp-partner.google.com>
  S:    Maintained
- F:    Documentation/devicetree/bindings/display/panel/boe,himax8279d.txt
+ F:    Documentation/devicetree/bindings/display/panel/boe,himax8279d.yaml
  F:    drivers/gpu/drm/panel/panel-boe-himax8279d.c
  
  DRM DRIVER FOR FARADAY TVE200 TV ENCODER
@@@ -5296,7 -5362,7 +5362,7 @@@ F:      drivers/gpu/drm/panel/panel-feixin-k
  DRM DRIVER FOR FEIYANG FY07024DI26A30-D MIPI-DSI LCD PANELS
  M:    Jagan Teki <jagan@amarulasolutions.com>
  S:    Maintained
- F:    Documentation/devicetree/bindings/display/panel/feiyang,fy07024di26a30d.txt
+ F:    Documentation/devicetree/bindings/display/panel/feiyang,fy07024di26a30d.yaml
  F:    drivers/gpu/drm/panel/panel-feiyang-fy07024di26a30d.c
  
  DRM DRIVER FOR GRAIN MEDIA GM12U320 PROJECTORS
@@@ -5331,6 -5397,14 +5397,14 @@@ S:    Orphan / Obsolet
  F:    drivers/gpu/drm/i810/
  F:    include/uapi/drm/i810_drm.h
  
+ DRM DRIVER FOR LVDS PANELS
+ M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+ L:    dri-devel@lists.freedesktop.org
+ T:    git git://anongit.freedesktop.org/drm/drm-misc
+ S:    Maintained
+ F:    drivers/gpu/drm/panel/panel-lvds.c
+ F:    Documentation/devicetree/bindings/display/panel/lvds.yaml
  DRM DRIVER FOR MATROX G200/G400 GRAPHICS CARDS
  S:    Orphan / Obsolete
  F:    drivers/gpu/drm/mga/
@@@ -5379,7 -5453,7 +5453,7 @@@ F:      include/uapi/drm/nouveau_drm.
  DRM DRIVER FOR OLIMEX LCD-OLINUXINO PANELS
  M:    Stefan Mavrodiev <stefan@olimex.com>
  S:    Maintained
- F:    Documentation/devicetree/bindings/display/panel/olimex,lcd-olinuxino.txt
+ F:    Documentation/devicetree/bindings/display/panel/olimex,lcd-olinuxino.yaml
  F:    drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c
  
  DRM DRIVER FOR PERVASIVE DISPLAYS REPAPER PANELS
@@@ -5396,7 -5470,7 +5470,7 @@@ L:      virtualization@lists.linux-foundatio
  S:    Obsolete
  W:    https://www.kraxel.org/blog/2014/10/qemu-using-cirrus-considered-harmful/
  T:    git git://anongit.freedesktop.org/drm/drm-misc
- F:    drivers/gpu/drm/cirrus/
+ F:    drivers/gpu/drm/tiny/cirrus.c
  
  DRM DRIVER FOR QXL VIRTUAL GPU
  M:    Dave Airlie <airlied@redhat.com>
@@@ -5446,7 -5520,7 +5520,7 @@@ F:      drivers/gpu/drm/tiny/st7586.
  DRM DRIVER FOR SITRONIX ST7701 PANELS
  M:    Jagan Teki <jagan@amarulasolutions.com>
  S:    Maintained
- F:    Documentation/devicetree/bindings/display/panel/sitronix,st7701.txt
+ F:    Documentation/devicetree/bindings/display/panel/sitronix,st7701.yaml
  F:    drivers/gpu/drm/panel/panel-sitronix-st7701.c
  
  DRM DRIVER FOR SITRONIX ST7735R PANELS
@@@ -6172,7 -6246,6 +6246,6 @@@ M:      Yash Shah <yash.shah@sifive.com
  L:    linux-edac@vger.kernel.org
  S:    Supported
  F:    drivers/edac/sifive_edac.c
- F:    drivers/soc/sifive_l2_cache.c
  
  EDAC-SKYLAKE
  M:    Tony Luck <tony.luck@intel.com>
@@@ -6232,7 -6305,7 +6305,7 @@@ L:      linux-media@vger.kernel.or
  S:    Maintained
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
- F:    Documentation/media/v4l-drivers/em28xx*
+ F:    Documentation/admin-guide/media/em28xx*
  F:    drivers/media/usb/em28xx/
  
  EMBEDDED LINUX
@@@ -6713,6 -6786,13 +6786,13 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/crypto/fsl-sec4.txt
  F:    drivers/crypto/caam/
  
+ FREESCALE COLDFIRE M5441X MMC DRIVER
+ M:    Angelo Dureghello <angelo.dureghello@timesys.com>
+ L:    linux-mmc@vger.kernel.org
+ S:    Maintained
+ F:    drivers/mmc/host/sdhci-esdhc-mcf.c
+ F:    include/linux/platform_data/mmc-esdhc-mcf.h
  FREESCALE DIU FRAMEBUFFER DRIVER
  M:    Timur Tabi <timur@kernel.org>
  L:    linux-fbdev@vger.kernel.org
@@@ -6876,7 -6956,6 +6956,7 @@@ M:      Timur Tabi <timur@kernel.org
  M:    Nicolin Chen <nicoleotsuka@gmail.com>
  M:    Xiubo Li <Xiubo.Lee@gmail.com>
  R:    Fabio Estevam <festevam@gmail.com>
 +R:    Shengjiu Wang <shengjiu.wang@gmail.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  L:    linuxppc-dev@lists.ozlabs.org
  S:    Maintained
@@@ -7021,18 -7100,30 +7101,30 @@@ R:   Darren Hart <dvhart@infradead.org
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking/core
- F:    Documentation/*futex*
+ 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:    tools/perf/bench/futex*
- F:    tools/testing/selftests/futex/
+ F:    Documentation/locking/*futex*
+ GATEWORKS SYSTEM CONTROLLER (GSC) DRIVER
+ M:    Tim Harvey <tharvey@gateworks.com>
+ M:    Robert Jones <rjones@gateworks.com>
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/mfd/gateworks-gsc.yaml
+ F:    drivers/mfd/gateworks-gsc.c
+ F:    include/linux/mfd/gsc.h
+ F:    Documentation/hwmon/gsc-hwmon.rst
+ F:    drivers/hwmon/gsc-hwmon.c
+ F:    include/linux/platform_data/gsc_hwmon.h
  
  GASKET DRIVER FRAMEWORK
  M:    Rob Springer <rspringer@google.com>
  M:    Todd Poynor <toddpoynor@google.com>
  M:    Ben Chan <benchan@chromium.org>
+ M:    Richard Yeh <rcy@google.com>
  S:    Maintained
  F:    drivers/staging/gasket/
  
@@@ -7180,7 -7271,7 +7272,7 @@@ L:      cluster-devel@redhat.co
  S:    Supported
  W:    http://sources.redhat.com/cluster/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git
- F:    Documentation/filesystems/gfs2*.txt
+ F:    Documentation/filesystems/gfs2*
  F:    fs/gfs2/
  F:    include/uapi/linux/gfs2_ondisk.h
  
@@@ -7230,6 -7321,13 +7322,13 @@@ F:    Documentation/firmware-guide/acpi/gp
  F:    drivers/gpio/gpiolib-acpi.c
  F:    drivers/gpio/gpiolib-acpi.h
  
+ GPIO AGGREGATOR
+ M:    Geert Uytterhoeven <geert+renesas@glider.be>
+ L:    linux-gpio@vger.kernel.org
+ S:    Supported
+ F:    Documentation/admin-guide/gpio/gpio-aggregator.rst
+ F:    drivers/gpio/gpio-aggregator.c
  GPIO IR Transmitter
  M:    Sean Young <sean@mess.org>
  L:    linux-media@vger.kernel.org
@@@ -7243,6 -7341,12 +7342,12 @@@ S:    Maintaine
  F:    drivers/gpio/gpio-mockup.c
  F:    tools/testing/selftests/gpio/
  
+ GPIO REGMAP
+ R:    Michael Walle <michael@walle.cc>
+ S:    Maintained
+ F:    drivers/gpio/gpio-regmap.c
+ F:    include/linux/gpio/regmap.h
  GPIO SUBSYSTEM
  M:    Linus Walleij <linus.walleij@linaro.org>
  M:    Bartosz Golaszewski <bgolaszewski@baylibre.com>
@@@ -7456,7 -7560,7 +7561,7 @@@ L:      linux-media@vger.kernel.or
  L:    linux-rockchip@lists.infradead.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml
- F:    Documentation/devicetree/bindings/media/rockchip-vpu.txt
+ F:    Documentation/devicetree/bindings/media/rockchip-vpu.yaml
  F:    drivers/staging/media/hantro/
  
  HARD DRIVE ACTIVE PROTECTION SYSTEM (HDAPS) DRIVER
@@@ -7497,7 -7601,7 +7602,7 @@@ L:      linux-remoteproc@vger.kernel.or
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/andersson/remoteproc.git hwspinlock-next
  F:    Documentation/devicetree/bindings/hwlock/
- F:    Documentation/hwspinlock.txt
+ F:    Documentation/locking/hwspinlock.rst
  F:    drivers/hwspinlock/
  F:    include/linux/hwspinlock.h
  
@@@ -7730,7 -7834,9 +7835,9 @@@ L:      linux-mm@kvack.or
  S:    Maintained
  F:    Documentation/vm/hmm.rst
  F:    include/linux/hmm*
+ F:    lib/test_hmm*
  F:    mm/hmm*
+ F:    tools/testing/selftests/vm/*hmm*
  
  HOST AP DRIVER
  M:    Jouni Malinen <j@w1.fi>
@@@ -7804,10 -7910,10 +7911,10 @@@ F:   Documentation/devicetree/bindings/ii
  F:    drivers/iio/humidity/hts221*
  
  HUAWEI ETHERNET DRIVER
- M:    Aviad Krawczyk <aviad.krawczyk@huawei.com>
+ M:    Bin Luo <luobin9@huawei.com>
  L:    netdev@vger.kernel.org
  S:    Supported
- F:    Documentation/networking/hinic.txt
+ F:    Documentation/networking/hinic.rst
  F:    drivers/net/ethernet/huawei/hinic/
  
  HUGETLB FILESYSTEM
@@@ -7859,7 -7965,7 +7966,7 @@@ S:      Supporte
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux.git
  F:    Documentation/ABI/stable/sysfs-bus-vmbus
  F:    Documentation/ABI/testing/debugfs-hyperv
- F:    Documentation/networking/device_drivers/microsoft/netvsc.txt
+ F:    Documentation/networking/device_drivers/microsoft/netvsc.rst
  F:    arch/x86/hyperv
  F:    arch/x86/include/asm/hyperv-tlfs.h
  F:    arch/x86/include/asm/mshyperv.h
@@@ -7876,6 -7982,7 +7983,7 @@@ F:      drivers/pci/controller/pci-hyperv.
  F:    drivers/scsi/storvsc_drv.c
  F:    drivers/uio/uio_hv_generic.c
  F:    drivers/video/fbdev/hyperv_fb.c
+ F:    include/asm-generic/hyperv-tlfs.h
  F:    include/asm-generic/mshyperv.h
  F:    include/clocksource/hyperv_timer.h
  F:    include/linux/hyperv.h
@@@ -8415,6 -8522,7 +8523,7 @@@ F:      drivers/mtd/nand/raw/ingenic
  F:    drivers/pinctrl/pinctrl-ingenic.c
  F:    drivers/power/supply/ingenic-battery.c
  F:    drivers/pwm/pwm-jz4740.c
+ F:    drivers/remoteproc/ingenic_rproc.c
  F:    drivers/rtc/rtc-jz4740.c
  F:    drivers/tty/serial/8250/8250_ingenic.c
  F:    drivers/usb/musb/jz4740.c
@@@ -8492,6 -8600,13 +8601,13 @@@ L:    platform-driver-x86@vger.kernel.or
  S:    Maintained
  F:    drivers/platform/x86/intel_atomisp2_pm.c
  
+ INTEL BROXTON PMC DRIVER
+ M:    Mika Westerberg <mika.westerberg@linux.intel.com>
+ M:    Zha Qipeng <qipeng.zha@intel.com>
+ S:    Maintained
+ F:    drivers/mfd/intel_pmc_bxt.c
+ F:    include/linux/mfd/intel_pmc_bxt.h
  INTEL C600 SERIES SAS CONTROLLER DRIVER
  M:    Intel SCU Linux support <intel-linux-scu@intel.com>
  M:    Artur Paszkiewicz <artur.paszkiewicz@intel.com>
@@@ -8621,8 -8736,7 +8737,7 @@@ M:      Lu Baolu <baolu.lu@linux.intel.com
  L:    iommu@lists.linux-foundation.org
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
- F:    drivers/iommu/dmar.c
- F:    drivers/iommu/intel*.[ch]
+ F:    drivers/iommu/intel/
  F:    include/linux/intel-iommu.h
  F:    include/linux/intel-svm.h
  
@@@ -8638,16 -8752,18 +8753,18 @@@ M:   Bingbu Cao <bingbu.cao@intel.com
  R:    Tian Shu Qiu <tian.shu.qiu@intel.com>
  L:    linux-media@vger.kernel.org
  S:    Maintained
- F:    Documentation/media/uapi/v4l/pixfmt-srggb10-ipu3.rst
+ F:    Documentation/userspace-api/media/v4l/pixfmt-srggb10-ipu3.rst
  F:    drivers/media/pci/intel/ipu3/
  
  INTEL IPU3 CSI-2 IMGU DRIVER
  M:    Sakari Ailus <sakari.ailus@linux.intel.com>
+ R:    Bingbu Cao <bingbu.cao@intel.com>
+ R:    Tian Shu Qiu <tian.shu.qiu@intel.com>
  L:    linux-media@vger.kernel.org
  S:    Maintained
- F:    Documentation/media/uapi/v4l/pixfmt-meta-intel-ipu3.rst
- F:    Documentation/media/v4l-drivers/ipu3.rst
- F:    Documentation/media/v4l-drivers/ipu3_rcb.svg
+ F:    Documentation/admin-guide/media/ipu3.rst
+ F:    Documentation/admin-guide/media/ipu3_rcb.svg
+ F:    Documentation/userspace-api/media/v4l/pixfmt-meta-intel-ipu3.rst
  F:    drivers/staging/media/ipu3/
  
  INTEL IXP4XX QMGR, NPE, ETHERNET and HSS SUPPORT
@@@ -8699,6 -8815,13 +8816,13 @@@ F:    include/uapi/linux/mic_common.
  F:    include/uapi/linux/mic_ioctl.h
  F:    include/uapi/linux/scif_ioctl.h
  
+ INTEL P-Unit IPC DRIVER
+ M:    Zha Qipeng <qipeng.zha@intel.com>
+ L:    platform-driver-x86@vger.kernel.org
+ S:    Maintained
+ F:    arch/x86/include/asm/intel_punit_ipc.h
+ F:    drivers/platform/x86/intel_punit_ipc.c
  INTEL PMC CORE DRIVER
  M:    Rajneesh Bhardwaj <rajneesh.bhardwaj@intel.com>
  M:    Vishwanath Somayaji <vishwanath.somayaji@intel.com>
@@@ -8706,15 -8829,6 +8830,6 @@@ L:     platform-driver-x86@vger.kernel.or
  S:    Maintained
  F:    drivers/platform/x86/intel_pmc_core*
  
- INTEL PMC/P-Unit IPC DRIVER
- M:    Zha Qipeng<qipeng.zha@intel.com>
- L:    platform-driver-x86@vger.kernel.org
- S:    Maintained
- F:    arch/x86/include/asm/intel_pmc_ipc.h
- F:    arch/x86/include/asm/intel_punit_ipc.h
- F:    drivers/platform/x86/intel_pmc_ipc.c
- F:    drivers/platform/x86/intel_punit_ipc.c
  INTEL PMIC GPIO DRIVERS
  M:    Andy Shevchenko <andy@kernel.org>
  S:    Maintained
@@@ -8734,8 -8848,8 +8849,8 @@@ INTEL PRO/WIRELESS 2100, 2200BG, 2915AB
  M:    Stanislav Yakovlev <stas.yakovlev@gmail.com>
  L:    linux-wireless@vger.kernel.org
  S:    Maintained
- F:    Documentation/networking/device_drivers/intel/ipw2100.txt
- F:    Documentation/networking/device_drivers/intel/ipw2200.txt
+ F:    Documentation/networking/device_drivers/intel/ipw2100.rst
+ F:    Documentation/networking/device_drivers/intel/ipw2200.rst
  F:    drivers/net/wireless/intel/ipw2x00/
  
  INTEL PSTATE DRIVER
@@@ -8753,6 -8867,12 +8868,12 @@@ S:    Supporte
  F:    drivers/infiniband/hw/i40iw/
  F:    include/uapi/rdma/i40iw-abi.h
  
+ INTEL SCU DRIVERS
+ M:    Mika Westerberg <mika.westerberg@linux.intel.com>
+ S:    Maintained
+ F:    arch/x86/include/asm/intel_scu_ipc.h
+ F:    drivers/platform/x86/intel_scu_*
  INTEL SPEED SELECT TECHNOLOGY
  M:    Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
  L:    platform-driver-x86@vger.kernel.org
@@@ -8819,6 -8939,13 +8940,13 @@@ F:    Documentation/admin-guide/wimax/i240
  F:    drivers/net/wimax/i2400m/
  F:    include/uapi/linux/wimax/i2400m.h
  
+ INTEL WMI SLIM BOOTLOADER (SBL) FIRMWARE UPDATE DRIVER
+ M:    Jithu Joseph <jithu.joseph@intel.com>
+ R:    Maurice Ma <maurice.ma@intel.com>
+ S:    Maintained
+ W:    https://slimbootloader.github.io/security/firmware-update.html
+ F:    drivers/platform/x86/intel-wmi-sbl-fw-update.c
  INTEL WMI THUNDERBOLT FORCE POWER DRIVER
  M:    Mario Limonciello <mario.limonciello@dell.com>
  S:    Maintained
@@@ -8904,7 -9031,7 +9032,7 @@@ M:      Corey Minyard <minyard@acm.org
  L:    openipmi-developer@lists.sourceforge.net (moderated for non-subscribers)
  S:    Supported
  W:    http://openipmi.sourceforge.net/
- F:    Documentation/IPMI.txt
+ F:    Documentation/driver-api/ipmi.rst
  F:    Documentation/devicetree/bindings/ipmi/
  F:    drivers/char/ipmi/
  F:    include/linux/ipmi*
@@@ -8926,7 -9053,7 +9054,7 @@@ L:      lvs-devel@vger.kernel.or
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/horms/ipvs-next.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/horms/ipvs.git
- F:    Documentation/networking/ipvs-sysctl.txt
+ F:    Documentation/networking/ipvs-sysctl.rst
  F:    include/net/ip_vs.h
  F:    include/uapi/linux/ip_vs.h
  F:    net/netfilter/ipvs/
@@@ -8946,7 -9073,7 +9074,7 @@@ IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY
  M:    Marc Zyngier <maz@kernel.org>
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
- F:    Documentation/IRQ-domain.txt
+ F:    Documentation/core-api/irq/irq-domain.rst
  F:    include/linux/irqdomain.h
  F:    kernel/irq/irqdomain.c
  F:    kernel/irq/msi.c
@@@ -9071,7 -9198,7 +9199,7 @@@ L:      linux-media@vger.kernel.or
  S:    Maintained
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
- F:    Documentation/media/v4l-drivers/ivtv*
+ F:    Documentation/admin-guide/media/ivtv*
  F:    drivers/media/pci/ivtv/
  F:    include/uapi/linux/ivtv*
  
@@@ -9178,6 -9305,17 +9306,17 @@@ F:    Documentation/kbuild/kconfig
  F:    scripts/Kconfig.include
  F:    scripts/kconfig/
  
+ KCSAN
+ M:    Marco Elver <elver@google.com>
+ R:    Dmitry Vyukov <dvyukov@google.com>
+ L:    kasan-dev@googlegroups.com
+ S:    Maintained
+ F:    Documentation/dev-tools/kcsan.rst
+ F:    include/linux/kcsan*.h
+ F:    kernel/kcsan/
+ F:    lib/Kconfig.kcsan
+ F:    scripts/Makefile.kcsan
  KDUMP
  M:    Dave Young <dyoung@redhat.com>
  M:    Baoquan He <bhe@redhat.com>
@@@ -9301,7 -9439,6 +9440,6 @@@ F:      arch/arm64/include/asm/kvm
  F:    arch/arm64/include/uapi/asm/kvm*
  F:    arch/arm64/kvm/
  F:    include/kvm/arm_*
- F:    virt/kvm/arm/
  
  KERNEL VIRTUAL MACHINE FOR MIPS (KVM/mips)
  L:    linux-mips@vger.kernel.org
@@@ -9512,7 -9649,7 +9650,7 @@@ F:      drivers/soc/lanti
  LAPB module
  L:    linux-x25@vger.kernel.org
  S:    Orphan
- F:    Documentation/networking/lapb-module.txt
+ F:    Documentation/networking/lapb-module.rst
  F:    include/*/lapb.h
  F:    net/lapb/
  
@@@ -9726,6 -9863,13 +9864,13 @@@ F:    drivers/lightnvm
  F:    include/linux/lightnvm.h
  F:    include/uapi/linux/lightnvm.h
  
+ LINEAR RANGES HELPERS
+ M:    Mark Brown <broonie@kernel.org>
+ R:    Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
+ F:    lib/linear_ranges.c
+ F:    lib/test_linear_ranges.c
+ F:    include/linux/linear_range.h
  LINUX FOR POWER MACINTOSH
  M:    Benjamin Herrenschmidt <benh@kernel.crashing.org>
  L:    linuxppc-dev@lists.ozlabs.org
@@@ -9792,7 -9936,7 +9937,7 @@@ F:      arch/powerpc/platforms/83xx
  F:    arch/powerpc/platforms/85xx/
  
  LINUX FOR POWERPC EMBEDDED PPC8XX
- M:    Christophe Leroy <christophe.leroy@c-s.fr>
+ M:    Christophe Leroy <christophe.leroy@csgroup.eu>
  L:    linuxppc-dev@lists.ozlabs.org
  S:    Maintained
  F:    arch/powerpc/platforms/8xx/
@@@ -9852,10 -9996,12 +9997,12 @@@ S:   Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/livepatching/livepatching.git
  F:    Documentation/ABI/testing/sysfs-kernel-livepatch
  F:    Documentation/livepatch/
+ F:    arch/powerpc/include/asm/livepatch.h
+ F:    arch/s390/include/asm/livepatch.h
  F:    arch/x86/include/asm/livepatch.h
- F:    arch/x86/kernel/livepatch.c
  F:    include/linux/livepatch.h
  F:    kernel/livepatch/
+ F:    lib/livepatch/
  F:    samples/livepatch/
  F:    tools/testing/selftests/livepatch/
  
@@@ -9954,7 -10100,7 +10101,7 @@@ F:    drivers/hid/hid-lg-g15.
  
  LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI)
  M:    Sathya Prakash <sathya.prakash@broadcom.com>
- M:    Chaitra P B <chaitra.basappa@broadcom.com>
+ M:    Sreekanth Reddy <sreekanth.reddy@broadcom.com>
  M:    Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com>
  L:    MPT-FusionLinux.pdl@broadcom.com
  L:    linux-scsi@vger.kernel.org
@@@ -10076,7 -10222,7 +10223,7 @@@ S:   Maintaine
  W:    https://wireless.wiki.kernel.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
- F:    Documentation/networking/mac80211-injection.txt
+ F:    Documentation/networking/mac80211-injection.rst
  F:    Documentation/networking/mac80211_hwsim/mac80211_hwsim.rst
  F:    drivers/net/wireless/mac80211_hwsim.[ch]
  F:    include/net/mac80211.h
@@@ -10257,7 -10403,7 +10404,7 @@@ L:   linux-media@vger.kernel.or
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
  F:    Documentation/devicetree/bindings/media/i2c/max2175.txt
- F:    Documentation/media/v4l-drivers/max2175.rst
+ F:    Documentation/userspace-api/media/drivers/max2175.rst
  F:    drivers/media/i2c/max2175*
  F:    include/uapi/linux/max2175.h
  
@@@ -10457,8 -10603,8 +10604,8 @@@ M:   Philipp Zabel <p.zabel@pengutronix.d
  L:    linux-media@vger.kernel.org
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
+ F:    Documentation/admin-guide/media/imx.rst
  F:    Documentation/devicetree/bindings/media/imx.txt
- F:    Documentation/media/v4l-drivers/imx.rst
  F:    drivers/staging/media/imx/
  F:    include/linux/imx-media.h
  F:    include/media/imx.h
@@@ -10468,9 -10614,9 +10615,9 @@@ M:   Rui Miguel Silva <rmfrfs@gmail.com
  L:    linux-media@vger.kernel.org
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
+ F:    Documentation/admin-guide/media/imx7.rst
  F:    Documentation/devicetree/bindings/media/imx7-csi.txt
  F:    Documentation/devicetree/bindings/media/imx7-mipi-csi2.txt
- F:    Documentation/media/v4l-drivers/imx7.rst
  F:    drivers/staging/media/imx/imx7-media-csi.c
  F:    drivers/staging/media/imx/imx7-mipi-csis.c
  
@@@ -10616,8 -10762,10 +10763,10 @@@ S: Maintaine
  W:    https://linuxtv.org
  Q:    http://patchwork.kernel.org/project/linux-media/list/
  T:    git git://linuxtv.org/media_tree.git
+ F:    Documentation/admin-guide/media/
  F:    Documentation/devicetree/bindings/media/
- F:    Documentation/media/
+ F:    Documentation/driver-api/media/
+ F:    Documentation/userspace-api/media/
  F:    drivers/media/
  F:    drivers/staging/media/
  F:    include/linux/platform_data/media/
@@@ -10728,9 -10876,8 +10877,8 @@@ F:   Documentation/devicetree/bindings/i2
  F:    drivers/i2c/busses/i2c-mt7621.c
  
  MEDIATEK NAND CONTROLLER DRIVER
- M:    Xiaolei Li <xiaolei.li@mediatek.com>
  L:    linux-mtd@lists.infradead.org
- S:    Maintained
+ S:    Orphan
  F:    Documentation/devicetree/bindings/mtd/mtk-nand.txt
  F:    drivers/mtd/nand/raw/mtk_*
  
@@@ -11017,10 -11164,12 +11165,12 @@@ F:        drivers/mtd/nand/raw/meson_
  
  MESON VIDEO DECODER DRIVER FOR AMLOGIC SOCS
  M:    Maxime Jourdan <mjourdan@baylibre.com>
+ M:    Neil Armstrong <narmstrong@baylibre.com>
  L:    linux-media@vger.kernel.org
  L:    linux-amlogic@lists.infradead.org
  S:    Supported
  T:    git git://linuxtv.org/media_tree.git
+ F:    Documentation/devicetree/bindings/media/amlogic,gx-vdec.yaml
  F:    drivers/staging/media/meson/vdec/
  
  METHODE UDPU SUPPORT
@@@ -11184,17 -11333,17 +11334,17 @@@ F:        drivers/iio/adc/at91-sama5d2_adc.
  F:    include/dt-bindings/iio/adc/at91-sama5d2_adc.h
  
  MICROCHIP SAMA5D2-COMPATIBLE SHUTDOWN CONTROLLER
 -M:    Nicolas Ferre <nicolas.ferre@microchip.com>
 +M:    Claudiu Beznea <claudiu.beznea@microchip.com>
  S:    Supported
  F:    drivers/power/reset/at91-sama5d2_shdwc.c
  
  MICROCHIP SPI DRIVER
 -M:    Nicolas Ferre <nicolas.ferre@microchip.com>
 +M:    Tudor Ambarus <tudor.ambarus@microchip.com>
  S:    Supported
  F:    drivers/spi/spi-atmel.*
  
  MICROCHIP SSC DRIVER
 -M:    Nicolas Ferre <nicolas.ferre@microchip.com>
 +M:    Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Supported
  F:    drivers/misc/atmel-ssc.c
@@@ -11393,15 -11542,20 +11543,20 @@@ F:        kernel/module.
  MONOLITHIC POWER SYSTEM PMIC DRIVER
  M:    Saravanan Sekar <sravanhome@gmail.com>
  S:    Maintained
+ F:    Documentation/devicetree/bindings/mfd/mps,mp2629.yaml
  F:    Documentation/devicetree/bindings/regulator/mps,mp*.yaml
+ F:    drivers/iio/adc/mp2629_adc.c
+ F:    drivers/mfd/mp2629.c
+ F:    drivers/power/supply/mp2629_charger.c
  F:    drivers/regulator/mp5416.c
  F:    drivers/regulator/mpq7920.c
  F:    drivers/regulator/mpq7920.h
+ F:    include/linux/mfd/mp2629.h
  
  MOTION EYE VAIO PICTUREBOOK CAMERA DRIVER
  S:    Orphan
  W:    http://popies.net/meye/
- F:    Documentation/media/v4l-drivers/meye*
+ F:    Documentation/userspace-api/media/drivers/meye*
  F:    drivers/media/pci/meye/
  F:    include/uapi/linux/meye.h
  
@@@ -11660,8 -11814,8 +11815,8 @@@ NETERION 10GbE DRIVERS (s2io/vxge
  M:    Jon Mason <jdmason@kudzu.us>
  L:    netdev@vger.kernel.org
  S:    Supported
- F:    Documentation/networking/device_drivers/neterion/s2io.txt
- F:    Documentation/networking/device_drivers/neterion/vxge.txt
+ F:    Documentation/networking/device_drivers/neterion/s2io.rst
+ F:    Documentation/networking/device_drivers/neterion/vxge.rst
  F:    drivers/net/ethernet/neterion/
  
  NETFILTER
@@@ -12428,6 -12582,15 +12583,15 @@@ S: Maintaine
  T:    git git://linuxtv.org/media_tree.git
  F:    drivers/media/i2c/ov2685.c
  
+ OMNIVISION OV2740 SENSOR DRIVER
+ M:    Tianshu Qiu <tian.shu.qiua@intel.com>
+ R:    Shawn Tu <shawnx.tu@intel.com>
+ R:    Bingbu Cao <bingbu.cao@intel.com>
+ L:    linux-media@vger.kernel.org
+ S:    Maintained
+ T:    git git://linuxtv.org/media_tree.git
+ F:    drivers/media/i2c/ov2740.c
  OMNIVISION OV5640 SENSOR DRIVER
  M:    Steve Longerbeam <slongerbeam@gmail.com>
  L:    linux-media@vger.kernel.org
@@@ -12490,10 -12653,11 +12654,11 @@@ F:        Documentation/devicetree/bindings/me
  F:    drivers/media/i2c/ov7740.c
  
  OMNIVISION OV8856 SENSOR DRIVER
- M:    Ben Kao <ben.kao@intel.com>
+ M:    Dongchun Zhu <dongchun.zhu@mediatek.com>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
+ F:    Documentation/devicetree/bindings/media/i2c/ov8856.yaml
  F:    drivers/media/i2c/ov8856.c
  
  OMNIVISION OV9640 SENSOR DRIVER
@@@ -12549,8 -12713,8 +12714,8 @@@ M:   Pantelis Antoniou <pantelis.antoniou
  M:    Frank Rowand <frowand.list@gmail.com>
  L:    devicetree@vger.kernel.org
  S:    Maintained
- F:    Documentation/devicetree/dynamic-resolution-notes.txt
- F:    Documentation/devicetree/overlay-notes.txt
+ F:    Documentation/devicetree/dynamic-resolution-notes.rst
+ F:    Documentation/devicetree/overlay-notes.rst
  F:    drivers/of/overlay.c
  F:    drivers/of/resolver.c
  K:    of_overlay_notifier_
@@@ -12747,7 -12911,7 +12912,7 @@@ F:   include/uapi/linux/ppdev.
  
  PARAVIRT_OPS INTERFACE
  M:    Juergen Gross <jgross@suse.com>
- M:    Thomas Hellstrom <thellstrom@vmware.com>
+ M:    Deep Shah <sdeep@vmware.com>
  M:    "VMware, Inc." <pv-drivers@vmware.com>
  L:    virtualization@lists.linux-foundation.org
  S:    Supported
@@@ -12768,7 -12932,7 +12933,7 @@@ M:   "James E.J. Bottomley" <James.Bottom
  M:    Helge Deller <deller@gmx.de>
  L:    linux-parisc@vger.kernel.org
  S:    Maintained
- W:    http://www.parisc-linux.org/
+ W:    https://parisc.wiki.kernel.org
  Q:    http://patchwork.kernel.org/project/linux-parisc/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/parisc-2.6.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux.git
@@@ -12958,7 -13122,7 +13123,7 @@@ L:   linux-pci@vger.kernel.or
  L:    linux-arm-kernel@lists.infradead.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/pci/layerscape-pcie-gen4.txt
- F:    drivers/pci/controller/mobibeil/pcie-layerscape-gen4.c
+ F:    drivers/pci/controller/mobiveil/pcie-layerscape-gen4.c
  
  PCI DRIVER FOR RENESAS R-CAR
  M:    Marek Vasut <marek.vasut+renesas@gmail.com>
@@@ -12966,6 -13130,7 +13131,7 @@@ M:   Yoshihiro Shimoda <yoshihiro.shimoda
  L:    linux-pci@vger.kernel.org
  L:    linux-renesas-soc@vger.kernel.org
  S:    Maintained
+ F:    Documentation/devicetree/bindings/pci/*rcar*
  F:    drivers/pci/controller/*rcar*
  
  PCI DRIVER FOR SAMSUNG EXYNOS
@@@ -13159,8 -13324,8 +13325,8 @@@ PCIE DRIVER FOR SOCIONEXT UNIPHIE
  M:    Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
  L:    linux-pci@vger.kernel.org
  S:    Maintained
- F:    Documentation/devicetree/bindings/pci/uniphier-pcie.txt
- F:    drivers/pci/controller/dwc/pcie-uniphier.c
+ F:    Documentation/devicetree/bindings/pci/uniphier-pcie*
+ F:    drivers/pci/controller/dwc/pcie-uniphier*
  
  PCIE DRIVER FOR ST SPEAR13XX
  M:    Pratyush Anand <pratyush.anand@gmail.com>
@@@ -13267,7 -13432,7 +13433,7 @@@ F:   drivers/input/joystick/pxrc.
  PHONET PROTOCOL
  M:    Remi Denis-Courmont <courmisch@gmail.com>
  S:    Supported
- F:    Documentation/networking/phonet.txt
+ F:    Documentation/networking/phonet.rst
  F:    include/linux/phonet.h
  F:    include/net/phonet/
  F:    include/uapi/linux/phonet.h
@@@ -13361,8 -13526,9 +13527,9 @@@ F:   drivers/pinctrl/qcom
  PIN CONTROLLER - RENESAS
  M:    Geert Uytterhoeven <geert+renesas@glider.be>
  L:    linux-renesas-soc@vger.kernel.org
- S:    Maintained
+ S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git sh-pfc
+ F:    Documentation/devicetree/bindings/pinctrl/renesas,*
  F:    drivers/pinctrl/pinctrl-rz*
  F:    drivers/pinctrl/sh-pfc/
  
@@@ -13677,6 -13843,7 +13844,7 @@@ M:   Tony Luck <tony.luck@intel.com
  S:    Maintained
  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:    drivers/acpi/apei/erst.c
  F:    drivers/firmware/efi/efi-pstore.c
@@@ -13714,8 -13881,8 +13882,8 @@@ M:   Hans Verkuil <hverkuil@xs4all.nl
  L:    linux-media@vger.kernel.org
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
- F:    Documentation/media/cec-drivers/pulse8-cec.rst
- F:    drivers/media/usb/pulse8-cec/*
+ F:    Documentation/admin-guide/media/pulse8-cec.rst
+ F:    drivers/media/cec/usb/pulse8/
  
  PVRUSB2 VIDEO4LINUX DRIVER
  M:    Mike Isely <isely@pobox.com>
@@@ -13724,7 -13891,7 +13892,7 @@@ L:   linux-media@vger.kernel.or
  S:    Maintained
  W:    http://www.isely.net/pvrusb2/
  T:    git git://linuxtv.org/media_tree.git
- F:    Documentation/media/v4l-drivers/pvrusb2*
+ F:    Documentation/driver-api/media/drivers/pvrusb2*
  F:    drivers/media/usb/pvrusb2/
  
  PWC WEBCAM DRIVER
@@@ -13753,6 -13920,7 +13921,7 @@@ F:   drivers/media/rc/pwm-ir-tx.
  PWM SUBSYSTEM
  M:    Thierry Reding <thierry.reding@gmail.com>
  R:    Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
+ M:    Lee Jones <lee.jones@linaro.org>
  L:    linux-pwm@vger.kernel.org
  S:    Maintained
  Q:    https://patchwork.ozlabs.org/project/linux-pwm/list/
@@@ -13971,8 -14139,8 +14140,8 @@@ QUALCOMM CAMERA SUBSYSTEM DRIVE
  M:    Todor Tomov <todor.too@gmail.com>
  L:    linux-media@vger.kernel.org
  S:    Maintained
+ F:    Documentation/admin-guide/media/qcom_camss.rst
  F:    Documentation/devicetree/bindings/media/qcom,camss.txt
- F:    Documentation/media/v4l-drivers/qcom_camss.rst
  F:    drivers/media/platform/qcom/camss/
  
  QUALCOMM CORE POWER REDUCTION (CPR) AVS DRIVER
@@@ -14031,12 -14199,20 +14200,20 @@@ L:        linux-arm-msm@vger.kernel.or
  S:    Maintained
  F:    drivers/iommu/qcom_iommu.c
  
+ QUALCOMM IPCC MAILBOX DRIVER
+ M:    Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
+ L:    linux-arm-msm@vger.kernel.org
+ S:    Supported
+ F:    Documentation/devicetree/bindings/mailbox/qcom-ipcc.yaml
+ F:    drivers/mailbox/qcom-ipcc.c
+ F:    include/dt-bindings/mailbox/qcom-ipcc.h
  QUALCOMM RMNET DRIVER
  M:    Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
  M:    Sean Tranchetti <stranche@codeaurora.org>
  L:    netdev@vger.kernel.org
  S:    Maintained
- F:    Documentation/networking/device_drivers/qualcomm/rmnet.txt
+ F:    Documentation/networking/device_drivers/qualcomm/rmnet.rst
  F:    drivers/net/ethernet/qualcomm/rmnet/
  F:    include/linux/if_rmnet.h
  
@@@ -14067,7 -14243,7 +14244,7 @@@ F:   drivers/net/wireless/ath/wcn36xx
  
  QUANTENNA QTNFMAC WIRELESS DRIVER
  M:    Igor Mitsyanko <imitsyanko@quantenna.com>
M:    Sergey Matyukevich <smatyukevich@quantenna.com>
R:    Sergey Matyukevich <geomatsi@gmail.com>
  L:    linux-wireless@vger.kernel.org
  S:    Maintained
  F:    drivers/net/wireless/quantenna
  RADEON and AMDGPU DRM DRIVERS
  M:    Alex Deucher <alexander.deucher@amd.com>
  M:    Christian König <christian.koenig@amd.com>
- M:    David (ChunMing) Zhou <David1.Zhou@amd.com>
  L:    amd-gfx@lists.freedesktop.org
  S:    Supported
  T:    git git://people.freedesktop.org/~agd5f/linux
@@@ -14128,7 -14303,7 +14304,7 @@@ M:   Hans Verkuil <hverkuil@xs4all.nl
  L:    linux-media@vger.kernel.org
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
- F:    drivers/media/usb/rainshadow-cec/*
+ F:    drivers/media/cec/usb/rainshadow/
  
  RALINK MIPS ARCHITECTURE
  M:    John Crispin <john@phrozen.org>
@@@ -14222,7 -14397,7 +14398,7 @@@ L:   linux-rdma@vger.kernel.or
  L:    rds-devel@oss.oracle.com (moderated for non-subscribers)
  S:    Supported
  W:    https://oss.oracle.com/projects/rds/
- F:    Documentation/networking/rds.txt
+ F:    Documentation/networking/rds.rst
  F:    net/rds/
  
  RDT - RESOURCE ALLOCATION
@@@ -14231,7 -14406,7 +14407,7 @@@ M:   Reinette Chatre <reinette.chatre@int
  L:    linux-kernel@vger.kernel.org
  S:    Supported
  F:    Documentation/x86/resctrl*
- F:    arch/x86/include/asm/resctrl_sched.h
+ F:    arch/x86/include/asm/resctrl.h
  F:    arch/x86/kernel/cpu/resctrl/
  F:    tools/testing/selftests/resctrl/
  
@@@ -14349,6 -14524,7 +14525,7 @@@ M:   Geert Uytterhoeven <geert+renesas@gl
  L:    linux-renesas-soc@vger.kernel.org
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git clk-renesas
+ F:    Documentation/devicetree/bindings/clock/renesas,*
  F:    drivers/clk/renesas/
  
  RENESAS EMEV2 I2C DRIVER
@@@ -14381,6 -14557,15 +14558,15 @@@ F: Documentation/devicetree/bindings/i2
  F:    drivers/i2c/busses/i2c-rcar.c
  F:    drivers/i2c/busses/i2c-sh_mobile.c
  
+ RENESAS R-CAR THERMAL DRIVERS
+ M:    Niklas Söderlund <niklas.soderlund@ragnatech.se>
+ L:    linux-renesas-soc@vger.kernel.org
+ S:    Supported
+ F:    Documentation/devicetree/bindings/thermal/rcar-gen3-thermal.txt
+ F:    Documentation/devicetree/bindings/thermal/rcar-thermal.txt
+ F:    drivers/thermal/rcar_gen3_thermal.c
+ F:    drivers/thermal/rcar_thermal.c
  RENESAS RIIC DRIVER
  M:    Chris Brandt <chris.brandt@renesas.com>
  S:    Supported
@@@ -14463,6 -14648,13 +14649,13 @@@ F: arch/riscv
  N:    riscv
  K:    riscv
  
+ RNBD BLOCK DRIVERS
+ M:    Danil Kipnis <danil.kipnis@cloud.ionos.com>
+ M:    Jack Wang <jinpu.wang@cloud.ionos.com>
+ L:    linux-block@vger.kernel.org
+ S:    Maintained
+ F:    drivers/block/rnbd/
  ROCCAT DRIVERS
  M:    Stefan Achatz <erazor_de@users.sourceforge.net>
  S:    Maintained
@@@ -14481,10 -14673,19 +14674,19 @@@ ROCKCHIP RASTER 2D GRAPHIC ACCELERATIO
  M:    Jacob Chen <jacob-chen@iotwrt.com>
  M:    Ezequiel Garcia <ezequiel@collabora.com>
  L:    linux-media@vger.kernel.org
+ L:    linux-rockchip@lists.infradead.org
  S:    Maintained
- F:    Documentation/devicetree/bindings/media/rockchip-rga.txt
+ F:    Documentation/devicetree/bindings/media/rockchip-rga.yaml
  F:    drivers/media/platform/rockchip/rga/
  
+ ROCKCHIP VIDEO DECODER DRIVER
+ M:    Ezequiel Garcia <ezequiel@collabora.com>
+ L:    linux-media@vger.kernel.org
+ L:    linux-rockchip@lists.infradead.org
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/media/rockchip,vdec.yaml
+ F:    drivers/staging/media/rkvdec/
  ROCKER DRIVER
  M:    Jiri Pirko <jiri@resnulli.us>
  L:    netdev@vger.kernel.org
@@@ -14591,12 -14792,19 +14793,19 @@@ S:        Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jes/linux.git rtl8xxxu-devel
  F:    drivers/net/wireless/realtek/rtl8xxxu/
  
+ RTRS TRANSPORT DRIVERS
+ M:    Danil Kipnis <danil.kipnis@cloud.ionos.com>
+ M:    Jack Wang <jinpu.wang@cloud.ionos.com>
+ L:    linux-rdma@vger.kernel.org
+ S:    Maintained
+ F:    drivers/infiniband/ulp/rtrs/
  RXRPC SOCKETS (AF_RXRPC)
  M:    David Howells <dhowells@redhat.com>
  L:    linux-afs@lists.infradead.org
  S:    Supported
  W:    https://www.infradead.org/~dhowells/kafs/
- F:    Documentation/networking/rxrpc.txt
+ F:    Documentation/networking/rxrpc.rst
  F:    include/keys/rxrpc-type.h
  F:    include/net/af_rxrpc.h
  F:    include/trace/events/rxrpc.h
@@@ -14638,6 -14846,7 +14847,7 @@@ S:   Supporte
  W:    http://www.ibm.com/developerworks/linux/linux390/
  F:    block/partitions/ibm.c
  F:    drivers/s390/block/dasd*
+ F:    include/linux/dasd_mod.h
  
  S390 IOMMU (PCI)
  M:    Gerald Schaefer <gerald.schaefer@de.ibm.com>
@@@ -14674,6 -14883,7 +14884,7 @@@ S:   Supporte
  W:    http://www.ibm.com/developerworks/linux/linux390/
  F:    arch/s390/pci/
  F:    drivers/pci/hotplug/s390_pci_hpc.c
+ F:    Documentation/s390/pci.rst
  
  S390 VFIO AP DRIVER
  M:    Tony Krowiak <akrowiak@linux.ibm.com>
@@@ -14733,7 -14943,7 +14944,7 @@@ L:   linux-media@vger.kernel.or
  S:    Odd fixes
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
- F:    Documentation/media/v4l-drivers/saa7134*
+ F:    Documentation/driver-api/media/drivers/saa7134*
  F:    drivers/media/pci/saa7134/
  
  SAA7146 VIDEO4LINUX-2 DRIVER
@@@ -15004,7 -15214,7 +15215,7 @@@ M:   Marcelo Ricardo Leitner <marcelo.lei
  L:    linux-sctp@vger.kernel.org
  S:    Maintained
  W:    http://lksctp.sourceforge.net
- F:    Documentation/networking/sctp.txt
+ F:    Documentation/networking/sctp.rst
  F:    include/linux/sctp.h
  F:    include/net/sctp/
  F:    include/uapi/linux/sctp.h
@@@ -15231,11 -15441,6 +15442,6 @@@ T:  git git://linuxtv.org/media_tree.gi
  F:    drivers/media/i2c/rj54n1cb0c.c
  F:    include/media/i2c/rj54n1cb0c.h
  
- SH_VEU V4L2 MEM2MEM DRIVER
- L:    linux-media@vger.kernel.org
- S:    Orphan
- F:    drivers/media/platform/sh_veu.c
  SH_VOU V4L2 OUTPUT DRIVER
  L:    linux-media@vger.kernel.org
  S:    Orphan
@@@ -15480,6 -15685,15 +15686,15 @@@ M: Nicolas Pitre <nico@fluxnic.net
  S:    Odd Fixes
  F:    drivers/net/ethernet/smsc/smc91x.*
  
+ SECURE MONITOR CALL(SMC) CALLING CONVENTION (SMCCC)
+ M:    Mark Rutland <mark.rutland@arm.com>
+ M:    Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
+ M:    Sudeep Holla <sudeep.holla@arm.com>
+ L:    linux-arm-kernel@lists.infradead.org
+ S:    Maintained
+ F:    drivers/firmware/smccc/
+ F:    include/linux/arm-smccc.h
  SMIA AND SMIA++ IMAGE SENSOR DRIVER
  M:    Sakari Ailus <sakari.ailus@linux.intel.com>
  L:    linux-media@vger.kernel.org
@@@ -15548,7 -15762,7 +15763,7 @@@ SOCIONEXT (SNI) AVE NETWORK DRIVE
  M:    Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
- F:    Documentation/devicetree/bindings/net/socionext,uniphier-ave4.txt
+ F:    Documentation/devicetree/bindings/net/socionext,uniphier-ave4.yaml
  F:    drivers/net/ethernet/socionext/sni_ave.c
  
  SOCIONEXT (SNI) NETSEC NETWORK DRIVER
@@@ -15656,7 -15870,7 +15871,7 @@@ F:   drivers/ssb
  F:    include/linux/ssb/
  
  SONY IMX214 SENSOR DRIVER
- M:    Ricardo Ribalda <ricardo.ribalda@gmail.com>
+ M:    Ricardo Ribalda <ribalda@kernel.org>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
@@@ -15879,7 -16093,7 +16094,7 @@@ SPIDERNET NETWORK DRIVER for CEL
  M:    Ishizaki Kou <kou.ishizaki@toshiba.co.jp>
  L:    netdev@vger.kernel.org
  S:    Supported
- F:    Documentation/networking/device_drivers/toshiba/spider_net.txt
+ F:    Documentation/networking/device_drivers/toshiba/spider_net.rst
  F:    drivers/net/ethernet/toshiba/spider_net*
  
  SPMI SUBSYSTEM
@@@ -15896,7 -16110,7 +16111,7 @@@ M:   Jeremy Kerr <jk@ozlabs.org
  L:    linuxppc-dev@lists.ozlabs.org
  S:    Supported
  W:    http://www.ibm.com/developerworks/power/cell/
- F:    Documentation/filesystems/spufs.txt
+ F:    Documentation/filesystems/spufs/spufs.rst
  F:    arch/powerpc/platforms/cell/spufs/
  
  SQUASHFS FILE SYSTEM
@@@ -15949,6 -16163,13 +16164,13 @@@ L: stable@vger.kernel.or
  S:    Supported
  F:    Documentation/process/stable-kernel-rules.rst
  
+ STAGING - ATOMISP DRIVER
+ M:    Mauro Carvalho Chehab <mchehab@kernel.org>
+ R:    Sakari Ailus <sakari.ailus@linux.intel.com>
+ L:    linux-media@vger.kernel.org
+ S:    Maintained
+ F:    drivers/staging/media/atomisp/
  STAGING - COMEDI
  M:    Ian Abbott <abbotti@mev.co.uk>
  M:    H Hartley Sweeten <hsweeten@visionengravers.com>
@@@ -16244,9 -16465,10 +16466,10 @@@ F: drivers/tty/serial/8250/8250_lpss.
  
  SYNOPSYS DESIGNWARE APB GPIO DRIVER
  M:    Hoan Tran <hoan@os.amperecomputing.com>
+ M:    Serge Semin <fancer.lancer@gmail.com>
  L:    linux-gpio@vger.kernel.org
  S:    Maintained
- F:    Documentation/devicetree/bindings/gpio/snps-dwapb-gpio.txt
+ F:    Documentation/devicetree/bindings/gpio/snps,dw-apb-gpio.yaml
  F:    drivers/gpio/gpio-dwapb.c
  
  SYNOPSYS DESIGNWARE AXI DMAC DRIVER
@@@ -16604,6 -16826,16 +16827,16 @@@ M: Laxman Dewangan <ldewangan@nvidia.co
  S:    Supported
  F:    drivers/spi/spi-tegra*
  
+ TEGRA VIDEO DRIVER
+ M:    Thierry Reding <thierry.reding@gmail.com>
+ M:    Jonathan Hunter <jonathanh@nvidia.com>
+ M:    Sowjanya Komatineni <skomatineni@nvidia.com>
+ L:    linux-media@vger.kernel.org
+ L:    linux-tegra@vger.kernel.org
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt
+ F:    drivers/staging/media/tegra-video/
  TEGRA XUSB PADCTL DRIVER
  M:    JC Kuo <jckuo@nvidia.com>
  S:    Supported
@@@ -16643,7 -16875,7 +16876,7 @@@ S:   Maintaine
  F:    sound/soc/ti/
  
  TEXAS INSTRUMENTS' DAC7612 DAC DRIVER
- M:    Ricardo Ribalda <ricardo@ribalda.com>
+ M:    Ricardo Ribalda <ribalda@kernel.org>
  L:    linux-iio@vger.kernel.org
  S:    Supported
  F:    Documentation/devicetree/bindings/iio/dac/ti,dac7612.txt
@@@ -16976,7 -17208,7 +17209,7 @@@ M:   Samuel Chessman <chessman@tux.org
  L:    tlan-devel@lists.sourceforge.net (subscribers-only)
  S:    Maintained
  W:    http://sourceforge.net/projects/tlan/
- F:    Documentation/networking/device_drivers/ti/tlan.txt
+ F:    Documentation/networking/device_drivers/ti/tlan.rst
  F:    drivers/net/ethernet/ti/tlan.*
  
  TM6000 VIDEO4LINUX DRIVER
@@@ -16985,7 -17217,7 +17218,7 @@@ L:   linux-media@vger.kernel.or
  S:    Odd fixes
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
- F:    Documentation/media/v4l-drivers/tm6000*
+ F:    Documentation/admin-guide/media/tm6000*
  F:    drivers/media/usb/tm6000/
  
  TMIO/SDHI MMC DRIVER
@@@ -17166,7 -17398,7 +17399,7 @@@ TUN/TAP drive
  M:    Maxim Krasnyansky <maxk@qti.qualcomm.com>
  S:    Maintained
  W:    http://vtun.sourceforge.net/tun
- F:    Documentation/networking/tuntap.txt
+ F:    Documentation/networking/tuntap.rst
  F:    arch/um/os-Linux/drivers/
  
  TURBOCHANNEL SUBSYSTEM
@@@ -17596,6 -17828,13 +17829,13 @@@ F: Documentation/driver-api/usb/typec.r
  F:    drivers/usb/typec/
  F:    include/linux/usb/typec.h
  
+ USB TYPEC INTEL PMC MUX DRIVER
+ M:    Heikki Krogerus <heikki.krogerus@linux.intel.com>
+ L:    linux-usb@vger.kernel.org
+ S:    Maintained
+ F:    Documentation/firmware-guide/acpi/intel-pmc-mux.rst
+ F:    drivers/usb/typec/mux/intel_pmc_mux.c
  USB TYPEC PI3USB30532 MUX DRIVER
  M:    Hans de Goede <hdegoede@redhat.com>
  L:    linux-usb@vger.kernel.org
@@@ -17666,7 -17905,7 +17906,7 @@@ L:   linux-media@vger.kernel.or
  S:    Maintained
  W:    http://royale.zerezo.com/zr364xx/
  T:    git git://linuxtv.org/media_tree.git
- F:    Documentation/media/v4l-drivers/zr364xx*
+ F:    Documentation/admin-guide/media/zr364xx*
  F:    drivers/media/usb/zr364xx/
  
  USER-MODE LINUX (UML)
@@@ -17815,7 -18054,7 +18055,7 @@@ L:   linux-media@vger.kernel.or
  S:    Maintained
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
- F:    drivers/media/platform/vicodec/*
+ F:    drivers/media/test-drivers/vicodec/*
  
  VIDEO I2C POLLING DRIVER
  M:    Matt Ranostay <matt.ranostay@konsulko.com>
@@@ -17846,7 -18085,7 +18086,7 @@@ L:   linux-media@vger.kernel.or
  S:    Maintained
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
- F:    drivers/media/platform/vimc/*
+ F:    drivers/media/test-drivers/vimc/*
  
  VIRT LIB
  M:    Alex Williamson <alex.williamson@redhat.com>
@@@ -17910,9 -18149,18 +18150,18 @@@ F: drivers/virtio
  F:    include/linux/vdpa.h
  F:    include/linux/virtio*.h
  F:    include/uapi/linux/virtio_*.h
- F:    mm/balloon_compaction.c
  F:    tools/virtio/
  
+ VIRTIO BALLOON
+ M:    "Michael S. Tsirkin" <mst@redhat.com>
+ M:    David Hildenbrand <david@redhat.com>
+ L:    virtualization@lists.linux-foundation.org
+ S:    Maintained
+ F:    drivers/virtio/virtio_balloon.c
+ F:    include/uapi/linux/virtio_balloon.h
+ F:    include/linux/balloon_compaction.h
+ F:    mm/balloon_compaction.c
  VIRTIO CRYPTO DRIVER
  M:    Gonglei <arei.gonglei@huawei.com>
  L:    virtualization@lists.linux-foundation.org
@@@ -17978,6 -18226,13 +18227,13 @@@ S: Maintaine
  F:    drivers/iommu/virtio-iommu.c
  F:    include/uapi/linux/virtio_iommu.h
  
+ VIRTIO MEM DRIVER
+ M:    David Hildenbrand <david@redhat.com>
+ L:    virtualization@lists.linux-foundation.org
+ S:    Maintained
+ F:    drivers/virtio/virtio_mem.c
+ F:    include/uapi/linux/virtio_mem.h
  VIRTUAL BOX GUEST DEVICE DRIVER
  M:    Hans de Goede <hdegoede@redhat.com>
  M:    Arnd Bergmann <arnd@arndb.de>
@@@ -18013,7 -18268,7 +18269,7 @@@ L:   linux-media@vger.kernel.or
  S:    Maintained
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
- F:    drivers/media/platform/vivid/*
+ F:    drivers/media/test-drivers/vivid/*
  
  VLYNQ BUS
  M:    Florian Fainelli <f.fainelli@gmail.com>
@@@ -18042,7 -18297,7 +18298,7 @@@ S:   Maintaine
  F:    drivers/misc/vmw_balloon.c
  
  VMWARE HYPERVISOR INTERFACE
- M:    Thomas Hellstrom <thellstrom@vmware.com>
+ M:    Deep Shah <sdeep@vmware.com>
  M:    "VMware, Inc." <pv-drivers@vmware.com>
  L:    virtualization@lists.linux-foundation.org
  S:    Supported
@@@ -18111,7 -18366,7 +18367,7 @@@ M:   David Ahern <dsahern@kernel.org
  M:    Shrijeet Mukherjee <shrijeet@gmail.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
- F:    Documentation/networking/vrf.txt
+ F:    Documentation/networking/vrf.rst
  F:    drivers/net/vrf.c
  
  VSPRINTF
@@@ -18275,11 -18530,11 +18531,11 @@@ L:        patches@opensource.cirrus.co
  S:    Supported
  W:    https://github.com/CirrusLogic/linux-drivers/wiki
  T:    git https://github.com/CirrusLogic/linux-drivers.git
- F:    Documentation/devicetree/bindings/extcon/extcon-arizona.txt
- F:    Documentation/devicetree/bindings/mfd/arizona.txt
+ F:    Documentation/devicetree/bindings/extcon/wlf,arizona.yaml
+ F:    Documentation/devicetree/bindings/mfd/wlf,arizona.yaml
  F:    Documentation/devicetree/bindings/mfd/wm831x.txt
- F:    Documentation/devicetree/bindings/regulator/arizona-regulator.txt
- F:    Documentation/devicetree/bindings/sound/wlf,arizona.txt
+ F:    Documentation/devicetree/bindings/regulator/wlf,arizona.yaml
+ F:    Documentation/devicetree/bindings/sound/wlf,arizona.yaml
  F:    Documentation/hwmon/wm83??.rst
  F:    arch/arm/mach-s3c64xx/mach-crag6410*
  F:    drivers/clk/clk-wm83*.c
@@@ -18456,8 -18711,12 +18712,12 @@@ R: Jonathan Lemon <jonathan.lemon@gmail
  L:    netdev@vger.kernel.org
  L:    bpf@vger.kernel.org
  S:    Maintained
- F:    kernel/bpf/xskmap.c
+ F:    include/net/xdp_sock*
+ F:    include/net/xsk_buff_pool.h
+ F:    include/uapi/linux/if_xdp.h
  F:    net/xdp/
+ F:    samples/bpf/xdpsock*
+ F:    tools/lib/bpf/xsk*
  
  XEN BLOCK SUBSYSTEM
  M:    Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
@@@ -18547,8 -18806,8 +18807,8 @@@ W:   http://xfs.org
  T:    git git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git
  F:    Documentation/ABI/testing/sysfs-fs-xfs
  F:    Documentation/admin-guide/xfs.rst
- F:    Documentation/filesystems/xfs-delayed-logging-design.txt
- F:    Documentation/filesystems/xfs-self-describing-metadata.txt
+ F:    Documentation/filesystems/xfs-delayed-logging-design.rst
+ F:    Documentation/filesystems/xfs-self-describing-metadata.rst
  F:    fs/xfs/
  F:    include/uapi/linux/dqblk_xfs.h
  F:    include/uapi/linux/fsmap.h
@@@ -18649,7 -18908,7 +18909,7 @@@ L:   linux-hams@vger.kernel.or
  S:    Maintained
  W:    http://yaina.de/jreuter/
  W:    http://www.qsl.net/dl1bke/
- F:    Documentation/networking/z8530drv.txt
+ F:    Documentation/networking/z8530drv.rst
  F:    drivers/net/hamradio/*scc.c
  F:    drivers/net/hamradio/z8530.h
  
@@@ -785,7 -785,7 +785,7 @@@ void snd_hda_codec_cleanup_for_unbind(s
        snd_array_free(&codec->spdif_out);
        snd_array_free(&codec->verbs);
        codec->preset = NULL;
-       codec->slave_dig_outs = NULL;
+       codec->follower_dig_outs = NULL;
        codec->spdif_status_reset = 0;
        snd_array_free(&codec->mixers);
        snd_array_free(&codec->nids);
@@@ -1806,11 -1806,11 +1806,11 @@@ int snd_hda_codec_reset(struct hda_code
        return 0;
  }
  
- typedef int (*map_slave_func_t)(struct hda_codec *, void *, struct snd_kcontrol *);
+ typedef int (*map_follower_func_t)(struct hda_codec *, void *, struct snd_kcontrol *);
  
- /* apply the function to all matching slave ctls in the mixer list */
- static int map_slaves(struct hda_codec *codec, const char * const *slaves,
-                     const char *suffix, map_slave_func_t func, void *data) 
+ /* apply the function to all matching follower ctls in the mixer list */
+ static int map_followers(struct hda_codec *codec, const char * const *followers,
+                        const char *suffix, map_follower_func_t func, void *data)
  {
        struct hda_nid_item *items;
        const char * const *s;
                struct snd_kcontrol *sctl = items[i].kctl;
                if (!sctl || sctl->id.iface != SNDRV_CTL_ELEM_IFACE_MIXER)
                        continue;
-               for (s = slaves; *s; s++) {
+               for (s = followers; *s; s++) {
                        char tmpname[sizeof(sctl->id.name)];
                        const char *name = *s;
                        if (suffix) {
        return 0;
  }
  
- static int check_slave_present(struct hda_codec *codec,
-                              void *data, struct snd_kcontrol *sctl)
+ static int check_follower_present(struct hda_codec *codec,
+                                 void *data, struct snd_kcontrol *sctl)
  {
        return 1;
  }
@@@ -1860,17 -1860,17 +1860,17 @@@ static int put_kctl_with_value(struct s
        return 0;
  }
  
- struct slave_init_arg {
+ struct follower_init_arg {
        struct hda_codec *codec;
        int step;
  };
  
- /* initialize the slave volume with 0dB via snd_ctl_apply_vmaster_slaves() */
- static int init_slave_0dB(struct snd_kcontrol *slave,
-                         struct snd_kcontrol *kctl,
-                         void *_arg)
+ /* initialize the follower volume with 0dB via snd_ctl_apply_vmaster_followers() */
+ static int init_follower_0dB(struct snd_kcontrol *follower,
+                            struct snd_kcontrol *kctl,
+                            void *_arg)
  {
-       struct slave_init_arg *arg = _arg;
+       struct follower_init_arg *arg = _arg;
        int _tlv[4];
        const int *tlv = NULL;
        int step;
        if (kctl->vd[0].access & SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK) {
                if (kctl->tlv.c != snd_hda_mixer_amp_tlv) {
                        codec_err(arg->codec,
-                                 "Unexpected TLV callback for slave %s:%d\n",
+                                 "Unexpected TLV callback for follower %s:%d\n",
                                  kctl->id.name, kctl->id.index);
                        return 0; /* ignore */
                }
                return 0;
        if (arg->step && arg->step != step) {
                codec_err(arg->codec,
-                         "Mismatching dB step for vmaster slave (%d!=%d)\n",
+                         "Mismatching dB step for vmaster follower (%d!=%d)\n",
                          arg->step, step);
                return 0;
        }
        arg->step = step;
        val = -tlv[SNDRV_CTL_TLVO_DB_SCALE_MIN] / step;
        if (val > 0) {
-               put_kctl_with_value(slave, val);
+               put_kctl_with_value(follower, val);
                return val;
        }
  
        return 0;
  }
  
- /* unmute the slave via snd_ctl_apply_vmaster_slaves() */
- static int init_slave_unmute(struct snd_kcontrol *slave,
-                            struct snd_kcontrol *kctl,
-                            void *_arg)
+ /* unmute the follower via snd_ctl_apply_vmaster_followers() */
+ static int init_follower_unmute(struct snd_kcontrol *follower,
+                               struct snd_kcontrol *kctl,
+                               void *_arg)
  {
-       return put_kctl_with_value(slave, 1);
+       return put_kctl_with_value(follower, 1);
  }
  
- static int add_slave(struct hda_codec *codec,
-                    void *data, struct snd_kcontrol *slave)
+ static int add_follower(struct hda_codec *codec,
+                       void *data, struct snd_kcontrol *follower)
  {
-       return snd_ctl_add_slave(data, slave);
+       return snd_ctl_add_follower(data, follower);
  }
  
  /**
-  * __snd_hda_add_vmaster - create a virtual master control and add slaves
+  * __snd_hda_add_vmaster - create a virtual master control and add followers
   * @codec: HD-audio codec
   * @name: vmaster control name
   * @tlv: TLV data (optional)
-  * @slaves: slave control names (optional)
-  * @suffix: suffix string to each slave name (optional)
-  * @init_slave_vol: initialize slaves to unmute/0dB
+  * @followers: follower control names (optional)
+  * @suffix: suffix string to each follower name (optional)
+  * @init_follower_vol: initialize followers to unmute/0dB
   * @ctl_ret: store the vmaster kcontrol in return
   *
   * Create a virtual master control with the given name.  The TLV data
   * must be either NULL or a valid data.
   *
-  * @slaves is a NULL-terminated array of strings, each of which is a
-  * slave control name.  All controls with these names are assigned to
+  * @followers is a NULL-terminated array of strings, each of which is a
+  * follower control name.  All controls with these names are assigned to
   * the new virtual master control.
   *
   * This function returns zero if successful or a negative error code.
   */
  int __snd_hda_add_vmaster(struct hda_codec *codec, char *name,
-                       unsigned int *tlv, const char * const *slaves,
-                         const char *suffix, bool init_slave_vol,
+                         unsigned int *tlv, const char * const *followers,
+                         const char *suffix, bool init_follower_vol,
                          struct snd_kcontrol **ctl_ret)
  {
        struct snd_kcontrol *kctl;
        if (ctl_ret)
                *ctl_ret = NULL;
  
-       err = map_slaves(codec, slaves, suffix, check_slave_present, NULL);
+       err = map_followers(codec, followers, suffix, check_follower_present, NULL);
        if (err != 1) {
-               codec_dbg(codec, "No slave found for %s\n", name);
+               codec_dbg(codec, "No follower found for %s\n", name);
                return 0;
        }
        kctl = snd_ctl_make_virtual_master(name, tlv);
        if (err < 0)
                return err;
  
-       err = map_slaves(codec, slaves, suffix, add_slave, kctl);
+       err = map_followers(codec, followers, suffix, add_follower, kctl);
        if (err < 0)
                return err;
  
        /* init with master mute & zero volume */
        put_kctl_with_value(kctl, 0);
-       if (init_slave_vol) {
-               struct slave_init_arg arg = {
+       if (init_follower_vol) {
+               struct follower_init_arg arg = {
                        .codec = codec,
                        .step = 0,
                };
-               snd_ctl_apply_vmaster_slaves(kctl,
-                                            tlv ? init_slave_0dB : init_slave_unmute,
-                                            &arg);
+               snd_ctl_apply_vmaster_followers(kctl,
+                                               tlv ? init_follower_0dB : init_follower_unmute,
+                                               &arg);
        }
  
        if (ctl_ret)
@@@ -2284,7 -2284,7 +2284,7 @@@ static unsigned int convert_to_spdif_st
        return sbits;
  }
  
- /* set digital convert verbs both for the given NID and its slaves */
+ /* set digital convert verbs both for the given NID and its followers */
  static void set_dig_out(struct hda_codec *codec, hda_nid_t nid,
                        int mask, int val)
  {
  
        snd_hdac_regmap_update(&codec->core, nid, AC_VERB_SET_DIGI_CONVERT_1,
                               mask, val);
-       d = codec->slave_dig_outs;
+       d = codec->follower_dig_outs;
        if (!d)
                return;
        for (; *d; d++)
@@@ -2935,10 -2935,6 +2935,10 @@@ static int hda_codec_runtime_suspend(st
        struct hda_codec *codec = dev_to_hda_codec(dev);
        unsigned int state;
  
 +      /* Nothing to do if card registration fails and the component driver never probes */
 +      if (!codec->card)
 +              return 0;
 +
        cancel_delayed_work_sync(&codec->jackpoll_work);
        state = hda_call_codec_suspend(codec);
        if (codec->link_down_at_suspend ||
@@@ -2953,10 -2949,6 +2953,10 @@@ static int hda_codec_runtime_resume(str
  {
        struct hda_codec *codec = dev_to_hda_codec(dev);
  
 +      /* Nothing to do if card registration fails and the component driver never probes */
 +      if (!codec->card)
 +              return 0;
 +
        codec_display_power(codec, true);
        snd_hdac_codec_link_up(&codec->core);
        hda_call_codec_resume(codec);
@@@ -3588,9 -3580,9 +3588,9 @@@ static void setup_dig_out_stream(struc
                                    spdif->ctls & ~AC_DIG1_ENABLE & 0xff,
                                    -1);
        snd_hda_codec_setup_stream(codec, nid, stream_tag, 0, format);
-       if (codec->slave_dig_outs) {
+       if (codec->follower_dig_outs) {
                const hda_nid_t *d;
-               for (d = codec->slave_dig_outs; *d; d++)
+               for (d = codec->follower_dig_outs; *d; d++)
                        snd_hda_codec_setup_stream(codec, *d, stream_tag, 0,
                                                   format);
        }
  static void cleanup_dig_out_stream(struct hda_codec *codec, hda_nid_t nid)
  {
        snd_hda_codec_cleanup_stream(codec, nid);
-       if (codec->slave_dig_outs) {
+       if (codec->follower_dig_outs) {
                const hda_nid_t *d;
-               for (d = codec->slave_dig_outs; *d; d++)
+               for (d = codec->follower_dig_outs; *d; d++)
                        snd_hda_codec_cleanup_stream(codec, *d);
        }
  }
@@@ -3687,7 -3679,7 +3687,7 @@@ EXPORT_SYMBOL_GPL(snd_hda_multi_out_dig
   * @hinfo: PCM information to assign
   *
   * Open analog outputs and set up the hw-constraints.
-  * If the digital outputs can be opened as slave, open the digital
+  * If the digital outputs can be opened as follower, open the digital
   * outputs, too.
   */
  int snd_hda_multi_out_analog_open(struct hda_codec *codec,
@@@ -33,7 -33,7 +33,7 @@@
  #define AZX_DCAPS_POSFIX_LPIB (1 << 16)       /* Use LPIB as default */
  #define AZX_DCAPS_AMD_WORKAROUND (1 << 17)    /* AMD-specific workaround */
  #define AZX_DCAPS_NO_64BIT    (1 << 18)       /* No 64bit address */
#define AZX_DCAPS_SYNC_WRITE  (1 << 19)       /* sync each cmd write */
/* 19 unused */
  #define AZX_DCAPS_OLD_SSYNC   (1 << 20)       /* Old SSYNC reg for ICH */
  #define AZX_DCAPS_NO_ALIGN_BUFSIZE (1 << 21)  /* no buffer size alignment */
  /* 22 unused */
@@@ -41,7 -41,7 +41,7 @@@
  /* 24 unused */
  #define AZX_DCAPS_COUNT_LPIB_DELAY  (1 << 25) /* Take LPIB as delay */
  #define AZX_DCAPS_PM_RUNTIME  (1 << 26)       /* runtime PM support */
 -/* 27 unused */
 +#define AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP (1 << 27) /* Workaround for spurious wakeups after suspend */
  #define AZX_DCAPS_CORBRP_SELF_CLEAR (1 << 28) /* CORBRP clears itself after reset */
  #define AZX_DCAPS_NO_MSI64      (1 << 29)     /* Stick to 32-bit MSIs */
  #define AZX_DCAPS_SEPARATE_STREAM_TAG (1 << 30) /* capture and playback use separate stream tag */
  #include <linux/time.h>
  #include <linux/completion.h>
  #include <linux/acpi.h>
+ #include <linux/pgtable.h>
  
  #ifdef CONFIG_X86
  /* for snoop control */
- #include <asm/pgtable.h>
  #include <asm/set_memory.h>
  #include <asm/cpufeature.h>
  #endif
@@@ -180,7 -180,7 +180,7 @@@ MODULE_PARM_DESC(power_save, "Automati
  
  static bool pm_blacklist = true;
  module_param(pm_blacklist, bool, 0644);
- MODULE_PARM_DESC(pm_blacklist, "Enable power-management blacklist");
+ MODULE_PARM_DESC(pm_blacklist, "Enable power-management denylist");
  
  /* reset the HD-audio controller in power save mode.
   * this may give more power-saving, but will take longer time to
@@@ -283,13 -283,12 +283,12 @@@ enum 
  
  /* quirks for old Intel chipsets */
  #define AZX_DCAPS_INTEL_ICH \
-       (AZX_DCAPS_OLD_SSYNC | AZX_DCAPS_NO_ALIGN_BUFSIZE |\
-        AZX_DCAPS_SYNC_WRITE)
+       (AZX_DCAPS_OLD_SSYNC | AZX_DCAPS_NO_ALIGN_BUFSIZE)
  
  /* quirks for Intel PCH */
  #define AZX_DCAPS_INTEL_PCH_BASE \
        (AZX_DCAPS_NO_ALIGN_BUFSIZE | AZX_DCAPS_COUNT_LPIB_DELAY |\
-        AZX_DCAPS_SNOOP_TYPE(SCH) | AZX_DCAPS_SYNC_WRITE)
+        AZX_DCAPS_SNOOP_TYPE(SCH))
  
  /* PCH up to IVB; no runtime PM; bind with i915 gfx */
  #define AZX_DCAPS_INTEL_PCH_NOPM \
  /* PCH for HSW/BDW; with runtime PM */
  /* no i915 binding for this as HSW/BDW has another controller for HDMI */
  #define AZX_DCAPS_INTEL_PCH \
 -      (AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_PM_RUNTIME)
 +      (AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_PM_RUNTIME |\
 +       AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP)
  
  /* HSW HDMI */
  #define AZX_DCAPS_INTEL_HASWELL \
        (/*AZX_DCAPS_ALIGN_BUFSIZE |*/ AZX_DCAPS_COUNT_LPIB_DELAY |\
         AZX_DCAPS_PM_RUNTIME | AZX_DCAPS_I915_COMPONENT |\
-        AZX_DCAPS_SNOOP_TYPE(SCH) | AZX_DCAPS_SYNC_WRITE)
+        AZX_DCAPS_SNOOP_TYPE(SCH))
  
  /* Broadwell HDMI can't use position buffer reliably, force to use LPIB */
  #define AZX_DCAPS_INTEL_BROADWELL \
        (/*AZX_DCAPS_ALIGN_BUFSIZE |*/ AZX_DCAPS_POSFIX_LPIB |\
         AZX_DCAPS_PM_RUNTIME | AZX_DCAPS_I915_COMPONENT |\
-        AZX_DCAPS_SNOOP_TYPE(SCH) | AZX_DCAPS_SYNC_WRITE)
+        AZX_DCAPS_SNOOP_TYPE(SCH))
  
  #define AZX_DCAPS_INTEL_BAYTRAIL \
        (AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_I915_COMPONENT)
  
  #define AZX_DCAPS_INTEL_SKYLAKE \
        (AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_PM_RUNTIME |\
-        AZX_DCAPS_SYNC_WRITE |\
         AZX_DCAPS_SEPARATE_STREAM_TAG | AZX_DCAPS_I915_COMPONENT)
  
  #define AZX_DCAPS_INTEL_BROXTON               AZX_DCAPS_INTEL_SKYLAKE
  
  /* quirks for ATI SB / AMD Hudson */
  #define AZX_DCAPS_PRESET_ATI_SB \
-       (AZX_DCAPS_NO_TCSEL | AZX_DCAPS_SYNC_WRITE | AZX_DCAPS_POSFIX_LPIB |\
+       (AZX_DCAPS_NO_TCSEL | AZX_DCAPS_POSFIX_LPIB |\
         AZX_DCAPS_SNOOP_TYPE(ATI))
  
  /* quirks for ATI/AMD HDMI */
  #define AZX_DCAPS_PRESET_ATI_HDMI \
-       (AZX_DCAPS_NO_TCSEL | AZX_DCAPS_SYNC_WRITE | AZX_DCAPS_POSFIX_LPIB|\
+       (AZX_DCAPS_NO_TCSEL | AZX_DCAPS_POSFIX_LPIB|\
         AZX_DCAPS_NO_MSI64)
  
  /* quirks for ATI HDMI with snoop off */
  
  /* quirks for AMD SB */
  #define AZX_DCAPS_PRESET_AMD_SB \
-       (AZX_DCAPS_NO_TCSEL | AZX_DCAPS_SYNC_WRITE | AZX_DCAPS_AMD_WORKAROUND |\
+       (AZX_DCAPS_NO_TCSEL | AZX_DCAPS_AMD_WORKAROUND |\
         AZX_DCAPS_SNOOP_TYPE(ATI) | AZX_DCAPS_PM_RUNTIME)
  
  /* quirks for Nvidia */
@@@ -1029,14 -1026,7 +1027,14 @@@ static int azx_suspend(struct device *d
        chip = card->private_data;
        bus = azx_bus(chip);
        snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
 -      pm_runtime_force_suspend(dev);
 +      /* An ugly workaround: direct call of __azx_runtime_suspend() and
 +       * __azx_runtime_resume() for old Intel platforms that suffer from
 +       * spurious wakeups after S3 suspend
 +       */
 +      if (chip->driver_caps & AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP)
 +              __azx_runtime_suspend(chip);
 +      else
 +              pm_runtime_force_suspend(dev);
        if (bus->irq >= 0) {
                free_irq(bus->irq, chip);
                bus->irq = -1;
@@@ -1065,10 -1055,7 +1063,10 @@@ static int azx_resume(struct device *de
        if (azx_acquire_irq(chip, 1) < 0)
                return -EIO;
  
 -      pm_runtime_force_resume(dev);
 +      if (chip->driver_caps & AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP)
 +              __azx_runtime_resume(chip, false);
 +      else
 +              pm_runtime_force_resume(dev);
        snd_power_change_state(card, SNDRV_CTL_POWER_D0);
  
        trace_azx_resume(chip);
@@@ -1519,7 -1506,7 +1517,7 @@@ static bool check_hdmi_disabled(struct 
  #endif /* SUPPORT_VGA_SWITCHEROO */
  
  /*
-  * white/black-listing for position_fix
+  * allow/deny-listing for position_fix
   */
  static const struct snd_pci_quirk position_fix_list[] = {
        SND_PCI_QUIRK(0x1028, 0x01cc, "Dell D820", POS_FIX_LPIB),
@@@ -1612,7 -1599,7 +1610,7 @@@ static void assign_position_fix(struct 
  }
  
  /*
-  * black-lists for probe_mask
+  * deny-lists for probe_mask
   */
  static const struct snd_pci_quirk probe_mask_list[] = {
        /* Thinkpad often breaks the controller communication when accessing
@@@ -1660,9 -1647,9 +1658,9 @@@ static void check_probe_mask(struct az
  }
  
  /*
-  * white/black-list for enable_msi
+  * allow/deny-list for enable_msi
   */
- static const struct snd_pci_quirk msi_black_list[] = {
+ static const struct snd_pci_quirk msi_deny_list[] = {
        SND_PCI_QUIRK(0x103c, 0x2191, "HP", 0), /* AMD Hudson */
        SND_PCI_QUIRK(0x103c, 0x2192, "HP", 0), /* AMD Hudson */
        SND_PCI_QUIRK(0x103c, 0x21f7, "HP", 0), /* AMD Hudson */
@@@ -1685,7 -1672,7 +1683,7 @@@ static void check_msi(struct azx *chip
                return;
        }
        chip->msi = 1;  /* enable MSI as default */
-       q = snd_pci_quirk_lookup(chip->pci, msi_black_list);
+       q = snd_pci_quirk_lookup(chip->pci, msi_deny_list);
        if (q) {
                dev_info(chip->card->dev,
                         "msi for device %04x:%04x set to %d\n",
@@@ -2085,11 -2072,11 +2083,11 @@@ static void pcm_mmap_prepare(struct snd
  #endif
  }
  
- /* Blacklist for skipping the whole probe:
+ /* Denylist for skipping the whole probe:
   * some HD-audio PCI entries are exposed without any codecs, and such devices
   * should be ignored from the beginning.
   */
- static const struct pci_device_id driver_blacklist[] = {
+ static const struct pci_device_id driver_denylist[] = {
        { PCI_DEVICE_SUB(0x1022, 0x1487, 0x1043, 0x874f) }, /* ASUS ROG Zenith II / Strix */
        { PCI_DEVICE_SUB(0x1022, 0x1487, 0x1462, 0xcb59) }, /* MSI TRX40 Creator */
        { PCI_DEVICE_SUB(0x1022, 0x1487, 0x1462, 0xcb60) }, /* MSI TRX40 */
@@@ -2112,8 -2099,8 +2110,8 @@@ static int azx_probe(struct pci_dev *pc
        bool schedule_probe;
        int err;
  
-       if (pci_match_id(driver_blacklist, pci)) {
-               dev_info(&pci->dev, "Skipping the blacklisted device\n");
+       if (pci_match_id(driver_denylist, pci)) {
+               dev_info(&pci->dev, "Skipping the device on the denylist\n");
                return -ENODEV;
        }
  
@@@ -2203,7 -2190,7 +2201,7 @@@ out_free
   * So we keep a list of devices where we disable powersaving as its known
   * to causes problems on these devices.
   */
- static const struct snd_pci_quirk power_save_blacklist[] = {
+ static const struct snd_pci_quirk power_save_denylist[] = {
        /* https://bugzilla.redhat.com/show_bug.cgi?id=1525104 */
        SND_PCI_QUIRK(0x1849, 0xc892, "Asrock B85M-ITX", 0),
        /* https://bugzilla.redhat.com/show_bug.cgi?id=1525104 */
@@@ -2249,9 -2236,9 +2247,9 @@@ static void set_default_power_save(stru
        if (pm_blacklist) {
                const struct snd_pci_quirk *q;
  
-               q = snd_pci_quirk_lookup(chip->pci, power_save_blacklist);
+               q = snd_pci_quirk_lookup(chip->pci, power_save_denylist);
                if (q && val) {
-                       dev_info(chip->card->dev, "device %04x:%04x is on the power_save blacklist, forcing power_save to 0\n",
+                       dev_info(chip->card->dev, "device %04x:%04x is on the power_save denylist, forcing power_save to 0\n",
                                 q->subvendor, q->subdevice);
                        val = 0;
                }
@@@ -2481,9 -2468,6 +2479,9 @@@ static const struct pci_device_id azx_i
        /* Icelake */
        { PCI_DEVICE(0x8086, 0x34c8),
          .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE},
 +      /* Icelake-H */
 +      { PCI_DEVICE(0x8086, 0x3dc8),
 +        .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE},
        /* Jasperlake */
        { PCI_DEVICE(0x8086, 0x38c8),
          .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE},
        /* Tigerlake */
        { PCI_DEVICE(0x8086, 0xa0c8),
          .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE},
 +      /* Tigerlake-H */
 +      { PCI_DEVICE(0x8086, 0x43c8),
 +        .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE},
        /* Elkhart Lake */
        { PCI_DEVICE(0x8086, 0x4b55),
          .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE},
 +      { PCI_DEVICE(0x8086, 0x4b58),
 +        .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE},
        /* Broxton-P(Apollolake) */
        { PCI_DEVICE(0x8086, 0x5a98),
          .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_BROXTON },
          .driver_data = AZX_DRIVER_GENERIC | AZX_DCAPS_PRESET_ATI_HDMI },
        /* Zhaoxin */
        { PCI_DEVICE(0x1d17, 0x3288), .driver_data = AZX_DRIVER_ZHAOXIN },
+       /* Loongson */
+       { PCI_DEVICE(0x0014, 0x7a07), .driver_data = AZX_DRIVER_GENERIC },
        { 0, }
  };
  MODULE_DEVICE_TABLE(pci, azx_ids);
@@@ -42,6 -42,11 +42,11 @@@ static bool enable_acomp = true
  module_param(enable_acomp, bool, 0444);
  MODULE_PARM_DESC(enable_acomp, "Enable audio component binding (default=yes)");
  
+ static bool enable_silent_stream =
+ IS_ENABLED(CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM);
+ module_param(enable_silent_stream, bool, 0644);
+ MODULE_PARM_DESC(enable_silent_stream, "Enable Silent Stream for HDMI devices");
  struct hdmi_spec_per_cvt {
        hda_nid_t cvt_nid;
        int assigned;
@@@ -167,6 -172,7 +172,7 @@@ struct hdmi_spec 
        hda_nid_t vendor_nid;
        const int *port_map;
        int port_num;
+       bool send_silent_stream; /* Flag to enable silent stream feature */
  };
  
  #ifdef CONFIG_SND_HDA_COMPONENT
@@@ -259,7 -265,7 +265,7 @@@ static int hinfo_to_pcm_index(struct hd
                if (get_pcm_rec(spec, pcm_idx)->stream == hinfo)
                        return pcm_idx;
  
 -      codec_warn(codec, "HDMI: hinfo %p not registered\n", hinfo);
 +      codec_warn(codec, "HDMI: hinfo %p not tied to a PCM\n", hinfo);
        return -EINVAL;
  }
  
@@@ -277,8 -283,7 +283,8 @@@ static int hinfo_to_pin_index(struct hd
                        return pin_idx;
        }
  
 -      codec_dbg(codec, "HDMI: hinfo %p not registered\n", hinfo);
 +      codec_dbg(codec, "HDMI: hinfo %p (pcm %d) not registered\n", hinfo,
 +                hinfo_to_pcm_index(codec, hinfo));
        return -EINVAL;
  }
  
@@@ -1635,21 -1640,72 +1641,72 @@@ static void hdmi_present_sense_via_verb
        snd_hda_power_down_pm(codec);
  }
  
+ static void silent_stream_enable(struct hda_codec *codec,
+                               struct hdmi_spec_per_pin *per_pin)
+ {
+       unsigned int newval, oldval;
+       codec_dbg(codec, "hdmi: enabling silent stream for NID %d\n",
+                       per_pin->pin_nid);
+       mutex_lock(&per_pin->lock);
+       if (!per_pin->channels)
+               per_pin->channels = 2;
+       oldval = snd_hda_codec_read(codec, per_pin->pin_nid, 0,
+                       AC_VERB_GET_CONV, 0);
+       newval = (oldval & 0xF0) | 0xF;
+       snd_hda_codec_write(codec, per_pin->pin_nid, 0,
+                       AC_VERB_SET_CHANNEL_STREAMID, newval);
+       hdmi_setup_audio_infoframe(codec, per_pin, per_pin->non_pcm);
+       mutex_unlock(&per_pin->lock);
+ }
  /* update ELD and jack state via audio component */
  static void sync_eld_via_acomp(struct hda_codec *codec,
                               struct hdmi_spec_per_pin *per_pin)
  {
        struct hdmi_spec *spec = codec->spec;
        struct hdmi_eld *eld = &spec->temp_eld;
+       bool monitor_prev, monitor_next;
  
        mutex_lock(&per_pin->lock);
        eld->monitor_present = false;
+       monitor_prev = per_pin->sink_eld.monitor_present;
        eld->eld_size = snd_hdac_acomp_get_eld(&codec->core, per_pin->pin_nid,
                                      per_pin->dev_id, &eld->monitor_present,
                                      eld->eld_buffer, ELD_MAX_SIZE);
        eld->eld_valid = (eld->eld_size > 0);
        update_eld(codec, per_pin, eld, 0);
+       monitor_next = per_pin->sink_eld.monitor_present;
        mutex_unlock(&per_pin->lock);
+       /*
+        * Power-up will call hdmi_present_sense, so the PM calls
+        * have to be done without mutex held.
+        */
+       if (spec->send_silent_stream) {
+               int pm_ret;
+               if (!monitor_prev && monitor_next) {
+                       pm_ret = snd_hda_power_up_pm(codec);
+                       if (pm_ret < 0)
+                               codec_err(codec,
+                               "Monitor plugged-in, Failed to power up codec ret=[%d]\n",
+                               pm_ret);
+                       silent_stream_enable(codec, per_pin);
+               } else if (monitor_prev && !monitor_next) {
+                       pm_ret = snd_hda_power_down_pm(codec);
+                       if (pm_ret < 0)
+                               codec_err(codec,
+                               "Monitor plugged-out, Failed to power down codec ret=[%d]\n",
+                               pm_ret);
+               }
+       }
  }
  
  static void hdmi_present_sense(struct hdmi_spec_per_pin *per_pin, int repoll)
@@@ -1805,43 -1861,33 +1862,43 @@@ static int hdmi_add_cvt(struct hda_code
  
  static int hdmi_parse_codec(struct hda_codec *codec)
  {
 -      hda_nid_t nid;
 +      hda_nid_t start_nid;
 +      unsigned int caps;
        int i, nodes;
  
 -      nodes = snd_hda_get_sub_nodes(codec, codec->core.afg, &nid);
 -      if (!nid || nodes < 0) {
 +      nodes = snd_hda_get_sub_nodes(codec, codec->core.afg, &start_nid);
 +      if (!start_nid || nodes < 0) {
                codec_warn(codec, "HDMI: failed to get afg sub nodes\n");
                return -EINVAL;
        }
  
 -      for (i = 0; i < nodes; i++, nid++) {
 -              unsigned int caps;
 -              unsigned int type;
 +      /*
 +       * hdmi_add_pin() assumes total amount of converters to
 +       * be known, so first discover all converters
 +       */
 +      for (i = 0; i < nodes; i++) {
 +              hda_nid_t nid = start_nid + i;
  
                caps = get_wcaps(codec, nid);
 -              type = get_wcaps_type(caps);
  
                if (!(caps & AC_WCAP_DIGITAL))
                        continue;
  
 -              switch (type) {
 -              case AC_WID_AUD_OUT:
 +              if (get_wcaps_type(caps) == AC_WID_AUD_OUT)
                        hdmi_add_cvt(codec, nid);
 -                      break;
 -              case AC_WID_PIN:
 +      }
 +
 +      /* discover audio pins */
 +      for (i = 0; i < nodes; i++) {
 +              hda_nid_t nid = start_nid + i;
 +
 +              caps = get_wcaps(codec, nid);
 +
 +              if (!(caps & AC_WCAP_DIGITAL))
 +                      continue;
 +
 +              if (get_wcaps_type(caps) == AC_WID_PIN)
                        hdmi_add_pin(codec, nid);
 -                      break;
 -              }
        }
  
        return 0;
@@@ -2440,7 -2486,6 +2497,7 @@@ static void generic_acomp_notifier_set(
        mutex_lock(&spec->bind_lock);
        spec->use_acomp_notifier = use_acomp;
        spec->codec->relaxed_resume = use_acomp;
 +      spec->codec->bus->keep_power = 0;
        /* reprogram each jack detection logic depending on the notifier */
        for (i = 0; i < spec->num_pins; i++)
                reprogram_jack_detect(spec->codec,
@@@ -2535,6 -2580,7 +2592,6 @@@ static void generic_acomp_init(struct h
        if (!snd_hdac_acomp_init(&codec->bus->core, &spec->drm_audio_ops,
                                 match_bound_vga, 0)) {
                spec->acomp_registered = true;
 -              codec->bus->keep_power = 0;
        }
  }
  
@@@ -2802,6 -2848,13 +2859,13 @@@ static int intel_hsw_common_init(struc
        spec->ops.setup_stream = i915_hsw_setup_stream;
        spec->ops.pin_cvt_fixup = i915_pin_cvt_fixup;
  
+       /*
+        * Enable silent stream feature, if it is enabled via
+        * module param or Kconfig option
+        */
+       if (enable_silent_stream)
+               spec->send_silent_stream = true;
        return parse_intel_hdmi(codec);
  }
  
@@@ -67,6 -67,13 +67,13 @@@ struct alc_customize_define 
        unsigned int  fixup:1; /* Means that this sku is set by driver, not read from hw */
  };
  
+ struct alc_coef_led {
+       unsigned int idx;
+       unsigned int mask;
+       unsigned int on;
+       unsigned int off;
+ };
  struct alc_spec {
        struct hda_gen_spec gen; /* must be at head */
  
@@@ -80,7 -87,7 +87,7 @@@
        unsigned int gpio_data;
        bool gpio_write_delay;  /* add a delay before writing gpio_data */
  
-       /* mute LED for HP laptops, see alc269_fixup_mic_mute_hook() */
+       /* mute LED for HP laptops, see vref_mute_led_set() */
        int mute_led_polarity;
        int micmute_led_polarity;
        hda_nid_t mute_led_nid;
  
        unsigned int gpio_mute_led_mask;
        unsigned int gpio_mic_led_mask;
-       unsigned int mute_led_coef_idx;
-       unsigned int mute_led_coefbit_mask;
-       unsigned int mute_led_coefbit_on;
-       unsigned int mute_led_coefbit_off;
-       unsigned int mic_led_coef_idx;
-       unsigned int mic_led_coefbit_mask;
-       unsigned int mic_led_coefbit_on;
-       unsigned int mic_led_coefbit_off;
+       struct alc_coef_led mute_led_coef;
+       struct alc_coef_led mic_led_coef;
  
        hda_nid_t headset_mic_pin;
        hda_nid_t headphone_mic_pin;
@@@ -287,6 -288,13 +288,13 @@@ static void alc_fixup_gpio4(struct hda_
        alc_fixup_gpio(codec, action, 0x04);
  }
  
+ static void alc_fixup_micmute_led(struct hda_codec *codec,
+                                 const struct hda_fixup *fix, int action)
+ {
+       if (action == HDA_FIXUP_ACT_PROBE)
+               snd_hda_gen_add_micmute_led_cdev(codec, NULL);
+ }
  /*
   * Fix hardware PLL issue
   * On some codecs, the analog PLL gating control must be off while
@@@ -374,7 -382,7 +382,7 @@@ static void alc_fill_eapd_coef(struct h
        case 0x10ec0295:
        case 0x10ec0299:
                alc_update_coef_idx(codec, 0x67, 0xf000, 0x3000);
-               /* fallthrough */
+               fallthrough;
        case 0x10ec0215:
        case 0x10ec0233:
        case 0x10ec0235:
@@@ -1070,7 -1078,7 +1078,7 @@@ static int set_beep_amp(struct alc_spe
        return 0;
  }
  
- static const struct snd_pci_quirk beep_white_list[] = {
+ static const struct snd_pci_quirk beep_allow_list[] = {
        SND_PCI_QUIRK(0x1043, 0x103c, "ASUS", 1),
        SND_PCI_QUIRK(0x1043, 0x115d, "ASUS", 1),
        SND_PCI_QUIRK(0x1043, 0x829f, "ASUS", 1),
        SND_PCI_QUIRK(0x1043, 0x834a, "EeePC", 1),
        SND_PCI_QUIRK(0x1458, 0xa002, "GA-MA790X", 1),
        SND_PCI_QUIRK(0x8086, 0xd613, "Intel", 1),
-       /* blacklist -- no beep available */
+       /* denylist -- no beep available */
        SND_PCI_QUIRK(0x17aa, 0x309e, "Lenovo ThinkCentre M73", 0),
        SND_PCI_QUIRK(0x17aa, 0x30a3, "Lenovo ThinkCentre M93", 0),
        {}
@@@ -1090,7 -1098,7 +1098,7 @@@ static inline int has_cdefine_beep(stru
  {
        struct alc_spec *spec = codec->spec;
        const struct snd_pci_quirk *q;
-       q = snd_pci_quirk_lookup(codec->bus->pci, beep_white_list);
+       q = snd_pci_quirk_lookup(codec->bus->pci, beep_allow_list);
        if (q)
                return q->value;
        return spec->cdefine.enable_pcbeep;
@@@ -2461,7 -2469,6 +2469,7 @@@ static const struct snd_pci_quirk alc88
        SND_PCI_QUIRK(0x1458, 0xa0b8, "Gigabyte AZ370-Gaming", ALC1220_FIXUP_GB_DUAL_CODECS),
        SND_PCI_QUIRK(0x1458, 0xa0cd, "Gigabyte X570 Aorus Master", ALC1220_FIXUP_CLEVO_P950),
        SND_PCI_QUIRK(0x1458, 0xa0ce, "Gigabyte X570 Aorus Xtreme", ALC1220_FIXUP_CLEVO_P950),
 +      SND_PCI_QUIRK(0x1462, 0x11f7, "MSI-GE63", ALC1220_FIXUP_CLEVO_P950),
        SND_PCI_QUIRK(0x1462, 0x1228, "MSI-GP63", ALC1220_FIXUP_CLEVO_P950),
        SND_PCI_QUIRK(0x1462, 0x1275, "MSI-GL63", ALC1220_FIXUP_CLEVO_P950),
        SND_PCI_QUIRK(0x1462, 0x1276, "MSI-GL73", ALC1220_FIXUP_CLEVO_P950),
@@@ -3982,25 -3989,34 +3990,34 @@@ static void alc269_fixup_x101_headset_m
        }
  }
  
+ static void alc_update_vref_led(struct hda_codec *codec, hda_nid_t pin,
+                               bool polarity, bool on)
+ {
+       unsigned int pinval;
+       if (!pin)
+               return;
+       if (polarity)
+               on = !on;
+       pinval = snd_hda_codec_get_pin_target(codec, pin);
+       pinval &= ~AC_PINCTL_VREFEN;
+       pinval |= on ? AC_PINCTL_VREF_80 : AC_PINCTL_VREF_HIZ;
+       /* temporarily power up/down for setting VREF */
+       snd_hda_power_up_pm(codec);
+       snd_hda_set_pin_ctl_cache(codec, pin, pinval);
+       snd_hda_power_down_pm(codec);
+ }
  
  /* update mute-LED according to the speaker mute state via mic VREF pin */
- static void alc269_fixup_mic_mute_hook(void *private_data, int enabled)
+ static int vref_mute_led_set(struct led_classdev *led_cdev,
+                            enum led_brightness brightness)
  {
-       struct hda_codec *codec = private_data;
+       struct hda_codec *codec = dev_to_hda_codec(led_cdev->dev->parent);
        struct alc_spec *spec = codec->spec;
-       unsigned int pinval;
  
-       if (spec->mute_led_polarity)
-               enabled = !enabled;
-       pinval = snd_hda_codec_get_pin_target(codec, spec->mute_led_nid);
-       pinval &= ~AC_PINCTL_VREFEN;
-       pinval |= enabled ? AC_PINCTL_VREF_HIZ : AC_PINCTL_VREF_80;
-       if (spec->mute_led_nid) {
-               /* temporarily power up/down for setting VREF */
-               snd_hda_power_up_pm(codec);
-               snd_hda_set_pin_ctl_cache(codec, spec->mute_led_nid, pinval);
-               snd_hda_power_down_pm(codec);
-       }
+       alc_update_vref_led(codec, spec->mute_led_nid,
+                           spec->mute_led_polarity, brightness);
+       return 0;
  }
  
  /* Make sure the led works even in runtime suspend */
@@@ -4038,8 -4054,7 +4055,7 @@@ static void alc269_fixup_hp_mute_led(st
                        break;
                spec->mute_led_polarity = pol;
                spec->mute_led_nid = pin - 0x0a + 0x18;
-               spec->gen.vmaster_mute.hook = alc269_fixup_mic_mute_hook;
-               spec->gen.vmaster_mute_enum = 1;
+               snd_hda_gen_add_mute_led_cdev(codec, vref_mute_led_set);
                codec->power_filter = led_power_filter;
                codec_dbg(codec,
                          "Detected mute LED for %x:%d\n", spec->mute_led_nid,
@@@ -4057,8 -4072,7 +4073,7 @@@ static void alc269_fixup_hp_mute_led_mi
        if (action == HDA_FIXUP_ACT_PRE_PROBE) {
                spec->mute_led_polarity = 0;
                spec->mute_led_nid = pin;
-               spec->gen.vmaster_mute.hook = alc269_fixup_mic_mute_hook;
-               spec->gen.vmaster_mute_enum = 1;
+               snd_hda_gen_add_mute_led_cdev(codec, vref_mute_led_set);
                codec->power_filter = led_power_filter;
        }
  }
@@@ -4091,26 -4105,18 +4106,18 @@@ static void alc_update_gpio_led(struct 
  }
  
  /* turn on/off mute LED via GPIO per vmaster hook */
- static void alc_fixup_gpio_mute_hook(void *private_data, int enabled)
+ static int gpio_mute_led_set(struct led_classdev *led_cdev,
+                            enum led_brightness brightness)
  {
-       struct hda_codec *codec = private_data;
+       struct hda_codec *codec = dev_to_hda_codec(led_cdev->dev->parent);
        struct alc_spec *spec = codec->spec;
  
        alc_update_gpio_led(codec, spec->gpio_mute_led_mask,
-                           spec->mute_led_polarity, enabled);
+                           spec->mute_led_polarity, !brightness);
+       return 0;
  }
  
  /* turn on/off mic-mute LED via GPIO per capture hook */
- static void alc_gpio_micmute_update(struct hda_codec *codec)
- {
-       struct alc_spec *spec = codec->spec;
-       alc_update_gpio_led(codec, spec->gpio_mic_led_mask,
-                           spec->micmute_led_polarity,
-                           spec->gen.micmute_led.led_value);
- }
- #if IS_REACHABLE(CONFIG_LEDS_TRIGGER_AUDIO)
  static int micmute_led_set(struct led_classdev *led_cdev,
                           enum led_brightness brightness)
  {
        return 0;
  }
  
- static struct led_classdev micmute_led_cdev = {
-       .name = "hda::micmute",
-       .max_brightness = 1,
-       .brightness_set_blocking = micmute_led_set,
-       .default_trigger = "audio-micmute",
- };
- #endif
  /* setup mute and mic-mute GPIO bits, add hooks appropriately */
  static void alc_fixup_hp_gpio_led(struct hda_codec *codec,
                                  int action,
                                  unsigned int micmute_mask)
  {
        struct alc_spec *spec = codec->spec;
- #if IS_REACHABLE(CONFIG_LEDS_TRIGGER_AUDIO)
-       int err;
- #endif
  
        alc_fixup_gpio(codec, action, mute_mask | micmute_mask);
  
                return;
        if (mute_mask) {
                spec->gpio_mute_led_mask = mute_mask;
-               spec->gen.vmaster_mute.hook = alc_fixup_gpio_mute_hook;
+               snd_hda_gen_add_mute_led_cdev(codec, gpio_mute_led_set);
        }
        if (micmute_mask) {
                spec->gpio_mic_led_mask = micmute_mask;
-               snd_hda_gen_add_micmute_led(codec, alc_gpio_micmute_update);
- #if IS_REACHABLE(CONFIG_LEDS_TRIGGER_AUDIO)
-               micmute_led_cdev.brightness = ledtrig_audio_get(LED_AUDIO_MICMUTE);
-               err = devm_led_classdev_register(&codec->core.dev, &micmute_led_cdev);
-               if (err)
-                       codec_warn(codec, "failed to register micmute LED\n");
- #endif
+               snd_hda_gen_add_micmute_led_cdev(codec, micmute_led_set);
        }
  }
  
@@@ -4184,21 -4172,16 +4173,16 @@@ static void alc286_fixup_hp_gpio_led(st
        alc_fixup_hp_gpio_led(codec, action, 0x02, 0x20);
  }
  
- /* turn on/off mic-mute LED per capture hook */
- static void alc_cap_micmute_update(struct hda_codec *codec)
+ /* turn on/off mic-mute LED per capture hook via VREF change */
+ static int vref_micmute_led_set(struct led_classdev *led_cdev,
+                               enum led_brightness brightness)
  {
+       struct hda_codec *codec = dev_to_hda_codec(led_cdev->dev->parent);
        struct alc_spec *spec = codec->spec;
-       unsigned int pinval;
  
-       if (!spec->cap_mute_led_nid)
-               return;
-       pinval = snd_hda_codec_get_pin_target(codec, spec->cap_mute_led_nid);
-       pinval &= ~AC_PINCTL_VREFEN;
-       if (spec->gen.micmute_led.led_value)
-               pinval |= AC_PINCTL_VREF_80;
-       else
-               pinval |= AC_PINCTL_VREF_HIZ;
-       snd_hda_set_pin_ctl_cache(codec, spec->cap_mute_led_nid, pinval);
+       alc_update_vref_led(codec, spec->cap_mute_led_nid,
+                           spec->micmute_led_polarity, brightness);
+       return 0;
  }
  
  static void alc269_fixup_hp_gpio_mic1_led(struct hda_codec *codec,
                spec->gpio_mask |= 0x10;
                spec->gpio_dir |= 0x10;
                spec->cap_mute_led_nid = 0x18;
-               snd_hda_gen_add_micmute_led(codec, alc_cap_micmute_update);
+               snd_hda_gen_add_micmute_led_cdev(codec, vref_micmute_led_set);
                codec->power_filter = led_power_filter;
        }
  }
@@@ -4227,25 -4210,32 +4211,32 @@@ static void alc280_fixup_hp_gpio4(struc
        alc_fixup_hp_gpio_led(codec, action, 0x08, 0);
        if (action == HDA_FIXUP_ACT_PRE_PROBE) {
                spec->cap_mute_led_nid = 0x18;
-               snd_hda_gen_add_micmute_led(codec, alc_cap_micmute_update);
+               snd_hda_gen_add_micmute_led_cdev(codec, vref_micmute_led_set);
                codec->power_filter = led_power_filter;
        }
  }
  
+ static void alc_update_coef_led(struct hda_codec *codec,
+                               struct alc_coef_led *led,
+                               bool polarity, bool on)
+ {
+       if (polarity)
+               on = !on;
+       /* temporarily power up/down for setting COEF bit */
+       alc_update_coef_idx(codec, led->idx, led->mask,
+                           on ? led->on : led->off);
+ }
  /* update mute-LED according to the speaker mute state via COEF bit */
- static void alc_fixup_mute_led_coefbit_hook(void *private_data, int enabled)
+ static int coef_mute_led_set(struct led_classdev *led_cdev,
+                            enum led_brightness brightness)
  {
-       struct hda_codec *codec = private_data;
+       struct hda_codec *codec = dev_to_hda_codec(led_cdev->dev->parent);
        struct alc_spec *spec = codec->spec;
  
-       if (spec->mute_led_polarity)
-               enabled = !enabled;
-       /* temporarily power up/down for setting COEF bit */
-       enabled ? alc_update_coef_idx(codec, spec->mute_led_coef_idx,
-               spec->mute_led_coefbit_mask, spec->mute_led_coefbit_off) :
-                 alc_update_coef_idx(codec, spec->mute_led_coef_idx,
-               spec->mute_led_coefbit_mask, spec->mute_led_coefbit_on);
+       alc_update_coef_led(codec, &spec->mute_led_coef,
+                           spec->mute_led_polarity, brightness);
+       return 0;
  }
  
  static void alc285_fixup_hp_mute_led_coefbit(struct hda_codec *codec,
  
        if (action == HDA_FIXUP_ACT_PRE_PROBE) {
                spec->mute_led_polarity = 0;
-               spec->mute_led_coef_idx = 0x0b;
-               spec->mute_led_coefbit_mask = 1<<3;
-               spec->mute_led_coefbit_on = 1<<3;
-               spec->mute_led_coefbit_off = 0;
-               spec->gen.vmaster_mute.hook = alc_fixup_mute_led_coefbit_hook;
-               spec->gen.vmaster_mute_enum = 1;
+               spec->mute_led_coef.idx = 0x0b;
+               spec->mute_led_coef.mask = 1 << 3;
+               spec->mute_led_coef.on = 1 << 3;
+               spec->mute_led_coef.off = 0;
+               snd_hda_gen_add_mute_led_cdev(codec, coef_mute_led_set);
        }
  }
  
@@@ -4273,26 -4262,24 +4263,24 @@@ static void alc236_fixup_hp_mute_led_co
  
        if (action == HDA_FIXUP_ACT_PRE_PROBE) {
                spec->mute_led_polarity = 0;
-               spec->mute_led_coef_idx = 0x34;
-               spec->mute_led_coefbit_mask = 1<<5;
-               spec->mute_led_coefbit_on = 0;
-               spec->mute_led_coefbit_off = 1<<5;
-               spec->gen.vmaster_mute.hook = alc_fixup_mute_led_coefbit_hook;
-               spec->gen.vmaster_mute_enum = 1;
+               spec->mute_led_coef.idx = 0x34;
+               spec->mute_led_coef.mask = 1 << 5;
+               spec->mute_led_coef.on = 0;
+               spec->mute_led_coef.off = 1 << 5;
+               snd_hda_gen_add_mute_led_cdev(codec, coef_mute_led_set);
        }
  }
  
  /* turn on/off mic-mute LED per capture hook by coef bit */
- static void alc_hp_cap_micmute_update(struct hda_codec *codec)
+ static int coef_micmute_led_set(struct led_classdev *led_cdev,
+                               enum led_brightness brightness)
  {
+       struct hda_codec *codec = dev_to_hda_codec(led_cdev->dev->parent);
        struct alc_spec *spec = codec->spec;
  
-       if (spec->gen.micmute_led.led_value)
-               alc_update_coef_idx(codec, spec->mic_led_coef_idx,
-                       spec->mic_led_coefbit_mask, spec->mic_led_coefbit_on);
-       else
-               alc_update_coef_idx(codec, spec->mic_led_coef_idx,
-                       spec->mic_led_coefbit_mask, spec->mic_led_coefbit_off);
+       alc_update_coef_led(codec, &spec->mic_led_coef,
+                           spec->micmute_led_polarity, brightness);
+       return 0;
  }
  
  static void alc285_fixup_hp_coef_micmute_led(struct hda_codec *codec,
        struct alc_spec *spec = codec->spec;
  
        if (action == HDA_FIXUP_ACT_PRE_PROBE) {
-               spec->mic_led_coef_idx = 0x19;
-               spec->mic_led_coefbit_mask = 1<<13;
-               spec->mic_led_coefbit_on = 1<<13;
-               spec->mic_led_coefbit_off = 0;
-               snd_hda_gen_add_micmute_led(codec, alc_hp_cap_micmute_update);
+               spec->mic_led_coef.idx = 0x19;
+               spec->mic_led_coef.mask = 1 << 13;
+               spec->mic_led_coef.on = 1 << 13;
+               spec->mic_led_coef.off = 0;
+               snd_hda_gen_add_micmute_led_cdev(codec, coef_micmute_led_set);
        }
  }
  
@@@ -4315,11 -4302,11 +4303,11 @@@ static void alc236_fixup_hp_coef_micmut
        struct alc_spec *spec = codec->spec;
  
        if (action == HDA_FIXUP_ACT_PRE_PROBE) {
-               spec->mic_led_coef_idx = 0x35;
-               spec->mic_led_coefbit_mask = 3<<2;
-               spec->mic_led_coefbit_on = 2<<2;
-               spec->mic_led_coefbit_off = 1<<2;
-               snd_hda_gen_add_micmute_led(codec, alc_hp_cap_micmute_update);
+               spec->mic_led_coef.idx = 0x35;
+               spec->mic_led_coef.mask = 3 << 2;
+               spec->mic_led_coef.on = 2 << 2;
+               spec->mic_led_coef.off = 1 << 2;
+               snd_hda_gen_add_micmute_led_cdev(codec, coef_micmute_led_set);
        }
  }
  
@@@ -4459,7 -4446,7 +4447,7 @@@ static void alc269_fixup_hp_line1_mic1_
        alc269_fixup_hp_mute_led_micx(codec, fix, action, 0x1a);
        if (action == HDA_FIXUP_ACT_PRE_PROBE) {
                spec->cap_mute_led_nid = 0x18;
-               snd_hda_gen_add_micmute_led(codec, alc_cap_micmute_update);
+               snd_hda_gen_add_micmute_led_cdev(codec, vref_micmute_led_set);
        }
  }
  
@@@ -4710,7 -4697,7 +4698,7 @@@ static void alc_headset_mode_mic_in(str
                break;
        case 0x10ec0867:
                alc_update_coefex_idx(codec, 0x57, 0x5, 0, 1<<14);
-               /* fallthru */
+               fallthrough;
        case 0x10ec0221:
        case 0x10ec0662:
                snd_hda_set_pin_ctl_cache(codec, hp_pin, 0);
@@@ -5975,16 -5962,6 +5963,16 @@@ static void alc_fixup_disable_mic_vref(
                snd_hda_codec_set_pin_target(codec, 0x19, PIN_VREFHIZ);
  }
  
 +static void  alc285_fixup_hp_gpio_amp_init(struct hda_codec *codec,
 +                            const struct hda_fixup *fix, int action)
 +{
 +      if (action != HDA_FIXUP_ACT_INIT)
 +              return;
 +
 +      msleep(100);
 +      alc_write_coef_idx(codec, 0x65, 0x0);
 +}
 +
  /* for hda_fixup_thinkpad_acpi() */
  #include "thinkpad_helper.c"
  
@@@ -6159,18 -6136,6 +6147,18 @@@ enum 
        ALC236_FIXUP_HP_MUTE_LED,
        ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET,
        ALC295_FIXUP_ASUS_MIC_NO_PRESENCE,
 +      ALC269VC_FIXUP_ACER_VCOPPERBOX_PINS,
 +      ALC269VC_FIXUP_ACER_HEADSET_MIC,
 +      ALC269VC_FIXUP_ACER_MIC_NO_PRESENCE,
 +      ALC289_FIXUP_ASUS_GA401,
 +      ALC289_FIXUP_ASUS_GA502,
 +      ALC256_FIXUP_ACER_MIC_NO_PRESENCE,
 +      ALC285_FIXUP_HP_GPIO_AMP_INIT,
 +      ALC269_FIXUP_CZC_B20,
 +      ALC269_FIXUP_CZC_TMI,
 +      ALC269_FIXUP_CZC_L101,
 +      ALC269_FIXUP_LEMOTE_A1802,
 +      ALC269_FIXUP_LEMOTE_A190X,
  };
  
  static const struct hda_fixup alc269_fixups[] = {
        },
        [ALC255_FIXUP_MIC_MUTE_LED] = {
                .type = HDA_FIXUP_FUNC,
-               .v.func = snd_hda_gen_fixup_micmute_led,
+               .v.func = alc_fixup_micmute_led,
        },
        [ALC282_FIXUP_ASPIRE_V5_PINS] = {
                .type = HDA_FIXUP_PINS,
        },
        [ALC292_FIXUP_DELL_E7X] = {
                .type = HDA_FIXUP_FUNC,
-               .v.func = snd_hda_gen_fixup_micmute_led,
+               .v.func = alc_fixup_micmute_led,
                /* micmute fixup must be applied at last */
                .chained_before = true,
                .chain_id = ALC292_FIXUP_DELL_E7X_AAMIX,
                        { }
                },
                .chained = true,
 -              .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
 +              .chain_id = ALC269_FIXUP_HEADSET_MIC
        },
        [ALC294_FIXUP_ASUS_HEADSET_MIC] = {
                .type = HDA_FIXUP_PINS,
                        { }
                },
                .chained = true,
 -              .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
 +              .chain_id = ALC269_FIXUP_HEADSET_MIC
        },
        [ALC294_FIXUP_ASUS_SPK] = {
                .type = HDA_FIXUP_VERBS,
                        /* Set EAPD high */
                        { 0x20, AC_VERB_SET_COEF_INDEX, 0x40 },
                        { 0x20, AC_VERB_SET_PROC_COEF, 0x8800 },
 +                      { 0x20, AC_VERB_SET_COEF_INDEX, 0x0f },
 +                      { 0x20, AC_VERB_SET_PROC_COEF, 0x7774 },
                        { }
                },
                .chained = true,
                .chained = true,
                .chain_id = ALC269_FIXUP_HEADSET_MODE
        },
 +      [ALC269VC_FIXUP_ACER_VCOPPERBOX_PINS] = {
 +              .type = HDA_FIXUP_PINS,
 +              .v.pins = (const struct hda_pintbl[]) {
 +                      { 0x14, 0x90100120 }, /* use as internal speaker */
 +                      { 0x18, 0x02a111f0 }, /* use as headset mic, without its own jack detect */
 +                      { 0x1a, 0x01011020 }, /* use as line out */
 +                      { },
 +              },
 +              .chained = true,
 +              .chain_id = ALC269_FIXUP_HEADSET_MIC
 +      },
 +      [ALC269VC_FIXUP_ACER_HEADSET_MIC] = {
 +              .type = HDA_FIXUP_PINS,
 +              .v.pins = (const struct hda_pintbl[]) {
 +                      { 0x18, 0x02a11030 }, /* use as headset mic */
 +                      { }
 +              },
 +              .chained = true,
 +              .chain_id = ALC269_FIXUP_HEADSET_MIC
 +      },
 +      [ALC269VC_FIXUP_ACER_MIC_NO_PRESENCE] = {
 +              .type = HDA_FIXUP_PINS,
 +              .v.pins = (const struct hda_pintbl[]) {
 +                      { 0x18, 0x01a11130 }, /* use as headset mic, without its own jack detect */
 +                      { }
 +              },
 +              .chained = true,
 +              .chain_id = ALC269_FIXUP_HEADSET_MIC
 +      },
 +      [ALC289_FIXUP_ASUS_GA401] = {
 +              .type = HDA_FIXUP_PINS,
 +              .v.pins = (const struct hda_pintbl[]) {
 +                      { 0x19, 0x03a11020 }, /* headset mic with jack detect */
 +                      { }
 +              },
 +      },
 +      [ALC289_FIXUP_ASUS_GA502] = {
 +              .type = HDA_FIXUP_PINS,
 +              .v.pins = (const struct hda_pintbl[]) {
 +                      { 0x19, 0x03a11020 }, /* headset mic with jack detect */
 +                      { }
 +              },
 +      },
 +      [ALC256_FIXUP_ACER_MIC_NO_PRESENCE] = {
 +              .type = HDA_FIXUP_PINS,
 +              .v.pins = (const struct hda_pintbl[]) {
 +                      { 0x19, 0x02a11120 }, /* use as headset mic, without its own jack detect */
 +                      { }
 +              },
 +              .chained = true,
 +              .chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE
 +      },
 +      [ALC285_FIXUP_HP_GPIO_AMP_INIT] = {
 +              .type = HDA_FIXUP_FUNC,
 +              .v.func = alc285_fixup_hp_gpio_amp_init,
 +              .chained = true,
 +              .chain_id = ALC285_FIXUP_HP_GPIO_LED
 +      },
 +      [ALC269_FIXUP_CZC_B20] = {
 +              .type = HDA_FIXUP_PINS,
 +              .v.pins = (const struct hda_pintbl[]) {
 +                      { 0x12, 0x411111f0 },
 +                      { 0x14, 0x90170110 }, /* speaker */
 +                      { 0x15, 0x032f1020 }, /* HP out */
 +                      { 0x17, 0x411111f0 },
 +                      { 0x18, 0x03ab1040 }, /* mic */
 +                      { 0x19, 0xb7a7013f },
 +                      { 0x1a, 0x0181305f },
 +                      { 0x1b, 0x411111f0 },
 +                      { 0x1d, 0x411111f0 },
 +                      { 0x1e, 0x411111f0 },
 +                      { }
 +              },
 +              .chain_id = ALC269_FIXUP_DMIC,
 +      },
 +      [ALC269_FIXUP_CZC_TMI] = {
 +              .type = HDA_FIXUP_PINS,
 +              .v.pins = (const struct hda_pintbl[]) {
 +                      { 0x12, 0x4000c000 },
 +                      { 0x14, 0x90170110 }, /* speaker */
 +                      { 0x15, 0x0421401f }, /* HP out */
 +                      { 0x17, 0x411111f0 },
 +                      { 0x18, 0x04a19020 }, /* mic */
 +                      { 0x19, 0x411111f0 },
 +                      { 0x1a, 0x411111f0 },
 +                      { 0x1b, 0x411111f0 },
 +                      { 0x1d, 0x40448505 },
 +                      { 0x1e, 0x411111f0 },
 +                      { 0x20, 0x8000ffff },
 +                      { }
 +              },
 +              .chain_id = ALC269_FIXUP_DMIC,
 +      },
 +      [ALC269_FIXUP_CZC_L101] = {
 +              .type = HDA_FIXUP_PINS,
 +              .v.pins = (const struct hda_pintbl[]) {
 +                      { 0x12, 0x40000000 },
 +                      { 0x14, 0x01014010 }, /* speaker */
 +                      { 0x15, 0x411111f0 }, /* HP out */
 +                      { 0x16, 0x411111f0 },
 +                      { 0x18, 0x01a19020 }, /* mic */
 +                      { 0x19, 0x02a19021 },
 +                      { 0x1a, 0x0181302f },
 +                      { 0x1b, 0x0221401f },
 +                      { 0x1c, 0x411111f0 },
 +                      { 0x1d, 0x4044c601 },
 +                      { 0x1e, 0x411111f0 },
 +                      { }
 +              },
 +              .chain_id = ALC269_FIXUP_DMIC,
 +      },
 +      [ALC269_FIXUP_LEMOTE_A1802] = {
 +              .type = HDA_FIXUP_PINS,
 +              .v.pins = (const struct hda_pintbl[]) {
 +                      { 0x12, 0x40000000 },
 +                      { 0x14, 0x90170110 }, /* speaker */
 +                      { 0x17, 0x411111f0 },
 +                      { 0x18, 0x03a19040 }, /* mic1 */
 +                      { 0x19, 0x90a70130 }, /* mic2 */
 +                      { 0x1a, 0x411111f0 },
 +                      { 0x1b, 0x411111f0 },
 +                      { 0x1d, 0x40489d2d },
 +                      { 0x1e, 0x411111f0 },
 +                      { 0x20, 0x0003ffff },
 +                      { 0x21, 0x03214020 },
 +                      { }
 +              },
 +              .chain_id = ALC269_FIXUP_DMIC,
 +      },
 +      [ALC269_FIXUP_LEMOTE_A190X] = {
 +              .type = HDA_FIXUP_PINS,
 +              .v.pins = (const struct hda_pintbl[]) {
 +                      { 0x14, 0x99130110 }, /* speaker */
 +                      { 0x15, 0x0121401f }, /* HP out */
 +                      { 0x18, 0x01a19c20 }, /* rear  mic */
 +                      { 0x19, 0x99a3092f }, /* front mic */
 +                      { 0x1b, 0x0201401f }, /* front lineout */
 +                      { }
 +              },
 +              .chain_id = ALC269_FIXUP_DMIC,
 +      },
  };
  
  static const struct snd_pci_quirk alc269_fixup_tbl[] = {
        SND_PCI_QUIRK(0x1025, 0x0775, "Acer Aspire E1-572", ALC271_FIXUP_HP_GATE_MIC_JACK_E1_572),
        SND_PCI_QUIRK(0x1025, 0x079b, "Acer Aspire V5-573G", ALC282_FIXUP_ASPIRE_V5_PINS),
        SND_PCI_QUIRK(0x1025, 0x102b, "Acer Aspire C24-860", ALC286_FIXUP_ACER_AIO_MIC_NO_PRESENCE),
 +      SND_PCI_QUIRK(0x1025, 0x1065, "Acer Aspire C20-820", ALC269VC_FIXUP_ACER_HEADSET_MIC),
        SND_PCI_QUIRK(0x1025, 0x106d, "Acer Cloudbook 14", ALC283_FIXUP_CHROME_BOOK),
        SND_PCI_QUIRK(0x1025, 0x1099, "Acer Aspire E5-523G", ALC255_FIXUP_ACER_MIC_NO_PRESENCE),
        SND_PCI_QUIRK(0x1025, 0x110e, "Acer Aspire ES1-432", ALC255_FIXUP_ACER_MIC_NO_PRESENCE),
        SND_PCI_QUIRK(0x1025, 0x1246, "Acer Predator Helios 500", ALC299_FIXUP_PREDATOR_SPK),
 +      SND_PCI_QUIRK(0x1025, 0x1247, "Acer vCopperbox", ALC269VC_FIXUP_ACER_VCOPPERBOX_PINS),
 +      SND_PCI_QUIRK(0x1025, 0x1248, "Acer Veriton N4660G", ALC269VC_FIXUP_ACER_MIC_NO_PRESENCE),
        SND_PCI_QUIRK(0x1025, 0x128f, "Acer Veriton Z6860G", ALC286_FIXUP_ACER_AIO_HEADSET_MIC),
        SND_PCI_QUIRK(0x1025, 0x1290, "Acer Veriton Z4860G", ALC286_FIXUP_ACER_AIO_HEADSET_MIC),
        SND_PCI_QUIRK(0x1025, 0x1291, "Acer Veriton Z4660G", ALC286_FIXUP_ACER_AIO_HEADSET_MIC),
        SND_PCI_QUIRK(0x1025, 0x1308, "Acer Aspire Z24-890", ALC286_FIXUP_ACER_AIO_HEADSET_MIC),
        SND_PCI_QUIRK(0x1025, 0x132a, "Acer TravelMate B114-21", ALC233_FIXUP_ACER_HEADSET_MIC),
        SND_PCI_QUIRK(0x1025, 0x1330, "Acer TravelMate X514-51T", ALC255_FIXUP_ACER_HEADSET_MIC),
 +      SND_PCI_QUIRK(0x1025, 0x1430, "Acer TravelMate B311R-31", ALC256_FIXUP_ACER_MIC_NO_PRESENCE),
        SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z),
        SND_PCI_QUIRK(0x1028, 0x054b, "Dell XPS one 2710", ALC275_FIXUP_DELL_XPS),
        SND_PCI_QUIRK(0x1028, 0x05bd, "Dell Latitude E6440", ALC292_FIXUP_DELL_E7X),
        SND_PCI_QUIRK(0x103c, 0x83b9, "HP Spectre x360", ALC269_FIXUP_HP_MUTE_LED_MIC3),
        SND_PCI_QUIRK(0x103c, 0x8497, "HP Envy x360", ALC269_FIXUP_HP_MUTE_LED_MIC3),
        SND_PCI_QUIRK(0x103c, 0x84e7, "HP Pavilion 15", ALC269_FIXUP_HP_MUTE_LED_MIC3),
 -      SND_PCI_QUIRK(0x103c, 0x8736, "HP", ALC285_FIXUP_HP_GPIO_LED),
 +      SND_PCI_QUIRK(0x103c, 0x869d, "HP", ALC236_FIXUP_HP_MUTE_LED),
 +      SND_PCI_QUIRK(0x103c, 0x8729, "HP", ALC285_FIXUP_HP_GPIO_LED),
 +      SND_PCI_QUIRK(0x103c, 0x8736, "HP", ALC285_FIXUP_HP_GPIO_AMP_INIT),
        SND_PCI_QUIRK(0x103c, 0x877a, "HP", ALC285_FIXUP_HP_MUTE_LED),
        SND_PCI_QUIRK(0x103c, 0x877d, "HP", ALC236_FIXUP_HP_MUTE_LED),
        SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC),
        SND_PCI_QUIRK(0x1043, 0x17d1, "ASUS UX431FL", ALC294_FIXUP_ASUS_DUAL_SPK),
        SND_PCI_QUIRK(0x1043, 0x18b1, "Asus MJ401TA", ALC256_FIXUP_ASUS_HEADSET_MIC),
        SND_PCI_QUIRK(0x1043, 0x18f1, "Asus FX505DT", ALC256_FIXUP_ASUS_HEADSET_MIC),
 +      SND_PCI_QUIRK(0x1043, 0x194e, "ASUS UX563FD", ALC294_FIXUP_ASUS_HPE),
        SND_PCI_QUIRK(0x1043, 0x19ce, "ASUS B9450FA", ALC294_FIXUP_ASUS_HPE),
        SND_PCI_QUIRK(0x1043, 0x19e1, "ASUS UX581LV", ALC295_FIXUP_ASUS_MIC_NO_PRESENCE),
        SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),
        SND_PCI_QUIRK(0x1043, 0x1bbd, "ASUS Z550MA", ALC255_FIXUP_ASUS_MIC_NO_PRESENCE),
        SND_PCI_QUIRK(0x1043, 0x1c23, "Asus X55U", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
        SND_PCI_QUIRK(0x1043, 0x1ccd, "ASUS X555UB", ALC256_FIXUP_ASUS_MIC),
 +      SND_PCI_QUIRK(0x1043, 0x1e11, "ASUS Zephyrus G15", ALC289_FIXUP_ASUS_GA502),
 +      SND_PCI_QUIRK(0x1043, 0x1f11, "ASUS Zephyrus G14", ALC289_FIXUP_ASUS_GA401),
        SND_PCI_QUIRK(0x1043, 0x3030, "ASUS ZN270IE", ALC256_FIXUP_ASUS_AIO_GPIO2),
        SND_PCI_QUIRK(0x1043, 0x831a, "ASUS P901", ALC269_FIXUP_STEREO_DMIC),
        SND_PCI_QUIRK(0x1043, 0x834a, "ASUS S101", ALC269_FIXUP_STEREO_DMIC),
        SND_PCI_QUIRK(0x10cf, 0x1629, "Lifebook U7x7", ALC255_FIXUP_LIFEBOOK_U7x7_HEADSET_MIC),
        SND_PCI_QUIRK(0x10cf, 0x1845, "Lifebook U904", ALC269_FIXUP_LIFEBOOK_EXTMIC),
        SND_PCI_QUIRK(0x10ec, 0x10f2, "Intel Reference board", ALC700_FIXUP_INTEL_REFERENCE),
 +      SND_PCI_QUIRK(0x10ec, 0x1230, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK),
        SND_PCI_QUIRK(0x10f7, 0x8338, "Panasonic CF-SZ6", ALC269_FIXUP_HEADSET_MODE),
        SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC),
        SND_PCI_QUIRK(0x144d, 0xc169, "Samsung Notebook 9 Pen (NP930SBE-K01US)", ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET),
        SND_PCI_QUIRK(0x144d, 0xc176, "Samsung Notebook 9 Pro (NP930MBE-K04US)", ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET),
        SND_PCI_QUIRK(0x144d, 0xc740, "Samsung Ativ book 8 (NP870Z5G)", ALC269_FIXUP_ATIV_BOOK_8),
 +      SND_PCI_QUIRK(0x144d, 0xc812, "Samsung Notebook Pen S (NT950SBE-X58)", ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET),
        SND_PCI_QUIRK(0x1458, 0xfa53, "Gigabyte BXBT-2807", ALC283_FIXUP_HEADSET_MIC),
        SND_PCI_QUIRK(0x1462, 0xb120, "MSI Cubi MS-B120", ALC283_FIXUP_HEADSET_MIC),
        SND_PCI_QUIRK(0x1462, 0xb171, "Cubi N 8GL (MS-B171)", ALC283_FIXUP_HEADSET_MIC),
        SND_PCI_QUIRK(0x17aa, 0x224c, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
        SND_PCI_QUIRK(0x17aa, 0x224d, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
        SND_PCI_QUIRK(0x17aa, 0x225d, "Thinkpad T480", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
 -      SND_PCI_QUIRK(0x17aa, 0x2292, "Thinkpad X1 Yoga 7th", ALC285_FIXUP_THINKPAD_HEADSET_JACK),
 -      SND_PCI_QUIRK(0x17aa, 0x2293, "Thinkpad X1 Carbon 7th", ALC285_FIXUP_THINKPAD_HEADSET_JACK),
 +      SND_PCI_QUIRK(0x17aa, 0x2292, "Thinkpad X1 Carbon 7th", ALC285_FIXUP_THINKPAD_HEADSET_JACK),
        SND_PCI_QUIRK(0x17aa, 0x22be, "Thinkpad X1 Carbon 8th", ALC285_FIXUP_THINKPAD_HEADSET_JACK),
        SND_PCI_QUIRK(0x17aa, 0x30bb, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY),
        SND_PCI_QUIRK(0x17aa, 0x30e2, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY),
        SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K),
        SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD),
        SND_PCI_QUIRK(0x19e5, 0x3204, "Huawei MACH-WX9", ALC256_FIXUP_HUAWEI_MACH_WX9_PINS),
 +      SND_PCI_QUIRK(0x1b35, 0x1235, "CZC B20", ALC269_FIXUP_CZC_B20),
 +      SND_PCI_QUIRK(0x1b35, 0x1236, "CZC TMI", ALC269_FIXUP_CZC_TMI),
 +      SND_PCI_QUIRK(0x1b35, 0x1237, "CZC L101", ALC269_FIXUP_CZC_L101),
        SND_PCI_QUIRK(0x1b7d, 0xa831, "Ordissimo EVE2 ", ALC269VB_FIXUP_ORDISSIMO_EVE2), /* Also known as Malata PC-B1303 */
        SND_PCI_QUIRK(0x1d72, 0x1901, "RedmiBook 14", ALC256_FIXUP_ASUS_HEADSET_MIC),
        SND_PCI_QUIRK(0x10ec, 0x118c, "Medion EE4254 MD62100", ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE),
 +      SND_PCI_QUIRK(0x1c06, 0x2013, "Lemote A1802", ALC269_FIXUP_LEMOTE_A1802),
 +      SND_PCI_QUIRK(0x1c06, 0x2015, "Lemote A190X", ALC269_FIXUP_LEMOTE_A190X),
  
  #if 0
        /* Below is a quirk table taken from the old code.
@@@ -9044,7 -8851,6 +9032,7 @@@ enum 
        ALC662_FIXUP_LED_GPIO1,
        ALC662_FIXUP_IDEAPAD,
        ALC272_FIXUP_MARIO,
 +      ALC662_FIXUP_CZC_ET26,
        ALC662_FIXUP_CZC_P10T,
        ALC662_FIXUP_SKU_IGNORE,
        ALC662_FIXUP_HP_RP5800,
@@@ -9114,25 -8920,6 +9102,25 @@@ static const struct hda_fixup alc662_fi
                .type = HDA_FIXUP_FUNC,
                .v.func = alc272_fixup_mario,
        },
 +      [ALC662_FIXUP_CZC_ET26] = {
 +              .type = HDA_FIXUP_PINS,
 +              .v.pins = (const struct hda_pintbl[]) {
 +                      {0x12, 0x403cc000},
 +                      {0x14, 0x90170110}, /* speaker */
 +                      {0x15, 0x411111f0},
 +                      {0x16, 0x411111f0},
 +                      {0x18, 0x01a19030}, /* mic */
 +                      {0x19, 0x90a7013f}, /* int-mic */
 +                      {0x1a, 0x01014020},
 +                      {0x1b, 0x0121401f},
 +                      {0x1c, 0x411111f0},
 +                      {0x1d, 0x411111f0},
 +                      {0x1e, 0x40478e35},
 +                      {}
 +              },
 +              .chained = true,
 +              .chain_id = ALC662_FIXUP_SKU_IGNORE
 +      },
        [ALC662_FIXUP_CZC_P10T] = {
                .type = HDA_FIXUP_VERBS,
                .v.verbs = (const struct hda_verb[]) {
@@@ -9516,7 -9303,6 +9504,7 @@@ static const struct snd_pci_quirk alc66
        SND_PCI_QUIRK(0x1849, 0x5892, "ASRock B150M", ALC892_FIXUP_ASROCK_MOBO),
        SND_PCI_QUIRK(0x19da, 0xa130, "Zotac Z68", ALC662_FIXUP_ZOTAC_Z68),
        SND_PCI_QUIRK(0x1b0a, 0x01b8, "ACER Veriton", ALC662_FIXUP_ACER_VERITON),
 +      SND_PCI_QUIRK(0x1b35, 0x1234, "CZC ET26", ALC662_FIXUP_CZC_ET26),
        SND_PCI_QUIRK(0x1b35, 0x2206, "CZC P10T", ALC662_FIXUP_CZC_P10T),
        SND_PCI_QUIRK(0x1025, 0x0566, "Acer Aspire Ethos 8951G", ALC669_FIXUP_ACER_ASPIRE_ETHOS),
  
diff --combined sound/usb/endpoint.c
@@@ -159,11 -159,11 +159,11 @@@ int snd_usb_endpoint_next_packet_size(s
                return ep->maxframesize;
  
        ep->sample_accum += ep->sample_rem;
 -      if (ep->sample_accum >= ep->fps) {
 -              ep->sample_accum -= ep->fps;
 -              ret = ep->framesize[1];
 +      if (ep->sample_accum >= ep->pps) {
 +              ep->sample_accum -= ep->pps;
 +              ret = ep->packsize[1];
        } else {
 -              ret = ep->framesize[0];
 +              ret = ep->packsize[0];
        }
  
        return ret;
@@@ -615,9 -615,8 +615,8 @@@ static void release_urbs(struct snd_usb
        for (i = 0; i < ep->nurbs; i++)
                release_urb_ctx(&ep->urb[i]);
  
-       if (ep->syncbuf)
-               usb_free_coherent(ep->chip->dev, SYNC_URBS * 4,
-                                 ep->syncbuf, ep->sync_dma);
+       usb_free_coherent(ep->chip->dev, SYNC_URBS * 4,
+                         ep->syncbuf, ep->sync_dma);
  
        ep->syncbuf = NULL;
        ep->nurbs = 0;
@@@ -1088,15 -1087,15 +1087,15 @@@ int snd_usb_endpoint_set_params(struct 
  
        if (snd_usb_get_speed(ep->chip->dev) == USB_SPEED_FULL) {
                ep->freqn = get_usb_full_speed_rate(rate);
 -              ep->fps = 1000;
 +              ep->pps = 1000 >> ep->datainterval;
        } else {
                ep->freqn = get_usb_high_speed_rate(rate);
 -              ep->fps = 8000;
 +              ep->pps = 8000 >> ep->datainterval;
        }
  
 -      ep->sample_rem = rate % ep->fps;
 -      ep->framesize[0] = rate / ep->fps;
 -      ep->framesize[1] = (rate + (ep->fps - 1)) / ep->fps;
 +      ep->sample_rem = rate % ep->pps;
 +      ep->packsize[0] = rate / ep->pps;
 +      ep->packsize[1] = (rate + (ep->pps - 1)) / ep->pps;
  
        /* calculate the frequency in 16.16 format */
        ep->freqm = ep->freqn;
diff --combined sound/usb/line6/driver.c
@@@ -97,7 -97,7 +97,7 @@@ static void line6_stop_listen(struct us
  /*
        Send raw message in pieces of wMaxPacketSize bytes.
  */
static int line6_send_raw_message(struct usb_line6 *line6, const char *buffer,
+ int line6_send_raw_message(struct usb_line6 *line6, const char *buffer,
                                  int size)
  {
        int i, done = 0;
  
        return done;
  }
+ EXPORT_SYMBOL_GPL(line6_send_raw_message);
  
  /*
        Notification of completion of asynchronous request transmission.
@@@ -840,7 -841,7 +841,7 @@@ void line6_disconnect(struct usb_interf
        if (WARN_ON(usbdev != line6->usbdev))
                return;
  
 -      cancel_delayed_work(&line6->startup_work);
 +      cancel_delayed_work_sync(&line6->startup_work);
  
        if (line6->urb_listen != NULL)
                line6_stop_listen(line6);
diff --combined sound/usb/midi.c
@@@ -1499,8 -1499,6 +1499,8 @@@ void snd_usbmidi_disconnect(struct list
        spin_unlock_irq(&umidi->disc_lock);
        up_write(&umidi->disc_rwsem);
  
 +      del_timer_sync(&umidi->error_timer);
 +
        for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) {
                struct snd_usb_midi_endpoint *ep = &umidi->endpoints[i];
                if (ep->out)
                        ep->in = NULL;
                }
        }
 -      del_timer_sync(&umidi->error_timer);
  }
  EXPORT_SYMBOL(snd_usbmidi_disconnect);
  
@@@ -2302,22 -2301,16 +2302,22 @@@ void snd_usbmidi_input_stop(struct list
  }
  EXPORT_SYMBOL(snd_usbmidi_input_stop);
  
 -static void snd_usbmidi_input_start_ep(struct snd_usb_midi_in_endpoint *ep)
 +static void snd_usbmidi_input_start_ep(struct snd_usb_midi *umidi,
 +                                     struct snd_usb_midi_in_endpoint *ep)
  {
        unsigned int i;
 +      unsigned long flags;
  
        if (!ep)
                return;
        for (i = 0; i < INPUT_URBS; ++i) {
                struct urb *urb = ep->urbs[i];
 -              urb->dev = ep->umidi->dev;
 -              snd_usbmidi_submit_urb(urb, GFP_KERNEL);
 +              spin_lock_irqsave(&umidi->disc_lock, flags);
 +              if (!atomic_read(&urb->use_count)) {
 +                      urb->dev = ep->umidi->dev;
 +                      snd_usbmidi_submit_urb(urb, GFP_ATOMIC);
 +              }
 +              spin_unlock_irqrestore(&umidi->disc_lock, flags);
        }
  }
  
@@@ -2333,7 -2326,7 +2333,7 @@@ void snd_usbmidi_input_start(struct lis
        if (umidi->input_running || !umidi->opened[1])
                return;
        for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i)
 -              snd_usbmidi_input_start_ep(umidi->endpoints[i].in);
 +              snd_usbmidi_input_start_ep(umidi, umidi->endpoints[i].in);
        umidi->input_running = 1;
  }
  EXPORT_SYMBOL(snd_usbmidi_input_start);
@@@ -2408,7 -2401,7 +2408,7 @@@ int __snd_usbmidi_create(struct snd_car
                break;
        case QUIRK_MIDI_US122L:
                umidi->usb_protocol_ops = &snd_usbmidi_122l_ops;
-               /* fall through */
+               fallthrough;
        case QUIRK_MIDI_FIXED_ENDPOINT:
                memcpy(&endpoints[0], quirk->data,
                       sizeof(struct snd_usb_midi_endpoint_info));
diff --combined sound/usb/pcm.c
@@@ -367,9 -367,7 +367,9 @@@ static int set_sync_ep_implicit_fb_quir
                ifnum = 0;
                goto add_sync_ep_from_ifnum;
        case USB_ID(0x07fd, 0x0008): /* MOTU M Series */
 +      case USB_ID(0x31e9, 0x0001): /* Solid State Logic SSL2 */
        case USB_ID(0x31e9, 0x0002): /* Solid State Logic SSL2+ */
 +      case USB_ID(0x0d9a, 0x00df): /* RTX6001 */
                ep = 0x81;
                ifnum = 2;
                goto add_sync_ep_from_ifnum;
@@@ -1696,8 -1694,8 +1696,8 @@@ static void retire_playback_urb(struct 
        int processed = urb->transfer_buffer_length / ep->stride;
        int est_delay;
  
-       /* ignore the delay accounting when procssed=0 is given, i.e.
-        * silent payloads are procssed before handling the actual data
+       /* ignore the delay accounting when processed=0 is given, i.e.
+        * silent payloads are processed before handling the actual data
         */
        if (!processed)
                return;
@@@ -1744,7 -1742,7 +1744,7 @@@ static int snd_usb_substream_playback_t
        switch (cmd) {
        case SNDRV_PCM_TRIGGER_START:
                subs->trigger_tstamp_pending_update = true;
-               /* fall through */
+               fallthrough;
        case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
                subs->data_endpoint->prepare_data_urb = prepare_playback_urb;
                subs->data_endpoint->retire_data_urb = retire_playback_urb;
@@@ -1789,7 -1787,6 +1789,7 @@@ static int snd_usb_substream_capture_tr
                return 0;
        case SNDRV_PCM_TRIGGER_STOP:
                stop_endpoints(subs);
 +              subs->data_endpoint->retire_data_urb = NULL;
                subs->running = 0;
                return 0;
        case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
diff --combined sound/usb/quirks-table.h
  /*
   * HP Wireless Audio
   * When not ignored, causes instability issues for some users, forcing them to
-  * blacklist the entire module.
+  * skip the entire module.
   */
  {
        USB_DEVICE(0x0424, 0xb832),
@@@ -3633,56 -3633,4 +3633,56 @@@ ALC1220_VB_DESKTOP(0x26ce, 0x0a01), /* 
        }
  },
  
 +/*
 + * MacroSilicon MS2109 based HDMI capture cards
 + *
 + * These claim 96kHz 1ch in the descriptors, but are actually 48kHz 2ch.
 + * They also need QUIRK_AUDIO_ALIGN_TRANSFER, which makes one wonder if
 + * they pretend to be 96kHz mono as a workaround for stereo being broken
 + * by that...
 + *
 + * They also have swapped L-R channels, but that's for userspace to deal
 + * with.
 + */
 +{
 +      USB_DEVICE(0x534d, 0x2109),
 +      .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
 +              .vendor_name = "MacroSilicon",
 +              .product_name = "MS2109",
 +              .ifnum = QUIRK_ANY_INTERFACE,
 +              .type = QUIRK_COMPOSITE,
 +              .data = &(const struct snd_usb_audio_quirk[]) {
 +                      {
 +                              .ifnum = 2,
 +                              .type = QUIRK_AUDIO_ALIGN_TRANSFER,
 +                      },
 +                      {
 +                              .ifnum = 2,
 +                              .type = QUIRK_AUDIO_STANDARD_MIXER,
 +                      },
 +                      {
 +                              .ifnum = 3,
 +                              .type = QUIRK_AUDIO_FIXED_ENDPOINT,
 +                              .data = &(const struct audioformat) {
 +                                      .formats = SNDRV_PCM_FMTBIT_S16_LE,
 +                                      .channels = 2,
 +                                      .iface = 3,
 +                                      .altsetting = 1,
 +                                      .altset_idx = 1,
 +                                      .attributes = 0,
 +                                      .endpoint = 0x82,
 +                                      .ep_attr = USB_ENDPOINT_XFER_ISOC |
 +                                              USB_ENDPOINT_SYNC_ASYNC,
 +                                      .rates = SNDRV_PCM_RATE_CONTINUOUS,
 +                                      .rate_min = 48000,
 +                                      .rate_max = 48000,
 +                              }
 +                      },
 +                      {
 +                              .ifnum = -1
 +                      }
 +              }
 +      }
 +},
 +
  #undef USB_DEVICE_VENDOR_SPEC
diff --combined sound/usb/quirks.c
@@@ -1144,14 -1144,14 +1144,14 @@@ static int snd_usb_motu_m_series_boot_q
  #define MAUDIO_SET            0x01 /* parse device_setup */
  #define MAUDIO_SET_COMPATIBLE 0x80 /* use only "win-compatible" interfaces */
  #define MAUDIO_SET_DTS                0x02 /* enable DTS Digital Output */
- #define MAUDIO_SET_96K                0x04 /* 48-96KHz rate if set, 8-48KHz otherwise */
+ #define MAUDIO_SET_96K                0x04 /* 48-96kHz rate if set, 8-48kHz otherwise */
  #define MAUDIO_SET_24B                0x08 /* 24bits sample if set, 16bits otherwise */
  #define MAUDIO_SET_DI         0x10 /* enable Digital Input */
  #define MAUDIO_SET_MASK               0x1f /* bit mask for setup value */
- #define MAUDIO_SET_24B_48K_DI  0x19 /* 24bits+48KHz+Digital Input */
- #define MAUDIO_SET_24B_48K_NOTDI 0x09 /* 24bits+48KHz+No Digital Input */
- #define MAUDIO_SET_16B_48K_DI  0x11 /* 16bits+48KHz+Digital Input */
- #define MAUDIO_SET_16B_48K_NOTDI 0x01 /* 16bits+48KHz+No Digital Input */
+ #define MAUDIO_SET_24B_48K_DI  0x19 /* 24bits+48kHz+Digital Input */
+ #define MAUDIO_SET_24B_48K_NOTDI 0x09 /* 24bits+48kHz+No Digital Input */
+ #define MAUDIO_SET_16B_48K_DI  0x11 /* 16bits+48kHz+Digital Input */
+ #define MAUDIO_SET_16B_48K_NOTDI 0x01 /* 16bits+48kHz+No Digital Input */
  
  static int quattro_skip_setting_quirk(struct snd_usb_audio *chip,
                                      int iface, int altno)
@@@ -1597,7 -1597,7 +1597,7 @@@ void snd_usb_endpoint_start_quirk(struc
  
        /*
         * M-Audio Fast Track C400/C600 - when packets are not skipped, real
-        * world latency varies by approx. +/- 50 frames (at 96KHz) each time
+        * world latency varies by approx. +/- 50 frames (at 96kHz) each time
         * the stream is (re)started. When skipping packets 16 at endpoint
         * start up, the real world latency is stable within +/- 1 frame (also
         * across power cycles).
@@@ -1674,14 -1674,6 +1674,14 @@@ void snd_usb_ctl_msg_quirk(struct usb_d
             chip->usb_id == USB_ID(0x0951, 0x16ad)) &&
            (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS)
                usleep_range(1000, 2000);
 +
 +      /*
 +       * Samsung USBC Headset (AKG) need a tiny delay after each
 +       * class compliant request. (Model number: AAM625R or AAM627R)
 +       */
 +      if (chip->usb_id == USB_ID(0x04e8, 0xa051) &&
 +          (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS)
 +              usleep_range(5000, 6000);
  }
  
  /*
@@@ -1839,7 -1831,7 +1839,7 @@@ void snd_usb_audioformat_attributes_qui
                /*
                 * MaxPacketsOnly attribute is erroneously set in endpoint
                 * descriptors. As a result this card produces noise with
-                * all sample rates other than 96 KHz.
+                * all sample rates other than 96 kHz.
                 */
                fp->attributes &= ~UAC_EP_CS_ATTR_FILL_MAX;
                break;
@@@ -1865,7 -1857,6 +1865,7 @@@ struct registration_quirk 
  static const struct registration_quirk registration_quirks[] = {
        REG_QUIRK_ENTRY(0x0951, 0x16d8, 2),     /* Kingston HyperX AMP */
        REG_QUIRK_ENTRY(0x0951, 0x16ed, 2),     /* Kingston HyperX Cloud Alpha S */
 +      REG_QUIRK_ENTRY(0x0951, 0x16ea, 2),     /* Kingston HyperX Cloud Flight S */
        { 0 }                                   /* terminator */
  };