Re: [PATCH] [stable-resend] regulator: core: if voltage scaling fails, restore original voltage values

2012-12-27 Thread Ben Hutchings
On Tue, 2012-12-18 at 00:23 +0100, Paolo Pisati wrote:
> Cc: sta...@vger.kernel.org
> Signed-off-by: Paolo Pisati 
> Tested-by: Robert Nelson 
> Signed-off-by: Mark Brown 

Since this is not in Linus's tree, it is too early to request it be
applied to stable trees.  If it has gone into Mark's tree without the
'cc: stable' then it is probably too late to add that.  You'll need to
send a request after Linus has merged it.

Ben.

> ---
>  drivers/regulator/core.c |   16 ++--
>  1 file changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
> index e872c8b..c347fd0 100644
> --- a/drivers/regulator/core.c
> +++ b/drivers/regulator/core.c
> @@ -2250,6 +2250,7 @@ int regulator_set_voltage(struct regulator *regulator, 
> int min_uV, int max_uV)
>  {
>   struct regulator_dev *rdev = regulator->rdev;
>   int ret = 0;
> + int old_min_uV, old_max_uV;
>  
>   mutex_lock(>mutex);
>  
> @@ -2271,18 +2272,29 @@ int regulator_set_voltage(struct regulator 
> *regulator, int min_uV, int max_uV)
>   ret = regulator_check_voltage(rdev, _uV, _uV);
>   if (ret < 0)
>   goto out;
> + 
> + /* restore original values in case of error */
> + old_min_uV = regulator->min_uV;
> + old_max_uV = regulator->max_uV;
>   regulator->min_uV = min_uV;
>   regulator->max_uV = max_uV;
>  
>   ret = regulator_check_consumers(rdev, _uV, _uV);
>   if (ret < 0)
> - goto out;
> + goto out2;
>  
>   ret = _regulator_do_set_voltage(rdev, min_uV, max_uV);
> -
> + if (ret < 0)
> + goto out2;
> + 
>  out:
>   mutex_unlock(>mutex);
>   return ret;
> +out2:
> + regulator->min_uV = old_min_uV;
> + regulator->max_uV = old_max_uV;
> + mutex_unlock(>mutex);
> + return ret;
>  }
>  EXPORT_SYMBOL_GPL(regulator_set_voltage);
>  

-- 
Ben Hutchings
The world is coming to an end.  Please log off.


signature.asc
Description: This is a digitally signed message part


Re: [PATCH] [stable-resend] regulator: core: if voltage scaling fails, restore original voltage values

2012-12-27 Thread Ben Hutchings
On Tue, 2012-12-18 at 00:23 +0100, Paolo Pisati wrote:
 Cc: sta...@vger.kernel.org
 Signed-off-by: Paolo Pisati paolo.pis...@canonical.com
 Tested-by: Robert Nelson robertcnel...@gmail.com
 Signed-off-by: Mark Brown broo...@opensource.wolfsonmicro.com

Since this is not in Linus's tree, it is too early to request it be
applied to stable trees.  If it has gone into Mark's tree without the
'cc: stable' then it is probably too late to add that.  You'll need to
send a request after Linus has merged it.

Ben.

 ---
  drivers/regulator/core.c |   16 ++--
  1 file changed, 14 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
 index e872c8b..c347fd0 100644
 --- a/drivers/regulator/core.c
 +++ b/drivers/regulator/core.c
 @@ -2250,6 +2250,7 @@ int regulator_set_voltage(struct regulator *regulator, 
 int min_uV, int max_uV)
  {
   struct regulator_dev *rdev = regulator-rdev;
   int ret = 0;
 + int old_min_uV, old_max_uV;
  
   mutex_lock(rdev-mutex);
  
 @@ -2271,18 +2272,29 @@ int regulator_set_voltage(struct regulator 
 *regulator, int min_uV, int max_uV)
   ret = regulator_check_voltage(rdev, min_uV, max_uV);
   if (ret  0)
   goto out;
 + 
 + /* restore original values in case of error */
 + old_min_uV = regulator-min_uV;
 + old_max_uV = regulator-max_uV;
   regulator-min_uV = min_uV;
   regulator-max_uV = max_uV;
  
   ret = regulator_check_consumers(rdev, min_uV, max_uV);
   if (ret  0)
 - goto out;
 + goto out2;
  
   ret = _regulator_do_set_voltage(rdev, min_uV, max_uV);
 -
 + if (ret  0)
 + goto out2;
 + 
  out:
   mutex_unlock(rdev-mutex);
   return ret;
 +out2:
 + regulator-min_uV = old_min_uV;
 + regulator-max_uV = old_max_uV;
 + mutex_unlock(rdev-mutex);
 + return ret;
  }
  EXPORT_SYMBOL_GPL(regulator_set_voltage);
  

-- 
Ben Hutchings
The world is coming to an end.  Please log off.


signature.asc
Description: This is a digitally signed message part


[PATCH] [stable-resend] regulator: core: if voltage scaling fails, restore original voltage values

2012-12-17 Thread Paolo Pisati
Cc: sta...@vger.kernel.org
Signed-off-by: Paolo Pisati 
Tested-by: Robert Nelson 
Signed-off-by: Mark Brown 
---
 drivers/regulator/core.c |   16 ++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index e872c8b..c347fd0 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -2250,6 +2250,7 @@ int regulator_set_voltage(struct regulator *regulator, 
int min_uV, int max_uV)
 {
struct regulator_dev *rdev = regulator->rdev;
int ret = 0;
+   int old_min_uV, old_max_uV;
 
mutex_lock(>mutex);
 
@@ -2271,18 +2272,29 @@ int regulator_set_voltage(struct regulator *regulator, 
int min_uV, int max_uV)
ret = regulator_check_voltage(rdev, _uV, _uV);
if (ret < 0)
goto out;
+   
+   /* restore original values in case of error */
+   old_min_uV = regulator->min_uV;
+   old_max_uV = regulator->max_uV;
regulator->min_uV = min_uV;
regulator->max_uV = max_uV;
 
ret = regulator_check_consumers(rdev, _uV, _uV);
if (ret < 0)
-   goto out;
+   goto out2;
 
ret = _regulator_do_set_voltage(rdev, min_uV, max_uV);
-
+   if (ret < 0)
+   goto out2;
+   
 out:
mutex_unlock(>mutex);
return ret;
+out2:
+   regulator->min_uV = old_min_uV;
+   regulator->max_uV = old_max_uV;
+   mutex_unlock(>mutex);
+   return ret;
 }
 EXPORT_SYMBOL_GPL(regulator_set_voltage);
 
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] [stable-resend] regulator: core: if voltage scaling fails, restore original voltage values

2012-12-17 Thread Paolo Pisati
Cc: sta...@vger.kernel.org
Signed-off-by: Paolo Pisati paolo.pis...@canonical.com
Tested-by: Robert Nelson robertcnel...@gmail.com
Signed-off-by: Mark Brown broo...@opensource.wolfsonmicro.com
---
 drivers/regulator/core.c |   16 ++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index e872c8b..c347fd0 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -2250,6 +2250,7 @@ int regulator_set_voltage(struct regulator *regulator, 
int min_uV, int max_uV)
 {
struct regulator_dev *rdev = regulator-rdev;
int ret = 0;
+   int old_min_uV, old_max_uV;
 
mutex_lock(rdev-mutex);
 
@@ -2271,18 +2272,29 @@ int regulator_set_voltage(struct regulator *regulator, 
int min_uV, int max_uV)
ret = regulator_check_voltage(rdev, min_uV, max_uV);
if (ret  0)
goto out;
+   
+   /* restore original values in case of error */
+   old_min_uV = regulator-min_uV;
+   old_max_uV = regulator-max_uV;
regulator-min_uV = min_uV;
regulator-max_uV = max_uV;
 
ret = regulator_check_consumers(rdev, min_uV, max_uV);
if (ret  0)
-   goto out;
+   goto out2;
 
ret = _regulator_do_set_voltage(rdev, min_uV, max_uV);
-
+   if (ret  0)
+   goto out2;
+   
 out:
mutex_unlock(rdev-mutex);
return ret;
+out2:
+   regulator-min_uV = old_min_uV;
+   regulator-max_uV = old_max_uV;
+   mutex_unlock(rdev-mutex);
+   return ret;
 }
 EXPORT_SYMBOL_GPL(regulator_set_voltage);
 
-- 
1.7.10.4

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/