mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 1/4] regulator: core: Allow fixed enable_time to be set in the regulator_desc
@ 2012-06-27 14:10 Mark Brown
  2012-06-27 14:10 ` [PATCH 2/4] regulator: fixed: Set enable enable_time in regulator_desc Mark Brown
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Mark Brown @ 2012-06-27 14:10 UTC (permalink / raw)
  To: Liam Girdwood; +Cc: linux-kernel, Mark Brown

Many regulators have a fixed specification for their enable time. Allow
this to be set in the regulator_desc as a number to save them having to
implement an explicit operation.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
 drivers/regulator/core.c         |    2 +-
 include/linux/regulator/driver.h |    4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 43132b6..d19480b 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -1150,7 +1150,7 @@ overflow_err:
 static int _regulator_get_enable_time(struct regulator_dev *rdev)
 {
 	if (!rdev->desc->ops->enable_time)
-		return 0;
+		return rdev->desc->enable_time;
 	return rdev->desc->ops->enable_time(rdev);
 }
 
diff --git a/include/linux/regulator/driver.h b/include/linux/regulator/driver.h
index 84f999ed..176bd43 100644
--- a/include/linux/regulator/driver.h
+++ b/include/linux/regulator/driver.h
@@ -180,6 +180,8 @@ enum regulator_type {
  * @vsel_mask: Mask for register bitfield used for selector
  * @enable_reg: Register for control when using regmap enable/disable ops
  * @enable_mask: Mask for control when using regmap enable/disable ops
+ *
+ * @enable_time: Time taken for initial enable of regulator (in uS).
  */
 struct regulator_desc {
 	const char *name;
@@ -201,6 +203,8 @@ struct regulator_desc {
 	unsigned int vsel_mask;
 	unsigned int enable_reg;
 	unsigned int enable_mask;
+
+	unsigned int enable_time;
 };
 
 /**
-- 
1.7.10


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

* [PATCH 2/4] regulator: fixed: Set enable enable_time in regulator_desc
  2012-06-27 14:10 [PATCH 1/4] regulator: core: Allow fixed enable_time to be set in the regulator_desc Mark Brown
@ 2012-06-27 14:10 ` Mark Brown
  2012-06-27 14:10 ` [PATCH 3/4] regulator: wm8994: Set enable_time in descriptor Mark Brown
  2012-06-27 14:10 ` [PATCH 4/4] regulator: wm831x-ldo: Specify enable time for alive LDO Mark Brown
  2 siblings, 0 replies; 4+ messages in thread
From: Mark Brown @ 2012-06-27 14:10 UTC (permalink / raw)
  To: Liam Girdwood; +Cc: linux-kernel, Mark Brown

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
 drivers/regulator/fixed.c |   12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/drivers/regulator/fixed.c b/drivers/regulator/fixed.c
index 8bda365..f7b2642 100644
--- a/drivers/regulator/fixed.c
+++ b/drivers/regulator/fixed.c
@@ -36,7 +36,6 @@ struct fixed_voltage_data {
 	struct regulator_dev *dev;
 	int microvolts;
 	int gpio;
-	unsigned startup_delay;
 	bool enable_high;
 	bool is_enabled;
 };
@@ -123,13 +122,6 @@ static int fixed_voltage_disable(struct regulator_dev *dev)
 	return 0;
 }
 
-static int fixed_voltage_enable_time(struct regulator_dev *dev)
-{
-	struct fixed_voltage_data *data = rdev_get_drvdata(dev);
-
-	return data->startup_delay;
-}
-
 static int fixed_voltage_get_voltage(struct regulator_dev *dev)
 {
 	struct fixed_voltage_data *data = rdev_get_drvdata(dev);
@@ -155,7 +147,6 @@ static struct regulator_ops fixed_voltage_gpio_ops = {
 	.is_enabled = fixed_voltage_is_enabled,
 	.enable = fixed_voltage_enable,
 	.disable = fixed_voltage_disable,
-	.enable_time = fixed_voltage_enable_time,
 	.get_voltage = fixed_voltage_get_voltage,
 	.list_voltage = fixed_voltage_list_voltage,
 };
@@ -197,12 +188,13 @@ static int __devinit reg_fixed_voltage_probe(struct platform_device *pdev)
 	drvdata->desc.type = REGULATOR_VOLTAGE;
 	drvdata->desc.owner = THIS_MODULE;
 
+	drvdata->desc.enable_time = config->startup_delay;
+
 	if (config->microvolts)
 		drvdata->desc.n_voltages = 1;
 
 	drvdata->microvolts = config->microvolts;
 	drvdata->gpio = config->gpio;
-	drvdata->startup_delay = config->startup_delay;
 
 	if (gpio_is_valid(config->gpio)) {
 		int gpio_flag;
-- 
1.7.10


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

* [PATCH 3/4] regulator: wm8994: Set enable_time in descriptor
  2012-06-27 14:10 [PATCH 1/4] regulator: core: Allow fixed enable_time to be set in the regulator_desc Mark Brown
  2012-06-27 14:10 ` [PATCH 2/4] regulator: fixed: Set enable enable_time in regulator_desc Mark Brown
@ 2012-06-27 14:10 ` Mark Brown
  2012-06-27 14:10 ` [PATCH 4/4] regulator: wm831x-ldo: Specify enable time for alive LDO Mark Brown
  2 siblings, 0 replies; 4+ messages in thread
From: Mark Brown @ 2012-06-27 14:10 UTC (permalink / raw)
  To: Liam Girdwood; +Cc: linux-kernel, Mark Brown

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
 drivers/regulator/wm8994-regulator.c |   10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/drivers/regulator/wm8994-regulator.c b/drivers/regulator/wm8994-regulator.c
index 0e2028b..7a1fd77 100644
--- a/drivers/regulator/wm8994-regulator.c
+++ b/drivers/regulator/wm8994-regulator.c
@@ -70,18 +70,10 @@ static int wm8994_ldo_is_enabled(struct regulator_dev *rdev)
 	return ldo->is_enabled;
 }
 
-static int wm8994_ldo_enable_time(struct regulator_dev *rdev)
-{
-	/* 3ms is fairly conservative but this shouldn't be too performance
-	 * critical; can be tweaked per-system if required. */
-	return 3000;
-}
-
 static struct regulator_ops wm8994_ldo1_ops = {
 	.enable = wm8994_ldo_enable,
 	.disable = wm8994_ldo_disable,
 	.is_enabled = wm8994_ldo_is_enabled,
-	.enable_time = wm8994_ldo_enable_time,
 
 	.list_voltage = regulator_list_voltage_linear,
 	.map_voltage = regulator_map_voltage_linear,
@@ -137,6 +129,7 @@ static const struct regulator_desc wm8994_ldo_desc[] = {
 		.ops = &wm8994_ldo1_ops,
 		.min_uV = 2400000,
 		.uV_step = 100000,
+		.enable_time = 3000,
 		.owner = THIS_MODULE,
 	},
 	{
@@ -147,6 +140,7 @@ static const struct regulator_desc wm8994_ldo_desc[] = {
 		.vsel_reg = WM8994_LDO_2,
 		.vsel_mask = WM8994_LDO2_VSEL_MASK,
 		.ops = &wm8994_ldo2_ops,
+		.enable_time = 3000,
 		.owner = THIS_MODULE,
 	},
 };
-- 
1.7.10


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

* [PATCH 4/4] regulator: wm831x-ldo: Specify enable time for alive LDO
  2012-06-27 14:10 [PATCH 1/4] regulator: core: Allow fixed enable_time to be set in the regulator_desc Mark Brown
  2012-06-27 14:10 ` [PATCH 2/4] regulator: fixed: Set enable enable_time in regulator_desc Mark Brown
  2012-06-27 14:10 ` [PATCH 3/4] regulator: wm8994: Set enable_time in descriptor Mark Brown
@ 2012-06-27 14:10 ` Mark Brown
  2 siblings, 0 replies; 4+ messages in thread
From: Mark Brown @ 2012-06-27 14:10 UTC (permalink / raw)
  To: Liam Girdwood; +Cc: linux-kernel, Mark Brown

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
 drivers/regulator/wm831x-ldo.c |    1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/regulator/wm831x-ldo.c b/drivers/regulator/wm831x-ldo.c
index 04d8a41..5cb70ca 100644
--- a/drivers/regulator/wm831x-ldo.c
+++ b/drivers/regulator/wm831x-ldo.c
@@ -701,6 +701,7 @@ static __devinit int wm831x_alive_ldo_probe(struct platform_device *pdev)
 	ldo->desc.enable_mask = 1 << id;
 	ldo->desc.min_uV = 800000;
 	ldo->desc.uV_step = 50000;
+	ldo->desc.enable_time = 1000;
 
 	config.dev = pdev->dev.parent;
 	if (pdata)
-- 
1.7.10


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

end of thread, other threads:[~2012-06-27 14:10 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-06-27 14:10 [PATCH 1/4] regulator: core: Allow fixed enable_time to be set in the regulator_desc Mark Brown
2012-06-27 14:10 ` [PATCH 2/4] regulator: fixed: Set enable enable_time in regulator_desc Mark Brown
2012-06-27 14:10 ` [PATCH 3/4] regulator: wm8994: Set enable_time in descriptor Mark Brown
2012-06-27 14:10 ` [PATCH 4/4] regulator: wm831x-ldo: Specify enable time for alive LDO Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®