Commit f20531a9 authored by Oussama Ghorbel's avatar Oussama Ghorbel Committed by Greg Kroah-Hartman

phy: omap-usb2: Enable runtime PM of omap-usb2 phy properly

The USB OTG port does not work since v3.16 on omap platform.
This is a regression introduced by the commit
eb82a3d8 (phy: omap-usb2: Balance pm_runtime_enable() on probe failure
 and remove).
This because the call to pm_runtime_enable() function is moved after the
call to devm_phy_create() function, which has side effect since later in
the subsequent calls of devm_phy_create() there is a check with
pm_runtime_enabled() to configure few things.

Fixes: eb82a3d8Signed-off-by: default avatarOussama Ghorbel <ghorbel@pivasoftware.com>
Tested-by: default avatarRabin Vincent <rabin@rab.in>
Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a88098bd
...@@ -258,14 +258,16 @@ static int omap_usb2_probe(struct platform_device *pdev) ...@@ -258,14 +258,16 @@ 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, NULL, &ops, NULL); generic_phy = devm_phy_create(phy->dev, NULL, &ops, NULL);
if (IS_ERR(generic_phy)) if (IS_ERR(generic_phy)) {
pm_runtime_disable(phy->dev);
return PTR_ERR(generic_phy); return PTR_ERR(generic_phy);
}
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)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment