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: Dmitry Osipenko <digetx@gmail.com>
Link: https://lore.kernel.org/r/20200106013416.9604-15-digetx@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Dmitry Osipenko 2020-01-06 04:34:10 +03:00 committed by Greg Kroah-Hartman
parent 06e60e5038
commit aecc5af3ec
1 changed files with 8 additions and 4 deletions

View File

@ -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;