diff mbox

[3/4] phy: qcom-ufs: Remove -always-on property

Message ID 20170119104739.4376-3-bjorn.andersson@linaro.org
State Not Applicable, archived
Headers show

Commit Message

Bjorn Andersson Jan. 19, 2017, 10:47 a.m. UTC
The fact that a regulator is always-on is a property of the regulator,
not a specific consumer. Implementing this in the driver leads to a
system behaviour that is dependent on if the Qualcomm UFS PHY was ever
(partially) probed.

If the specific regulator should be always on in a particular device,
mark it so by specifying "regulator-always-on" in the regulator node.

Cc: Subhash Jadavani <subhashj@codeaurora.org>
Cc: Vivek Gautam <vivek.gautam@codeaurora.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---
 Documentation/devicetree/bindings/ufs/ufs-qcom.txt | 1 -
 drivers/phy/phy-qcom-ufs-i.h                       | 1 -
 drivers/phy/phy-qcom-ufs.c                         | 5 +----
 3 files changed, 1 insertion(+), 6 deletions(-)

Comments

Vivek Gautam Jan. 19, 2017, 7:39 p.m. UTC | #1
On Thu, Jan 19, 2017 at 4:17 PM, Bjorn Andersson
<bjorn.andersson@linaro.org> wrote:
> The fact that a regulator is always-on is a property of the regulator,
> not a specific consumer. Implementing this in the driver leads to a
> system behaviour that is dependent on if the Qualcomm UFS PHY was ever
> (partially) probed.
>
> If the specific regulator should be always on in a particular device,
> mark it so by specifying "regulator-always-on" in the regulator node.
>
> Cc: Subhash Jadavani <subhashj@codeaurora.org>
> Cc: Vivek Gautam <vivek.gautam@codeaurora.org>
> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> ---

Looks good.

Reviewed-by: Vivek Gautam <vivek.gautam@codeaurora.org>

Regards
Vivek

>  Documentation/devicetree/bindings/ufs/ufs-qcom.txt | 1 -
>  drivers/phy/phy-qcom-ufs-i.h                       | 1 -
>  drivers/phy/phy-qcom-ufs.c                         | 5 +----
>  3 files changed, 1 insertion(+), 6 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/ufs/ufs-qcom.txt b/Documentation/devicetree/bindings/ufs/ufs-qcom.txt
> index b6b5130e5f65..1f69ee1a61ea 100644
> --- a/Documentation/devicetree/bindings/ufs/ufs-qcom.txt
> +++ b/Documentation/devicetree/bindings/ufs/ufs-qcom.txt
> @@ -29,7 +29,6 @@ Optional properties:
>  - vdda-pll-max-microamp : specifies max. load that can be drawn from pll supply
>  - vddp-ref-clk-supply   : phandle to UFS device ref_clk pad power supply
>  - vddp-ref-clk-max-microamp : specifies max. load that can be drawn from this supply
> -- vddp-ref-clk-always-on : specifies if this supply needs to be kept always on
>
>  Example:
>
> diff --git a/drivers/phy/phy-qcom-ufs-i.h b/drivers/phy/phy-qcom-ufs-i.h
> index d505d98cf5f8..13b02b7de30b 100644
> --- a/drivers/phy/phy-qcom-ufs-i.h
> +++ b/drivers/phy/phy-qcom-ufs-i.h
> @@ -77,7 +77,6 @@ struct ufs_qcom_phy_vreg {
>         int min_uV;
>         int max_uV;
>         bool enabled;
> -       bool is_always_on;
>  };
>
>  struct ufs_qcom_phy {
> diff --git a/drivers/phy/phy-qcom-ufs.c b/drivers/phy/phy-qcom-ufs.c
> index bbd317158084..c145fa6e824c 100644
> --- a/drivers/phy/phy-qcom-ufs.c
> +++ b/drivers/phy/phy-qcom-ufs.c
> @@ -242,9 +242,6 @@ static int ufs_qcom_phy_init_vreg(struct device *dev,
>                         }
>                         err = 0;
>                 }
> -               snprintf(prop_name, MAX_PROP_NAME, "%s-always-on", name);
> -               vreg->is_always_on = of_property_read_bool(dev->of_node,
> -                                                          prop_name);
>         }
>
>         if (!strcmp(name, "vdda-pll")) {
> @@ -402,7 +399,7 @@ static int ufs_qcom_phy_disable_vreg(struct device *dev,
>  {
>         int ret = 0;
>
> -       if (!vreg || !vreg->enabled || vreg->is_always_on)
> +       if (!vreg || !vreg->enabled)
>                 goto out;
>
>         ret = regulator_disable(vreg->reg);
> --
> 2.11.0
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Subhash Jadavani Jan. 20, 2017, 10:53 p.m. UTC | #2
On 2017-01-19 02:47, Bjorn Andersson wrote:
> The fact that a regulator is always-on is a property of the regulator,
> not a specific consumer. Implementing this in the driver leads to a
> system behaviour that is dependent on if the Qualcomm UFS PHY was ever
> (partially) probed.
> 
> If the specific regulator should be always on in a particular device,
> mark it so by specifying "regulator-always-on" in the regulator node.
> 
> Cc: Subhash Jadavani <subhashj@codeaurora.org>
> Cc: Vivek Gautam <vivek.gautam@codeaurora.org>
> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> ---
>  Documentation/devicetree/bindings/ufs/ufs-qcom.txt | 1 -
>  drivers/phy/phy-qcom-ufs-i.h                       | 1 -
>  drivers/phy/phy-qcom-ufs.c                         | 5 +----
>  3 files changed, 1 insertion(+), 6 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/ufs/ufs-qcom.txt
> b/Documentation/devicetree/bindings/ufs/ufs-qcom.txt
> index b6b5130e5f65..1f69ee1a61ea 100644
> --- a/Documentation/devicetree/bindings/ufs/ufs-qcom.txt
> +++ b/Documentation/devicetree/bindings/ufs/ufs-qcom.txt
> @@ -29,7 +29,6 @@ Optional properties:
>  - vdda-pll-max-microamp : specifies max. load that can be drawn from 
> pll supply
>  - vddp-ref-clk-supply   : phandle to UFS device ref_clk pad power 
> supply
>  - vddp-ref-clk-max-microamp : specifies max. load that can be drawn
> from this supply
> -- vddp-ref-clk-always-on : specifies if this supply needs to be kept 
> always on
> 
>  Example:
> 
> diff --git a/drivers/phy/phy-qcom-ufs-i.h 
> b/drivers/phy/phy-qcom-ufs-i.h
> index d505d98cf5f8..13b02b7de30b 100644
> --- a/drivers/phy/phy-qcom-ufs-i.h
> +++ b/drivers/phy/phy-qcom-ufs-i.h
> @@ -77,7 +77,6 @@ struct ufs_qcom_phy_vreg {
>  	int min_uV;
>  	int max_uV;
>  	bool enabled;
> -	bool is_always_on;
>  };
> 
>  struct ufs_qcom_phy {
> diff --git a/drivers/phy/phy-qcom-ufs.c b/drivers/phy/phy-qcom-ufs.c
> index bbd317158084..c145fa6e824c 100644
> --- a/drivers/phy/phy-qcom-ufs.c
> +++ b/drivers/phy/phy-qcom-ufs.c
> @@ -242,9 +242,6 @@ static int ufs_qcom_phy_init_vreg(struct device 
> *dev,
>  			}
>  			err = 0;
>  		}
> -		snprintf(prop_name, MAX_PROP_NAME, "%s-always-on", name);
> -		vreg->is_always_on = of_property_read_bool(dev->of_node,
> -							   prop_name);
>  	}
> 
>  	if (!strcmp(name, "vdda-pll")) {
> @@ -402,7 +399,7 @@ static int ufs_qcom_phy_disable_vreg(struct device 
> *dev,
>  {
>  	int ret = 0;
> 
> -	if (!vreg || !vreg->enabled || vreg->is_always_on)
> +	if (!vreg || !vreg->enabled)
>  		goto out;
> 
>  	ret = regulator_disable(vreg->reg);

Looks good to me.
Reviewed-by: Subhash Jadavani <subhashj@codeaurora.org>
Rob Herring Jan. 21, 2017, 8:43 p.m. UTC | #3
On Thu, Jan 19, 2017 at 02:47:38AM -0800, Bjorn Andersson wrote:
> The fact that a regulator is always-on is a property of the regulator,
> not a specific consumer. Implementing this in the driver leads to a
> system behaviour that is dependent on if the Qualcomm UFS PHY was ever
> (partially) probed.
> 
> If the specific regulator should be always on in a particular device,
> mark it so by specifying "regulator-always-on" in the regulator node.
> 
> Cc: Subhash Jadavani <subhashj@codeaurora.org>
> Cc: Vivek Gautam <vivek.gautam@codeaurora.org>
> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> ---
>  Documentation/devicetree/bindings/ufs/ufs-qcom.txt | 1 -
>  drivers/phy/phy-qcom-ufs-i.h                       | 1 -
>  drivers/phy/phy-qcom-ufs.c                         | 5 +----
>  3 files changed, 1 insertion(+), 6 deletions(-)

Acked-by: Rob Herring <robh@kernel.org>
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/Documentation/devicetree/bindings/ufs/ufs-qcom.txt b/Documentation/devicetree/bindings/ufs/ufs-qcom.txt
index b6b5130e5f65..1f69ee1a61ea 100644
--- a/Documentation/devicetree/bindings/ufs/ufs-qcom.txt
+++ b/Documentation/devicetree/bindings/ufs/ufs-qcom.txt
@@ -29,7 +29,6 @@  Optional properties:
 - vdda-pll-max-microamp : specifies max. load that can be drawn from pll supply
 - vddp-ref-clk-supply   : phandle to UFS device ref_clk pad power supply
 - vddp-ref-clk-max-microamp : specifies max. load that can be drawn from this supply
-- vddp-ref-clk-always-on : specifies if this supply needs to be kept always on
 
 Example:
 
diff --git a/drivers/phy/phy-qcom-ufs-i.h b/drivers/phy/phy-qcom-ufs-i.h
index d505d98cf5f8..13b02b7de30b 100644
--- a/drivers/phy/phy-qcom-ufs-i.h
+++ b/drivers/phy/phy-qcom-ufs-i.h
@@ -77,7 +77,6 @@  struct ufs_qcom_phy_vreg {
 	int min_uV;
 	int max_uV;
 	bool enabled;
-	bool is_always_on;
 };
 
 struct ufs_qcom_phy {
diff --git a/drivers/phy/phy-qcom-ufs.c b/drivers/phy/phy-qcom-ufs.c
index bbd317158084..c145fa6e824c 100644
--- a/drivers/phy/phy-qcom-ufs.c
+++ b/drivers/phy/phy-qcom-ufs.c
@@ -242,9 +242,6 @@  static int ufs_qcom_phy_init_vreg(struct device *dev,
 			}
 			err = 0;
 		}
-		snprintf(prop_name, MAX_PROP_NAME, "%s-always-on", name);
-		vreg->is_always_on = of_property_read_bool(dev->of_node,
-							   prop_name);
 	}
 
 	if (!strcmp(name, "vdda-pll")) {
@@ -402,7 +399,7 @@  static int ufs_qcom_phy_disable_vreg(struct device *dev,
 {
 	int ret = 0;
 
-	if (!vreg || !vreg->enabled || vreg->is_always_on)
+	if (!vreg || !vreg->enabled)
 		goto out;
 
 	ret = regulator_disable(vreg->reg);