public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Kishon Vijay Abraham I <kishon@ti.com>
To: Marek Szyprowski <m.szyprowski@samsung.com>,
	<linux-usb@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linux-samsung-soc@vger.kernel.org>
Cc: Robert Baldyga <r.baldyga@samsung.com>,
	John Youn <johnyoun@synopsys.com>,
	Krzysztof Kozlowski <k.kozlowski@samsung.com>,
	Kukjin Kim <kgene@kernel.org>,
	Kamil Debski <k.debski@samsung.com>
Subject: Re: [PATCH 1/7] phy: exynos-usb2: add vbus regulator support
Date: Fri, 21 Aug 2015 18:14:46 +0530	[thread overview]
Message-ID: <55D71D3E.3010807@ti.com> (raw)
In-Reply-To: <1440160723-6636-2-git-send-email-m.szyprowski@samsung.com>

Hi,

On Friday 21 August 2015 06:08 PM, Marek Szyprowski wrote:
> Exynos USB2 PHY has separate power supply, which is usually provided by
> VBUS regulator. This patch adds support for it. VBUS regulator is
> optional, to keep compatibility with boards, which have VBUS provided
> from some always-on power source.
> 
> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
> ---
>  .../devicetree/bindings/phy/samsung-phy.txt        |  3 +++
>  drivers/phy/phy-samsung-usb2.c                     | 25 ++++++++++++++++++++--
>  drivers/phy/phy-samsung-usb2.h                     |  2 ++
>  3 files changed, 28 insertions(+), 2 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt b/Documentation/devicetree/bindings/phy/samsung-phy.txt
> index 60c6f2a633e0..0289d3b07853 100644
> --- a/Documentation/devicetree/bindings/phy/samsung-phy.txt
> +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt
> @@ -44,6 +44,9 @@ Required properties:
>  	- the "ref" clock is used to get the rate of the clock provided to the
>  	  PHY module
>  
> +Optional properties:
> +- vbus-supply: power-supply phandle for vbus power source

how about using phy-supply?

Thanks
Kishon

> +
>  The first phandle argument in the PHY specifier identifies the PHY, its
>  meaning is compatible dependent. For the currently supported SoCs (Exynos 4210
>  and Exynos 4212) it is as follows:
> diff --git a/drivers/phy/phy-samsung-usb2.c b/drivers/phy/phy-samsung-usb2.c
> index f278a9c547e1..1d22d93b552d 100644
> --- a/drivers/phy/phy-samsung-usb2.c
> +++ b/drivers/phy/phy-samsung-usb2.c
> @@ -27,6 +27,13 @@ static int samsung_usb2_phy_power_on(struct phy *phy)
>  
>  	dev_dbg(drv->dev, "Request to power_on \"%s\" usb phy\n",
>  		inst->cfg->label);
> +
> +	if (drv->vbus) {
> +		ret = regulator_enable(drv->vbus);
> +		if (ret)
> +			goto err_regulator;
> +	}
> +
>  	ret = clk_prepare_enable(drv->clk);
>  	if (ret)
>  		goto err_main_clk;
> @@ -48,6 +55,9 @@ err_power_on:
>  err_instance_clk:
>  	clk_disable_unprepare(drv->clk);
>  err_main_clk:
> +	if (drv->vbus)
> +		regulator_disable(drv->vbus);
> +err_regulator:
>  	return ret;
>  }
>  
> @@ -55,7 +65,7 @@ static int samsung_usb2_phy_power_off(struct phy *phy)
>  {
>  	struct samsung_usb2_phy_instance *inst = phy_get_drvdata(phy);
>  	struct samsung_usb2_phy_driver *drv = inst->drv;
> -	int ret;
> +	int ret = 0;
>  
>  	dev_dbg(drv->dev, "Request to power_off \"%s\" usb phy\n",
>  		inst->cfg->label);
> @@ -68,7 +78,10 @@ static int samsung_usb2_phy_power_off(struct phy *phy)
>  	}
>  	clk_disable_unprepare(drv->ref_clk);
>  	clk_disable_unprepare(drv->clk);
> -	return 0;
> +	if (drv->vbus)
> +		ret = regulator_disable(drv->vbus);
> +
> +	return ret;
>  }
>  
>  static const struct phy_ops samsung_usb2_phy_ops = {
> @@ -203,6 +216,14 @@ static int samsung_usb2_phy_probe(struct platform_device *pdev)
>  			return ret;
>  	}
>  
> +	drv->vbus = devm_regulator_get(dev, "vbus");
> +	if (IS_ERR(drv->vbus)) {
> +		ret = PTR_ERR(drv->vbus);
> +		if (ret == -EPROBE_DEFER)
> +			return ret;
> +		drv->vbus = NULL;
> +	}
> +
>  	for (i = 0; i < drv->cfg->num_phys; i++) {
>  		char *label = drv->cfg->phys[i].label;
>  		struct samsung_usb2_phy_instance *p = &drv->instances[i];
> diff --git a/drivers/phy/phy-samsung-usb2.h b/drivers/phy/phy-samsung-usb2.h
> index 44bead9b8f34..6563e7ca0ac4 100644
> --- a/drivers/phy/phy-samsung-usb2.h
> +++ b/drivers/phy/phy-samsung-usb2.h
> @@ -17,6 +17,7 @@
>  #include <linux/device.h>
>  #include <linux/regmap.h>
>  #include <linux/spinlock.h>
> +#include <linux/regulator/consumer.h>
>  
>  #define KHZ 1000
>  #define MHZ (KHZ * KHZ)
> @@ -37,6 +38,7 @@ struct samsung_usb2_phy_driver {
>  	const struct samsung_usb2_phy_config *cfg;
>  	struct clk *clk;
>  	struct clk *ref_clk;
> +	struct regulator *vbus;
>  	unsigned long ref_rate;
>  	u32 ref_reg_val;
>  	struct device *dev;
> 

  reply	other threads:[~2015-08-21 12:44 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-21 12:38 [PATCH 0/7] Exynos4412-based Trats2 USB gadget (DWC2) fixes Marek Szyprowski
2015-08-21 12:38 ` [PATCH 1/7] phy: exynos-usb2: add vbus regulator support Marek Szyprowski
2015-08-21 12:44   ` Kishon Vijay Abraham I [this message]
2015-08-25  5:47     ` Marek Szyprowski
2015-08-25  6:12       ` Krzysztof Kozlowski
2015-08-27  9:54         ` Kishon Vijay Abraham I
2015-09-30  6:00           ` Marek Szyprowski
2015-08-21 12:38 ` [PATCH 2/7] arm: dts: exynos: add vbus regulator to USB2 phy nodes Marek Szyprowski
2015-08-23  3:59   ` Krzysztof Kozlowski
2015-08-21 12:38 ` [PATCH 3/7] regulators: max77693: register driver earlier to avoid deferred probe Marek Szyprowski
2015-08-23  3:50   ` Krzysztof Kozlowski
2015-08-21 12:38 ` [PATCH 4/7] usb: dwc2: remove double call to s3c_hsotg_of_probe Marek Szyprowski
2015-08-21 12:38 ` [PATCH 5/7] usb: dwc2: remove non-functional clock gating Marek Szyprowski
2015-08-21 12:38 ` [PATCH 6/7] usb: dwc2: fix unbalanced phy control Marek Szyprowski
2015-08-21 12:38 ` [PATCH 7/7] usb: dwc2: refactor common low-level hw code to platform.c Marek Szyprowski
2015-09-03  1:12   ` John Youn
2015-09-16 12:34     ` [PATCH v2 " Marek Szyprowski
2015-08-24  7:16 ` [PATCH 0/7] Exynos4412-based Trats2 USB gadget (DWC2) fixes Krzysztof Kozlowski
  -- strict thread matches above, loose matches on Subject: below --
2015-10-17  2:22 [GIT PULL] phy: for 4.4 merge window Kishon Vijay Abraham I
2015-10-17  2:22 ` [PATCH 1/7] phy: exynos-usb2: add vbus regulator support Kishon Vijay Abraham I
2015-10-17 20:33 [RESEND GIT PULL] phy: for 4.4 merge window Kishon Vijay Abraham I
2015-10-17 20:33 ` [PATCH 1/7] phy: exynos-usb2: add vbus regulator support Kishon Vijay Abraham I

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55D71D3E.3010807@ti.com \
    --to=kishon@ti.com \
    --cc=johnyoun@synopsys.com \
    --cc=k.debski@samsung.com \
    --cc=k.kozlowski@samsung.com \
    --cc=kgene@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=r.baldyga@samsung.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox