usb: phy: tegra: Clean up ulpi_phy_power_off
Firstly, the PHY's clock needs to unprepared to keep prepare count balanced. Secondly, downstream code suggests that reset is synchronous and thus it should be asserted before disabling clock. Signed-off-by: Dmitry Osipenko <digetx@gmail.com> Link: https://lore.kernel.org/r/20200106013416.9604-4-digetx@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
62a7f62891
Коммит
28d190ac43
|
@ -757,8 +757,19 @@ static int ulpi_phy_power_on(struct tegra_usb_phy *phy)
|
||||||
|
|
||||||
static int ulpi_phy_power_off(struct tegra_usb_phy *phy)
|
static int ulpi_phy_power_off(struct tegra_usb_phy *phy)
|
||||||
{
|
{
|
||||||
clk_disable(phy->clk);
|
int err;
|
||||||
return gpio_direction_output(phy->reset_gpio, 0);
|
|
||||||
|
err = gpio_direction_output(phy->reset_gpio, 0);
|
||||||
|
if (err) {
|
||||||
|
dev_err(phy->u_phy.dev, "reset GPIO not asserted: %d\n", err);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
usleep_range(5000, 6000);
|
||||||
|
|
||||||
|
clk_disable_unprepare(phy->clk);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tegra_usb_phy_close(struct tegra_usb_phy *phy)
|
static void tegra_usb_phy_close(struct tegra_usb_phy *phy)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче