phy: core: Invoke pm_runtime_get_*/pm_runtime_put_* before invoking reset callback

PHY drivers may try to access PHY registers in the ->reset() callback.
Invoke phy_pm_runtime_get_sync() before invoking the ->reset() callback
so that the PHY drivers don't have to enable clocks by themselves before
accessing PHY registers.
Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
parent fec06b2b
...@@ -384,10 +384,16 @@ int phy_reset(struct phy *phy) ...@@ -384,10 +384,16 @@ int phy_reset(struct phy *phy)
if (!phy || !phy->ops->reset) if (!phy || !phy->ops->reset)
return 0; return 0;
ret = phy_pm_runtime_get_sync(phy);
if (ret < 0 && ret != -ENOTSUPP)
return ret;
mutex_lock(&phy->mutex); mutex_lock(&phy->mutex);
ret = phy->ops->reset(phy); ret = phy->ops->reset(phy);
mutex_unlock(&phy->mutex); mutex_unlock(&phy->mutex);
phy_pm_runtime_put(phy);
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(phy_reset); EXPORT_SYMBOL_GPL(phy_reset);
......
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