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

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

index 0c361a10b373143b163c5fe3f2c21f3a13102065..dd8e636297c6f331df720bfa9fa0279786cc0338 100644 (file)
@@ -168,3 +168,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.15/usb-dwc3-qcom-don-t-leave-bcr-asserted.patch b/queue-6.15/usb-dwc3-qcom-don-t-leave-bcr-asserted.patch
new file mode 100644 (file)
index 0000000..236eddd
--- /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
+@@ -763,13 +763,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;
+       }
+       qcom->qscratch_base = devm_platform_ioremap_resource(pdev, 0);
+@@ -835,8 +835,6 @@ clk_disable:
+               clk_disable_unprepare(qcom->clks[i]);
+               clk_put(qcom->clks[i]);
+       }
+-reset_assert:
+-      reset_control_assert(qcom->resets);
+       return ret;
+ }
+@@ -857,8 +855,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);
+ }