On Wed, Sep 27, 2017 at 05:55:40PM +0530, Keerthy wrote: > The reset value of the EN_PIN_CTRL bit fields of LDOs and BUCKs > need not be set correctly. Hence update the enable mask to include > the EN_PIN_CTRL bit. While enabling this should be set to 1 so > that all the regulators are tied to EN pin. I'm not sure I follow the logic here entirely. It sounds like this is a register bit to control if the regulators are enabled and disabled via a GPIO instead of the register which is something that people might want to use in some systems. Shouldn't this be dependent on some system configration instead? > > Signed-off-by: Keerthy <j-keerthy@xxxxxx> > --- > drivers/regulator/lp873x-regulator.c | 19 ++++++++++--------- > include/linux/mfd/lp873x.h | 4 ++++ > 2 files changed, 14 insertions(+), 9 deletions(-) > > diff --git a/drivers/regulator/lp873x-regulator.c b/drivers/regulator/lp873x-regulator.c > index 70e3df6..77bea82 100644 > --- a/drivers/regulator/lp873x-regulator.c > +++ b/drivers/regulator/lp873x-regulator.c > @@ -20,7 +20,7 @@ > #include <linux/mfd/lp873x.h> > > #define LP873X_REGULATOR(_name, _id, _of, _ops, _n, _vr, _vm, _er, _em, \ > - _delay, _lr, _cr) \ > + _dv, _delay, _lr, _cr) \ > [_id] = { \ > .desc = { \ > .name = _name, \ > @@ -36,6 +36,7 @@ > .vsel_mask = _vm, \ > .enable_reg = _er, \ > .enable_mask = _em, \ > + .disable_val = _dv, \ > .ramp_delay = _delay, \ > .linear_ranges = _lr, \ > .n_linear_ranges = ARRAY_SIZE(_lr), \ > @@ -175,21 +176,21 @@ static int lp873x_buck_get_current_limit(struct regulator_dev *rdev) > LP873X_REGULATOR("BUCK0", LP873X_BUCK_0, "buck0", lp873x_buck01_ops, > 256, LP873X_REG_BUCK0_VOUT, > LP873X_BUCK0_VOUT_BUCK0_VSET, LP873X_REG_BUCK0_CTRL_1, > - LP873X_BUCK0_CTRL_1_BUCK0_EN, 10000, > - buck0_buck1_ranges, LP873X_REG_BUCK0_CTRL_2), > + LP873X_BUCK_ENABLE_MASK, LP873X_BUCK_DISABLE_VAL, > + 10000, buck0_buck1_ranges, LP873X_REG_BUCK0_CTRL_2), > LP873X_REGULATOR("BUCK1", LP873X_BUCK_1, "buck1", lp873x_buck01_ops, > 256, LP873X_REG_BUCK1_VOUT, > LP873X_BUCK1_VOUT_BUCK1_VSET, LP873X_REG_BUCK1_CTRL_1, > - LP873X_BUCK1_CTRL_1_BUCK1_EN, 10000, > - buck0_buck1_ranges, LP873X_REG_BUCK1_CTRL_2), > + LP873X_BUCK_ENABLE_MASK, LP873X_BUCK_DISABLE_VAL, > + 10000, buck0_buck1_ranges, LP873X_REG_BUCK1_CTRL_2), > LP873X_REGULATOR("LDO0", LP873X_LDO_0, "ldo0", lp873x_ldo01_ops, 26, > LP873X_REG_LDO0_VOUT, LP873X_LDO0_VOUT_LDO0_VSET, > - LP873X_REG_LDO0_CTRL, > - LP873X_LDO0_CTRL_LDO0_EN, 0, ldo0_ldo1_ranges, 0xFF), > + LP873X_REG_LDO0_CTRL, LP873X_LDO_ENABLE_MASK, > + LP873X_LDO_DISABLE_VAL, 0, ldo0_ldo1_ranges, 0xFF), > LP873X_REGULATOR("LDO1", LP873X_LDO_1, "ldo1", lp873x_ldo01_ops, 26, > LP873X_REG_LDO1_VOUT, LP873X_LDO1_VOUT_LDO1_VSET, > - LP873X_REG_LDO1_CTRL, > - LP873X_LDO1_CTRL_LDO1_EN, 0, ldo0_ldo1_ranges, 0xFF), > + LP873X_REG_LDO1_CTRL, LP873X_LDO_ENABLE_MASK, > + LP873X_LDO_DISABLE_VAL, 0, ldo0_ldo1_ranges, 0xFF), > }; > > static int lp873x_regulator_probe(struct platform_device *pdev) > diff --git a/include/linux/mfd/lp873x.h b/include/linux/mfd/lp873x.h > index edbec83..53888d4 100644 > --- a/include/linux/mfd/lp873x.h > +++ b/include/linux/mfd/lp873x.h > @@ -77,6 +77,8 @@ > #define LP873X_BUCK0_CTRL_1_BUCK0_RDIS_EN BIT(2) > #define LP873X_BUCK0_CTRL_1_BUCK0_EN_PIN_CTRL BIT(1) > #define LP873X_BUCK0_CTRL_1_BUCK0_EN BIT(0) > +#define LP873X_BUCK_ENABLE_MASK (BIT(0) | BIT(1)) > +#define LP873X_BUCK_DISABLE_VAL BIT(1) > > #define LP873X_BUCK0_CTRL_2_BUCK0_ILIM 0x38 > #define LP873X_BUCK0_CTRL_2_BUCK0_SLEW_RATE 0x07 > @@ -96,6 +98,8 @@ > #define LP873X_LDO0_CTRL_LDO0_RDIS_EN BIT(2) > #define LP873X_LDO0_CTRL_LDO0_EN_PIN_CTRL BIT(1) > #define LP873X_LDO0_CTRL_LDO0_EN BIT(0) > +#define LP873X_LDO_ENABLE_MASK (BIT(0) | BIT(1)) > +#define LP873X_LDO_DISABLE_VAL BIT(1) > > #define LP873X_LDO1_CTRL_LDO1_RDIS_EN BIT(2) > #define LP873X_LDO1_CTRL_LDO1_EN_PIN_CTRL BIT(1) > -- > 1.9.1 >
Attachment:
signature.asc
Description: PGP signature