Re: [patch/rfc 2.6.29-rc6 2/2] regulator: twl4030 voltage enumeration (v2)
On Tue, 2009-03-03 at 14:59 -0800, David Brownell wrote: > On Friday 27 February 2009, Liam Girdwood wrote: > > Sorry, this didn't apply. It looks like I'm missing an earlier patch(s) > > here. Could you regenerate this and your core patch against latest > > for-next. > > Here you go. > > - Dave > > > == CUT HERE > From: David Brownell > > Minor cleanups to the twl403 regulator driver, mostly enabled > by other recent changes: comments, shrink memory usage, add > definition for one bit. > > Signed-off-by: David Brownell > --- > drivers/regulator/twl4030-regulator.c | 16 +--- > 1 file changed, 9 insertions(+), 7 deletions(-) > Applied. Thanks Liam -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [patch/rfc 2.6.29-rc6 2/2] regulator: twl4030 voltage enumeration (v2)
On Friday 27 February 2009, Liam Girdwood wrote: > Sorry, this didn't apply. It looks like I'm missing an earlier patch(s) > here. Could you regenerate this and your core patch against latest > for-next. Here you go. - Dave == CUT HERE From: David Brownell Minor cleanups to the twl403 regulator driver, mostly enabled by other recent changes: comments, shrink memory usage, add definition for one bit. Signed-off-by: David Brownell --- drivers/regulator/twl4030-regulator.c | 16 +--- 1 file changed, 9 insertions(+), 7 deletions(-) --- a/drivers/regulator/twl4030-regulator.c +++ b/drivers/regulator/twl4030-regulator.c @@ -36,13 +36,13 @@ struct twlreg_info { /* twl4030 resource ID, for resource control state machine */ u8 id; + /* FIXED_LDO voltage */ + u8 deciV; + /* voltage in mV = table[VSEL]; table_len must be a power-of-two */ u8 table_len; const u16 *table; - /* chip constraints on regulator behavior */ - u16 min_mV; - /* used by regulator core */ struct regulator_desc desc; }; @@ -93,6 +93,7 @@ static int twl4030reg_grp(struct regulat #define P3_GRP BIT(7) /* "peripherals" */ #define P2_GRP BIT(6) /* secondary processor, modem, etc */ #define P1_GRP BIT(5) /* CPU/Linux */ +#define WARM_CFG BIT(4) static int twl4030reg_is_enabled(struct regulator_dev *rdev) { @@ -325,14 +326,14 @@ static int twl4030fixed_list_voltage(str { struct twlreg_info *info = rdev_get_drvdata(rdev); - return info->min_mV * 1000; + return info->deciV * 100 * 1000; } static int twl4030fixed_get_voltage(struct regulator_dev *rdev) { struct twlreg_info *info = rdev_get_drvdata(rdev); - return info->min_mV * 1000; + return info->deciV * 100 * 1000; } static struct regulator_ops twl4030fixed_ops = { @@ -369,7 +370,7 @@ static struct regulator_ops twl4030fixed #define TWL_FIXED_LDO(label, offset, mVolts, num) { \ .base = offset, \ .id = num, \ - .min_mV = mVolts, \ + .deciV = mVolts / 100 , \ .desc = { \ .name = #label, \ .id = TWL4030_REG_##label, \ @@ -381,7 +382,7 @@ static struct regulator_ops twl4030fixed } /* - * We list regulators here if systems need some level of + * We expose regulators here if systems need some level of * software control over them after boot. */ static struct twlreg_info twl4030_regs[] = { @@ -435,6 +436,7 @@ static int twl4030reg_probe(struct platf /* Constrain board-specific capabilities according to what * this driver and the chip itself can actually do. +* (Regulator core now does this for voltage constraints.) */ c = &initdata->constraints; c->valid_modes_mask &= REGULATOR_MODE_NORMAL | REGULATOR_MODE_STANDBY; -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [patch/rfc 2.6.29-rc6 2/2] regulator: twl4030 voltage enumeration (v2)
On Fri, 2009-02-27 at 12:39 -0800, David Brownell wrote: > On Friday 27 February 2009, Liam Girdwood wrote: > > Sorry, this didn't apply. It looks like I'm missing an earlier patch(s) > > here. Could you regenerate this and your core patch against latest > > for-next. > > The regulator -next tree seems to be missing a bunch of stuff... > I generated this patch against a "twl4030-regulator.c" which I > extracted *from that tree* yesterday. But today it's different. > > In this case, the current code doesn't have the $SUBJECT patch, > which at that time you had applied. But it does have a small > snippet from that "minor patch"... > > > Color me confused. Are you asking for a "v3" of $SUBJECT, or > is the "v2" going to re-appear? Applied the "v2". > And when will that -next tree > acquire the rest of > > http://marc.info/?l=linux-kernel&m=123567791402469&w=2 > Applied and re-based this one into original patch. Thanks Liam -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [patch/rfc 2.6.29-rc6 2/2] regulator: twl4030 voltage enumeration (v2)
On Friday 27 February 2009, Liam Girdwood wrote: > On Thu, 2009-02-26 at 16:02 -0800, David Brownell wrote: > > On Thursday 26 February 2009, Liam Girdwood wrote: > > > > > > > > Note that the twl4030 regulator patch referred to will need a > > > > minor patch to work with the -next tree, because of interface > > > > change in the regulator framework. > > > > > > Applied. > > > > and here's that "minor patch". > > > > ... > > Sorry, this didn't apply. It looks like I'm missing an earlier patch(s) > here. Could you regenerate this and your core patch against latest > for-next. The regulator -next tree seems to be missing a bunch of stuff... I generated this patch against a "twl4030-regulator.c" which I extracted *from that tree* yesterday. But today it's different. In this case, the current code doesn't have the $SUBJECT patch, which at that time you had applied. But it does have a small snippet from that "minor patch"... Color me confused. Are you asking for a "v3" of $SUBJECT, or is the "v2" going to re-appear? And when will that -next tree acquire the rest of http://marc.info/?l=linux-kernel&m=123567791402469&w=2 Having only the driver.h part of that patch breaks things (your 0ae0e667c8a2bacfe066b90f8f2ee3b4a83a120d). - Dave -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [patch/rfc 2.6.29-rc6 2/2] regulator: twl4030 voltage enumeration (v2)
On Thu, 2009-02-26 at 16:02 -0800, David Brownell wrote: > On Thursday 26 February 2009, Liam Girdwood wrote: > > > > > > Note that the twl4030 regulator patch referred to will need a > > > minor patch to work with the -next tree, because of interface > > > change in the regulator framework. > > > > > > drivers/regulator/twl4030-regulator.c | 62 > > > +++- > > > 1 file changed, 23 insertions(+), 39 deletions(-) > > > > Applied. > > and here's that "minor patch". > > == CUT HERE > From: David Brownell > > Catch up the twl4030 regulator driver to the regulator > interface change adding another parameter. Also, fix > some comments, and take this opportunity to shrink the > associated per-regulator memory usage by a word. > > Signed-off-by: David Brownell > --- > drivers/regulator/twl4030-regulator.c | 17 + > 1 file changed, 9 insertions(+), 8 deletions(-) Sorry, this didn't apply. It looks like I'm missing an earlier patch(s) here. Could you regenerate this and your core patch against latest for-next. Thanks Liam -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [patch/rfc 2.6.29-rc6 2/2] regulator: twl4030 voltage enumeration (v2)
On Thursday 26 February 2009, Liam Girdwood wrote: > > > > Note that the twl4030 regulator patch referred to will need a > > minor patch to work with the -next tree, because of interface > > change in the regulator framework. > > > > drivers/regulator/twl4030-regulator.c | 62 > > +++- > > 1 file changed, 23 insertions(+), 39 deletions(-) > > Applied. and here's that "minor patch". == CUT HERE From: David Brownell Catch up the twl4030 regulator driver to the regulator interface change adding another parameter. Also, fix some comments, and take this opportunity to shrink the associated per-regulator memory usage by a word. Signed-off-by: David Brownell --- drivers/regulator/twl4030-regulator.c | 17 + 1 file changed, 9 insertions(+), 8 deletions(-) --- a/drivers/regulator/twl4030-regulator.c +++ b/drivers/regulator/twl4030-regulator.c @@ -36,13 +36,13 @@ struct twlreg_info { /* twl4030 resource ID, for resource control state machine */ u8 id; + /* FIXED_LDO voltage */ + u8 deciV; + /* voltage in mV = table[VSEL]; table_len must be a power-of-two */ u8 table_len; const u16 *table; - /* chip constraints on regulator behavior */ - u16 min_mV; - /* used by regulator core */ struct regulator_desc desc; }; @@ -329,14 +329,14 @@ static int twl4030fixed_list_voltage(str { struct twlreg_info *info = rdev_get_drvdata(rdev); - return info->min_mV * 1000; + return info->deciV * 100 * 1000; } static int twl4030fixed_get_voltage(struct regulator_dev *rdev) { struct twlreg_info *info = rdev_get_drvdata(rdev); - return info->min_mV * 1000; + return info->deciV * 100 * 1000; } static struct regulator_ops twl4030fixed_ops = { @@ -373,7 +373,7 @@ static struct regulator_ops twl4030fixed #define TWL_FIXED_LDO(label, offset, mVolts, num) { \ .base = offset, \ .id = num, \ - .min_mV = mVolts, \ + .deciV = mVolts / 100 , \ .desc = { \ .name = #label, \ .id = TWL4030_REG_##label, \ @@ -385,7 +385,7 @@ static struct regulator_ops twl4030fixed } /* - * We list regulators here if systems need some level of + * We expose regulators here if systems need some level of * software control over them after boot. */ static struct twlreg_info twl4030_regs[] = { @@ -439,6 +439,7 @@ static int twl4030reg_probe(struct platf /* Constrain board-specific capabilities according to what * this driver and the chip itself can actually do. +* (Regulator core now does this for voltage constraints.) */ c = &initdata->constraints; c->valid_modes_mask &= REGULATOR_MODE_NORMAL | REGULATOR_MODE_STANDBY; @@ -446,7 +447,7 @@ static int twl4030reg_probe(struct platf | REGULATOR_CHANGE_MODE | REGULATOR_CHANGE_STATUS; - rdev = regulator_register(&info->desc, &pdev->dev, info); + rdev = regulator_register(&info->desc, &pdev->dev, initdata, info); if (IS_ERR(rdev)) { dev_err(&pdev->dev, "can't register %s, %ld\n", info->desc.name, PTR_ERR(rdev)); -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [patch/rfc 2.6.29-rc6 2/2] regulator: twl4030 voltage enumeration (v2)
On Thu, 2009-02-26 at 11:50 -0800, David Brownell wrote: > From: David Brownell > > Update previously-posted twl4030 regulator driver to export > supported voltages to upper layers using a new mechanism. > > Signed-off-by: David Brownell > --- > Updates since previous version: match updated [1/2] interfaces. > > Note that the twl4030 regulator patch referred to will need a > minor patch to work with the -next tree, because of interface > change in the regulator framework. > > drivers/regulator/twl4030-regulator.c | 62 +++- > 1 file changed, 23 insertions(+), 39 deletions(-) Applied. Thanks Liam -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [patch/rfc 2.6.29-rc6 2/2] regulator: twl4030 voltage enumeration (v2)
On Thu, Feb 26, 2009 at 11:50:14AM -0800, David Brownell wrote: > From: David Brownell > Update previously-posted twl4030 regulator driver to export > supported voltages to upper layers using a new mechanism. > Signed-off-by: David Brownell Looks good, thanks! Acked-by: Mark Brown -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[patch/rfc 2.6.29-rc6 2/2] regulator: twl4030 voltage enumeration (v2)
From: David Brownell Update previously-posted twl4030 regulator driver to export supported voltages to upper layers using a new mechanism. Signed-off-by: David Brownell --- Updates since previous version: match updated [1/2] interfaces. Note that the twl4030 regulator patch referred to will need a minor patch to work with the -next tree, because of interface change in the regulator framework. drivers/regulator/twl4030-regulator.c | 62 +++- 1 file changed, 23 insertions(+), 39 deletions(-) --- a/drivers/regulator/twl4030-regulator.c +++ b/drivers/regulator/twl4030-regulator.c @@ -42,7 +42,6 @@ struct twlreg_info { /* chip constraints on regulator behavior */ u16 min_mV; - u16 max_mV; /* used by regulator core */ struct regulator_desc desc; @@ -262,6 +261,14 @@ static const u16 VDAC_VSEL_table[] = { }; +static int twl4030ldo_list_voltage(struct regulator_dev *rdev, unsigned index) +{ + struct twlreg_info *info = rdev_get_drvdata(rdev); + int mV = info->table[index]; + + return IS_UNSUP(mV) ? 0 : (LDO_MV(mV) * 1000); +} + static int twl4030ldo_set_voltage(struct regulator_dev *rdev, int min_uV, int max_uV) { @@ -276,6 +283,8 @@ twl4030ldo_set_voltage(struct regulator_ continue; uV = LDO_MV(mV) * 1000; + /* REVISIT for VAUX2, first match may not be best/lowest */ + /* use the first in-range value */ if (min_uV <= uV && uV <= max_uV) return twl4030reg_write(info, VREG_DEDICATED, vsel); @@ -297,6 +306,8 @@ static int twl4030ldo_get_voltage(struct } static struct regulator_ops twl4030ldo_ops = { + .list_voltage = twl4030ldo_list_voltage, + .set_voltage= twl4030ldo_set_voltage, .get_voltage= twl4030ldo_get_voltage, @@ -314,6 +325,13 @@ static struct regulator_ops twl4030ldo_o /* * Fixed voltage LDOs don't have a VSEL field to update. */ +static int twl4030fixed_list_voltage(struct regulator_dev *rdev, unsigned index) +{ + struct twlreg_info *info = rdev_get_drvdata(rdev); + + return info->min_mV * 1000; +} + static int twl4030fixed_get_voltage(struct regulator_dev *rdev) { struct twlreg_info *info = rdev_get_drvdata(rdev); @@ -322,6 +340,8 @@ static int twl4030fixed_get_voltage(stru } static struct regulator_ops twl4030fixed_ops = { + .list_voltage = twl4030fixed_list_voltage, + .get_voltage= twl4030fixed_get_voltage, .enable = twl4030reg_enable, @@ -343,6 +363,7 @@ static struct regulator_ops twl4030fixed .desc = { \ .name = #label, \ .id = TWL4030_REG_##label, \ + .n_voltages = ARRAY_SIZE(label##_VSEL_table), \ .ops = &twl4030ldo_ops, \ .type = REGULATOR_VOLTAGE, \ .owner = THIS_MODULE, \ @@ -353,10 +374,10 @@ static struct regulator_ops twl4030fixed .base = offset, \ .id = num, \ .min_mV = mVolts, \ - .max_mV = mVolts, \ .desc = { \ .name = #label, \ .id = TWL4030_REG_##label, \ + .n_voltages = 1, \ .ops = &twl4030fixed_ops, \ .type = REGULATOR_VOLTAGE, \ .owner = THIS_MODULE, \ @@ -402,14 +423,11 @@ static int twl4030reg_probe(struct platf struct regulator_init_data *initdata; struct regulation_constraints *c; struct regulator_dev*rdev; - int min_uV, max_uV; for (i = 0, info = NULL; i < ARRAY_SIZE(twl4030_regs); i++) { if (twl4030_regs[i].desc.id != pdev->id) continue; info = twl4030_regs + i; - min_uV = info->min_mV * 1000; - max_uV = info->max_mV * 1000; break; } if (!info) @@ -423,10 +441,6 @@ static int twl4030reg_probe(struct platf * this driver and the chip itself can actually do. */ c = &initdata->constraints; - if (!c->min_uV || c->min_uV < min_uV) - c->min_uV = min_uV; - if (!c->max_uV || c->max_uV > max_uV) - c->max_uV = max_uV; c->valid_modes_mask &= REGULATOR_MODE_NORMAL | REGULATOR_MODE_STANDBY; c->valid_ops_mask &= REGULATOR_CHANGE_VOLTAGE | REGULATOR_CHANGE_MODE @@ -471,36 +485,6 @@ static struct platform_driver twl4030reg static int __init twl4030reg_init(void) { - unsigned i, j; - - /* determine min/max voltage constraints, taking into account -* whether set_voltage() will use the "unsupported" settings -*/ - for (i = 0; i < ARRAY_SIZE(twl4030_regs); i++) { - struct twlreg_info *info = twl4030_regs +