Some PHYs can be powered by an external power regulator.
e.g. USB_HS PHY on DRA7 SoC. Make the PHY core support a
power regulator.
Signed-off-by: Roger Quadros <rogerq@xxxxxx>
---
drivers/phy/phy-core.c | 32 ++++++++++++++++++++++++++++++++
include/linux/phy/phy.h | 2 ++
2 files changed, 34 insertions(+)
diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c[...]
index 49c4465..d817107 100644
--- a/drivers/phy/phy-core.c
+++ b/drivers/phy/phy-core.c
@@ -664,6 +689,10 @@ EXPORT_SYMBOL_GPL(devm_phy_create);
void phy_destroy(struct phy *phy)
{
pm_runtime_disable(&phy->dev);
+
+ if (phy->pwr)
+ regulator_put(phy->pwr);
+
device_unregister(&phy->dev);
}
EXPORT_SYMBOL_GPL(phy_destroy);
@@ -800,6 +829,9 @@ static void phy_release(struct device *dev)
phy = to_phy(dev);
dev_vdbg(dev, "releasing '%s'\n", dev_name(dev));
+ if (phy->pwr)
+ regulator_put(phy->pwr);
+
ida_simple_remove(&phy_ida, phy->id);
kfree(phy);
}