All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH RFC RESEND 1/3] regulator: core: Handle fixed voltage in map_voltage_linear
@ 2012-06-07  7:01 Axel Lin
  2012-06-07  7:02 ` [PATCH RFC RESEND 2/3] regulator: isl6271a: Use regulator_[list|map]_voltage_linear for isl_fixed_ops Axel Lin
  2012-06-07  7:03 ` [PATCH RFC RESEND 3/3] regulator: da903x: Don't read/write to DA9030_INVAL/DA9034_INVAL address Axel Lin
  0 siblings, 2 replies; 5+ messages in thread
From: Axel Lin @ 2012-06-07  7:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Marek Vasut, Liam Girdwood, Mark Brown, Eric Miao, Mike Rapoport

Fixed voltage is a kind of linear mapping where n_voltages is 1.
This change allows [list|map]_voltage_linear to be used for fixed voltage.

For fixed voltage, n_voltages is 1 and the only valid selector is 0.
Thus we actually don't care the uV_step setting.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
---
This patch is v2 of 
[PATCH RFC 1/2] regulator: core: Allow uV_step to be 0 for linear mapping if fixed voltage.

I change the subject line because for fixed voltage, we actually don't care the uV_step setting.

 drivers/regulator/core.c |    9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 02c1940..45baa72 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -2070,6 +2070,15 @@ int regulator_map_voltage_linear(struct regulator_dev *rdev,
 {
 	int ret, voltage;
 
+	/* For fixed voltage, check if voltage falls within specified range */
+	if (rdev->desc->n_voltages == 1) {
+		if (min_uV <= rdev->desc->min_uV &&
+		    rdev->desc->min_uV <= max_uV)
+			return 0;
+		else
+			return -EINVAL;
+	}
+
 	if (!rdev->desc->uV_step) {
 		BUG_ON(!rdev->desc->uV_step);
 		return -EINVAL;
-- 
1.7.9.5




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

* [PATCH RFC RESEND 2/3] regulator: isl6271a: Use regulator_[list|map]_voltage_linear for isl_fixed_ops
  2012-06-07  7:01 [PATCH RFC RESEND 1/3] regulator: core: Handle fixed voltage in map_voltage_linear Axel Lin
@ 2012-06-07  7:02 ` Axel Lin
  2012-06-08  0:08   ` Axel Lin
  2012-06-07  7:03 ` [PATCH RFC RESEND 3/3] regulator: da903x: Don't read/write to DA9030_INVAL/DA9034_INVAL address Axel Lin
  1 sibling, 1 reply; 5+ messages in thread
From: Axel Lin @ 2012-06-07  7:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Marek Vasut, Liam Girdwood, Mark Brown, Eric Miao, Mike Rapoport

Signed-off-by: Axel Lin <axel.lin@gmail.com>
---
 drivers/regulator/isl6271a-regulator.c |   14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/drivers/regulator/isl6271a-regulator.c b/drivers/regulator/isl6271a-regulator.c
index 56d273f..4a11b82a 100644
--- a/drivers/regulator/isl6271a-regulator.c
+++ b/drivers/regulator/isl6271a-regulator.c
@@ -75,19 +75,13 @@ static struct regulator_ops isl_core_ops = {
 
 static int isl6271a_get_fixed_voltage(struct regulator_dev *dev)
 {
-	int id = rdev_get_id(dev);
-	return (id == 1) ? 1100000 : 1300000;
-}
-
-static int isl6271a_list_fixed_voltage(struct regulator_dev *dev, unsigned selector)
-{
-	int id = rdev_get_id(dev);
-	return (id == 1) ? 1100000 : 1300000;
+	return dev->desc->min_uV;
 }
 
 static struct regulator_ops isl_fixed_ops = {
 	.get_voltage	= isl6271a_get_fixed_voltage,
-	.list_voltage	= isl6271a_list_fixed_voltage,
+	.list_voltage	= regulator_list_voltage_linear,
+	.map_voltage	= regulator_map_voltage_linear,
 };
 
 static const struct regulator_desc isl_rd[] = {
@@ -107,6 +101,7 @@ static const struct regulator_desc isl_rd[] = {
 		.ops		= &isl_fixed_ops,
 		.type		= REGULATOR_VOLTAGE,
 		.owner		= THIS_MODULE,
+		.min_uV		= 1100000,
 	}, {
 		.name		= "LDO2",
 		.id		= 2,
@@ -114,6 +109,7 @@ static const struct regulator_desc isl_rd[] = {
 		.ops		= &isl_fixed_ops,
 		.type		= REGULATOR_VOLTAGE,
 		.owner		= THIS_MODULE,
+		.min_uV		= 1300000,
 	},
 };
 
-- 
1.7.9.5




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

* [PATCH RFC RESEND 3/3] regulator: da903x: Don't read/write to DA9030_INVAL/DA9034_INVAL address
  2012-06-07  7:01 [PATCH RFC RESEND 1/3] regulator: core: Handle fixed voltage in map_voltage_linear Axel Lin
  2012-06-07  7:02 ` [PATCH RFC RESEND 2/3] regulator: isl6271a: Use regulator_[list|map]_voltage_linear for isl_fixed_ops Axel Lin
@ 2012-06-07  7:03 ` Axel Lin
  1 sibling, 0 replies; 5+ messages in thread
From: Axel Lin @ 2012-06-07  7:03 UTC (permalink / raw)
  To: linux-kernel
  Cc: Marek Vasut, Liam Girdwood, Mark Brown, Eric Miao, Mike Rapoport

For fixed voltage, DA9030_LDO13 and DA9034_LDO5, the info->vol_reg is
DA9030_INVAL/DA9034_INVAL.
It does not make sense to read/write to DA9030_INVAL/DA9034_INVAL address.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
---
 drivers/regulator/da903x.c |    6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/regulator/da903x.c b/drivers/regulator/da903x.c
index 1005f5f..36c5b92 100644
--- a/drivers/regulator/da903x.c
+++ b/drivers/regulator/da903x.c
@@ -107,6 +107,9 @@ static int da903x_set_voltage_sel(struct regulator_dev *rdev, unsigned selector)
 	struct device *da9034_dev = to_da903x_dev(rdev);
 	uint8_t val, mask;
 
+	if (rdev->desc->n_voltages == 1)
+		return -EINVAL;
+
 	val = selector << info->vol_shift;
 	mask = ((1 << info->vol_nbits) - 1)  << info->vol_shift;
 
@@ -120,6 +123,9 @@ static int da903x_get_voltage_sel(struct regulator_dev *rdev)
 	uint8_t val, mask;
 	int ret;
 
+	if (rdev->desc->n_voltages == 1)
+		return 0;
+
 	ret = da903x_read(da9034_dev, info->vol_reg, &val);
 	if (ret)
 		return ret;
-- 
1.7.9.5




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

* Re: [PATCH RFC RESEND 2/3] regulator: isl6271a: Use regulator_[list|map]_voltage_linear for isl_fixed_ops
  2012-06-07  7:02 ` [PATCH RFC RESEND 2/3] regulator: isl6271a: Use regulator_[list|map]_voltage_linear for isl_fixed_ops Axel Lin
@ 2012-06-08  0:08   ` Axel Lin
  2012-06-08  0:31     ` Mark Brown
  0 siblings, 1 reply; 5+ messages in thread
From: Axel Lin @ 2012-06-08  0:08 UTC (permalink / raw)
  To: linux-kernel
  Cc: Marek Vasut, Liam Girdwood, Mark Brown, Eric Miao, Mike Rapoport

>
>  static struct regulator_ops isl_fixed_ops = {
>        .get_voltage    = isl6271a_get_fixed_voltage,
> -       .list_voltage   = isl6271a_list_fixed_voltage,
> +       .list_voltage   = regulator_list_voltage_linear,
> +       .map_voltage    = regulator_map_voltage_linear,
>  };

Oh. isl_fixed_ops does not implement set_voltage_sel callback, adding
map_voltage here
seems misleading. I'll send a v2 soon.

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

* Re: [PATCH RFC RESEND 2/3] regulator: isl6271a: Use regulator_[list|map]_voltage_linear for isl_fixed_ops
  2012-06-08  0:08   ` Axel Lin
@ 2012-06-08  0:31     ` Mark Brown
  0 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2012-06-08  0:31 UTC (permalink / raw)
  To: Axel Lin; +Cc: linux-kernel, Marek Vasut, Liam Girdwood, Eric Miao,
	Mike Rapoport

[-- Attachment #1: Type: text/plain, Size: 251 bytes --]

On Fri, Jun 08, 2012 at 08:08:41AM +0800, Axel Lin wrote:

> Oh. isl_fixed_ops does not implement set_voltage_sel callback, adding
> map_voltage here
> seems misleading. I'll send a v2 soon.

Please send an incremental patch, this is already applied.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

end of thread, other threads:[~2012-06-08  0:57 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-06-07  7:01 [PATCH RFC RESEND 1/3] regulator: core: Handle fixed voltage in map_voltage_linear Axel Lin
2012-06-07  7:02 ` [PATCH RFC RESEND 2/3] regulator: isl6271a: Use regulator_[list|map]_voltage_linear for isl_fixed_ops Axel Lin
2012-06-08  0:08   ` Axel Lin
2012-06-08  0:31     ` Mark Brown
2012-06-07  7:03 ` [PATCH RFC RESEND 3/3] regulator: da903x: Don't read/write to DA9030_INVAL/DA9034_INVAL address Axel Lin

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.