Commit aecc5af3 authored by Dmitry Osipenko's avatar Dmitry Osipenko Committed by Greg Kroah-Hartman
Browse files

usb: phy: tegra: Disable VBUS regulator on tegra_usb_phy_init failure



VBUS regulator should be turned off in a case of error.

Signed-off-by: default avatarDmitry Osipenko <digetx@gmail.com>
Link: https://lore.kernel.org/r/20200106013416.9604-15-digetx@gmail.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 06e60e50
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -864,20 +864,20 @@ static int tegra_usb_phy_init(struct usb_phy *u_phy)
		dev_err(phy->u_phy.dev, "Invalid pll_u parent rate %ld\n",
			parent_rate);
		err = -EINVAL;
		goto fail;
		goto disable_clk;
	}

	err = regulator_enable(phy->vbus);
	if (err) {
		dev_err(phy->u_phy.dev,
			"Failed to enable USB VBUS regulator: %d\n", err);
		goto fail;
		goto disable_clk;
	}

	if (!phy->is_ulpi_phy) {
		err = utmip_pad_open(phy);
		if (err)
			goto fail;
			goto disable_vbus;
	}

	err = tegra_usb_phy_power_on(phy);
@@ -889,7 +889,11 @@ static int tegra_usb_phy_init(struct usb_phy *u_phy)
close_phy:
	if (!phy->is_ulpi_phy)
		utmip_pad_close(phy);
fail:

disable_vbus:
	regulator_disable(phy->vbus);

disable_clk:
	clk_disable_unprepare(phy->pll_u);

	phy->freq = NULL;