From: Greg Kroah-Hartman Date: Tue, 22 Jul 2025 08:47:47 +0000 (+0200) Subject: 6.1-stable patches X-Git-Tag: v6.1.147~36 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1c3157046d2c87a0ca58a3fb6143ac37aecaa432;p=thirdparty%2Fkernel%2Fstable-queue.git 6.1-stable patches added patches: usb-dwc3-qcom-don-t-leave-bcr-asserted.patch --- diff --git a/queue-6.1/series b/queue-6.1/series index 2fd21a263f..c583bbb2b2 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -72,3 +72,4 @@ 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-musb-add-and-use-inline-functions-musb_-get-set-_state.patch usb-musb-fix-gadget-state-on-disconnect.patch +usb-dwc3-qcom-don-t-leave-bcr-asserted.patch diff --git a/queue-6.1/usb-dwc3-qcom-don-t-leave-bcr-asserted.patch b/queue-6.1/usb-dwc3-qcom-don-t-leave-bcr-asserted.patch new file mode 100644 index 0000000000..246b1eba9e --- /dev/null +++ b/queue-6.1/usb-dwc3-qcom-don-t-leave-bcr-asserted.patch @@ -0,0 +1,65 @@ +From ef8abc0ba49ce717e6bc4124e88e59982671f3b5 Mon Sep 17 00:00:00 2001 +From: Krishna Kurapati +Date: Wed, 9 Jul 2025 18:59:00 +0530 +Subject: usb: dwc3: qcom: Don't leave BCR asserted + +From: Krishna Kurapati + +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 +Fixes: a4333c3a6ba9 ("usb: dwc3: Add Qualcomm DWC3 glue driver") +Acked-by: Thinh Nguyen +Reviewed-by: Konrad Dybcio +Signed-off-by: Krishna Kurapati +Link: https://lore.kernel.org/r/20250709132900.3408752-1-krishna.kurapati@oss.qualcomm.com +[ adapted to individual clock management API instead of bulk clock operations ] +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + drivers/usb/dwc3/dwc3-qcom.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +--- a/drivers/usb/dwc3/dwc3-qcom.c ++++ b/drivers/usb/dwc3/dwc3-qcom.c +@@ -856,13 +856,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(dev, "failed to get clocks\n"); +- goto reset_assert; ++ return ret; + } + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); +@@ -966,8 +966,6 @@ clk_disable: + clk_disable_unprepare(qcom->clks[i]); + clk_put(qcom->clks[i]); + } +-reset_assert: +- reset_control_assert(qcom->resets); + + return ret; + } +@@ -997,7 +995,6 @@ static int dwc3_qcom_remove(struct platf + qcom->num_clocks = 0; + + dwc3_qcom_interconnect_exit(qcom); +- reset_control_assert(qcom->resets); + + pm_runtime_allow(dev); + pm_runtime_disable(dev);