regulator: lp87565: enable voltage regardless of ENx pin
This driver enables outputs by setting bit EN_BUCKn in the BUCKn_CTRL1 register. However, if bit EN_PIN_CTRLn in the same register is set, the output is actually enabled only if EN_BUCKn is set AND an enable pin is active. Since the driver does not touch EN_PIN_CTRLn, the choice is left to the hardware, which in turn gets this bit from OTP memory, and in absence of OTP data it uses a default value that is documented in the datasheet for LP8752x, but not for LP8756x. Thus the driver doesn't really "know" whether it is actually enabling the output or not. In order to make sure activation is always driver-controlled, just clear the EN_PIN_CTRLn bit. Now all activation solely depend on the EN_BUCKn bit. Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net> Link: https://lore.kernel.org/r/20200622204329.11147-2-luca@lucaceresoli.net Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
bfa29acd18
commit
81fdcef3a6
@ -11,8 +11,8 @@
|
||||
|
||||
#include <linux/mfd/lp87565.h>
|
||||
|
||||
#define LP87565_REGULATOR(_name, _id, _of, _ops, _n, _vr, _vm, _er, _em, \
|
||||
_delay, _lr, _cr) \
|
||||
#define LP87565_REGULATOR(_name, _id, _of, _ops, _n, _vr, _vm, \
|
||||
_er, _em, _ev, _delay, _lr, _cr) \
|
||||
[_id] = { \
|
||||
.desc = { \
|
||||
.name = _name, \
|
||||
@ -28,6 +28,7 @@
|
||||
.vsel_mask = _vm, \
|
||||
.enable_reg = _er, \
|
||||
.enable_mask = _em, \
|
||||
.enable_val = _ev, \
|
||||
.ramp_delay = _delay, \
|
||||
.linear_ranges = _lr, \
|
||||
.n_linear_ranges = ARRAY_SIZE(_lr), \
|
||||
@ -121,38 +122,54 @@ static const struct lp87565_regulator regulators[] = {
|
||||
LP87565_REGULATOR("BUCK0", LP87565_BUCK_0, "buck0", lp87565_buck_ops,
|
||||
256, LP87565_REG_BUCK0_VOUT, LP87565_BUCK_VSET,
|
||||
LP87565_REG_BUCK0_CTRL_1,
|
||||
LP87565_BUCK_CTRL_1_EN |
|
||||
LP87565_BUCK_CTRL_1_EN_PIN_CTRL,
|
||||
LP87565_BUCK_CTRL_1_EN, 3230,
|
||||
buck0_1_2_3_ranges, LP87565_REG_BUCK0_CTRL_2),
|
||||
LP87565_REGULATOR("BUCK1", LP87565_BUCK_1, "buck1", lp87565_buck_ops,
|
||||
256, LP87565_REG_BUCK1_VOUT, LP87565_BUCK_VSET,
|
||||
LP87565_REG_BUCK1_CTRL_1,
|
||||
LP87565_BUCK_CTRL_1_EN |
|
||||
LP87565_BUCK_CTRL_1_EN_PIN_CTRL,
|
||||
LP87565_BUCK_CTRL_1_EN, 3230,
|
||||
buck0_1_2_3_ranges, LP87565_REG_BUCK1_CTRL_2),
|
||||
LP87565_REGULATOR("BUCK2", LP87565_BUCK_2, "buck2", lp87565_buck_ops,
|
||||
256, LP87565_REG_BUCK2_VOUT, LP87565_BUCK_VSET,
|
||||
LP87565_REG_BUCK2_CTRL_1,
|
||||
LP87565_BUCK_CTRL_1_EN |
|
||||
LP87565_BUCK_CTRL_1_EN_PIN_CTRL,
|
||||
LP87565_BUCK_CTRL_1_EN, 3230,
|
||||
buck0_1_2_3_ranges, LP87565_REG_BUCK2_CTRL_2),
|
||||
LP87565_REGULATOR("BUCK3", LP87565_BUCK_3, "buck3", lp87565_buck_ops,
|
||||
256, LP87565_REG_BUCK3_VOUT, LP87565_BUCK_VSET,
|
||||
LP87565_REG_BUCK3_CTRL_1,
|
||||
LP87565_BUCK_CTRL_1_EN |
|
||||
LP87565_BUCK_CTRL_1_EN_PIN_CTRL,
|
||||
LP87565_BUCK_CTRL_1_EN, 3230,
|
||||
buck0_1_2_3_ranges, LP87565_REG_BUCK3_CTRL_2),
|
||||
LP87565_REGULATOR("BUCK10", LP87565_BUCK_10, "buck10", lp87565_buck_ops,
|
||||
256, LP87565_REG_BUCK0_VOUT, LP87565_BUCK_VSET,
|
||||
LP87565_REG_BUCK0_CTRL_1,
|
||||
LP87565_BUCK_CTRL_1_EN |
|
||||
LP87565_BUCK_CTRL_1_EN_PIN_CTRL |
|
||||
LP87565_BUCK_CTRL_1_FPWM_MP_0_2,
|
||||
LP87565_BUCK_CTRL_1_EN |
|
||||
LP87565_BUCK_CTRL_1_FPWM_MP_0_2, 3230,
|
||||
buck0_1_2_3_ranges, LP87565_REG_BUCK0_CTRL_2),
|
||||
LP87565_REGULATOR("BUCK23", LP87565_BUCK_23, "buck23", lp87565_buck_ops,
|
||||
256, LP87565_REG_BUCK2_VOUT, LP87565_BUCK_VSET,
|
||||
LP87565_REG_BUCK2_CTRL_1,
|
||||
LP87565_BUCK_CTRL_1_EN |
|
||||
LP87565_BUCK_CTRL_1_EN_PIN_CTRL,
|
||||
LP87565_BUCK_CTRL_1_EN, 3230,
|
||||
buck0_1_2_3_ranges, LP87565_REG_BUCK2_CTRL_2),
|
||||
LP87565_REGULATOR("BUCK3210", LP87565_BUCK_3210, "buck3210",
|
||||
lp87565_buck_ops, 256, LP87565_REG_BUCK0_VOUT,
|
||||
LP87565_BUCK_VSET, LP87565_REG_BUCK0_CTRL_1,
|
||||
LP87565_BUCK_CTRL_1_EN |
|
||||
LP87565_BUCK_CTRL_1_EN_PIN_CTRL |
|
||||
LP87565_BUCK_CTRL_1_FPWM_MP_0_2,
|
||||
LP87565_BUCK_CTRL_1_EN |
|
||||
LP87565_BUCK_CTRL_1_FPWM_MP_0_2, 3230,
|
||||
buck0_1_2_3_ranges, LP87565_REG_BUCK0_CTRL_2),
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user