mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-04-02 20:33:54 +00:00
phy: omap-usb2: Balance pm_runtime_enable() on probe failure and remove
If probe fails then we need to call pm_runtime_disable() to balance out the previous pm_runtime_enable() call. Else it will cause unbalanced pm_runtime_enable() call in the succeding probe call. This anomaly was observed when the call to devm_phy_create() failed with -EPROBE_DEFER. Balance out the pm_runtime_enable() call in .remove() as well. Signed-off-by: Roger Quadros <rogerq@ti.com> Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
e73b49f1c4
commit
eb82a3d846
1 changed files with 5 additions and 2 deletions
|
@ -262,7 +262,6 @@ static int omap_usb2_probe(struct platform_device *pdev)
|
||||||
otg->phy = &phy->phy;
|
otg->phy = &phy->phy;
|
||||||
|
|
||||||
platform_set_drvdata(pdev, phy);
|
platform_set_drvdata(pdev, phy);
|
||||||
pm_runtime_enable(phy->dev);
|
|
||||||
|
|
||||||
generic_phy = devm_phy_create(phy->dev, &ops, NULL);
|
generic_phy = devm_phy_create(phy->dev, &ops, NULL);
|
||||||
if (IS_ERR(generic_phy))
|
if (IS_ERR(generic_phy))
|
||||||
|
@ -270,10 +269,13 @@ static int omap_usb2_probe(struct platform_device *pdev)
|
||||||
|
|
||||||
phy_set_drvdata(generic_phy, phy);
|
phy_set_drvdata(generic_phy, phy);
|
||||||
|
|
||||||
|
pm_runtime_enable(phy->dev);
|
||||||
phy_provider = devm_of_phy_provider_register(phy->dev,
|
phy_provider = devm_of_phy_provider_register(phy->dev,
|
||||||
of_phy_simple_xlate);
|
of_phy_simple_xlate);
|
||||||
if (IS_ERR(phy_provider))
|
if (IS_ERR(phy_provider)) {
|
||||||
|
pm_runtime_disable(phy->dev);
|
||||||
return PTR_ERR(phy_provider);
|
return PTR_ERR(phy_provider);
|
||||||
|
}
|
||||||
|
|
||||||
phy->wkupclk = devm_clk_get(phy->dev, "wkupclk");
|
phy->wkupclk = devm_clk_get(phy->dev, "wkupclk");
|
||||||
if (IS_ERR(phy->wkupclk)) {
|
if (IS_ERR(phy->wkupclk)) {
|
||||||
|
@ -317,6 +319,7 @@ static int omap_usb2_remove(struct platform_device *pdev)
|
||||||
if (!IS_ERR(phy->optclk))
|
if (!IS_ERR(phy->optclk))
|
||||||
clk_unprepare(phy->optclk);
|
clk_unprepare(phy->optclk);
|
||||||
usb_remove_phy(&phy->phy);
|
usb_remove_phy(&phy->phy);
|
||||||
|
pm_runtime_disable(phy->dev);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue