]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.6-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 22 Jul 2025 08:47:57 +0000 (10:47 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 22 Jul 2025 08:47:57 +0000 (10:47 +0200)
added patches:
usb-dwc3-qcom-don-t-leave-bcr-asserted.patch

queue-6.6/series
queue-6.6/usb-dwc3-qcom-don-t-leave-bcr-asserted.patch [new file with mode: 0644]

index e73ed87cc228eccc53cd584d885bacd46b624953..9f7cec96801763e30f4b45b562706ba095baed86 100644 (file)
@@ -98,3 +98,4 @@ usb-hub-fix-detection-of-high-tier-usb3-devices-behind-suspended-hubs.patch
 usb-hub-fix-flushing-and-scheduling-of-delayed-work-that-tunes-runtime-pm.patch
 usb-hub-fix-flushing-of-delayed-work-used-for-post-resume-purposes.patch
 usb-hub-don-t-try-to-recover-devices-lost-during-warm-reset.patch
+usb-dwc3-qcom-don-t-leave-bcr-asserted.patch
diff --git a/queue-6.6/usb-dwc3-qcom-don-t-leave-bcr-asserted.patch b/queue-6.6/usb-dwc3-qcom-don-t-leave-bcr-asserted.patch
new file mode 100644 (file)
index 0000000..1941641
--- /dev/null
@@ -0,0 +1,66 @@
+From ef8abc0ba49ce717e6bc4124e88e59982671f3b5 Mon Sep 17 00:00:00 2001
+From: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
+Date: Wed, 9 Jul 2025 18:59:00 +0530
+Subject: usb: dwc3: qcom: Don't leave BCR asserted
+
+From: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
+
+commit ef8abc0ba49ce717e6bc4124e88e59982671f3b5 upstream.
+
+Leaving the USB BCR asserted prevents the associated GDSC to turn on. This
+blocks any subsequent attempts of probing the device, e.g. after a probe
+deferral, with the following showing in the log:
+
+[    1.332226] usb30_prim_gdsc status stuck at 'off'
+
+Leave the BCR deasserted when exiting the driver to avoid this issue.
+
+Cc: stable <stable@kernel.org>
+Fixes: a4333c3a6ba9 ("usb: dwc3: Add Qualcomm DWC3 glue driver")
+Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
+Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
+Signed-off-by: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
+Link: https://lore.kernel.org/r/20250709132900.3408752-1-krishna.kurapati@oss.qualcomm.com
+[ adapted to individual clock management instead of bulk clock operations ]
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/usb/dwc3/dwc3-qcom.c |    8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+--- a/drivers/usb/dwc3/dwc3-qcom.c
++++ b/drivers/usb/dwc3/dwc3-qcom.c
+@@ -854,13 +854,13 @@ static int dwc3_qcom_probe(struct platfo
+       ret = reset_control_deassert(qcom->resets);
+       if (ret) {
+               dev_err(&pdev->dev, "failed to deassert resets, err=%d\n", ret);
+-              goto reset_assert;
++              return ret;
+       }
+       ret = dwc3_qcom_clk_init(qcom, of_clk_get_parent_count(np));
+       if (ret) {
+               dev_err_probe(dev, ret, "failed to get clocks\n");
+-              goto reset_assert;
++              return ret;
+       }
+       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+@@ -964,8 +964,6 @@ clk_disable:
+               clk_disable_unprepare(qcom->clks[i]);
+               clk_put(qcom->clks[i]);
+       }
+-reset_assert:
+-      reset_control_assert(qcom->resets);
+       return ret;
+ }
+@@ -995,8 +993,6 @@ static void dwc3_qcom_remove(struct plat
+       qcom->num_clocks = 0;
+       dwc3_qcom_interconnect_exit(qcom);
+-      reset_control_assert(qcom->resets);
+-
+       pm_runtime_allow(dev);
+       pm_runtime_disable(dev);
+ }