Hello Liam,
This series is a revision of an earlier patch which was sent before.
The previous patch was split and now these changes are against voltage-2.6
tree, branch for-next.
There are two new modification. So now this series contains:
- Add all twl4030 regulators to the RegFW and
- make sure the REMAP configuration of each regulator is as after reset.
- Also defines critical regulators as always-on since it is not feasible
to allow them to be disabled in a case where the RegFW is used
These are only modifications on the twl4030 regulator driver. Changes to
the mfd driver will be sent separately
BR,
Juha Keski-Saari (3):
twl4030-regulator: Add all TWL regulators to twreg_info
Reset REMAP configuration in regulator probe
Define critical regulators as always_on
drivers/regulator/twl4030-regulator.c | 48 +++++++++++++++++++++++---------
1 files changed, 34 insertions(+), 14 deletions(-)
Define all twl4030 regulators in the twlreg_info table, along with
appropriate VSEL tables for adjustable regulators
Signed-off-by: Juha Keski-Saari <[email protected]>
Acked-by: Mark Brown <[email protected]>
Acked-by: Samuel Ortiz <[email protected]>
---
drivers/regulator/twl4030-regulator.c | 31 +++++++++++++++++--------------
1 files changed, 17 insertions(+), 14 deletions(-)
diff --git a/drivers/regulator/twl4030-regulator.c b/drivers/regulator/twl4030-regulator.c
index 9365140..75da6af 100644
--- a/drivers/regulator/twl4030-regulator.c
+++ b/drivers/regulator/twl4030-regulator.c
@@ -260,7 +260,18 @@ static const u16 VSIM_VSEL_table[] = {
static const u16 VDAC_VSEL_table[] = {
1200, 1300, 1800, 1800,
};
-
+static const u16 VDD1_VSEL_table[] = {
+ 800, 1450,
+};
+static const u16 VDD2_VSEL_table[] = {
+ 800, 1450, 1500,
+};
+static const u16 VIO_VSEL_table[] = {
+ 1800, 1850,
+};
+static const u16 VINTANA2_VSEL_table[] = {
+ 2500, 2750,
+};
static int twl4030ldo_list_voltage(struct regulator_dev *rdev, unsigned index)
{
@@ -390,27 +401,19 @@ static struct regulator_ops twl4030fixed_ops = {
* software control over them after boot.
*/
static struct twlreg_info twl4030_regs[] = {
- TWL_ADJUSTABLE_LDO(VAUX1, 0x17, 1),
- TWL_ADJUSTABLE_LDO(VAUX2_4030, 0x1b, 2),
- TWL_ADJUSTABLE_LDO(VAUX2, 0x1b, 2),
- TWL_ADJUSTABLE_LDO(VAUX3, 0x1f, 3),
TWL_ADJUSTABLE_LDO(VAUX4, 0x23, 4),
TWL_ADJUSTABLE_LDO(VMMC1, 0x27, 5),
TWL_ADJUSTABLE_LDO(VMMC2, 0x2b, 6),
- /*
TWL_ADJUSTABLE_LDO(VPLL1, 0x2f, 7),
- */
TWL_ADJUSTABLE_LDO(VPLL2, 0x33, 8),
TWL_ADJUSTABLE_LDO(VSIM, 0x37, 9),
TWL_ADJUSTABLE_LDO(VDAC, 0x3b, 10),
- /*
- TWL_ADJUSTABLE_LDO(VINTANA1, 0x3f, 11),
+ TWL_FIXED_LDO(VINTANA1, 0x3f, 1500, 11),
TWL_ADJUSTABLE_LDO(VINTANA2, 0x43, 12),
- TWL_ADJUSTABLE_LDO(VINTDIG, 0x47, 13),
- TWL_SMPS(VIO, 0x4b, 14),
- TWL_SMPS(VDD1, 0x55, 15),
- TWL_SMPS(VDD2, 0x63, 16),
- */
+ TWL_FIXED_LDO(VINTDIG, 0x47, 1500, 13),
+ TWL_ADJUSTABLE_LDO(VIO, 0x4b, 14),
+ TWL_ADJUSTABLE_LDO(VDD1, 0x55, 15),
+ TWL_ADJUSTABLE_LDO(VDD2, 0x63, 16),
TWL_FIXED_LDO(VUSB1V5, 0x71, 1500, 17),
TWL_FIXED_LDO(VUSB1V8, 0x74, 1800, 18),
TWL_FIXED_LDO(VUSB3V1, 0x77, 3100, 19),
--
1.6.3.3
This patch makes the probe recover the regulator REMAP configuration into
the state it is on reset to make sure the RegFW has proper control over
the regulator states
Signed-off-by: Juha Keski-Saari <[email protected]>
---
drivers/regulator/twl4030-regulator.c | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/drivers/regulator/twl4030-regulator.c b/drivers/regulator/twl4030-regulator.c
index 75da6af..7029fb9 100644
--- a/drivers/regulator/twl4030-regulator.c
+++ b/drivers/regulator/twl4030-regulator.c
@@ -420,6 +420,13 @@ static struct twlreg_info twl4030_regs[] = {
/* VUSBCP is managed *only* by the USB subchip */
};
+static const u8 REG_REMAP_table[] = {
+ 0x08, 0x08, 0x08, 0x08, 0x00, 0x08, 0x08,
+ 0x08, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ 0x08,
+};
+
static int twl4030reg_probe(struct platform_device *pdev)
{
int i;
@@ -458,6 +465,8 @@ static int twl4030reg_probe(struct platform_device *pdev)
}
platform_set_drvdata(pdev, rdev);
+ twl4030reg_write(info, VREG_REMAP, REG_REMAP_table[pdev->id]);
+
/* NOTE: many regulators support short-circuit IRQs (presentable
* as REGULATOR_OVER_CURRENT notifications?) configured via:
* - SC_CONFIG
--
1.6.3.3
Defines VIO, VDD1, VDD2, VPLL1 and VINT* regulators as always_on by default
since they are critical to TWL and its master's functionality and should
be on in all cases where RegFW is used
Signed-off-by: Juha Keski-Saari <[email protected]>
---
drivers/regulator/twl4030-regulator.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/drivers/regulator/twl4030-regulator.c b/drivers/regulator/twl4030-regulator.c
index 7029fb9..af53f35 100644
--- a/drivers/regulator/twl4030-regulator.c
+++ b/drivers/regulator/twl4030-regulator.c
@@ -456,6 +456,14 @@ static int twl4030reg_probe(struct platform_device *pdev)
c->valid_ops_mask &= REGULATOR_CHANGE_VOLTAGE
| REGULATOR_CHANGE_MODE
| REGULATOR_CHANGE_STATUS;
+ if (pdev->id == TWL4030_REG_VIO ||
+ pdev->id == TWL4030_REG_VDD1 ||
+ pdev->id == TWL4030_REG_VDD2 ||
+ pdev->id == TWL4030_REG_VPLL1 ||
+ pdev->id == TWL4030_REG_VINTANA1 ||
+ pdev->id == TWL4030_REG_VINTANA2 ||
+ pdev->id == TWL4030_REG_VINTDIG)
+ c->always_on = true;
rdev = regulator_register(&info->desc, &pdev->dev, initdata, info);
if (IS_ERR(rdev)) {
--
1.6.3.3
On Wed, Nov 25, 2009 at 12:04:55PM +0200, Juha Keski-Saari wrote:
> + if (pdev->id == TWL4030_REG_VIO ||
> + pdev->id == TWL4030_REG_VDD1 ||
> + pdev->id == TWL4030_REG_VDD2 ||
> + pdev->id == TWL4030_REG_VPLL1 ||
> + pdev->id == TWL4030_REG_VINTANA1 ||
> + pdev->id == TWL4030_REG_VINTANA2 ||
> + pdev->id == TWL4030_REG_VINTDIG)
> + c->always_on = true;
This would be a bit clearer and much more idiomatic as a switch
statement.
On Wed, 2009-11-25 at 11:14 +0100, ext Mark Brown wrote:
> On Wed, Nov 25, 2009 at 12:04:55PM +0200, Juha Keski-Saari wrote:
>
> > + if (pdev->id == TWL4030_REG_VIO ||
> > + pdev->id == TWL4030_REG_VDD1 ||
> > + pdev->id == TWL4030_REG_VDD2 ||
> > + pdev->id == TWL4030_REG_VPLL1 ||
> > + pdev->id == TWL4030_REG_VINTANA1 ||
> > + pdev->id == TWL4030_REG_VINTANA2 ||
> > + pdev->id == TWL4030_REG_VINTDIG)
> > + c->always_on = true;
>
> This would be a bit clearer and much more idiomatic as a switch
> statement.
A switch statement sounds like a better idea, yes. Below is a version
that implements that change.
>From 469f1f3fac05a740484cb32469b64aae424ba4de Mon Sep 17 00:00:00 2001
From: Juha Keski-Saari <[email protected]>
Date: Wed, 25 Nov 2009 11:10:35 +0200
Subject: [PATCHv3 3/3] Define critical regulators as always_on
Defines VIO, VDD1, VDD2, VPLL1 and VINT* regulators as always_on by
default
since they are critical to TWL and its master's functionality and should
be on in all cases where RegFW is used
Signed-off-by: Juha Keski-Saari <[email protected]>
---
drivers/regulator/twl4030-regulator.c | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/drivers/regulator/twl4030-regulator.c
b/drivers/regulator/twl4030-regulator.c
index 7029fb9..02100bc 100644
--- a/drivers/regulator/twl4030-regulator.c
+++ b/drivers/regulator/twl4030-regulator.c
@@ -456,6 +456,19 @@ static int twl4030reg_probe(struct platform_device
*pdev)
c->valid_ops_mask &= REGULATOR_CHANGE_VOLTAGE
| REGULATOR_CHANGE_MODE
| REGULATOR_CHANGE_STATUS;
+ switch(pdev->id) {
+ case TWL4030_REG_VIO:
+ case TWL4030_REG_VDD1:
+ case TWL4030_REG_VDD2:
+ case TWL4030_REG_VPLL1:
+ case TWL4030_REG_VINTANA1:
+ case TWL4030_REG_VINTANA2:
+ case TWL4030_REG_VINTDIG:
+ c->always_on = true;
+ break;
+ default:
+ break;
+ }
rdev = regulator_register(&info->desc, &pdev->dev, initdata, info);
if (IS_ERR(rdev)) {
--
1.6.3.3
On Wed, Nov 25, 2009 at 12:29:59PM +0200, Juha Keski-Saari wrote:
> + case TWL4030_REG_VINTDIG:
> + c->always_on = true;
> + break;
One other thing I noticed having seen the MFD series - is this going to
build without the separate MFD patch you've posted?
On Wed, 2009-11-25 at 12:13 +0100, ext Mark Brown wrote:
> On Wed, Nov 25, 2009 at 12:29:59PM +0200, Juha Keski-Saari wrote:
>
> > + case TWL4030_REG_VINTDIG:
> > + c->always_on = true;
> > + break;
>
> One other thing I noticed having seen the MFD series - is this going to
> build without the separate MFD patch you've posted?
Yes, the changes to twl4030-regulator.c compile without the changes the
MFD patch set makes to twl4030-core.c and twl4030.h
Regrettably it seems I slipped a mistake into this patch which took out
the regulators VAUX1-3. Below is a version which removes this issue
>From 9ddec9979471fa7ba77532fa50c88137051d2037 Mon Sep 17 00:00:00 2001
From: Juha Keski-Saari <[email protected]>
Date: Wed, 25 Nov 2009 10:58:46 +0200
Subject: [PATCHv3 1/3] twl4030-regulator: Add all TWL regulators to twreg_info
Define all twl4030 regulators in the twlreg_info table, along with
appropriate VSEL tables for adjustable regulators
Signed-off-by: Juha Keski-Saari <[email protected]>
Acked-by: Mark Brown <[email protected]>
Acked-by: Samuel Ortiz <[email protected]>
---
drivers/regulator/twl4030-regulator.c | 27 +++++++++++++++++----------
1 files changed, 17 insertions(+), 10 deletions(-)
diff --git a/drivers/regulator/twl4030-regulator.c b/drivers/regulator/twl4030-regulator.c
index 9365140..c50b8b7 100644
--- a/drivers/regulator/twl4030-regulator.c
+++ b/drivers/regulator/twl4030-regulator.c
@@ -260,7 +260,18 @@ static const u16 VSIM_VSEL_table[] = {
static const u16 VDAC_VSEL_table[] = {
1200, 1300, 1800, 1800,
};
-
+static const u16 VDD1_VSEL_table[] = {
+ 800, 1450,
+};
+static const u16 VDD2_VSEL_table[] = {
+ 800, 1450, 1500,
+};
+static const u16 VIO_VSEL_table[] = {
+ 1800, 1850,
+};
+static const u16 VINTANA2_VSEL_table[] = {
+ 2500, 2750,
+};
static int twl4030ldo_list_voltage(struct regulator_dev *rdev, unsigned index)
{
@@ -397,20 +408,16 @@ static struct twlreg_info twl4030_regs[] = {
TWL_ADJUSTABLE_LDO(VAUX4, 0x23, 4),
TWL_ADJUSTABLE_LDO(VMMC1, 0x27, 5),
TWL_ADJUSTABLE_LDO(VMMC2, 0x2b, 6),
- /*
TWL_ADJUSTABLE_LDO(VPLL1, 0x2f, 7),
- */
TWL_ADJUSTABLE_LDO(VPLL2, 0x33, 8),
TWL_ADJUSTABLE_LDO(VSIM, 0x37, 9),
TWL_ADJUSTABLE_LDO(VDAC, 0x3b, 10),
- /*
- TWL_ADJUSTABLE_LDO(VINTANA1, 0x3f, 11),
+ TWL_FIXED_LDO(VINTANA1, 0x3f, 1500, 11),
TWL_ADJUSTABLE_LDO(VINTANA2, 0x43, 12),
- TWL_ADJUSTABLE_LDO(VINTDIG, 0x47, 13),
- TWL_SMPS(VIO, 0x4b, 14),
- TWL_SMPS(VDD1, 0x55, 15),
- TWL_SMPS(VDD2, 0x63, 16),
- */
+ TWL_FIXED_LDO(VINTDIG, 0x47, 1500, 13),
+ TWL_ADJUSTABLE_LDO(VIO, 0x4b, 14),
+ TWL_ADJUSTABLE_LDO(VDD1, 0x55, 15),
+ TWL_ADJUSTABLE_LDO(VDD2, 0x63, 16),
TWL_FIXED_LDO(VUSB1V5, 0x71, 1500, 17),
TWL_FIXED_LDO(VUSB1V8, 0x74, 1800, 18),
TWL_FIXED_LDO(VUSB3V1, 0x77, 3100, 19),
--
1.6.3.3
On Wed, 2009-11-25 at 15:38 +0200, Juha Keski-Saari wrote:
> Regrettably it seems I slipped a mistake into this patch which took out
> the regulators VAUX1-3. Below is a version which removes this issue
>
Ah, I've just applied and pushed this series. Can you redo against
voltage for-next ?
Thanks
Liam
On Wed, 2009-11-25 at 14:49 +0100, ext Liam Girdwood wrote:
> On Wed, 2009-11-25 at 15:38 +0200, Juha Keski-Saari wrote:
> > Regrettably it seems I slipped a mistake into this patch which took out
> > the regulators VAUX1-3. Below is a version which removes this issue
> >
>
> Ah, I've just applied and pushed this series. Can you redo against
> voltage for-next ?
>
> Thanks
>
> Liam
Here are the additions done on recent voltage-2.6/for-next, my apologies
for the extra work
>From 03578bd4f927f7777557be6d473eb0011b80608a Mon Sep 17 00:00:00 2001
From: Juha Keski-Saari <[email protected]>
Date: Wed, 25 Nov 2009 16:18:35 +0200
Subject: [PATCH] twl4030-regulator: Fixes VAUX1-3 exclusion introduced
in 3277b9fce0fcaa68d5947429e062163852ebc6fb
Signed-off-by: Juha Keski-Saari <[email protected]>
---
drivers/regulator/twl4030-regulator.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/drivers/regulator/twl4030-regulator.c
b/drivers/regulator/twl4030-regulator.c
index 02100bc..477c965 100644
--- a/drivers/regulator/twl4030-regulator.c
+++ b/drivers/regulator/twl4030-regulator.c
@@ -401,6 +401,10 @@ static struct regulator_ops twl4030fixed_ops = {
* software control over them after boot.
*/
static struct twlreg_info twl4030_regs[] = {
+ TWL_ADJUSTABLE_LDO(VAUX1, 0x17, 1),
+ TWL_ADJUSTABLE_LDO(VAUX2_4030, 0x1b, 2),
+ TWL_ADJUSTABLE_LDO(VAUX2, 0x1b, 2),
+ TWL_ADJUSTABLE_LDO(VAUX3, 0x1f, 3),
TWL_ADJUSTABLE_LDO(VAUX4, 0x23, 4),
TWL_ADJUSTABLE_LDO(VMMC1, 0x27, 5),
TWL_ADJUSTABLE_LDO(VMMC2, 0x2b, 6),
--
1.6.3.3
On Wed, Nov 25, 2009 at 04:22:43PM +0200, Juha Keski-Saari wrote:
> Signed-off-by: Juha Keski-Saari <[email protected]>
all these are Acked-by: Mark Brown <[email protected]>
On Wed, 2009-11-25 at 16:22 +0200, Juha Keski-Saari wrote:
> On Wed, 2009-11-25 at 14:49 +0100, ext Liam Girdwood wrote:
> > On Wed, 2009-11-25 at 15:38 +0200, Juha Keski-Saari wrote:
> > > Regrettably it seems I slipped a mistake into this patch which took out
> > > the regulators VAUX1-3. Below is a version which removes this issue
> > >
> >
> > Ah, I've just applied and pushed this series. Can you redo against
> > voltage for-next ?
> >
> > Thanks
> >
> > Liam
>
> Here are the additions done on recent voltage-2.6/for-next, my apologies
> for the extra work
>
> >From 03578bd4f927f7777557be6d473eb0011b80608a Mon Sep 17 00:00:00 2001
> From: Juha Keski-Saari <[email protected]>
> Date: Wed, 25 Nov 2009 16:18:35 +0200
> Subject: [PATCH] twl4030-regulator: Fixes VAUX1-3 exclusion introduced
> in 3277b9fce0fcaa68d5947429e062163852ebc6fb
>
> Signed-off-by: Juha Keski-Saari <[email protected]>
> ---
> drivers/regulator/twl4030-regulator.c | 4 ++++
> 1 files changed, 4 insertions(+), 0 deletions(-)
>
Applied.
Thanks
Liam