diff options
author | Dmitry Osipenko <digetx@gmail.com> | 2020-01-06 04:34:10 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2020-01-09 18:21:58 +0300 |
commit | aecc5af3ec1d6c5fb3d6c3e73276a7e53777166a (patch) | |
tree | 79199fa1791ed4bddc06b8d0214fa937dee94810 | |
parent | 06e60e5038fa432900ffa956307459a1aabee1db (diff) | |
download | linux-aecc5af3ec1d6c5fb3d6c3e73276a7e53777166a.tar.xz |
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>
-rw-r--r-- | drivers/usb/phy/phy-tegra-usb.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/usb/phy/phy-tegra-usb.c b/drivers/usb/phy/phy-tegra-usb.c index c431968d0433..90b42e963a1e 100644 --- a/drivers/usb/phy/phy-tegra-usb.c +++ b/drivers/usb/phy/phy-tegra-usb.c @@ -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; |