From: Greg Kroah-Hartman Date: Sun, 28 Jun 2020 15:42:11 +0000 (+0200) Subject: 4.4-stable patches X-Git-Tag: v5.7.7~54 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=56444b67cf8e5d8e869dba8cd671bc5d58f559ed;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: alsa-usb-audio-add-quirk-for-denon-dcd-1500re.patch pci-disable-msi-for-hisilicon-hip06-hip07-root-ports.patch usb-add-usb_quirk_delay_init-for-logitech-c922.patch usb-dwc2-postponed-gadget-registration-to-the-udc-class-driver.patch usb-ehci-reopen-solution-for-synopsys-hc-bug.patch usb-host-ehci-exynos-fix-error-check-in-exynos_ehci_probe.patch usb-ohci-sm501-add-missed-iounmap-in-remove.patch --- diff --git a/queue-4.4/alsa-usb-audio-add-quirk-for-denon-dcd-1500re.patch b/queue-4.4/alsa-usb-audio-add-quirk-for-denon-dcd-1500re.patch new file mode 100644 index 00000000000..1c5bc646d0a --- /dev/null +++ b/queue-4.4/alsa-usb-audio-add-quirk-for-denon-dcd-1500re.patch @@ -0,0 +1,39 @@ +From c9808bbfed3cfc911ecb60fe8e80c0c27876c657 Mon Sep 17 00:00:00 2001 +From: "Yick W. Tse" +Date: Sat, 13 Jun 2020 11:40:06 +0000 +Subject: ALSA: usb-audio: add quirk for Denon DCD-1500RE + +From: Yick W. Tse + +commit c9808bbfed3cfc911ecb60fe8e80c0c27876c657 upstream. + +fix error "clock source 41 is not valid, cannot use" + +[] New USB device found, idVendor=154e, idProduct=1002, bcdDevice= 1.00 +[] New USB device strings: Mfr=1, Product=2, SerialNumber=0 +[] Product: DCD-1500RE +[] Manufacturer: D & M Holdings Inc. +[] +[] clock source 41 is not valid, cannot use +[] usbcore: registered new interface driver snd-usb-audio + +Signed-off-by: Yick W. Tse +Cc: +Link: https://lore.kernel.org/r/1373857985.210365.1592048406997@mail.yahoo.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/usb/quirks.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/usb/quirks.c ++++ b/sound/usb/quirks.c +@@ -1162,6 +1162,7 @@ bool snd_usb_get_sample_rate_quirk(struc + static bool is_marantz_denon_dac(unsigned int id) + { + switch (id) { ++ case USB_ID(0x154e, 0x1002): /* Denon DCD-1500RE */ + case USB_ID(0x154e, 0x1003): /* Denon DA-300USB */ + case USB_ID(0x154e, 0x3005): /* Marantz HD-DAC1 */ + case USB_ID(0x154e, 0x3006): /* Marantz SA-14S1 */ diff --git a/queue-4.4/pci-disable-msi-for-hisilicon-hip06-hip07-root-ports.patch b/queue-4.4/pci-disable-msi-for-hisilicon-hip06-hip07-root-ports.patch new file mode 100644 index 00000000000..e815ee21879 --- /dev/null +++ b/queue-4.4/pci-disable-msi-for-hisilicon-hip06-hip07-root-ports.patch @@ -0,0 +1,48 @@ +From 72f2ff0deb870145a5a2d24cd75b4f9936159a62 Mon Sep 17 00:00:00 2001 +From: Dongdong Liu +Date: Fri, 3 Feb 2017 15:02:07 -0600 +Subject: PCI: Disable MSI for HiSilicon Hip06/Hip07 Root Ports + +From: Dongdong Liu + +commit 72f2ff0deb870145a5a2d24cd75b4f9936159a62 upstream. + +The PCIe Root Port in Hip06/Hip07 SoCs advertises an MSI capability, but it +cannot generate MSIs. It can transfer MSI/MSI-X from downstream devices, +but does not support MSI/MSI-X itself. + +Add a quirk to prevent use of MSI/MSI-X by the Root Port. + +[bhelgaas: changelog, sort vendor ID #define, drop device ID #define] +Signed-off-by: Dongdong Liu +Signed-off-by: Bjorn Helgaas +Reviewed-by: Gabriele Paoloni +Reviewed-by: Zhou Wang +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/pci/quirks.c | 1 + + include/linux/pci_ids.h | 2 ++ + 2 files changed, 3 insertions(+) + +--- a/drivers/pci/quirks.c ++++ b/drivers/pci/quirks.c +@@ -1623,6 +1623,7 @@ static void quirk_pcie_mch(struct pci_de + DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7520_MCH, quirk_pcie_mch); + DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7320_MCH, quirk_pcie_mch); + DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7525_MCH, quirk_pcie_mch); ++DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_HUAWEI, 0x1610, quirk_pcie_mch); + + + /* +--- a/include/linux/pci_ids.h ++++ b/include/linux/pci_ids.h +@@ -2496,6 +2496,8 @@ + #define PCI_DEVICE_ID_KORENIX_JETCARDF2 0x1700 + #define PCI_DEVICE_ID_KORENIX_JETCARDF3 0x17ff + ++#define PCI_VENDOR_ID_HUAWEI 0x19e5 ++ + #define PCI_VENDOR_ID_NETRONOME 0x19ee + #define PCI_DEVICE_ID_NETRONOME_NFP3200 0x3200 + #define PCI_DEVICE_ID_NETRONOME_NFP3240 0x3240 diff --git a/queue-4.4/series b/queue-4.4/series index afd327745d9..7b56748c71d 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -91,3 +91,10 @@ net-fix-the-arp-error-in-some-cases.patch net-do-not-clear-the-sock-tx-queue-in-sk_set_socket.patch net-core-reduce-recursion-limit-value.patch mld-fix-memory-leak-in-ipv6_mc_destroy_dev.patch +usb-ohci-sm501-add-missed-iounmap-in-remove.patch +usb-dwc2-postponed-gadget-registration-to-the-udc-class-driver.patch +usb-add-usb_quirk_delay_init-for-logitech-c922.patch +pci-disable-msi-for-hisilicon-hip06-hip07-root-ports.patch +usb-ehci-reopen-solution-for-synopsys-hc-bug.patch +usb-host-ehci-exynos-fix-error-check-in-exynos_ehci_probe.patch +alsa-usb-audio-add-quirk-for-denon-dcd-1500re.patch diff --git a/queue-4.4/usb-add-usb_quirk_delay_init-for-logitech-c922.patch b/queue-4.4/usb-add-usb_quirk_delay_init-for-logitech-c922.patch new file mode 100644 index 00000000000..ecdd71311e7 --- /dev/null +++ b/queue-4.4/usb-add-usb_quirk_delay_init-for-logitech-c922.patch @@ -0,0 +1,41 @@ +From 5d8021923e8a8cc37a421a64e27c7221f0fee33c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tomasz=20Meresi=C5=84ski?= +Date: Wed, 3 Jun 2020 22:33:46 +0200 +Subject: usb: add USB_QUIRK_DELAY_INIT for Logitech C922 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Tomasz Meresiński + +commit 5d8021923e8a8cc37a421a64e27c7221f0fee33c upstream. + +The Logitech C922, just like other Logitech webcams, +needs the USB_QUIRK_DELAY_INIT or it will randomly +not respond after device connection + +Signed-off-by: Tomasz Meresiński +Cc: stable +Link: https://lore.kernel.org/r/20200603203347.7792-1-tomasz@meresinski.eu +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/core/quirks.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/usb/core/quirks.c ++++ b/drivers/usb/core/quirks.c +@@ -73,11 +73,12 @@ static const struct usb_device_id usb_qu + /* Logitech HD Webcam C270 */ + { USB_DEVICE(0x046d, 0x0825), .driver_info = USB_QUIRK_RESET_RESUME }, + +- /* Logitech HD Pro Webcams C920, C920-C, C925e and C930e */ ++ /* Logitech HD Pro Webcams C920, C920-C, C922, C925e and C930e */ + { USB_DEVICE(0x046d, 0x082d), .driver_info = USB_QUIRK_DELAY_INIT }, + { USB_DEVICE(0x046d, 0x0841), .driver_info = USB_QUIRK_DELAY_INIT }, + { USB_DEVICE(0x046d, 0x0843), .driver_info = USB_QUIRK_DELAY_INIT }, + { USB_DEVICE(0x046d, 0x085b), .driver_info = USB_QUIRK_DELAY_INIT }, ++ { USB_DEVICE(0x046d, 0x085c), .driver_info = USB_QUIRK_DELAY_INIT }, + + /* Logitech ConferenceCam CC3000e */ + { USB_DEVICE(0x046d, 0x0847), .driver_info = USB_QUIRK_DELAY_INIT }, diff --git a/queue-4.4/usb-dwc2-postponed-gadget-registration-to-the-udc-class-driver.patch b/queue-4.4/usb-dwc2-postponed-gadget-registration-to-the-udc-class-driver.patch new file mode 100644 index 00000000000..551aadcef9d --- /dev/null +++ b/queue-4.4/usb-dwc2-postponed-gadget-registration-to-the-udc-class-driver.patch @@ -0,0 +1,62 @@ +From 207324a321a866401b098cadf19e4a2dd6584622 Mon Sep 17 00:00:00 2001 +From: Minas Harutyunyan +Date: Tue, 9 Jun 2020 12:28:11 +0400 +Subject: usb: dwc2: Postponed gadget registration to the udc class driver + +From: Minas Harutyunyan + +commit 207324a321a866401b098cadf19e4a2dd6584622 upstream. + +During dwc2 driver probe, after gadget registration to the udc class +driver, if exist any builtin function driver it immediately bound to +dwc2 and after init host side (dwc2_hcd_init()) stucked in host mode. +Patch postpone gadget registration after host side initialization done. + +Fixes: 117777b2c3bb9 ("usb: dwc2: Move gadget probe function into platform code") +Reported-by: kbuild test robot +Tested-by: Marek Vasut +Cc: stable +Signed-off-by: Minas Harutyunyan +Link: https://lore.kernel.org/r/f21cb38fecc72a230b86155d94c7e60c9cb66f58.1591690938.git.hminas@synopsys.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/dwc2/gadget.c | 6 ------ + drivers/usb/dwc2/platform.c | 11 +++++++++++ + 2 files changed, 11 insertions(+), 6 deletions(-) + +--- a/drivers/usb/dwc2/gadget.c ++++ b/drivers/usb/dwc2/gadget.c +@@ -3656,12 +3656,6 @@ int dwc2_gadget_init(struct dwc2_hsotg * + epnum, 0); + } + +- ret = usb_add_gadget_udc(dev, &hsotg->gadget); +- if (ret) { +- dwc2_hsotg_ep_free_request(&hsotg->eps_out[0]->ep, +- hsotg->ctrl_req); +- return ret; +- } + dwc2_hsotg_dump(hsotg); + + return 0; +--- a/drivers/usb/dwc2/platform.c ++++ b/drivers/usb/dwc2/platform.c +@@ -452,6 +452,17 @@ static int dwc2_driver_probe(struct plat + if (hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) + dwc2_lowlevel_hw_disable(hsotg); + ++#if IS_ENABLED(CONFIG_USB_DWC2_PERIPHERAL) || \ ++ IS_ENABLED(CONFIG_USB_DWC2_DUAL_ROLE) ++ /* Postponed adding a new gadget to the udc class driver list */ ++ if (hsotg->gadget_enabled) { ++ retval = usb_add_gadget_udc(hsotg->dev, &hsotg->gadget); ++ if (retval) { ++ dwc2_hsotg_remove(hsotg); ++ goto error; ++ } ++ } ++#endif /* CONFIG_USB_DWC2_PERIPHERAL || CONFIG_USB_DWC2_DUAL_ROLE */ + return 0; + + error: diff --git a/queue-4.4/usb-ehci-reopen-solution-for-synopsys-hc-bug.patch b/queue-4.4/usb-ehci-reopen-solution-for-synopsys-hc-bug.patch new file mode 100644 index 00000000000..420a706f4d2 --- /dev/null +++ b/queue-4.4/usb-ehci-reopen-solution-for-synopsys-hc-bug.patch @@ -0,0 +1,58 @@ +From 1ddcb71a3edf0e1682b6e056158e4c4b00325f66 Mon Sep 17 00:00:00 2001 +From: Longfang Liu +Date: Mon, 8 Jun 2020 11:46:59 +0800 +Subject: USB: ehci: reopen solution for Synopsys HC bug +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Longfang Liu + +commit 1ddcb71a3edf0e1682b6e056158e4c4b00325f66 upstream. + +A Synopsys USB2.0 core used in Huawei Kunpeng920 SoC has a bug which +might cause the host controller not issuing ping. + +Bug description: +After indicating an Interrupt on Async Advance, the software uses the +doorbell mechanism to delete the Next Link queue head of the last +executed queue head. At this time, the host controller still references +the removed queue head(the queue head is NULL). NULL reference causes +the host controller to lose the USB device. + +Solution: +After deleting the Next Link queue head, when has_synopsys_hc_bug set +to 1,the software can write one of the valid queue head addresses to +the ASYNCLISTADDR register to allow the host controller to get +the valid queue head. in order to solve that problem, this patch set +the flag for Huawei Kunpeng920 + +There are detailed instructions and solutions in this patch: +commit 2f7ac6c19997 ("USB: ehci: add workaround for Synopsys HC bug") + +Signed-off-by: Longfang Liu +Cc: stable +Acked-by: Alan Stern +Link: https://lore.kernel.org/r/1591588019-44284-1-git-send-email-liulongfang@huawei.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/ehci-pci.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/usb/host/ehci-pci.c ++++ b/drivers/usb/host/ehci-pci.c +@@ -229,6 +229,13 @@ static int ehci_pci_setup(struct usb_hcd + ehci_info(ehci, "applying MosChip frame-index workaround\n"); + ehci->frame_index_bug = 1; + break; ++ case PCI_VENDOR_ID_HUAWEI: ++ /* Synopsys HC bug */ ++ if (pdev->device == 0xa239) { ++ ehci_info(ehci, "applying Synopsys HC workaround\n"); ++ ehci->has_synopsys_hc_bug = 1; ++ } ++ break; + } + + /* optional debug port, normally in the first BAR */ diff --git a/queue-4.4/usb-host-ehci-exynos-fix-error-check-in-exynos_ehci_probe.patch b/queue-4.4/usb-host-ehci-exynos-fix-error-check-in-exynos_ehci_probe.patch new file mode 100644 index 00000000000..1fe0a2938d7 --- /dev/null +++ b/queue-4.4/usb-host-ehci-exynos-fix-error-check-in-exynos_ehci_probe.patch @@ -0,0 +1,40 @@ +From 44ed240d62736ad29943ec01e41e194b96f7c5e9 Mon Sep 17 00:00:00 2001 +From: Tang Bin +Date: Tue, 2 Jun 2020 19:47:08 +0800 +Subject: usb: host: ehci-exynos: Fix error check in exynos_ehci_probe() + +From: Tang Bin + +commit 44ed240d62736ad29943ec01e41e194b96f7c5e9 upstream. + +If the function platform_get_irq() failed, the negative value +returned will not be detected here. So fix error handling in +exynos_ehci_probe(). And when get irq failed, the function +platform_get_irq() logs an error message, so remove redundant +message here. + +Fixes: 1bcc5aa87f04 ("USB: Add initial S5P EHCI driver") +Cc: stable +Signed-off-by: Zhang Shengju +Signed-off-by: Tang Bin +Link: https://lore.kernel.org/r/20200602114708.28620-1-tangbin@cmss.chinamobile.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/ehci-exynos.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +--- a/drivers/usb/host/ehci-exynos.c ++++ b/drivers/usb/host/ehci-exynos.c +@@ -199,9 +199,8 @@ skip_phy: + hcd->rsrc_len = resource_size(res); + + irq = platform_get_irq(pdev, 0); +- if (!irq) { +- dev_err(&pdev->dev, "Failed to get IRQ\n"); +- err = -ENODEV; ++ if (irq < 0) { ++ err = irq; + goto fail_io; + } + diff --git a/queue-4.4/usb-ohci-sm501-add-missed-iounmap-in-remove.patch b/queue-4.4/usb-ohci-sm501-add-missed-iounmap-in-remove.patch new file mode 100644 index 00000000000..b961d55c52a --- /dev/null +++ b/queue-4.4/usb-ohci-sm501-add-missed-iounmap-in-remove.patch @@ -0,0 +1,34 @@ +From 07c112fb09c86c0231f6ff0061a000ffe91c8eb9 Mon Sep 17 00:00:00 2001 +From: Chuhong Yuan +Date: Wed, 10 Jun 2020 10:48:44 +0800 +Subject: USB: ohci-sm501: Add missed iounmap() in remove + +From: Chuhong Yuan + +commit 07c112fb09c86c0231f6ff0061a000ffe91c8eb9 upstream. + +This driver misses calling iounmap() in remove to undo the ioremap() +called in probe. +Add the missed call to fix it. + +Fixes: f54aab6ebcec ("usb: ohci-sm501 driver") +Cc: stable +Signed-off-by: Chuhong Yuan +Acked-by: Alan Stern +Link: https://lore.kernel.org/r/20200610024844.3628408-1-hslester96@gmail.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/ohci-sm501.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/usb/host/ohci-sm501.c ++++ b/drivers/usb/host/ohci-sm501.c +@@ -196,6 +196,7 @@ static int ohci_hcd_sm501_drv_remove(str + struct resource *mem; + + usb_remove_hcd(hcd); ++ iounmap(hcd->regs); + release_mem_region(hcd->rsrc_start, hcd->rsrc_len); + usb_put_hcd(hcd); + dma_release_declared_memory(&pdev->dev);