diff mbox

[1/3] regulator: palmas: clear sleep bits if not selected

Message ID 1366191793-13934-1-git-send-email-ldewangan@nvidia.com
State Not Applicable, archived
Headers show

Commit Message

Laxman Dewangan April 17, 2013, 9:43 a.m. UTC
Clear the sleep/warm reset bits when it is not selected through
regulator platform data. This will make sure that configuration
is inline with the platform data regardless of boot/POR
configuration.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
---
 drivers/regulator/palmas-regulator.c |   18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)

Comments

Graeme Gregory April 17, 2013, 1:53 p.m. UTC | #1
This is good with me, I originally had it like this and I cannot
remember why I convinced myself not to do it this way.

Acked-by: Graeme Gregory <gg@slimlogic.co.uk>

On 17/04/13 10:43, Laxman Dewangan wrote:
> Clear the sleep/warm reset bits when it is not selected through
> regulator platform data. This will make sure that configuration
> is inline with the platform data regardless of boot/POR
> configuration.
>
> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
> ---
>  drivers/regulator/palmas-regulator.c |   18 ++++++++++++------
>  1 files changed, 12 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/regulator/palmas-regulator.c b/drivers/regulator/palmas-regulator.c
> index 7c54e31..7c7992b 100644
> --- a/drivers/regulator/palmas-regulator.c
> +++ b/drivers/regulator/palmas-regulator.c
> @@ -444,24 +444,26 @@ static int palmas_smps_init(struct palmas *palmas, int id,
>  
>  	switch (id) {
>  	case PALMAS_REG_SMPS10:
> -		if (reg_init->mode_sleep) {
> -			reg &= ~PALMAS_SMPS10_CTRL_MODE_SLEEP_MASK;
> +		reg &= ~PALMAS_SMPS10_CTRL_MODE_SLEEP_MASK;
> +		if (reg_init->mode_sleep)
>  			reg |= reg_init->mode_sleep <<
>  					PALMAS_SMPS10_CTRL_MODE_SLEEP_SHIFT;
> -		}
>  		break;
>  	default:
>  		if (reg_init->warm_reset)
>  			reg |= PALMAS_SMPS12_CTRL_WR_S;
> +		else
> +			reg &= ~PALMAS_SMPS12_CTRL_WR_S;
>  
>  		if (reg_init->roof_floor)
>  			reg |= PALMAS_SMPS12_CTRL_ROOF_FLOOR_EN;
> +		else
> +			reg &= ~PALMAS_SMPS12_CTRL_ROOF_FLOOR_EN;
>  
> -		if (reg_init->mode_sleep) {
> -			reg &= ~PALMAS_SMPS12_CTRL_MODE_SLEEP_MASK;
> +		reg &= ~PALMAS_SMPS12_CTRL_MODE_SLEEP_MASK;
> +		if (reg_init->mode_sleep)
>  			reg |= reg_init->mode_sleep <<
>  					PALMAS_SMPS12_CTRL_MODE_SLEEP_SHIFT;
> -		}
>  	}
>  
>  	ret = palmas_smps_write(palmas, addr, reg);
> @@ -507,9 +509,13 @@ static int palmas_ldo_init(struct palmas *palmas, int id,
>  
>  	if (reg_init->warm_reset)
>  		reg |= PALMAS_LDO1_CTRL_WR_S;
> +	else
> +		reg &= ~PALMAS_LDO1_CTRL_WR_S;
>  
>  	if (reg_init->mode_sleep)
>  		reg |= PALMAS_LDO1_CTRL_MODE_SLEEP;
> +	else
> +		reg &= ~PALMAS_LDO1_CTRL_MODE_SLEEP;
>  
>  	ret = palmas_ldo_write(palmas, addr, reg);
>  	if (ret)

--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Mark Brown April 17, 2013, 2:03 p.m. UTC | #2
On Wed, Apr 17, 2013 at 03:13:11PM +0530, Laxman Dewangan wrote:
> Clear the sleep/warm reset bits when it is not selected through
> regulator platform data. This will make sure that configuration
> is inline with the platform data regardless of boot/POR
> configuration.

Applied, thanks.
diff mbox

Patch

diff --git a/drivers/regulator/palmas-regulator.c b/drivers/regulator/palmas-regulator.c
index 7c54e31..7c7992b 100644
--- a/drivers/regulator/palmas-regulator.c
+++ b/drivers/regulator/palmas-regulator.c
@@ -444,24 +444,26 @@  static int palmas_smps_init(struct palmas *palmas, int id,
 
 	switch (id) {
 	case PALMAS_REG_SMPS10:
-		if (reg_init->mode_sleep) {
-			reg &= ~PALMAS_SMPS10_CTRL_MODE_SLEEP_MASK;
+		reg &= ~PALMAS_SMPS10_CTRL_MODE_SLEEP_MASK;
+		if (reg_init->mode_sleep)
 			reg |= reg_init->mode_sleep <<
 					PALMAS_SMPS10_CTRL_MODE_SLEEP_SHIFT;
-		}
 		break;
 	default:
 		if (reg_init->warm_reset)
 			reg |= PALMAS_SMPS12_CTRL_WR_S;
+		else
+			reg &= ~PALMAS_SMPS12_CTRL_WR_S;
 
 		if (reg_init->roof_floor)
 			reg |= PALMAS_SMPS12_CTRL_ROOF_FLOOR_EN;
+		else
+			reg &= ~PALMAS_SMPS12_CTRL_ROOF_FLOOR_EN;
 
-		if (reg_init->mode_sleep) {
-			reg &= ~PALMAS_SMPS12_CTRL_MODE_SLEEP_MASK;
+		reg &= ~PALMAS_SMPS12_CTRL_MODE_SLEEP_MASK;
+		if (reg_init->mode_sleep)
 			reg |= reg_init->mode_sleep <<
 					PALMAS_SMPS12_CTRL_MODE_SLEEP_SHIFT;
-		}
 	}
 
 	ret = palmas_smps_write(palmas, addr, reg);
@@ -507,9 +509,13 @@  static int palmas_ldo_init(struct palmas *palmas, int id,
 
 	if (reg_init->warm_reset)
 		reg |= PALMAS_LDO1_CTRL_WR_S;
+	else
+		reg &= ~PALMAS_LDO1_CTRL_WR_S;
 
 	if (reg_init->mode_sleep)
 		reg |= PALMAS_LDO1_CTRL_MODE_SLEEP;
+	else
+		reg &= ~PALMAS_LDO1_CTRL_MODE_SLEEP;
 
 	ret = palmas_ldo_write(palmas, addr, reg);
 	if (ret)