Commit ef8abc0b authored by Krishna Kurapati's avatar Krishna Kurapati Committed by Greg Kroah-Hartman
Browse files

usb: dwc3: qcom: Don't leave BCR asserted



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: a4333c3a ("usb: dwc3: Add Qualcomm DWC3 glue driver")
Acked-by: default avatarThinh Nguyen <Thinh.Nguyen@synopsys.com>
Reviewed-by: default avatarKonrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: default avatarKrishna Kurapati <krishna.kurapati@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20250709132900.3408752-1-krishna.kurapati@oss.qualcomm.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent cd0f8649
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -680,12 +680,12 @@ static int dwc3_qcom_probe(struct platform_device *pdev)
	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 = clk_bulk_prepare_enable(qcom->num_clocks, qcom->clks);
	if (ret < 0)
		goto reset_assert;
		return ret;

	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
	if (!r) {
@@ -755,8 +755,6 @@ static int dwc3_qcom_probe(struct platform_device *pdev)
	dwc3_core_remove(&qcom->dwc);
clk_disable:
	clk_bulk_disable_unprepare(qcom->num_clocks, qcom->clks);
reset_assert:
	reset_control_assert(qcom->resets);

	return ret;
}
@@ -771,7 +769,6 @@ static void dwc3_qcom_remove(struct platform_device *pdev)
	clk_bulk_disable_unprepare(qcom->num_clocks, qcom->clks);

	dwc3_qcom_interconnect_exit(qcom);
	reset_control_assert(qcom->resets);
}

static int dwc3_qcom_pm_suspend(struct device *dev)