phy: core: Fixup return value of phy_exit when !pm_runtime_enabled
When phy_pm_runtime_get_sync() returns -ENOTSUPP, phy_exit() also returns -ENOTSUPP if !phy->ops->exit. Fix it. Also move the code to override ret close to the code we got ret. I think it is less error prone this way. Signed-off-by: Axel Lin <axel.lin@ingics.com> Acked-by: Roger Quadros <rogerq@ti.com> Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
This commit is contained in:
parent
018e6ff3c0
commit
736b67a320
|
@ -225,6 +225,7 @@ int phy_init(struct phy *phy)
|
|||
ret = phy_pm_runtime_get_sync(phy);
|
||||
if (ret < 0 && ret != -ENOTSUPP)
|
||||
return ret;
|
||||
ret = 0; /* Override possible ret == -ENOTSUPP */
|
||||
|
||||
mutex_lock(&phy->mutex);
|
||||
if (phy->init_count == 0 && phy->ops->init) {
|
||||
|
@ -233,8 +234,6 @@ int phy_init(struct phy *phy)
|
|||
dev_err(&phy->dev, "phy init failed --> %d\n", ret);
|
||||
goto out;
|
||||
}
|
||||
} else {
|
||||
ret = 0; /* Override possible ret == -ENOTSUPP */
|
||||
}
|
||||
++phy->init_count;
|
||||
|
||||
|
@ -255,6 +254,7 @@ int phy_exit(struct phy *phy)
|
|||
ret = phy_pm_runtime_get_sync(phy);
|
||||
if (ret < 0 && ret != -ENOTSUPP)
|
||||
return ret;
|
||||
ret = 0; /* Override possible ret == -ENOTSUPP */
|
||||
|
||||
mutex_lock(&phy->mutex);
|
||||
if (phy->init_count == 1 && phy->ops->exit) {
|
||||
|
@ -289,6 +289,7 @@ int phy_power_on(struct phy *phy)
|
|||
ret = phy_pm_runtime_get_sync(phy);
|
||||
if (ret < 0 && ret != -ENOTSUPP)
|
||||
return ret;
|
||||
ret = 0; /* Override possible ret == -ENOTSUPP */
|
||||
|
||||
mutex_lock(&phy->mutex);
|
||||
if (phy->power_count == 0 && phy->ops->power_on) {
|
||||
|
@ -297,8 +298,6 @@ int phy_power_on(struct phy *phy)
|
|||
dev_err(&phy->dev, "phy poweron failed --> %d\n", ret);
|
||||
goto out;
|
||||
}
|
||||
} else {
|
||||
ret = 0; /* Override possible ret == -ENOTSUPP */
|
||||
}
|
||||
++phy->power_count;
|
||||
mutex_unlock(&phy->mutex);
|
||||
|
|
Loading…
Reference in New Issue