Commit 4f2352cf authored by Javier Martinez Canillas's avatar Javier Martinez Canillas Committed by Mark Brown

regulator: tps65090: Set voltage for fixed regulators

According to the tps65090 data manual [0], the DCDC1 and DCDC2
step-down converters and the LDO's have a fixed output voltage.

Add this information to the driver since these fixed regulators
can be used as parent input supply for switches that don't have
an output voltage defined. So the regulator core needs to fetch
the FET parent output voltage if the child voltage is queried.

[0]: http://www.ti.com/lit/gpn/tps65090Signed-off-by: default avatarJavier Martinez Canillas <javier.martinez@collabora.co.uk>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent 7171511e
...@@ -192,12 +192,14 @@ static struct regulator_ops tps65090_fet_control_ops = { ...@@ -192,12 +192,14 @@ static struct regulator_ops tps65090_fet_control_ops = {
static struct regulator_ops tps65090_ldo_ops = { static struct regulator_ops tps65090_ldo_ops = {
}; };
#define tps65090_REG_DESC(_id, _sname, _en_reg, _en_bits, _ops) \ #define tps65090_REG_DESC(_id, _sname, _en_reg, _en_bits, _nvolt, _volt, _ops) \
{ \ { \
.name = "TPS65090_RAILS"#_id, \ .name = "TPS65090_RAILS"#_id, \
.supply_name = _sname, \ .supply_name = _sname, \
.id = TPS65090_REGULATOR_##_id, \ .id = TPS65090_REGULATOR_##_id, \
.n_voltages = _nvolt, \
.ops = &_ops, \ .ops = &_ops, \
.fixed_uV = _volt, \
.enable_reg = _en_reg, \ .enable_reg = _en_reg, \
.enable_val = _en_bits, \ .enable_val = _en_bits, \
.enable_mask = _en_bits, \ .enable_mask = _en_bits, \
...@@ -205,40 +207,46 @@ static struct regulator_ops tps65090_ldo_ops = { ...@@ -205,40 +207,46 @@ static struct regulator_ops tps65090_ldo_ops = {
.owner = THIS_MODULE, \ .owner = THIS_MODULE, \
} }
#define tps65090_REG_FIXEDV(_id, _sname, en_reg, _en_bits, _volt, _ops) \
tps65090_REG_DESC(_id, _sname, en_reg, _en_bits, 1, _volt, _ops)
#define tps65090_REG_SWITCH(_id, _sname, en_reg, _en_bits, _ops) \
tps65090_REG_DESC(_id, _sname, en_reg, _en_bits, 0, 0, _ops)
static struct regulator_desc tps65090_regulator_desc[] = { static struct regulator_desc tps65090_regulator_desc[] = {
tps65090_REG_DESC(DCDC1, "vsys1", 0x0C, BIT(CTRL_EN_BIT), tps65090_REG_FIXEDV(DCDC1, "vsys1", 0x0C, BIT(CTRL_EN_BIT), 5000000,
tps65090_reg_control_ops), tps65090_reg_control_ops),
tps65090_REG_DESC(DCDC2, "vsys2", 0x0D, BIT(CTRL_EN_BIT), tps65090_REG_FIXEDV(DCDC2, "vsys2", 0x0D, BIT(CTRL_EN_BIT), 3300000,
tps65090_reg_control_ops), tps65090_reg_control_ops),
tps65090_REG_DESC(DCDC3, "vsys3", 0x0E, BIT(CTRL_EN_BIT), tps65090_REG_SWITCH(DCDC3, "vsys3", 0x0E, BIT(CTRL_EN_BIT),
tps65090_reg_control_ops), tps65090_reg_control_ops),
tps65090_REG_DESC(FET1, "infet1", 0x0F, tps65090_REG_SWITCH(FET1, "infet1", 0x0F,
BIT(CTRL_EN_BIT) | BIT(CTRL_PG_BIT), BIT(CTRL_EN_BIT) | BIT(CTRL_PG_BIT),
tps65090_fet_control_ops), tps65090_fet_control_ops),
tps65090_REG_DESC(FET2, "infet2", 0x10, tps65090_REG_SWITCH(FET2, "infet2", 0x10,
BIT(CTRL_EN_BIT) | BIT(CTRL_PG_BIT), BIT(CTRL_EN_BIT) | BIT(CTRL_PG_BIT),
tps65090_fet_control_ops), tps65090_fet_control_ops),
tps65090_REG_DESC(FET3, "infet3", 0x11, tps65090_REG_SWITCH(FET3, "infet3", 0x11,
BIT(CTRL_EN_BIT) | BIT(CTRL_PG_BIT), BIT(CTRL_EN_BIT) | BIT(CTRL_PG_BIT),
tps65090_fet_control_ops), tps65090_fet_control_ops),
tps65090_REG_DESC(FET4, "infet4", 0x12, tps65090_REG_SWITCH(FET4, "infet4", 0x12,
BIT(CTRL_EN_BIT) | BIT(CTRL_PG_BIT), BIT(CTRL_EN_BIT) | BIT(CTRL_PG_BIT),
tps65090_fet_control_ops), tps65090_fet_control_ops),
tps65090_REG_DESC(FET5, "infet5", 0x13, tps65090_REG_SWITCH(FET5, "infet5", 0x13,
BIT(CTRL_EN_BIT) | BIT(CTRL_PG_BIT), BIT(CTRL_EN_BIT) | BIT(CTRL_PG_BIT),
tps65090_fet_control_ops), tps65090_fet_control_ops),
tps65090_REG_DESC(FET6, "infet6", 0x14, tps65090_REG_SWITCH(FET6, "infet6", 0x14,
BIT(CTRL_EN_BIT) | BIT(CTRL_PG_BIT), BIT(CTRL_EN_BIT) | BIT(CTRL_PG_BIT),
tps65090_fet_control_ops), tps65090_fet_control_ops),
tps65090_REG_DESC(FET7, "infet7", 0x15, tps65090_REG_SWITCH(FET7, "infet7", 0x15,
BIT(CTRL_EN_BIT) | BIT(CTRL_PG_BIT), BIT(CTRL_EN_BIT) | BIT(CTRL_PG_BIT),
tps65090_fet_control_ops), tps65090_fet_control_ops),
tps65090_REG_DESC(LDO1, "vsys-l1", 0, 0, tps65090_REG_FIXEDV(LDO1, "vsys-l1", 0, 0, 5000000,
tps65090_ldo_ops), tps65090_ldo_ops),
tps65090_REG_DESC(LDO2, "vsys-l2", 0, 0, tps65090_REG_FIXEDV(LDO2, "vsys-l2", 0, 0, 3300000,
tps65090_ldo_ops), tps65090_ldo_ops),
}; };
static inline bool is_dcdc(int id) static inline bool is_dcdc(int id)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment