Thread (18 messages) 18 messages, 5 authors, 2014-10-22

Re: [PATCH v2 3/4] phy: exynos5-usbdrd: Add facility for VBUS-BOOST-5V supply

From: Vivek Gautam <hidden>
Date: 2014-10-13 05:11:37
Also in: linux-omap, linux-samsung-soc, lkml

On Mon, Oct 13, 2014 at 10:36 AM, Anton Tikhomirov
[off-list ref] wrote:
Hi Vivek,
quoted
Some Exynos SoCs have a separate regulator controlling a
I guess you meant the Exynos based *boards* instead of SoCs,
since Exynos SoCs don't have any boost regulators.
Right, should be boards instead. Thanks for pointing it out.
quoted
Boost 5V supply which goes as input for VBUS regulator.
So adding a control for the same in driver, to enable
vbus supply on the port.

Signed-off-by: Vivek Gautam <redacted>
---
 drivers/phy/phy-exynos5-usbdrd.c |   30 ++++++++++++++++++++++++++++--
 1 file changed, 28 insertions(+), 2 deletions(-)
diff --git a/drivers/phy/phy-exynos5-usbdrd.c b/drivers/phy/phy-
exynos5-usbdrd.c
index 013ee84..57e8a0a 100644
--- a/drivers/phy/phy-exynos5-usbdrd.c
+++ b/drivers/phy/phy-exynos5-usbdrd.c
@@ -176,6 +176,7 @@ struct exynos5_usbdrd_phy {
      u32 extrefclk;
      struct clk *ref_clk;
      struct regulator *vbus;
+     struct regulator *vbus_boost;
 };

 static inline
@@ -455,11 +456,20 @@ static int exynos5_usbdrd_phy_power_on(struct phy
*phy)
      clk_prepare_enable(phy_drd->ref_clk);

      /* Enable VBUS supply */
+     if (phy_drd->vbus_boost) {
+             ret = regulator_enable(phy_drd->vbus_boost);
+             if (ret) {
+                     dev_err(phy_drd->dev,
+                             "Failed to enable VBUS boost supply\n");
+                     goto fail_vbus;
+             }
+     }
+
      if (phy_drd->vbus) {
              ret = regulator_enable(phy_drd->vbus);
              if (ret) {
                      dev_err(phy_drd->dev, "Failed to enable VBUS
supply\n");
-                     goto fail_vbus;
+                     goto fail_vbus_boost;
              }
      }
@@ -468,6 +478,10 @@ static int exynos5_usbdrd_phy_power_on(struct phy
*phy)

      return 0;

+fail_vbus_boost:
+     if (phy_drd->vbus_boost)
+             regulator_disable(phy_drd->vbus_boost);
+
 fail_vbus:
      clk_disable_unprepare(phy_drd->ref_clk);
      clk_disable_unprepare(phy_drd->pipeclk);
@@ -489,6 +503,8 @@ static int exynos5_usbdrd_phy_power_off(struct phy
*phy)
      /* Disable VBUS supply */
      if (phy_drd->vbus)
              regulator_disable(phy_drd->vbus);
+     if (phy_drd->vbus_boost)
+             regulator_disable(phy_drd->vbus_boost);

      clk_disable_unprepare(phy_drd->ref_clk);
      clk_disable_unprepare(phy_drd->pipeclk);
@@ -644,7 +660,7 @@ static int exynos5_usbdrd_phy_probe(struct
platform_device *pdev)
              break;
      }

-     /* Get Vbus regulator */
+     /* Get Vbus regulators */
      phy_drd->vbus = devm_regulator_get(dev, "vbus");
      if (IS_ERR(phy_drd->vbus)) {
              ret = PTR_ERR(phy_drd->vbus);
@@ -655,6 +671,16 @@ static int exynos5_usbdrd_phy_probe(struct
platform_device *pdev)
              phy_drd->vbus = NULL;
      }

+     phy_drd->vbus_boost = devm_regulator_get(dev, "vbus-boost");
+     if (IS_ERR(phy_drd->vbus_boost)) {
+             ret = PTR_ERR(phy_drd->vbus_boost);
+             if (ret == -EPROBE_DEFER)
+                     return ret;
+
+             dev_warn(dev, "Failed to get VBUS boost supply
regulator\n");
+             phy_drd->vbus_boost = NULL;
+     }
+
      dev_vdbg(dev, "Creating usbdrd_phy phy\n");

      for (i = 0; i < EXYNOS5_DRDPHYS_NUM; i++) {
--
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


-- 
Best Regards
Vivek Gautam
Samsung R&D Institute, Bangalore
India
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help