Commit c8e9eccf authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman
Browse files

USB: dwc3: clean up phy init error handling



While there likely are no platforms out there that mix generic and
legacy PHYs the driver should still be able to handle that, if only for
consistency reasons.

Add the missing calls to shutdown any legacy PHYs if generic PHY
initialisation fails.

Note that we continue to happily ignore potential errors from the legacy
PHY callbacks...

Acked-by: default avatarThinh Nguyen <Thinh.Nguyen@synopsys.com>
Signed-off-by: default avatarJohan Hovold <johan+linaro@kernel.org>
Link: https://lore.kernel.org/r/20230404072524.19014-8-johan+linaro@kernel.org


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent fe296046
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -1041,15 +1041,14 @@ static int dwc3_core_init(struct dwc3 *dwc)

	usb_phy_init(dwc->usb2_phy);
	usb_phy_init(dwc->usb3_phy);

	ret = phy_init(dwc->usb2_generic_phy);
	if (ret < 0)
		goto err0a;
		goto err_shutdown_usb3_phy;

	ret = phy_init(dwc->usb3_generic_phy);
	if (ret < 0) {
		phy_exit(dwc->usb2_generic_phy);
		goto err0a;
	}
	if (ret < 0)
		goto err_exit_usb2_phy;

	ret = dwc3_core_soft_reset(dwc);
	if (ret)
@@ -1225,11 +1224,12 @@ static int dwc3_core_init(struct dwc3 *dwc)
	usb_phy_set_suspend(dwc->usb3_phy, 1);

err1:
	usb_phy_shutdown(dwc->usb2_phy);
	usb_phy_shutdown(dwc->usb3_phy);
	phy_exit(dwc->usb2_generic_phy);
	phy_exit(dwc->usb3_generic_phy);

err_exit_usb2_phy:
	phy_exit(dwc->usb2_generic_phy);
err_shutdown_usb3_phy:
	usb_phy_shutdown(dwc->usb3_phy);
	usb_phy_shutdown(dwc->usb2_phy);
err0a:
	dwc3_ulpi_exit(dwc);