Merge 5.18-rc5 into usb-next
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 3 May 2022 14:35:26 +0000 (16:35 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 3 May 2022 14:35:26 +0000 (16:35 +0200)
We need the USB fixes in here, and this resolves a merge issue in
drivers/usb/dwc3/drd.c

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1  2 
Documentation/devicetree/bindings/usb/samsung,exynos-usb2.yaml
MAINTAINERS
drivers/usb/dwc3/core.c
drivers/usb/dwc3/drd.c
drivers/usb/dwc3/dwc3-pci.c
drivers/usb/dwc3/gadget.c
drivers/usb/gadget/configfs.c
drivers/usb/gadget/function/uvc_queue.c
drivers/usb/typec/ucsi/ucsi.c
sound/usb/midi.c

@@@ -7,7 -7,7 +7,7 @@@ $schema: http://devicetree.org/meta-sch
  title: Samsung Exynos SoC USB 2.0 EHCI/OHCI Controller
  
  maintainers:
-   - Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
+   - Krzysztof Kozlowski <krzk@kernel.org>
  
  properties:
    compatible:
@@@ -15,6 -15,9 +15,6 @@@
        - samsung,exynos4210-ehci
        - samsung,exynos4210-ohci
  
 -  '#address-cells':
 -    const: 1
 -
    clocks:
      maxItems: 1
  
        Only for controller in EHCI mode, if present, specifies the GPIO that
        needs to be pulled up for the bus to be powered.
  
 -  '#size-cells':
 -    const: 0
 -
 -patternProperties:
 -  "^.*@[0-9a-f]{1,2}$":
 -    description: The hard wired USB devices
 -    type: object
 -    $ref: /usb/usb-device.yaml
 -
  required:
    - compatible
    - clocks
@@@ -53,7 -65,6 +53,7 @@@
    - reg
  
  allOf:
 +  - $ref: usb-hcd.yaml#
    - if:
        properties:
          compatible:
@@@ -63,7 -74,7 +63,7 @@@
        properties:
          samsung,vbus-gpio: false
  
 -additionalProperties: false
 +unevaluatedProperties: false
  
  examples:
    - |
diff --combined MAINTAINERS
@@@ -201,6 -201,7 +201,7 @@@ F: include/net/ieee80211_radiotap.
  F:    include/net/iw_handler.h
  F:    include/net/wext.h
  F:    include/uapi/linux/nl80211.h
+ F:    include/uapi/linux/wireless.h
  F:    net/wireless/
  
  8169 10/100/1000 GIGABIT ETHERNET DRIVER
@@@ -2636,13 -2637,14 +2637,14 @@@ F:   sound/soc/rockchip
  N:    rockchip
  
  ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES
- M:    Krzysztof Kozlowski <krzk@kernel.org>
+ M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  R:    Alim Akhtar <alim.akhtar@samsung.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-samsung-soc@vger.kernel.org
  S:    Maintained
  C:    irc://irc.libera.chat/linux-exynos
  Q:    https://patchwork.kernel.org/project/linux-samsung-soc/list/
+ B:    mailto:linux-samsung-soc@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux.git
  F:    Documentation/arm/samsung/
  F:    Documentation/devicetree/bindings/arm/samsung/
@@@ -3742,7 -3744,7 +3744,7 @@@ F:      include/linux/platform_data/b53.
  
  BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE
  M:    Nicolas Saenz Julienne <nsaenz@kernel.org>
- L:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-rpi-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
@@@ -3757,7 -3759,7 +3759,7 @@@ BROADCOM BCM281XX/BCM11XXX/BCM216XX AR
  M:    Florian Fainelli <f.fainelli@gmail.com>
  M:    Ray Jui <rjui@broadcom.com>
  M:    Scott Branden <sbranden@broadcom.com>
- M:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  S:    Maintained
  T:    git git://github.com/broadcom/mach-bcm
  F:    arch/arm/mach-bcm/
@@@ -3777,7 -3779,7 +3779,7 @@@ F:      arch/mips/include/asm/mach-bcm47xx/
  
  BROADCOM BCM4908 ETHERNET DRIVER
  M:    Rafał Miłecki <rafal@milecki.pl>
- M:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/net/brcm,bcm4908-enet.yaml
@@@ -3786,7 -3788,7 +3788,7 @@@ F:      drivers/net/ethernet/broadcom/unimac
  
  BROADCOM BCM4908 PINMUX DRIVER
  M:    Rafał Miłecki <rafal@milecki.pl>
- M:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-gpio@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/pinctrl/brcm,bcm4908-pinctrl.yaml
@@@ -3796,7 -3798,7 +3798,7 @@@ BROADCOM BCM5301X ARM ARCHITECTUR
  M:    Florian Fainelli <f.fainelli@gmail.com>
  M:    Hauke Mehrtens <hauke@hauke-m.de>
  M:    Rafał Miłecki <zajec5@gmail.com>
- M:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/boot/dts/bcm470*
@@@ -3807,7 -3809,7 +3809,7 @@@ F:      arch/arm/mach-bcm/bcm_5301x.
  BROADCOM BCM53573 ARM ARCHITECTURE
  M:    Florian Fainelli <f.fainelli@gmail.com>
  M:    Rafał Miłecki <rafal@milecki.pl>
- L:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/boot/dts/bcm47189*
@@@ -3815,7 -3817,7 +3817,7 @@@ F:      arch/arm/boot/dts/bcm53573
  
  BROADCOM BCM63XX ARM ARCHITECTURE
  M:    Florian Fainelli <f.fainelli@gmail.com>
- M:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  T:    git git://github.com/broadcom/stblinux.git
@@@ -3829,7 -3831,7 +3831,7 @@@ F:      drivers/usb/gadget/udc/bcm63xx_udc.
  
  BROADCOM BCM7XXX ARM ARCHITECTURE
  M:    Florian Fainelli <f.fainelli@gmail.com>
- M:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  T:    git git://github.com/broadcom/stblinux.git
@@@ -3847,21 -3849,21 +3849,21 @@@ N:   bcm712
  BROADCOM BDC DRIVER
  M:    Al Cooper <alcooperx@gmail.com>
  L:    linux-usb@vger.kernel.org
- L:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  S:    Maintained
  F:    Documentation/devicetree/bindings/usb/brcm,bdc.yaml
  F:    drivers/usb/gadget/udc/bdc/
  
  BROADCOM BMIPS CPUFREQ DRIVER
  M:    Markus Mayer <mmayer@broadcom.com>
- M:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
  F:    drivers/cpufreq/bmips-cpufreq.c
  
  BROADCOM BMIPS MIPS ARCHITECTURE
  M:    Florian Fainelli <f.fainelli@gmail.com>
- L:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-mips@vger.kernel.org
  S:    Maintained
  T:    git git://github.com/broadcom/stblinux.git
@@@ -3912,7 -3914,9 +3914,9 @@@ BROADCOM BNXT_EN 50 GIGABIT ETHERNET DR
  M:    Michael Chan <michael.chan@broadcom.com>
  L:    netdev@vger.kernel.org
  S:    Supported
+ F:    drivers/firmware/broadcom/tee_bnxt_fw.c
  F:    drivers/net/ethernet/broadcom/bnxt/
+ F:    include/linux/firmware/broadcom/tee_bnxt_fw.h
  
  BROADCOM BRCM80211 IEEE802.11n WIRELESS DRIVER
  M:    Arend van Spriel <aspriel@gmail.com>
@@@ -3927,53 -3931,53 +3931,53 @@@ F:   drivers/net/wireless/broadcom/brcm80
  BROADCOM BRCMSTB GPIO DRIVER
  M:    Doug Berger <opendmb@gmail.com>
  M:    Florian Fainelli <f.fainelli@gmail.com>
- L:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  S:    Supported
  F:    Documentation/devicetree/bindings/gpio/brcm,brcmstb-gpio.yaml
  F:    drivers/gpio/gpio-brcmstb.c
  
  BROADCOM BRCMSTB I2C DRIVER
  M:    Kamal Dasu <kdasu.kdev@gmail.com>
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-i2c@vger.kernel.org
- L:    bcm-kernel-feedback-list@broadcom.com
  S:    Supported
  F:    Documentation/devicetree/bindings/i2c/brcm,brcmstb-i2c.yaml
  F:    drivers/i2c/busses/i2c-brcmstb.c
  
  BROADCOM BRCMSTB UART DRIVER
  M:    Al Cooper <alcooperx@gmail.com>
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-serial@vger.kernel.org
- L:    bcm-kernel-feedback-list@broadcom.com
  S:    Maintained
  F:    Documentation/devicetree/bindings/serial/brcm,bcm7271-uart.yaml
  F:    drivers/tty/serial/8250/8250_bcm7271.c
  
  BROADCOM BRCMSTB USB EHCI DRIVER
  M:    Al Cooper <alcooperx@gmail.com>
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.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 USB PIN MAP DRIVER
  M:    Al Cooper <alcooperx@gmail.com>
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-usb@vger.kernel.org
- L:    bcm-kernel-feedback-list@broadcom.com
  S:    Maintained
  F:    Documentation/devicetree/bindings/usb/brcm,usb-pinmap.yaml
  F:    drivers/usb/misc/brcmstb-usb-pinmap.c
  
  BROADCOM BRCMSTB USB2 and USB3 PHY DRIVER
  M:    Al Cooper <alcooperx@gmail.com>
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-kernel@vger.kernel.org
- L:    bcm-kernel-feedback-list@broadcom.com
  S:    Maintained
  F:    drivers/phy/broadcom/phy-brcm-usb*
  
  BROADCOM ETHERNET PHY DRIVERS
  M:    Florian Fainelli <f.fainelli@gmail.com>
- L:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    Documentation/devicetree/bindings/net/broadcom-bcm87xx.txt
@@@ -3984,7 -3988,7 +3988,7 @@@ F:      include/linux/brcmphy.
  BROADCOM GENET ETHERNET DRIVER
  M:    Doug Berger <opendmb@gmail.com>
  M:    Florian Fainelli <f.fainelli@gmail.com>
- L:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    Documentation/devicetree/bindings/net/brcm,bcmgenet.yaml
@@@ -3998,7 -4002,7 +4002,7 @@@ F:      include/linux/platform_data/mdio-bcm
  BROADCOM IPROC ARM ARCHITECTURE
  M:    Ray Jui <rjui@broadcom.com>
  M:    Scott Branden <sbranden@broadcom.com>
- M:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  T:    git git://github.com/broadcom/stblinux.git
@@@ -4026,7 -4030,7 +4030,7 @@@ N:      stingra
  
  BROADCOM IPROC GBIT ETHERNET DRIVER
  M:    Rafał Miłecki <rafal@milecki.pl>
- M:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/net/brcm,amac.yaml
@@@ -4035,7 -4039,7 +4039,7 @@@ F:      drivers/net/ethernet/broadcom/unimac
  
  BROADCOM KONA GPIO DRIVER
  M:    Ray Jui <rjui@broadcom.com>
- L:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  S:    Supported
  F:    Documentation/devicetree/bindings/gpio/brcm,kona-gpio.txt
  F:    drivers/gpio/gpio-bcm-kona.c
@@@ -4068,7 -4072,7 +4072,7 @@@ F:      drivers/firmware/broadcom/
  BROADCOM PMB (POWER MANAGEMENT BUS) DRIVER
  M:    Rafał Miłecki <rafal@milecki.pl>
  M:    Florian Fainelli <f.fainelli@gmail.com>
- M:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
  T:    git git://github.com/broadcom/stblinux.git
@@@ -4084,7 -4088,7 +4088,7 @@@ F:      include/linux/bcma
  
  BROADCOM SPI DRIVER
  M:    Kamal Dasu <kdasu.kdev@gmail.com>
- M:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  S:    Maintained
  F:    Documentation/devicetree/bindings/spi/brcm,spi-bcm-qspi.yaml
  F:    drivers/spi/spi-bcm-qspi.*
@@@ -4093,7 -4097,7 +4097,7 @@@ F:      drivers/spi/spi-iproc-qspi.
  
  BROADCOM STB AVS CPUFREQ DRIVER
  M:    Markus Mayer <mmayer@broadcom.com>
- M:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/cpufreq/brcm,stb-avs-cpu-freq.txt
@@@ -4101,7 -4105,7 +4105,7 @@@ F:      drivers/cpufreq/brcmstb
  
  BROADCOM STB AVS TMON DRIVER
  M:    Markus Mayer <mmayer@broadcom.com>
- M:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/thermal/brcm,avs-tmon.yaml
@@@ -4109,7 -4113,7 +4113,7 @@@ F:      drivers/thermal/broadcom/brcmstb
  
  BROADCOM STB DPFE DRIVER
  M:    Markus Mayer <mmayer@broadcom.com>
- M:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/devicetree/bindings/memory-controllers/brcm,dpfe-cpu.yaml
@@@ -4118,8 -4122,8 +4122,8 @@@ F:      drivers/memory/brcmstb_dpfe.
  BROADCOM STB NAND FLASH DRIVER
  M:    Brian Norris <computersforpeace@gmail.com>
  M:    Kamal Dasu <kdasu.kdev@gmail.com>
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-mtd@lists.infradead.org
- L:    bcm-kernel-feedback-list@broadcom.com
  S:    Maintained
  F:    drivers/mtd/nand/raw/brcmnand/
  F:    include/linux/platform_data/brcmnand.h
@@@ -4128,7 -4132,7 +4132,7 @@@ BROADCOM STB PCIE DRIVE
  M:    Jim Quinlan <jim2101024@gmail.com>
  M:    Nicolas Saenz Julienne <nsaenz@kernel.org>
  M:    Florian Fainelli <f.fainelli@gmail.com>
- M:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-pci@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
@@@ -4136,7 -4140,7 +4140,7 @@@ F:      drivers/pci/controller/pcie-brcmstb.
  
  BROADCOM SYSTEMPORT ETHERNET DRIVER
  M:    Florian Fainelli <f.fainelli@gmail.com>
- L:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/broadcom/bcmsysport.*
@@@ -4153,7 -4157,7 +4157,7 @@@ F:      drivers/net/ethernet/broadcom/tg3.
  
  BROADCOM VK DRIVER
  M:    Scott Branden <scott.branden@broadcom.com>
- L:    bcm-kernel-feedback-list@broadcom.com
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  S:    Supported
  F:    drivers/misc/bcm-vk/
  F:    include/uapi/linux/misc/bcm_vk.h
@@@ -4791,6 -4795,7 +4795,7 @@@ F:      .clang-forma
  CLANG/LLVM BUILD SUPPORT
  M:    Nathan Chancellor <nathan@kernel.org>
  M:    Nick Desaulniers <ndesaulniers@google.com>
+ R:    Tom Rix <trix@redhat.com>
  L:    llvm@lists.linux.dev
  S:    Supported
  W:    https://clangbuiltlinux.github.io/
@@@ -5715,7 -5720,7 +5720,7 @@@ W:      http://lanana.org/docs/device-list/i
  
  DEVICE RESOURCE MANAGEMENT HELPERS
  M:    Hans de Goede <hdegoede@redhat.com>
- R:    Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
+ R:    Matti Vaittinen <mazziesaccount@gmail.com>
  S:    Maintained
  F:    include/linux/devm-helpers.h
  
@@@ -8675,7 -8680,6 +8680,6 @@@ F:      include/linux/cciss*.
  F:    include/uapi/linux/cciss*.h
  
  HFI1 DRIVER
- M:    Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
  M:    Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
  L:    linux-rdma@vger.kernel.org
  S:    Supported
@@@ -9336,14 -9340,12 +9340,12 @@@ F:   drivers/pci/hotplug/rpaphp
  
  IBM Power SRIOV Virtual NIC Device Driver
  M:    Dany Madden <drt@linux.ibm.com>
- M:    Sukadev Bhattiprolu <sukadev@linux.ibm.com>
  R:    Thomas Falcon <tlfalcon@linux.ibm.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/ibm/ibmvnic.*
  
  IBM Power Virtual Accelerator Switchboard
- M:    Sukadev Bhattiprolu <sukadev@linux.ibm.com>
  L:    linuxppc-dev@lists.ozlabs.org
  S:    Supported
  F:    arch/powerpc/include/asm/vas.h
@@@ -9598,6 -9600,7 +9600,7 @@@ F:      drivers/iio/pressure/dps310.
  
  INFINIBAND SUBSYSTEM
  M:    Jason Gunthorpe <jgg@nvidia.com>
+ M:    Leon Romanovsky <leonro@nvidia.com>
  L:    linux-rdma@vger.kernel.org
  S:    Supported
  W:    https://github.com/linux-rdma/rdma-core
@@@ -10237,8 -10240,6 +10240,6 @@@ F:   drivers/net/ethernet/sgi/ioc3-eth.
  IOMAP FILESYSTEM LIBRARY
  M:    Christoph Hellwig <hch@infradead.org>
  M:    Darrick J. Wong <djwong@kernel.org>
- M:    linux-xfs@vger.kernel.org
- M:    linux-fsdevel@vger.kernel.org
  L:    linux-xfs@vger.kernel.org
  L:    linux-fsdevel@vger.kernel.org
  S:    Supported
@@@ -10369,6 -10370,7 +10370,7 @@@ F:   include/linux/isapnp.
  ISCSI
  M:    Lee Duncan <lduncan@suse.com>
  M:    Chris Leech <cleech@redhat.com>
+ M:    Mike Christie <michael.christie@oracle.com>
  L:    open-iscsi@googlegroups.com
  L:    linux-scsi@vger.kernel.org
  S:    Maintained
@@@ -10546,6 -10548,7 +10548,7 @@@ M:   Andrey Ryabinin <ryabinin.a.a@gmail.
  R:    Alexander Potapenko <glider@google.com>
  R:    Andrey Konovalov <andreyknvl@gmail.com>
  R:    Dmitry Vyukov <dvyukov@google.com>
+ R:    Vincenzo Frascino <vincenzo.frascino@arm.com>
  L:    kasan-dev@googlegroups.com
  S:    Maintained
  F:    Documentation/dev-tools/kasan.rst
@@@ -11208,7 -11211,7 +11211,7 @@@ F:   scripts/spdxcheck.p
  
  LINEAR RANGES HELPERS
  M:    Mark Brown <broonie@kernel.org>
- R:    Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
+ R:    Matti Vaittinen <mazziesaccount@gmail.com>
  F:    lib/linear_ranges.c
  F:    lib/test_linear_ranges.c
  F:    include/linux/linear_range.h
@@@ -11905,7 -11908,7 +11908,7 @@@ F:   drivers/iio/proximity/mb1232.
  
  MAXIM MAX17040 FAMILY FUEL GAUGE DRIVERS
  R:    Iskren Chernev <iskren.chernev@gmail.com>
- R:    Krzysztof Kozlowski <krzk@kernel.org>
+ R:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  R:    Marek Szyprowski <m.szyprowski@samsung.com>
  R:    Matheus Castello <matheus@castello.eng.br>
  L:    linux-pm@vger.kernel.org
@@@ -11915,7 -11918,7 +11918,7 @@@ F:   drivers/power/supply/max17040_batter
  
  MAXIM MAX17042 FAMILY FUEL GAUGE DRIVERS
  R:    Hans de Goede <hdegoede@redhat.com>
- R:    Krzysztof Kozlowski <krzk@kernel.org>
+ R:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  R:    Marek Szyprowski <m.szyprowski@samsung.com>
  R:    Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
  R:    Purism Kernel Team <kernel@puri.sm>
@@@ -11967,10 -11970,11 +11970,11 @@@ F:        Documentation/devicetree/bindings/po
  F:    drivers/power/supply/max77976_charger.c
  
  MAXIM MUIC CHARGER DRIVERS FOR EXYNOS BASED BOARDS
- M:    Krzysztof Kozlowski <krzk@kernel.org>
+ M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  M:    Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
  L:    linux-pm@vger.kernel.org
  S:    Supported
+ B:    mailto:linux-samsung-soc@vger.kernel.org
  F:    Documentation/devicetree/bindings/power/supply/maxim,max14577.yaml
  F:    Documentation/devicetree/bindings/power/supply/maxim,max77693.yaml
  F:    drivers/power/supply/max14577_charger.c
@@@ -11978,10 -11982,11 +11982,11 @@@ F:        drivers/power/supply/max77693_charge
  
  MAXIM PMIC AND MUIC DRIVERS FOR EXYNOS BASED BOARDS
  M:    Chanwoo Choi <cw00.choi@samsung.com>
- M:    Krzysztof Kozlowski <krzk@kernel.org>
+ M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  M:    Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
+ B:    mailto:linux-samsung-soc@vger.kernel.org
  F:    Documentation/devicetree/bindings/*/maxim,max14577.yaml
  F:    Documentation/devicetree/bindings/*/maxim,max77686.yaml
  F:    Documentation/devicetree/bindings/*/maxim,max77693.yaml
@@@ -12401,7 -12406,7 +12406,7 @@@ F:   drivers/mmc/host/mtk-sd.
  
  MEDIATEK MT76 WIRELESS LAN DRIVER
  M:    Felix Fietkau <nbd@nbd.name>
- M:    Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
+ M:    Lorenzo Bianconi <lorenzo@kernel.org>
  M:    Ryder Lee <ryder.lee@mediatek.com>
  R:    Shayne Chen <shayne.chen@mediatek.com>
  R:    Sean Wang <sean.wang@mediatek.com>
@@@ -12672,9 -12677,10 +12677,10 @@@ F: mm/memblock.
  F:    tools/testing/memblock/
  
  MEMORY CONTROLLER DRIVERS
- M:    Krzysztof Kozlowski <krzk@kernel.org>
+ M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
+ B:    mailto:krzysztof.kozlowski@linaro.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-mem-ctrl.git
  F:    Documentation/devicetree/bindings/memory-controllers/
  F:    drivers/memory/
@@@ -13623,6 -13629,7 +13629,7 @@@ F:   net/core/drop_monitor.
  
  NETWORKING DRIVERS
  M:    "David S. Miller" <davem@davemloft.net>
+ M:    Eric Dumazet <edumazet@google.com>
  M:    Jakub Kicinski <kuba@kernel.org>
  M:    Paolo Abeni <pabeni@redhat.com>
  L:    netdev@vger.kernel.org
@@@ -13670,6 -13677,7 +13677,7 @@@ F:   tools/testing/selftests/drivers/net/
  
  NETWORKING [GENERAL]
  M:    "David S. Miller" <davem@davemloft.net>
+ M:    Eric Dumazet <edumazet@google.com>
  M:    Jakub Kicinski <kuba@kernel.org>
  M:    Paolo Abeni <pabeni@redhat.com>
  L:    netdev@vger.kernel.org
@@@ -13816,10 -13824,11 +13824,11 @@@ F:        include/uapi/linux/nexthop.
  F:    net/ipv4/nexthop.c
  
  NFC SUBSYSTEM
- M:    Krzysztof Kozlowski <krzk@kernel.org>
+ M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  L:    linux-nfc@lists.01.org (subscribers-only)
  L:    netdev@vger.kernel.org
  S:    Maintained
+ B:    mailto:linux-nfc@lists.01.org
  F:    Documentation/devicetree/bindings/net/nfc/
  F:    drivers/nfc/
  F:    include/linux/platform_data/nfcmrvl.h
@@@ -14133,7 -14142,7 +14142,7 @@@ F:   Documentation/devicetree/bindings/re
  F:    drivers/regulator/pf8x00-regulator.c
  
  NXP PTN5150A CC LOGIC AND EXTCON DRIVER
- M:    Krzysztof Kozlowski <krzk@kernel.org>
+ M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/extcon/extcon-ptn5150.yaml
@@@ -14622,13 -14631,6 +14631,13 @@@ S: Maintaine
  T:    git git://linuxtv.org/media_tree.git
  F:    drivers/media/i2c/ov9734.c
  
 +ONBOARD USB HUB DRIVER
 +M:    Matthias Kaehlcke <mka@chromium.org>
 +L:    linux-usb@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-bus-platform-onboard-usb-hub
 +F:    drivers/usb/misc/onboard_usb_hub.c
 +
  ONENAND FLASH DRIVER
  M:    Kyungmin Park <kyungmin.park@samsung.com>
  L:    linux-mtd@lists.infradead.org
@@@ -14663,7 -14665,6 +14672,6 @@@ F:   drivers/rtc/rtc-optee.
  
  OPA-VNIC DRIVER
  M:    Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
- M:    Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
  L:    linux-rdma@vger.kernel.org
  S:    Supported
  F:    drivers/infiniband/ulp/opa_vnic
@@@ -14694,7 -14695,7 +14702,7 @@@ F:   scripts/dtc
  
  OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS
  M:    Rob Herring <robh+dt@kernel.org>
- M:    Krzysztof Kozlowski <krzk+dt@kernel.org>
+ M:    Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
  L:    devicetree@vger.kernel.org
  S:    Maintained
  C:    irc://irc.libera.chat/devicetree
@@@ -15606,7 -15607,7 +15614,7 @@@ F:   drivers/pinctrl/renesas
  
  PIN CONTROLLER - SAMSUNG
  M:    Tomasz Figa <tomasz.figa@gmail.com>
- M:    Krzysztof Kozlowski <krzk@kernel.org>
+ M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
  R:    Alim Akhtar <alim.akhtar@samsung.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -15614,6 -15615,7 +15622,7 @@@ L:   linux-samsung-soc@vger.kernel.or
  S:    Maintained
  C:    irc://irc.libera.chat/linux-exynos
  Q:    https://patchwork.kernel.org/project/linux-samsung-soc/list/
+ B:    mailto:linux-samsung-soc@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/samsung.git
  F:    Documentation/devicetree/bindings/pinctrl/samsung,pinctrl*yaml
  F:    drivers/pinctrl/samsung/
@@@ -16105,7 -16107,6 +16114,6 @@@ F:   include/uapi/linux/qemu_fw_cfg.
  
  QIB DRIVER
  M:    Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
- M:    Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
  L:    linux-rdma@vger.kernel.org
  S:    Supported
  F:    drivers/infiniband/hw/qib/
@@@ -16623,7 -16624,6 +16631,6 @@@ F:   drivers/net/ethernet/rdc/r6040.
  
  RDMAVT - RDMA verbs software
  M:    Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
- M:    Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
  L:    linux-rdma@vger.kernel.org
  S:    Supported
  F:    drivers/infiniband/sw/rdmavt
@@@ -17018,8 -17018,7 +17025,7 @@@ S:   Odd Fixe
  F:    drivers/tty/serial/rp2.*
  
  ROHM BD99954 CHARGER IC
- R:    Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
- L:    linux-power@fi.rohmeurope.com
+ R:    Matti Vaittinen <mazziesaccount@gmail.com>
  S:    Supported
  F:    drivers/power/supply/bd99954-charger.c
  F:    drivers/power/supply/bd99954-charger.h
@@@ -17042,8 -17041,7 +17048,7 @@@ F:   drivers/regulator/bd9571mwv-regulato
  F:    include/linux/mfd/bd9571mwv.h
  
  ROHM POWER MANAGEMENT IC DEVICE DRIVERS
- R:    Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
- L:    linux-power@fi.rohmeurope.com
+ R:    Matti Vaittinen <mazziesaccount@gmail.com>
  S:    Supported
  F:    drivers/clk/clk-bd718x7.c
  F:    drivers/gpio/gpio-bd71815.c
@@@ -17285,7 -17283,7 +17290,7 @@@ W:   http://www.ibm.com/developerworks/li
  F:    drivers/s390/scsi/zfcp_*
  
  S3C ADC BATTERY DRIVER
- M:    Krzysztof Kozlowski <krzk@kernel.org>
+ M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  L:    linux-samsung-soc@vger.kernel.org
  S:    Odd Fixes
  F:    drivers/power/supply/s3c_adc_battery.c
@@@ -17330,15 -17328,16 +17335,16 @@@ F:        Documentation/admin-guide/LSM/SafeSe
  F:    security/safesetid/
  
  SAMSUNG AUDIO (ASoC) DRIVERS
- M:    Krzysztof Kozlowski <krzk@kernel.org>
+ M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Supported
+ B:    mailto:linux-samsung-soc@vger.kernel.org
  F:    Documentation/devicetree/bindings/sound/samsung*
  F:    sound/soc/samsung/
  
  SAMSUNG EXYNOS PSEUDO RANDOM NUMBER GENERATOR (RNG) DRIVER
- M:    Krzysztof Kozlowski <krzk@kernel.org>
+ M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  L:    linux-crypto@vger.kernel.org
  L:    linux-samsung-soc@vger.kernel.org
  S:    Maintained
@@@ -17373,11 -17372,12 +17379,12 @@@ S:        Maintaine
  F:    drivers/platform/x86/samsung-laptop.c
  
  SAMSUNG MULTIFUNCTION PMIC DEVICE DRIVERS
- M:    Krzysztof Kozlowski <krzk@kernel.org>
+ M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  M:    Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
  L:    linux-kernel@vger.kernel.org
  L:    linux-samsung-soc@vger.kernel.org
  S:    Supported
+ B:    mailto:linux-samsung-soc@vger.kernel.org
  F:    Documentation/devicetree/bindings/clock/samsung,s2mps11.yaml
  F:    Documentation/devicetree/bindings/mfd/samsung,s2m*.yaml
  F:    Documentation/devicetree/bindings/mfd/samsung,s5m*.yaml
@@@ -17399,7 -17399,7 +17406,7 @@@ F:   drivers/media/platform/samsung/s3c-c
  F:    include/media/drv-intf/s3c_camif.h
  
  SAMSUNG S3FWRN5 NFC DRIVER
- M:    Krzysztof Kozlowski <krzk@kernel.org>
+ M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  M:    Krzysztof Opasiak <k.opasiak@samsung.com>
  L:    linux-nfc@lists.01.org (subscribers-only)
  S:    Maintained
@@@ -17421,7 -17421,7 +17428,7 @@@ S:   Supporte
  F:    drivers/media/i2c/s5k5baf.c
  
  SAMSUNG S5P Security SubSystem (SSS) DRIVER
- M:    Krzysztof Kozlowski <krzk@kernel.org>
+ M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  M:    Vladimir Zapolskiy <vz@mleia.com>
  L:    linux-crypto@vger.kernel.org
  L:    linux-samsung-soc@vger.kernel.org
@@@ -17456,7 -17456,7 +17463,7 @@@ F:   include/linux/clk/samsung.
  F:    include/linux/platform_data/clk-s3c2410.h
  
  SAMSUNG SPI DRIVERS
- M:    Krzysztof Kozlowski <krzk@kernel.org>
+ M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  M:    Andi Shyti <andi@etezian.org>
  L:    linux-spi@vger.kernel.org
  L:    linux-samsung-soc@vger.kernel.org
@@@ -17474,7 -17474,7 +17481,7 @@@ F:   drivers/net/ethernet/samsung/sxgbe
  
  SAMSUNG THERMAL DRIVER
  M:    Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
- M:    Krzysztof Kozlowski <krzk@kernel.org>
+ M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  L:    linux-pm@vger.kernel.org
  L:    linux-samsung-soc@vger.kernel.org
  S:    Maintained
@@@ -17658,8 -17658,8 +17665,8 @@@ K:   \bTIF_SECCOMP\
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) Broadcom BRCMSTB DRIVER
  M:    Al Cooper <alcooperx@gmail.com>
+ R:    Broadcom Kernel Team <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-mmc@vger.kernel.org
- L:    bcm-kernel-feedback-list@broadcom.com
  S:    Maintained
  F:    drivers/mmc/host/sdhci-brcmstb*
  
@@@ -21125,7 -21125,7 +21132,7 @@@ F:   include/linux/regulator
  K:    regulator_get_optional
  
  VOLTAGE AND CURRENT REGULATOR IRQ HELPERS
- R:    Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
+ R:    Matti Vaittinen <mazziesaccount@gmail.com>
  F:    drivers/regulator/irq_helpers.c
  
  VRF
@@@ -21238,10 -21238,8 +21245,8 @@@ S:  Maintaine
  F:    drivers/hid/hid-wiimote*
  
  WILOCITY WIL6210 WIRELESS DRIVER
- M:    Maya Erez <merez@codeaurora.org>
  L:    linux-wireless@vger.kernel.org
- L:    wil6210@qti.qualcomm.com
- S:    Supported
+ S:    Orphan
  W:    https://wireless.wiki.kernel.org/en/users/Drivers/wil6210
  F:    drivers/net/wireless/ath/wil6210/
  
@@@ -21445,6 -21443,15 +21450,15 @@@ F: arch/x86/include/asm/uv
  F:    arch/x86/kernel/apic/x2apic_uv_x.c
  F:    arch/x86/platform/uv/
  
+ X86 STACK UNWINDING
+ M:    Josh Poimboeuf <jpoimboe@redhat.com>
+ M:    Peter Zijlstra <peterz@infradead.org>
+ S:    Supported
+ F:    arch/x86/include/asm/unwind*.h
+ F:    arch/x86/kernel/dumpstack.c
+ F:    arch/x86/kernel/stacktrace.c
+ F:    arch/x86/kernel/unwind_*.c
  X86 VDSO
  M:    Andy Lutomirski <luto@kernel.org>
  L:    linux-kernel@vger.kernel.org
@@@ -21607,7 -21614,6 +21621,6 @@@ F:   drivers/xen/*swiotlb
  XFS FILESYSTEM
  C:    irc://irc.oftc.net/xfs
  M:    Darrick J. Wong <djwong@kernel.org>
- M:    linux-xfs@vger.kernel.org
  L:    linux-xfs@vger.kernel.org
  S:    Supported
  W:    http://xfs.org/
diff --combined drivers/usb/dwc3/core.c
@@@ -23,7 -23,6 +23,7 @@@
  #include <linux/delay.h>
  #include <linux/dma-mapping.h>
  #include <linux/of.h>
 +#include <linux/of_graph.h>
  #include <linux/acpi.h>
  #include <linux/pinctrl/consumer.h>
  #include <linux/reset.h>
@@@ -86,7 -85,7 +86,7 @@@ static int dwc3_get_dr_mode(struct dwc
                 * mode. If the controller supports DRD but the dr_mode is not
                 * specified or set to OTG, then set the mode to peripheral.
                 */
 -              if (mode == USB_DR_MODE_OTG &&
 +              if (mode == USB_DR_MODE_OTG && !dwc->edev &&
                    (!IS_ENABLED(CONFIG_USB_ROLE_SWITCH) ||
                     !device_property_read_bool(dwc->dev, "usb-role-switch")) &&
                    !DWC3_VER_IS_PRIOR(DWC3, 330A))
@@@ -275,7 -274,8 +275,8 @@@ int dwc3_core_soft_reset(struct dwc3 *d
  
        reg = dwc3_readl(dwc->regs, DWC3_DCTL);
        reg |= DWC3_DCTL_CSFTRST;
-       dwc3_writel(dwc->regs, DWC3_DCTL, reg);
+       reg &= ~DWC3_DCTL_RUN_STOP;
+       dwc3_gadget_dctl_write_safe(dwc, reg);
  
        /*
         * For DWC_usb31 controller 1.90a and later, the DCTL.CSFRST bit
@@@ -342,6 -342,7 +343,6 @@@ static void dwc3_frame_length_adjustmen
   *            from the default, this will set clock period in DWC3_GUCTL
   *            register.
   * @dwc: Pointer to our controller context structure
 - * @ref_clk_per: reference clock period in ns
   */
  static void dwc3_ref_clk_period(struct dwc3 *dwc)
  {
@@@ -1377,10 -1378,10 +1378,10 @@@ static void dwc3_get_properties(struct 
        u8                      lpm_nyet_threshold;
        u8                      tx_de_emphasis;
        u8                      hird_threshold;
-       u8                      rx_thr_num_pkt_prd;
-       u8                      rx_max_burst_prd;
-       u8                      tx_thr_num_pkt_prd;
-       u8                      tx_max_burst_prd;
+       u8                      rx_thr_num_pkt_prd = 0;
+       u8                      rx_max_burst_prd = 0;
+       u8                      tx_thr_num_pkt_prd = 0;
+       u8                      tx_max_burst_prd = 0;
        u8                      tx_fifo_resize_max_num;
        const char              *usb_psy_name;
        int                     ret;
@@@ -1632,51 -1633,6 +1633,51 @@@ static void dwc3_check_params(struct dw
        }
  }
  
 +static struct extcon_dev *dwc3_get_extcon(struct dwc3 *dwc)
 +{
 +      struct device *dev = dwc->dev;
 +      struct device_node *np_phy;
 +      struct extcon_dev *edev = NULL;
 +      const char *name;
 +
 +      if (device_property_read_bool(dev, "extcon"))
 +              return extcon_get_edev_by_phandle(dev, 0);
 +
 +      /*
 +       * Device tree platforms should get extcon via phandle.
 +       * On ACPI platforms, we get the name from a device property.
 +       * This device property is for kernel internal use only and
 +       * is expected to be set by the glue code.
 +       */
 +      if (device_property_read_string(dev, "linux,extcon-name", &name) == 0) {
 +              edev = extcon_get_extcon_dev(name);
 +              if (!edev)
 +                      return ERR_PTR(-EPROBE_DEFER);
 +
 +              return edev;
 +      }
 +
 +      /*
 +       * Try to get an extcon device from the USB PHY controller's "port"
 +       * node. Check if it has the "port" node first, to avoid printing the
 +       * error message from underlying code, as it's a valid case: extcon
 +       * device (and "port" node) may be missing in case of "usb-role-switch"
 +       * or OTG mode.
 +       */
 +      np_phy = of_parse_phandle(dev->of_node, "phys", 0);
 +      if (of_graph_is_present(np_phy)) {
 +              struct device_node *np_conn;
 +
 +              np_conn = of_graph_get_remote_node(np_phy, -1, -1);
 +              if (np_conn)
 +                      edev = extcon_find_edev_by_node(np_conn);
 +              of_node_put(np_conn);
 +      }
 +      of_node_put(np_phy);
 +
 +      return edev;
 +}
 +
  static int dwc3_probe(struct platform_device *pdev)
  {
        struct device           *dev = &pdev->dev;
                /*
                 * Clocks are optional, but new DT platforms should support all
                 * clocks as required by the DT-binding.
+                * Some devices have different clock names in legacy device trees,
+                * check for them to retain backwards compatibility.
                 */
                dwc->bus_clk = devm_clk_get_optional(dev, "bus_early");
                if (IS_ERR(dwc->bus_clk))
                        return dev_err_probe(dev, PTR_ERR(dwc->bus_clk),
                                             "could not get bus clock\n");
  
+               if (dwc->bus_clk == NULL) {
+                       dwc->bus_clk = devm_clk_get_optional(dev, "bus_clk");
+                       if (IS_ERR(dwc->bus_clk))
+                               return dev_err_probe(dev, PTR_ERR(dwc->bus_clk),
+                                                    "could not get bus clock\n");
+               }
                dwc->ref_clk = devm_clk_get_optional(dev, "ref");
                if (IS_ERR(dwc->ref_clk))
                        return dev_err_probe(dev, PTR_ERR(dwc->ref_clk),
                                             "could not get ref clock\n");
  
+               if (dwc->ref_clk == NULL) {
+                       dwc->ref_clk = devm_clk_get_optional(dev, "ref_clk");
+                       if (IS_ERR(dwc->ref_clk))
+                               return dev_err_probe(dev, PTR_ERR(dwc->ref_clk),
+                                                    "could not get ref clock\n");
+               }
                dwc->susp_clk = devm_clk_get_optional(dev, "suspend");
                if (IS_ERR(dwc->susp_clk))
                        return dev_err_probe(dev, PTR_ERR(dwc->susp_clk),
                                             "could not get suspend clock\n");
+               if (dwc->susp_clk == NULL) {
+                       dwc->susp_clk = devm_clk_get_optional(dev, "suspend_clk");
+                       if (IS_ERR(dwc->susp_clk))
+                               return dev_err_probe(dev, PTR_ERR(dwc->susp_clk),
+                                                    "could not get suspend clock\n");
+               }
        }
  
        ret = reset_control_deassert(dwc->reset);
                goto err2;
        }
  
 +      dwc->edev = dwc3_get_extcon(dwc);
 +      if (IS_ERR(dwc->edev)) {
 +              ret = PTR_ERR(dwc->edev);
 +              dev_err_probe(dwc->dev, ret, "failed to get extcon\n");
 +              goto err3;
 +      }
 +
        ret = dwc3_get_dr_mode(dwc);
        if (ret)
                goto err3;
diff --combined drivers/usb/dwc3/drd.c
@@@ -8,6 -8,7 +8,6 @@@
   */
  
  #include <linux/extcon.h>
 -#include <linux/of_graph.h>
  #include <linux/of_platform.h>
  #include <linux/platform_device.h>
  #include <linux/property.h>
@@@ -438,6 -439,51 +438,6 @@@ static int dwc3_drd_notifier(struct not
        return NOTIFY_DONE;
  }
  
 -static struct extcon_dev *dwc3_get_extcon(struct dwc3 *dwc)
 -{
 -      struct device *dev = dwc->dev;
 -      struct device_node *np_phy;
 -      struct extcon_dev *edev = NULL;
 -      const char *name;
 -
 -      if (device_property_read_bool(dev, "extcon"))
 -              return extcon_get_edev_by_phandle(dev, 0);
 -
 -      /*
 -       * Device tree platforms should get extcon via phandle.
 -       * On ACPI platforms, we get the name from a device property.
 -       * This device property is for kernel internal use only and
 -       * is expected to be set by the glue code.
 -       */
 -      if (device_property_read_string(dev, "linux,extcon-name", &name) == 0) {
 -              edev = extcon_get_extcon_dev(name);
 -              if (!edev)
 -                      return ERR_PTR(-EPROBE_DEFER);
 -
 -              return edev;
 -      }
 -
 -      /*
 -       * Try to get an extcon device from the USB PHY controller's "port"
 -       * node. Check if it has the "port" node first, to avoid printing the
 -       * error message from underlying code, as it's a valid case: extcon
 -       * device (and "port" node) may be missing in case of "usb-role-switch"
 -       * or OTG mode.
 -       */
 -      np_phy = of_parse_phandle(dev->of_node, "phys", 0);
 -      if (of_graph_is_present(np_phy)) {
 -              struct device_node *np_conn;
 -
 -              np_conn = of_graph_get_remote_node(np_phy, -1, -1);
 -              if (np_conn)
 -                      edev = extcon_find_edev_by_node(np_conn);
 -              of_node_put(np_conn);
 -      }
 -      of_node_put(np_phy);
 -
 -      return edev;
 -}
 -
  #if IS_ENABLED(CONFIG_USB_ROLE_SWITCH)
  #define ROLE_SWITCH 1
  static int dwc3_usb_role_switch_set(struct usb_role_switch *sw,
@@@ -539,11 -585,14 +539,10 @@@ int dwc3_drd_init(struct dwc3 *dwc
        int ret, irq;
  
        if (ROLE_SWITCH &&
-           device_property_read_bool(dwc->dev, "usb-role-switch")) {
-               ret = dwc3_setup_role_switch(dwc);
-               if (ret < 0)
-                       return ret;
-       } else if (dwc->edev) {
+           device_property_read_bool(dwc->dev, "usb-role-switch"))
+               return dwc3_setup_role_switch(dwc);
 -      dwc->edev = dwc3_get_extcon(dwc);
 -      if (IS_ERR(dwc->edev))
 -              return PTR_ERR(dwc->edev);
 -
+       if (dwc->edev) {
                dwc->edev_nb.notifier_call = dwc3_drd_notifier;
                ret = extcon_register_notifier(dwc->edev, EXTCON_USB_HOST,
                                               &dwc->edev_nb);
@@@ -45,6 -45,8 +45,8 @@@
  #define PCI_DEVICE_ID_INTEL_ADLM              0x54ee
  #define PCI_DEVICE_ID_INTEL_ADLS              0x7ae1
  #define PCI_DEVICE_ID_INTEL_RPLS              0x7a61
+ #define PCI_DEVICE_ID_INTEL_MTLP              0x7ec1
+ #define PCI_DEVICE_ID_INTEL_MTL                       0x7e7e
  #define PCI_DEVICE_ID_INTEL_TGL                       0x9a15
  #define PCI_DEVICE_ID_AMD_MR                  0x163a
  
@@@ -286,7 -288,7 +288,7 @@@ static void dwc3_pci_resume_work(struc
        int ret;
  
        ret = pm_runtime_get_sync(&dwc3->dev);
 -      if (ret) {
 +      if (ret < 0) {
                pm_runtime_put_sync_autosuspend(&dwc3->dev);
                return;
        }
@@@ -456,6 -458,12 +458,12 @@@ static const struct pci_device_id dwc3_
        { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_RPLS),
          (kernel_ulong_t) &dwc3_pci_intel_swnode, },
  
+       { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_MTLP),
+         (kernel_ulong_t) &dwc3_pci_intel_swnode, },
+       { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_MTL),
+         (kernel_ulong_t) &dwc3_pci_intel_swnode, },
        { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_TGL),
          (kernel_ulong_t) &dwc3_pci_intel_swnode, },
  
@@@ -657,6 -657,7 +657,6 @@@ static int dwc3_gadget_set_ep_config(st
  /**
   * dwc3_gadget_calc_tx_fifo_size - calculates the txfifo size value
   * @dwc: pointer to the DWC3 context
 - * @nfifos: number of fifos to calculate for
   *
   * Calculates the size value based on the equation below:
   *
@@@ -689,7 -690,7 +689,7 @@@ static int dwc3_gadget_calc_tx_fifo_siz
  }
  
  /**
 - * dwc3_gadget_clear_tx_fifo_size - Clears txfifo allocation
 + * dwc3_gadget_clear_tx_fifos - Clears txfifo allocation
   * @dwc: pointer to the DWC3 context
   *
   * Iterates through all the endpoint registers and clears the previous txfifo
@@@ -782,8 -783,7 +782,8 @@@ static int dwc3_gadget_resize_tx_fifos(
                num_fifos = 3;
  
        if (dep->endpoint.maxburst > 6 &&
 -          usb_endpoint_xfer_bulk(dep->endpoint.desc) && DWC3_IP_IS(DWC31))
 +          (usb_endpoint_xfer_bulk(dep->endpoint.desc) ||
 +           usb_endpoint_xfer_isoc(dep->endpoint.desc)) && DWC3_IP_IS(DWC31))
                num_fifos = dwc->tx_fifo_resize_max_num;
  
        /* FIFO size for a single buffer */
@@@ -2001,10 -2001,10 +2001,10 @@@ static void dwc3_gadget_ep_skip_trbs(st
  static void dwc3_gadget_ep_cleanup_cancelled_requests(struct dwc3_ep *dep)
  {
        struct dwc3_request             *req;
 -      struct dwc3_request             *tmp;
        struct dwc3                     *dwc = dep->dwc;
  
 -      list_for_each_entry_safe(req, tmp, &dep->cancelled_list, list) {
 +      while (!list_empty(&dep->cancelled_list)) {
 +              req = next_request(&dep->cancelled_list);
                dwc3_gadget_ep_skip_trbs(dep, req);
                switch (req->status) {
                case DWC3_REQUEST_STATUS_DISCONNECTED:
                        dwc3_gadget_giveback(dep, req, -ECONNRESET);
                        break;
                }
 +              /*
 +               * The endpoint is disabled, let the dwc3_remove_requests()
 +               * handle the cleanup.
 +               */
 +              if (!dep->endpoint.desc)
 +                      break;
        }
  }
  
@@@ -2158,9 -2152,6 +2158,9 @@@ int __dwc3_gadget_ep_set_halt(struct dw
                if (dep->flags & DWC3_EP_END_TRANSFER_PENDING ||
                    (dep->flags & DWC3_EP_DELAY_STOP)) {
                        dep->flags |= DWC3_EP_PENDING_CLEAR_STALL;
 +                      if (protocol)
 +                              dwc->clear_stall_protocol = dep->number;
 +
                        return 0;
                }
  
@@@ -3283,6 -3274,7 +3283,7 @@@ static int dwc3_gadget_ep_cleanup_compl
                const struct dwc3_event_depevt *event,
                struct dwc3_request *req, int status)
  {
+       int request_status;
        int ret;
  
        if (req->request.num_mapped_sgs)
                req->needs_extra_trb = false;
        }
  
-       dwc3_gadget_giveback(dep, req, status);
+       /*
+        * The event status only reflects the status of the TRB with IOC set.
+        * For the requests that don't set interrupt on completion, the driver
+        * needs to check and return the status of the completed TRBs associated
+        * with the request. Use the status of the last TRB of the request.
+        */
+       if (req->request.no_interrupt) {
+               struct dwc3_trb *trb;
+               trb = dwc3_ep_prev_trb(dep, dep->trb_dequeue);
+               switch (DWC3_TRB_SIZE_TRBSTS(trb->size)) {
+               case DWC3_TRBSTS_MISSED_ISOC:
+                       /* Isoc endpoint only */
+                       request_status = -EXDEV;
+                       break;
+               case DWC3_TRB_STS_XFER_IN_PROG:
+                       /* Applicable when End Transfer with ForceRM=0 */
+               case DWC3_TRBSTS_SETUP_PENDING:
+                       /* Control endpoint only */
+               case DWC3_TRBSTS_OK:
+               default:
+                       request_status = 0;
+                       break;
+               }
+       } else {
+               request_status = status;
+       }
+       dwc3_gadget_giveback(dep, req, request_status);
  
  out:
        return ret;
@@@ -3313,21 -3333,15 +3342,21 @@@ static void dwc3_gadget_ep_cleanup_comp
                const struct dwc3_event_depevt *event, int status)
  {
        struct dwc3_request     *req;
 -      struct dwc3_request     *tmp;
  
 -      list_for_each_entry_safe(req, tmp, &dep->started_list, list) {
 +      while (!list_empty(&dep->started_list)) {
                int ret;
  
 +              req = next_request(&dep->started_list);
                ret = dwc3_gadget_ep_cleanup_completed_request(dep, event,
                                req, status);
                if (ret)
                        break;
 +              /*
 +               * The endpoint is disabled, let the dwc3_remove_requests()
 +               * handle the cleanup.
 +               */
 +              if (!dep->endpoint.desc)
 +                      break;
        }
  }
  
@@@ -3498,7 -3512,7 +3527,7 @@@ static void dwc3_gadget_endpoint_comman
                }
  
                dep->flags &= ~(DWC3_EP_STALL | DWC3_EP_WEDGE);
 -              if (dwc->delayed_status)
 +              if (dwc->clear_stall_protocol == dep->number)
                        dwc3_ep0_send_delayed_status(dwc);
        }
  
@@@ -284,7 -284,7 +284,7 @@@ static ssize_t gadget_dev_desc_UDC_stor
                        goto err;
                }
                gi->composite.gadget_driver.udc_name = name;
 -              ret = usb_gadget_probe_driver(&gi->composite.gadget_driver);
 +              ret = usb_gadget_register_driver(&gi->composite.gadget_driver);
                if (ret) {
                        gi->composite.gadget_driver.udc_name = NULL;
                        goto err;
@@@ -1438,6 -1438,8 +1438,8 @@@ static void configfs_composite_unbind(s
        usb_ep_autoconfig_reset(cdev->gadget);
        spin_lock_irqsave(&gi->spinlock, flags);
        cdev->gadget = NULL;
+       cdev->deactivations = 0;
+       gadget->deactivated = false;
        set_gadget_data(gadget, NULL);
        spin_unlock_irqrestore(&gi->spinlock, flags);
  }
@@@ -185,7 -185,18 +185,7 @@@ int uvcg_query_buffer(struct uvc_video_
  
  int uvcg_queue_buffer(struct uvc_video_queue *queue, struct v4l2_buffer *buf)
  {
 -      unsigned long flags;
 -      int ret;
 -
 -      ret = vb2_qbuf(&queue->queue, NULL, buf);
 -      if (ret < 0)
 -              return ret;
 -
 -      spin_lock_irqsave(&queue->irqlock, flags);
 -      ret = (queue->flags & UVC_QUEUE_PAUSED) != 0;
 -      queue->flags &= ~UVC_QUEUE_PAUSED;
 -      spin_unlock_irqrestore(&queue->irqlock, flags);
 -      return ret;
 +      return vb2_qbuf(&queue->queue, NULL, buf);
  }
  
  /*
@@@ -253,6 -264,8 +253,8 @@@ void uvcg_queue_cancel(struct uvc_video
                buf->state = UVC_BUF_STATE_ERROR;
                vb2_buffer_done(&buf->buf.vb2_buf, VB2_BUF_STATE_ERROR);
        }
+       queue->buf_used = 0;
        /* This must be protected by the irqlock spinlock to avoid race
         * conditions between uvc_queue_buffer and the disconnection event that
         * could result in an interruptible wait in uvc_dequeue_buffer. Do not
@@@ -315,22 -328,33 +317,22 @@@ int uvcg_queue_enable(struct uvc_video_
  }
  
  /* called with &queue_irqlock held.. */
 -struct uvc_buffer *uvcg_queue_next_buffer(struct uvc_video_queue *queue,
 +void uvcg_complete_buffer(struct uvc_video_queue *queue,
                                          struct uvc_buffer *buf)
  {
 -      struct uvc_buffer *nextbuf;
 -
        if ((queue->flags & UVC_QUEUE_DROP_INCOMPLETE) &&
             buf->length != buf->bytesused) {
                buf->state = UVC_BUF_STATE_QUEUED;
                vb2_set_plane_payload(&buf->buf.vb2_buf, 0, 0);
 -              return buf;
 +              return;
        }
  
 -      list_del(&buf->queue);
 -      if (!list_empty(&queue->irqqueue))
 -              nextbuf = list_first_entry(&queue->irqqueue, struct uvc_buffer,
 -                                         queue);
 -      else
 -              nextbuf = NULL;
 -
        buf->buf.field = V4L2_FIELD_NONE;
        buf->buf.sequence = queue->sequence++;
        buf->buf.vb2_buf.timestamp = ktime_get_ns();
  
        vb2_set_plane_payload(&buf->buf.vb2_buf, 0, buf->bytesused);
        vb2_buffer_done(&buf->buf.vb2_buf, VB2_BUF_STATE_DONE);
 -
 -      return nextbuf;
  }
  
  struct uvc_buffer *uvcg_queue_head(struct uvc_video_queue *queue)
        if (!list_empty(&queue->irqqueue))
                buf = list_first_entry(&queue->irqqueue, struct uvc_buffer,
                                       queue);
 -      else
 -              queue->flags |= UVC_QUEUE_PAUSED;
  
        return buf;
  }
@@@ -949,6 -949,8 +949,8 @@@ static int ucsi_dr_swap(struct typec_po
             role == TYPEC_HOST))
                goto out_unlock;
  
+       reinit_completion(&con->complete);
        command = UCSI_SET_UOR | UCSI_CONNECTOR_NUMBER(con->num);
        command |= UCSI_SET_UOR_ROLE(role);
        command |= UCSI_SET_UOR_ACCEPT_ROLE_SWAPS;
        if (ret < 0)
                goto out_unlock;
  
+       mutex_unlock(&con->lock);
        if (!wait_for_completion_timeout(&con->complete,
-                                       msecs_to_jiffies(UCSI_SWAP_TIMEOUT_MS)))
-               ret = -ETIMEDOUT;
+                                        msecs_to_jiffies(UCSI_SWAP_TIMEOUT_MS)))
+               return -ETIMEDOUT;
+       return 0;
  
  out_unlock:
        mutex_unlock(&con->lock);
  
-       return ret < 0 ? ret : 0;
+       return ret;
  }
  
  static int ucsi_pr_swap(struct typec_port *port, enum typec_role role)
        if (cur_role == role)
                goto out_unlock;
  
+       reinit_completion(&con->complete);
        command = UCSI_SET_PDR | UCSI_CONNECTOR_NUMBER(con->num);
        command |= UCSI_SET_PDR_ROLE(role);
        command |= UCSI_SET_PDR_ACCEPT_ROLE_SWAPS;
        if (ret < 0)
                goto out_unlock;
  
+       mutex_unlock(&con->lock);
        if (!wait_for_completion_timeout(&con->complete,
-                               msecs_to_jiffies(UCSI_SWAP_TIMEOUT_MS))) {
-               ret = -ETIMEDOUT;
-               goto out_unlock;
-       }
+                                        msecs_to_jiffies(UCSI_SWAP_TIMEOUT_MS)))
+               return -ETIMEDOUT;
+       mutex_lock(&con->lock);
  
        /* Something has gone wrong while swapping the role */
        if (UCSI_CONSTAT_PWR_OPMODE(con->status.flags) !=
@@@ -1053,14 -1063,6 +1063,14 @@@ static int ucsi_register_port(struct uc
        con->num = index + 1;
        con->ucsi = ucsi;
  
 +      cap->fwnode = ucsi_find_fwnode(con);
 +      con->usb_role_sw = fwnode_usb_role_switch_get(cap->fwnode);
 +      if (IS_ERR(con->usb_role_sw)) {
 +              dev_err(ucsi->dev, "con%d: failed to get usb role switch\n",
 +                      con->num);
 +              return PTR_ERR(con->usb_role_sw);
 +      }
 +
        /* Delay other interactions with the con until registration is complete */
        mutex_lock(&con->lock);
  
        if (con->cap.op_mode & UCSI_CONCAP_OPMODE_DEBUG_ACCESSORY)
                *accessory = TYPEC_ACCESSORY_DEBUG;
  
 -      cap->fwnode = ucsi_find_fwnode(con);
        cap->driver_data = con;
        cap->ops = &ucsi_ops;
  
                ucsi_port_psy_changed(con);
        }
  
 -      con->usb_role_sw = fwnode_usb_role_switch_get(cap->fwnode);
 -      if (IS_ERR(con->usb_role_sw)) {
 -              dev_err(ucsi->dev, "con%d: failed to get usb role switch\n",
 -                      con->num);
 -              con->usb_role_sw = NULL;
 -      }
 -
        /* Only notify USB controller if partner supports USB data */
        if (!(UCSI_CONSTAT_PARTNER_FLAGS(con->status.flags) & UCSI_CONSTAT_PARTNER_FLAG_USB))
                u_role = USB_ROLE_NONE;
@@@ -1186,32 -1196,6 +1196,32 @@@ out_unlock
        return ret;
  }
  
 +static void ucsi_unregister_connectors(struct ucsi *ucsi)
 +{
 +      struct ucsi_connector *con;
 +      int i;
 +
 +      if (!ucsi->connector)
 +              return;
 +
 +      for (i = 0; i < ucsi->cap.num_connectors; i++) {
 +              con = &ucsi->connector[i];
 +
 +              if (!con->wq)
 +                      break;
 +
 +              cancel_work_sync(&con->work);
 +              ucsi_unregister_partner(con);
 +              ucsi_unregister_altmodes(con, UCSI_RECIPIENT_CON);
 +              ucsi_unregister_port_psy(con);
 +              destroy_workqueue(con->wq);
 +              typec_unregister_port(con->port);
 +      }
 +
 +      kfree(ucsi->connector);
 +      ucsi->connector = NULL;
 +}
 +
  /**
   * ucsi_init - Initialize UCSI interface
   * @ucsi: UCSI to be initialized
   */
  static int ucsi_init(struct ucsi *ucsi)
  {
 -      struct ucsi_connector *con;
        u64 command;
        int ret;
        int i;
        }
  
        /* Allocate the connectors. Released in ucsi_unregister() */
 -      ucsi->connector = kcalloc(ucsi->cap.num_connectors + 1,
 +      ucsi->connector = kcalloc(ucsi->cap.num_connectors,
                                  sizeof(*ucsi->connector), GFP_KERNEL);
        if (!ucsi->connector) {
                ret = -ENOMEM;
        return 0;
  
  err_unregister:
 -      for (con = ucsi->connector; con->port; con++) {
 -              ucsi_unregister_partner(con);
 -              ucsi_unregister_altmodes(con, UCSI_RECIPIENT_CON);
 -              ucsi_unregister_port_psy(con);
 -              if (con->wq)
 -                      destroy_workqueue(con->wq);
 -              typec_unregister_port(con->port);
 -              con->port = NULL;
 -      }
 +      ucsi_unregister_connectors(ucsi);
  
  err_reset:
        memset(&ucsi->cap, 0, sizeof(ucsi->cap));
  
  static void ucsi_init_work(struct work_struct *work)
  {
 -      struct ucsi *ucsi = container_of(work, struct ucsi, work);
 +      struct ucsi *ucsi = container_of(work, struct ucsi, work.work);
        int ret;
  
        ret = ucsi_init(ucsi);
        if (ret)
                dev_err(ucsi->dev, "PPM init failed (%d)\n", ret);
 +
 +      if (ret == -EPROBE_DEFER) {
 +              if (ucsi->work_count++ > UCSI_ROLE_SWITCH_WAIT_COUNT)
 +                      return;
 +
 +              queue_delayed_work(system_long_wq, &ucsi->work,
 +                                 UCSI_ROLE_SWITCH_INTERVAL);
 +      }
  }
  
  /**
@@@ -1338,7 -1323,7 +1348,7 @@@ struct ucsi *ucsi_create(struct device 
        if (!ucsi)
                return ERR_PTR(-ENOMEM);
  
 -      INIT_WORK(&ucsi->work, ucsi_init_work);
 +      INIT_DELAYED_WORK(&ucsi->work, ucsi_init_work);
        mutex_init(&ucsi->ppm_lock);
        ucsi->dev = dev;
        ucsi->ops = ops;
@@@ -1373,7 -1358,7 +1383,7 @@@ int ucsi_register(struct ucsi *ucsi
        if (!ucsi->version)
                return -ENODEV;
  
 -      queue_work(system_long_wq, &ucsi->work);
 +      queue_delayed_work(system_long_wq, &ucsi->work, 0);
  
        return 0;
  }
@@@ -1388,14 -1373,26 +1398,14 @@@ EXPORT_SYMBOL_GPL(ucsi_register)
  void ucsi_unregister(struct ucsi *ucsi)
  {
        u64 cmd = UCSI_SET_NOTIFICATION_ENABLE;
 -      int i;
  
        /* Make sure that we are not in the middle of driver initialization */
 -      cancel_work_sync(&ucsi->work);
 +      cancel_delayed_work_sync(&ucsi->work);
  
        /* Disable notifications */
        ucsi->ops->async_write(ucsi, UCSI_CONTROL, &cmd, sizeof(cmd));
  
 -      for (i = 0; i < ucsi->cap.num_connectors; i++) {
 -              cancel_work_sync(&ucsi->connector[i].work);
 -              ucsi_unregister_partner(&ucsi->connector[i]);
 -              ucsi_unregister_altmodes(&ucsi->connector[i],
 -                                       UCSI_RECIPIENT_CON);
 -              ucsi_unregister_port_psy(&ucsi->connector[i]);
 -              if (ucsi->connector[i].wq)
 -                      destroy_workqueue(ucsi->connector[i].wq);
 -              typec_unregister_port(ucsi->connector[i].port);
 -      }
 -
 -      kfree(ucsi->connector);
 +      ucsi_unregister_connectors(ucsi);
  }
  EXPORT_SYMBOL_GPL(ucsi_unregister);
  
diff --combined sound/usb/midi.c
@@@ -1194,6 -1194,7 +1194,7 @@@ static void snd_usbmidi_output_drain(st
                } while (drain_urbs && timeout);
                finish_wait(&ep->drain_wait, &wait);
        }
+       port->active = 0;
        spin_unlock_irq(&ep->buffer_lock);
  }
  
@@@ -1285,7 -1286,7 +1286,7 @@@ static int snd_usbmidi_in_endpoint_crea
                pipe = usb_rcvintpipe(umidi->dev, ep_info->in_ep);
        else
                pipe = usb_rcvbulkpipe(umidi->dev, ep_info->in_ep);
 -      length = usb_maxpacket(umidi->dev, pipe, 0);
 +      length = usb_maxpacket(umidi->dev, pipe);
        for (i = 0; i < INPUT_URBS; ++i) {
                buffer = usb_alloc_coherent(umidi->dev, length, GFP_KERNEL,
                                            &ep->urbs[i]->transfer_dma);
@@@ -1374,7 -1375,7 +1375,7 @@@ static int snd_usbmidi_out_endpoint_cre
                pipe = usb_sndbulkpipe(umidi->dev, ep_info->out_ep);
        switch (umidi->usb_id) {
        default:
 -              ep->max_transfer = usb_maxpacket(umidi->dev, pipe, 1);
 +              ep->max_transfer = usb_maxpacket(umidi->dev, pipe);
                break;
                /*
                 * Various chips declare a packet size larger than 4 bytes, but