All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] regulator: Convert lp3971 to set_voltage_sel
@ 2012-03-23  2:49 Axel Lin
  2012-03-23  2:51 ` [PATCH 2/2] regulator: Convert lp3972 " Axel Lin
  2012-03-26  9:19 ` [PATCH 1/2] regulator: Convert lp3971 " Marek Szyprowski
  0 siblings, 2 replies; 3+ messages in thread
From: Axel Lin @ 2012-03-23  2:49 UTC (permalink / raw)
  To: linux-kernel; +Cc: Marek Szyprowski, Kyungmin Park, Liam Girdwood, Mark Brown

Signed-off-by: Axel Lin <axel.lin@gmail.com>
---
 drivers/regulator/lp3971.c |   58 +++++++++++--------------------------------
 1 files changed, 15 insertions(+), 43 deletions(-)

diff --git a/drivers/regulator/lp3971.c b/drivers/regulator/lp3971.c
index 0cfabd3..49bcdb0 100644
--- a/drivers/regulator/lp3971.c
+++ b/drivers/regulator/lp3971.c
@@ -124,6 +124,10 @@ static const int *ldo_voltage_map[] = {
 static int lp3971_ldo_list_voltage(struct regulator_dev *dev, unsigned index)
 {
 	int ldo = rdev_get_id(dev) - LP3971_LDO1;
+
+	if (index > LDO_VOL_MAX_IDX)
+		return -EINVAL;
+
 	return 1000 * LDO_VOL_VALUE_MAP(ldo)[index];
 }
 
@@ -168,32 +172,15 @@ static int lp3971_ldo_get_voltage(struct regulator_dev *dev)
 	return 1000 * LDO_VOL_VALUE_MAP(ldo)[val];
 }
 
-static int lp3971_ldo_set_voltage(struct regulator_dev *dev,
-				  int min_uV, int max_uV,
-				  unsigned int *selector)
+static int lp3971_ldo_set_voltage_sel(struct regulator_dev *dev,
+				      unsigned int selector)
 {
 	struct lp3971 *lp3971 = rdev_get_drvdata(dev);
 	int ldo = rdev_get_id(dev) - LP3971_LDO1;
-	int min_vol = min_uV / 1000, max_vol = max_uV / 1000;
-	const int *vol_map = LDO_VOL_VALUE_MAP(ldo);
-	u16 val;
-
-	if (min_vol < vol_map[LDO_VOL_MIN_IDX] ||
-	    min_vol > vol_map[LDO_VOL_MAX_IDX])
-		return -EINVAL;
-
-	for (val = LDO_VOL_MIN_IDX; val <= LDO_VOL_MAX_IDX; val++)
-		if (vol_map[val] >= min_vol)
-			break;
-
-	if (val > LDO_VOL_MAX_IDX || vol_map[val] > max_vol)
-		return -EINVAL;
-
-	*selector = val;
 
 	return lp3971_set_bits(lp3971, LP3971_LDO_VOL_CONTR_REG(ldo),
 			LDO_VOL_CONTR_MASK << LDO_VOL_CONTR_SHIFT(ldo),
-			val << LDO_VOL_CONTR_SHIFT(ldo));
+			selector << LDO_VOL_CONTR_SHIFT(ldo));
 }
 
 static struct regulator_ops lp3971_ldo_ops = {
@@ -202,11 +189,14 @@ static struct regulator_ops lp3971_ldo_ops = {
 	.enable = lp3971_ldo_enable,
 	.disable = lp3971_ldo_disable,
 	.get_voltage = lp3971_ldo_get_voltage,
-	.set_voltage = lp3971_ldo_set_voltage,
+	.set_voltage_sel = lp3971_ldo_set_voltage_sel,
 };
 
 static int lp3971_dcdc_list_voltage(struct regulator_dev *dev, unsigned index)
 {
+	if (index < BUCK_TARGET_VOL_MIN_IDX || index > BUCK_TARGET_VOL_MAX_IDX)
+		return -EINVAL;
+
 	return 1000 * buck_voltage_map[index];
 }
 
@@ -259,33 +249,15 @@ static int lp3971_dcdc_get_voltage(struct regulator_dev *dev)
 	return val;
 }
 
-static int lp3971_dcdc_set_voltage(struct regulator_dev *dev,
-				   int min_uV, int max_uV,
-				   unsigned int *selector)
+static int lp3971_dcdc_set_voltage_sel(struct regulator_dev *dev,
+				       unsigned int selector)
 {
 	struct lp3971 *lp3971 = rdev_get_drvdata(dev);
 	int buck = rdev_get_id(dev) - LP3971_DCDC1;
-	int min_vol = min_uV / 1000, max_vol = max_uV / 1000;
-	const int *vol_map = buck_voltage_map;
-	u16 val;
 	int ret;
 
-	if (min_vol < vol_map[BUCK_TARGET_VOL_MIN_IDX] ||
-	    min_vol > vol_map[BUCK_TARGET_VOL_MAX_IDX])
-		return -EINVAL;
-
-	for (val = BUCK_TARGET_VOL_MIN_IDX; val <= BUCK_TARGET_VOL_MAX_IDX;
-	     val++)
-		if (vol_map[val] >= min_vol)
-			break;
-
-	if (val > BUCK_TARGET_VOL_MAX_IDX || vol_map[val] > max_vol)
-		return -EINVAL;
-
-	*selector = val;
-
 	ret = lp3971_set_bits(lp3971, LP3971_BUCK_TARGET_VOL1_REG(buck),
-	       BUCK_TARGET_VOL_MASK, val);
+	       BUCK_TARGET_VOL_MASK, selector);
 	if (ret)
 		return ret;
 
@@ -306,7 +278,7 @@ static struct regulator_ops lp3971_dcdc_ops = {
 	.enable = lp3971_dcdc_enable,
 	.disable = lp3971_dcdc_disable,
 	.get_voltage = lp3971_dcdc_get_voltage,
-	.set_voltage = lp3971_dcdc_set_voltage,
+	.set_voltage_sel = lp3971_dcdc_set_voltage_sel,
 };
 
 static struct regulator_desc regulators[] = {
-- 
1.7.5.4




^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH 2/2] regulator: Convert lp3972 to set_voltage_sel
  2012-03-23  2:49 [PATCH 1/2] regulator: Convert lp3971 to set_voltage_sel Axel Lin
@ 2012-03-23  2:51 ` Axel Lin
  2012-03-26  9:19 ` [PATCH 1/2] regulator: Convert lp3971 " Marek Szyprowski
  1 sibling, 0 replies; 3+ messages in thread
From: Axel Lin @ 2012-03-23  2:51 UTC (permalink / raw)
  To: linux-kernel; +Cc: Marek Szyprowski, Kyungmin Park, Liam Girdwood, Mark Brown

Signed-off-by: Axel Lin <axel.lin@gmail.com>
---
 drivers/regulator/lp3972.c |   63 ++++++++++++-------------------------------
 1 files changed, 18 insertions(+), 45 deletions(-)

diff --git a/drivers/regulator/lp3972.c b/drivers/regulator/lp3972.c
index 49a15ee..4f28d36 100644
--- a/drivers/regulator/lp3972.c
+++ b/drivers/regulator/lp3972.c
@@ -245,6 +245,11 @@ static int lp3972_set_bits(struct lp3972 *lp3972, u8 reg, u16 mask, u16 val)
 static int lp3972_ldo_list_voltage(struct regulator_dev *dev, unsigned index)
 {
 	int ldo = rdev_get_id(dev) - LP3972_LDO1;
+
+	if (index < LP3972_LDO_VOL_MIN_IDX(ldo) ||
+	    index > LP3972_LDO_VOL_MAX_IDX(ldo))
+		return -EINVAL;
+
 	return 1000 * LP3972_LDO_VOL_VALUE_MAP(ldo)[index];
 }
 
@@ -292,34 +297,16 @@ static int lp3972_ldo_get_voltage(struct regulator_dev *dev)
 	return 1000 * LP3972_LDO_VOL_VALUE_MAP(ldo)[val];
 }
 
-static int lp3972_ldo_set_voltage(struct regulator_dev *dev,
-				  int min_uV, int max_uV,
-				  unsigned int *selector)
+static int lp3972_ldo_set_voltage_sel(struct regulator_dev *dev,
+				      unsigned int selector)
 {
 	struct lp3972 *lp3972 = rdev_get_drvdata(dev);
 	int ldo = rdev_get_id(dev) - LP3972_LDO1;
-	int min_vol = min_uV / 1000, max_vol = max_uV / 1000;
-	const int *vol_map = LP3972_LDO_VOL_VALUE_MAP(ldo);
-	u16 val;
 	int shift, ret;
 
-	if (min_vol < vol_map[LP3972_LDO_VOL_MIN_IDX(ldo)] ||
-	    min_vol > vol_map[LP3972_LDO_VOL_MAX_IDX(ldo)])
-		return -EINVAL;
-
-	for (val = LP3972_LDO_VOL_MIN_IDX(ldo);
-		val <= LP3972_LDO_VOL_MAX_IDX(ldo); val++)
-		if (vol_map[val] >= min_vol)
-			break;
-
-	if (val > LP3972_LDO_VOL_MAX_IDX(ldo) || vol_map[val] > max_vol)
-		return -EINVAL;
-
-	*selector = val;
-
 	shift = LP3972_LDO_VOL_CONTR_SHIFT(ldo);
 	ret = lp3972_set_bits(lp3972, LP3972_LDO_VOL_CONTR_REG(ldo),
-		LP3972_LDO_VOL_MASK(ldo) << shift, val << shift);
+		LP3972_LDO_VOL_MASK(ldo) << shift, selector << shift);
 
 	if (ret)
 		return ret;
@@ -355,12 +342,17 @@ static struct regulator_ops lp3972_ldo_ops = {
 	.enable = lp3972_ldo_enable,
 	.disable = lp3972_ldo_disable,
 	.get_voltage = lp3972_ldo_get_voltage,
-	.set_voltage = lp3972_ldo_set_voltage,
+	.set_voltage_sel = lp3972_ldo_set_voltage_sel,
 };
 
 static int lp3972_dcdc_list_voltage(struct regulator_dev *dev, unsigned index)
 {
 	int buck = rdev_get_id(dev) - LP3972_DCDC1;
+
+	if (index < LP3972_BUCK_VOL_MIN_IDX(buck) ||
+	    index > LP3972_BUCK_VOL_MAX_IDX(buck))
+		return -EINVAL;
+
 	return 1000 * buck_voltage_map[buck][index];
 }
 
@@ -419,34 +411,15 @@ static int lp3972_dcdc_get_voltage(struct regulator_dev *dev)
 	return val;
 }
 
-static int lp3972_dcdc_set_voltage(struct regulator_dev *dev,
-				   int min_uV, int max_uV,
-				   unsigned int *selector)
+static int lp3972_dcdc_set_voltage_sel(struct regulator_dev *dev,
+				       unsigned int selector)
 {
 	struct lp3972 *lp3972 = rdev_get_drvdata(dev);
 	int buck = rdev_get_id(dev) - LP3972_DCDC1;
-	int min_vol = min_uV / 1000, max_vol = max_uV / 1000;
-	const int *vol_map = buck_voltage_map[buck];
-	u16 val;
 	int ret;
 
-	if (min_vol < vol_map[LP3972_BUCK_VOL_MIN_IDX(buck)] ||
-	    min_vol > vol_map[LP3972_BUCK_VOL_MAX_IDX(buck)])
-		return -EINVAL;
-
-	for (val = LP3972_BUCK_VOL_MIN_IDX(buck);
-		val <= LP3972_BUCK_VOL_MAX_IDX(buck); val++)
-		if (vol_map[val] >= min_vol)
-			break;
-
-	if (val > LP3972_BUCK_VOL_MAX_IDX(buck) ||
-	    vol_map[val] > max_vol)
-		return -EINVAL;
-
-	*selector = val;
-
 	ret = lp3972_set_bits(lp3972, LP3972_BUCK_VOL1_REG(buck),
-				LP3972_BUCK_VOL_MASK, val);
+				LP3972_BUCK_VOL_MASK, selector);
 	if (ret)
 		return ret;
 
@@ -468,7 +441,7 @@ static struct regulator_ops lp3972_dcdc_ops = {
 	.enable = lp3972_dcdc_enable,
 	.disable = lp3972_dcdc_disable,
 	.get_voltage = lp3972_dcdc_get_voltage,
-	.set_voltage = lp3972_dcdc_set_voltage,
+	.set_voltage_sel = lp3972_dcdc_set_voltage_sel,
 };
 
 static struct regulator_desc regulators[] = {
-- 
1.7.5.4




^ permalink raw reply related	[flat|nested] 3+ messages in thread

* RE: [PATCH 1/2] regulator: Convert lp3971 to set_voltage_sel
  2012-03-23  2:49 [PATCH 1/2] regulator: Convert lp3971 to set_voltage_sel Axel Lin
  2012-03-23  2:51 ` [PATCH 2/2] regulator: Convert lp3972 " Axel Lin
@ 2012-03-26  9:19 ` Marek Szyprowski
  1 sibling, 0 replies; 3+ messages in thread
From: Marek Szyprowski @ 2012-03-26  9:19 UTC (permalink / raw)
  To: 'Axel Lin', linux-kernel
  Cc: 'Kyungmin Park', 'Liam Girdwood', 'Mark Brown'

Hello,

On Friday, March 23, 2012 3:50 AM Axel Lin wrote:

> Signed-off-by: Axel Lin <axel.lin@gmail.com>

The patch looks good, but I don't have access to the hardware to test it.

Acked-By: Marek Szyprowski <m.szyprowski@samsung.com>

> ---
>  drivers/regulator/lp3971.c |   58 +++++++++++--------------------------------
>  1 files changed, 15 insertions(+), 43 deletions(-)
> 
> diff --git a/drivers/regulator/lp3971.c b/drivers/regulator/lp3971.c
> index 0cfabd3..49bcdb0 100644
> --- a/drivers/regulator/lp3971.c
> +++ b/drivers/regulator/lp3971.c
> @@ -124,6 +124,10 @@ static const int *ldo_voltage_map[] = {
>  static int lp3971_ldo_list_voltage(struct regulator_dev *dev, unsigned index)
>  {
>  	int ldo = rdev_get_id(dev) - LP3971_LDO1;
> +
> +	if (index > LDO_VOL_MAX_IDX)
> +		return -EINVAL;
> +
>  	return 1000 * LDO_VOL_VALUE_MAP(ldo)[index];
>  }
> 
> @@ -168,32 +172,15 @@ static int lp3971_ldo_get_voltage(struct regulator_dev *dev)
>  	return 1000 * LDO_VOL_VALUE_MAP(ldo)[val];
>  }
> 
> -static int lp3971_ldo_set_voltage(struct regulator_dev *dev,
> -				  int min_uV, int max_uV,
> -				  unsigned int *selector)
> +static int lp3971_ldo_set_voltage_sel(struct regulator_dev *dev,
> +				      unsigned int selector)
>  {
>  	struct lp3971 *lp3971 = rdev_get_drvdata(dev);
>  	int ldo = rdev_get_id(dev) - LP3971_LDO1;
> -	int min_vol = min_uV / 1000, max_vol = max_uV / 1000;
> -	const int *vol_map = LDO_VOL_VALUE_MAP(ldo);
> -	u16 val;
> -
> -	if (min_vol < vol_map[LDO_VOL_MIN_IDX] ||
> -	    min_vol > vol_map[LDO_VOL_MAX_IDX])
> -		return -EINVAL;
> -
> -	for (val = LDO_VOL_MIN_IDX; val <= LDO_VOL_MAX_IDX; val++)
> -		if (vol_map[val] >= min_vol)
> -			break;
> -
> -	if (val > LDO_VOL_MAX_IDX || vol_map[val] > max_vol)
> -		return -EINVAL;
> -
> -	*selector = val;
> 
>  	return lp3971_set_bits(lp3971, LP3971_LDO_VOL_CONTR_REG(ldo),
>  			LDO_VOL_CONTR_MASK << LDO_VOL_CONTR_SHIFT(ldo),
> -			val << LDO_VOL_CONTR_SHIFT(ldo));
> +			selector << LDO_VOL_CONTR_SHIFT(ldo));
>  }
> 
>  static struct regulator_ops lp3971_ldo_ops = {
> @@ -202,11 +189,14 @@ static struct regulator_ops lp3971_ldo_ops = {
>  	.enable = lp3971_ldo_enable,
>  	.disable = lp3971_ldo_disable,
>  	.get_voltage = lp3971_ldo_get_voltage,
> -	.set_voltage = lp3971_ldo_set_voltage,
> +	.set_voltage_sel = lp3971_ldo_set_voltage_sel,
>  };
> 
>  static int lp3971_dcdc_list_voltage(struct regulator_dev *dev, unsigned index)
>  {
> +	if (index < BUCK_TARGET_VOL_MIN_IDX || index > BUCK_TARGET_VOL_MAX_IDX)
> +		return -EINVAL;
> +
>  	return 1000 * buck_voltage_map[index];
>  }
> 
> @@ -259,33 +249,15 @@ static int lp3971_dcdc_get_voltage(struct regulator_dev *dev)
>  	return val;
>  }
> 
> -static int lp3971_dcdc_set_voltage(struct regulator_dev *dev,
> -				   int min_uV, int max_uV,
> -				   unsigned int *selector)
> +static int lp3971_dcdc_set_voltage_sel(struct regulator_dev *dev,
> +				       unsigned int selector)
>  {
>  	struct lp3971 *lp3971 = rdev_get_drvdata(dev);
>  	int buck = rdev_get_id(dev) - LP3971_DCDC1;
> -	int min_vol = min_uV / 1000, max_vol = max_uV / 1000;
> -	const int *vol_map = buck_voltage_map;
> -	u16 val;
>  	int ret;
> 
> -	if (min_vol < vol_map[BUCK_TARGET_VOL_MIN_IDX] ||
> -	    min_vol > vol_map[BUCK_TARGET_VOL_MAX_IDX])
> -		return -EINVAL;
> -
> -	for (val = BUCK_TARGET_VOL_MIN_IDX; val <= BUCK_TARGET_VOL_MAX_IDX;
> -	     val++)
> -		if (vol_map[val] >= min_vol)
> -			break;
> -
> -	if (val > BUCK_TARGET_VOL_MAX_IDX || vol_map[val] > max_vol)
> -		return -EINVAL;
> -
> -	*selector = val;
> -
>  	ret = lp3971_set_bits(lp3971, LP3971_BUCK_TARGET_VOL1_REG(buck),
> -	       BUCK_TARGET_VOL_MASK, val);
> +	       BUCK_TARGET_VOL_MASK, selector);
>  	if (ret)
>  		return ret;
> 
> @@ -306,7 +278,7 @@ static struct regulator_ops lp3971_dcdc_ops = {
>  	.enable = lp3971_dcdc_enable,
>  	.disable = lp3971_dcdc_disable,
>  	.get_voltage = lp3971_dcdc_get_voltage,
> -	.set_voltage = lp3971_dcdc_set_voltage,
> +	.set_voltage_sel = lp3971_dcdc_set_voltage_sel,
>  };
> 
>  static struct regulator_desc regulators[] = {
> --
> 1.7.5.4
> 

Best regards
-- 
Marek Szyprowski
Samsung Poland R&D Center



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-03-26  9:19 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-03-23  2:49 [PATCH 1/2] regulator: Convert lp3971 to set_voltage_sel Axel Lin
2012-03-23  2:51 ` [PATCH 2/2] regulator: Convert lp3972 " Axel Lin
2012-03-26  9:19 ` [PATCH 1/2] regulator: Convert lp3971 " Marek Szyprowski

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.