fix(stpmic1): fix power switches activation
Add enable bit mask description because power switches are not all enabled by bit 0. Signed-off-by: Pascal Paillet <p.paillet@st.com> Change-Id: If7c9ae7d800adee8e25416ca35db1be20452741f
This commit is contained in:
parent
ed6a852346
commit
0161991184
|
@ -17,6 +17,7 @@ struct regul_struct {
|
|||
const uint16_t *voltage_table;
|
||||
uint8_t voltage_table_size;
|
||||
uint8_t control_reg;
|
||||
uint8_t enable_mask;
|
||||
uint8_t low_power_reg;
|
||||
uint8_t pull_down_reg;
|
||||
uint8_t pull_down;
|
||||
|
@ -427,6 +428,7 @@ static const struct regul_struct regulators_table[] = {
|
|||
.voltage_table = buck1_voltage_table,
|
||||
.voltage_table_size = ARRAY_SIZE(buck1_voltage_table),
|
||||
.control_reg = BUCK1_CONTROL_REG,
|
||||
.enable_mask = LDO_BUCK_ENABLE_MASK,
|
||||
.low_power_reg = BUCK1_PWRCTRL_REG,
|
||||
.pull_down_reg = BUCK_PULL_DOWN_REG,
|
||||
.pull_down = BUCK1_PULL_DOWN_SHIFT,
|
||||
|
@ -438,6 +440,7 @@ static const struct regul_struct regulators_table[] = {
|
|||
.voltage_table = buck2_voltage_table,
|
||||
.voltage_table_size = ARRAY_SIZE(buck2_voltage_table),
|
||||
.control_reg = BUCK2_CONTROL_REG,
|
||||
.enable_mask = LDO_BUCK_ENABLE_MASK,
|
||||
.low_power_reg = BUCK2_PWRCTRL_REG,
|
||||
.pull_down_reg = BUCK_PULL_DOWN_REG,
|
||||
.pull_down = BUCK2_PULL_DOWN_SHIFT,
|
||||
|
@ -449,6 +452,7 @@ static const struct regul_struct regulators_table[] = {
|
|||
.voltage_table = buck3_voltage_table,
|
||||
.voltage_table_size = ARRAY_SIZE(buck3_voltage_table),
|
||||
.control_reg = BUCK3_CONTROL_REG,
|
||||
.enable_mask = LDO_BUCK_ENABLE_MASK,
|
||||
.low_power_reg = BUCK3_PWRCTRL_REG,
|
||||
.pull_down_reg = BUCK_PULL_DOWN_REG,
|
||||
.pull_down = BUCK3_PULL_DOWN_SHIFT,
|
||||
|
@ -460,6 +464,7 @@ static const struct regul_struct regulators_table[] = {
|
|||
.voltage_table = buck4_voltage_table,
|
||||
.voltage_table_size = ARRAY_SIZE(buck4_voltage_table),
|
||||
.control_reg = BUCK4_CONTROL_REG,
|
||||
.enable_mask = LDO_BUCK_ENABLE_MASK,
|
||||
.low_power_reg = BUCK4_PWRCTRL_REG,
|
||||
.pull_down_reg = BUCK_PULL_DOWN_REG,
|
||||
.pull_down = BUCK4_PULL_DOWN_SHIFT,
|
||||
|
@ -471,6 +476,7 @@ static const struct regul_struct regulators_table[] = {
|
|||
.voltage_table = ldo1_voltage_table,
|
||||
.voltage_table_size = ARRAY_SIZE(ldo1_voltage_table),
|
||||
.control_reg = LDO1_CONTROL_REG,
|
||||
.enable_mask = LDO_BUCK_ENABLE_MASK,
|
||||
.low_power_reg = LDO1_PWRCTRL_REG,
|
||||
.mask_reset_reg = MASK_RESET_LDO_REG,
|
||||
.mask_reset = LDO1_MASK_RESET,
|
||||
|
@ -480,6 +486,7 @@ static const struct regul_struct regulators_table[] = {
|
|||
.voltage_table = ldo2_voltage_table,
|
||||
.voltage_table_size = ARRAY_SIZE(ldo2_voltage_table),
|
||||
.control_reg = LDO2_CONTROL_REG,
|
||||
.enable_mask = LDO_BUCK_ENABLE_MASK,
|
||||
.low_power_reg = LDO2_PWRCTRL_REG,
|
||||
.mask_reset_reg = MASK_RESET_LDO_REG,
|
||||
.mask_reset = LDO2_MASK_RESET,
|
||||
|
@ -489,6 +496,7 @@ static const struct regul_struct regulators_table[] = {
|
|||
.voltage_table = ldo3_voltage_table,
|
||||
.voltage_table_size = ARRAY_SIZE(ldo3_voltage_table),
|
||||
.control_reg = LDO3_CONTROL_REG,
|
||||
.enable_mask = LDO_BUCK_ENABLE_MASK,
|
||||
.low_power_reg = LDO3_PWRCTRL_REG,
|
||||
.mask_reset_reg = MASK_RESET_LDO_REG,
|
||||
.mask_reset = LDO3_MASK_RESET,
|
||||
|
@ -498,6 +506,7 @@ static const struct regul_struct regulators_table[] = {
|
|||
.voltage_table = ldo4_voltage_table,
|
||||
.voltage_table_size = ARRAY_SIZE(ldo4_voltage_table),
|
||||
.control_reg = LDO4_CONTROL_REG,
|
||||
.enable_mask = LDO_BUCK_ENABLE_MASK,
|
||||
.low_power_reg = LDO4_PWRCTRL_REG,
|
||||
.mask_reset_reg = MASK_RESET_LDO_REG,
|
||||
.mask_reset = LDO4_MASK_RESET,
|
||||
|
@ -507,6 +516,7 @@ static const struct regul_struct regulators_table[] = {
|
|||
.voltage_table = ldo5_voltage_table,
|
||||
.voltage_table_size = ARRAY_SIZE(ldo5_voltage_table),
|
||||
.control_reg = LDO5_CONTROL_REG,
|
||||
.enable_mask = LDO_BUCK_ENABLE_MASK,
|
||||
.low_power_reg = LDO5_PWRCTRL_REG,
|
||||
.mask_reset_reg = MASK_RESET_LDO_REG,
|
||||
.mask_reset = LDO5_MASK_RESET,
|
||||
|
@ -516,6 +526,7 @@ static const struct regul_struct regulators_table[] = {
|
|||
.voltage_table = ldo6_voltage_table,
|
||||
.voltage_table_size = ARRAY_SIZE(ldo6_voltage_table),
|
||||
.control_reg = LDO6_CONTROL_REG,
|
||||
.enable_mask = LDO_BUCK_ENABLE_MASK,
|
||||
.low_power_reg = LDO6_PWRCTRL_REG,
|
||||
.mask_reset_reg = MASK_RESET_LDO_REG,
|
||||
.mask_reset = LDO6_MASK_RESET,
|
||||
|
@ -525,6 +536,7 @@ static const struct regul_struct regulators_table[] = {
|
|||
.voltage_table = vref_ddr_voltage_table,
|
||||
.voltage_table_size = ARRAY_SIZE(vref_ddr_voltage_table),
|
||||
.control_reg = VREF_DDR_CONTROL_REG,
|
||||
.enable_mask = LDO_BUCK_ENABLE_MASK,
|
||||
.low_power_reg = VREF_DDR_PWRCTRL_REG,
|
||||
.mask_reset_reg = MASK_RESET_LDO_REG,
|
||||
.mask_reset = VREF_DDR_MASK_RESET,
|
||||
|
@ -582,14 +594,16 @@ int stpmic1_regulator_enable(const char *name)
|
|||
{
|
||||
const struct regul_struct *regul = get_regulator_data(name);
|
||||
|
||||
return stpmic1_register_update(regul->control_reg, BIT(0), BIT(0));
|
||||
return stpmic1_register_update(regul->control_reg, regul->enable_mask,
|
||||
regul->enable_mask);
|
||||
}
|
||||
|
||||
int stpmic1_regulator_disable(const char *name)
|
||||
{
|
||||
const struct regul_struct *regul = get_regulator_data(name);
|
||||
|
||||
return stpmic1_register_update(regul->control_reg, 0, BIT(0));
|
||||
return stpmic1_register_update(regul->control_reg, 0,
|
||||
regul->enable_mask);
|
||||
}
|
||||
|
||||
uint8_t stpmic1_is_regulator_enabled(const char *name)
|
||||
|
@ -601,7 +615,7 @@ uint8_t stpmic1_is_regulator_enabled(const char *name)
|
|||
panic();
|
||||
}
|
||||
|
||||
return (val & 0x1U);
|
||||
return (val & regul->enable_mask);
|
||||
}
|
||||
|
||||
int stpmic1_regulator_voltage_set(const char *name, uint16_t millivolts)
|
||||
|
|
Loading…
Reference in New Issue