Loading Documentation/devicetree/bindings/regulator/palmas-pmic.txt +2 −2 Original line number Original line Diff line number Diff line Loading @@ -25,8 +25,8 @@ Optional nodes: Additional custom properties are listed below. Additional custom properties are listed below. For ti,palmas-pmic - smps12, smps123, smps3 depending on OTP, For ti,palmas-pmic - smps12, smps123, smps3 depending on OTP, smps45, smps457, smps7 depending on variant, smps6, smps[8-10], smps45, smps457, smps7 depending on variant, smps6, smps[8-9], ldo[1-9], ldoln, ldousb. smps10_out2, smps10_out1, do[1-9], ldoln, ldousb. Optional sub-node properties: Optional sub-node properties: ti,warm-reset - maintain voltage during warm reset(boolean) ti,warm-reset - maintain voltage during warm reset(boolean) Loading drivers/regulator/palmas-regulator.c +24 −6 Original line number Original line Diff line number Diff line Loading @@ -97,10 +97,15 @@ static const struct regs_info palmas_regs_info[] = { .ctrl_addr = PALMAS_SMPS9_CTRL, .ctrl_addr = PALMAS_SMPS9_CTRL, }, }, { { .name = "SMPS10", .name = "SMPS10_OUT2", .sname = "smps10-in", .sname = "smps10-in", .ctrl_addr = PALMAS_SMPS10_CTRL, .ctrl_addr = PALMAS_SMPS10_CTRL, }, }, { .name = "SMPS10_OUT1", .sname = "smps10-out2", .ctrl_addr = PALMAS_SMPS10_CTRL, }, { { .name = "LDO1", .name = "LDO1", .sname = "ldo1-in", .sname = "ldo1-in", Loading Loading @@ -487,6 +492,8 @@ static struct regulator_ops palmas_ops_smps10 = { .set_voltage_sel = regulator_set_voltage_sel_regmap, .set_voltage_sel = regulator_set_voltage_sel_regmap, .list_voltage = regulator_list_voltage_linear, .list_voltage = regulator_list_voltage_linear, .map_voltage = regulator_map_voltage_linear, .map_voltage = regulator_map_voltage_linear, .set_bypass = regulator_set_bypass_regmap, .get_bypass = regulator_get_bypass_regmap, }; }; static int palmas_is_enabled_ldo(struct regulator_dev *dev) static int palmas_is_enabled_ldo(struct regulator_dev *dev) Loading Loading @@ -538,7 +545,8 @@ static int palmas_smps_init(struct palmas *palmas, int id, return ret; return ret; switch (id) { switch (id) { case PALMAS_REG_SMPS10: case PALMAS_REG_SMPS10_OUT1: case PALMAS_REG_SMPS10_OUT2: reg &= ~PALMAS_SMPS10_CTRL_MODE_SLEEP_MASK; reg &= ~PALMAS_SMPS10_CTRL_MODE_SLEEP_MASK; if (reg_init->mode_sleep) if (reg_init->mode_sleep) reg |= reg_init->mode_sleep << reg |= reg_init->mode_sleep << Loading Loading @@ -681,7 +689,8 @@ static struct of_regulator_match palmas_matches[] = { { .name = "smps7", }, { .name = "smps7", }, { .name = "smps8", }, { .name = "smps8", }, { .name = "smps9", }, { .name = "smps9", }, { .name = "smps10", }, { .name = "smps10_out2", }, { .name = "smps10_out1", }, { .name = "ldo1", }, { .name = "ldo1", }, { .name = "ldo2", }, { .name = "ldo2", }, { .name = "ldo3", }, { .name = "ldo3", }, Loading Loading @@ -838,7 +847,8 @@ static int palmas_regulators_probe(struct platform_device *pdev) continue; continue; ramp_delay_support = true; ramp_delay_support = true; break; break; case PALMAS_REG_SMPS10: case PALMAS_REG_SMPS10_OUT1: case PALMAS_REG_SMPS10_OUT2: if (!PALMAS_PMIC_HAS(palmas, SMPS10_BOOST)) if (!PALMAS_PMIC_HAS(palmas, SMPS10_BOOST)) continue; continue; } } Loading Loading @@ -872,7 +882,8 @@ static int palmas_regulators_probe(struct platform_device *pdev) pmic->desc[id].id = id; pmic->desc[id].id = id; switch (id) { switch (id) { case PALMAS_REG_SMPS10: case PALMAS_REG_SMPS10_OUT1: case PALMAS_REG_SMPS10_OUT2: pmic->desc[id].n_voltages = PALMAS_SMPS10_NUM_VOLTAGES; pmic->desc[id].n_voltages = PALMAS_SMPS10_NUM_VOLTAGES; pmic->desc[id].ops = &palmas_ops_smps10; pmic->desc[id].ops = &palmas_ops_smps10; pmic->desc[id].vsel_reg = pmic->desc[id].vsel_reg = Loading @@ -882,7 +893,14 @@ static int palmas_regulators_probe(struct platform_device *pdev) pmic->desc[id].enable_reg = pmic->desc[id].enable_reg = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, PALMAS_SMPS10_CTRL); PALMAS_SMPS10_CTRL); if (id == PALMAS_REG_SMPS10_OUT1) pmic->desc[id].enable_mask = SMPS10_SWITCH_EN; else pmic->desc[id].enable_mask = SMPS10_BOOST_EN; pmic->desc[id].enable_mask = SMPS10_BOOST_EN; pmic->desc[id].bypass_reg = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, PALMAS_SMPS10_CTRL); pmic->desc[id].bypass_mask = SMPS10_BYPASS_EN; pmic->desc[id].min_uV = 3750000; pmic->desc[id].min_uV = 3750000; pmic->desc[id].uV_step = 1250000; pmic->desc[id].uV_step = 1250000; break; break; Loading include/linux/mfd/palmas.h +5 −4 Original line number Original line Diff line number Diff line Loading @@ -160,7 +160,8 @@ enum palmas_regulators { PALMAS_REG_SMPS7, PALMAS_REG_SMPS7, PALMAS_REG_SMPS8, PALMAS_REG_SMPS8, PALMAS_REG_SMPS9, PALMAS_REG_SMPS9, PALMAS_REG_SMPS10, PALMAS_REG_SMPS10_OUT2, PALMAS_REG_SMPS10_OUT1, /* LDO regulators */ /* LDO regulators */ PALMAS_REG_LDO1, PALMAS_REG_LDO1, PALMAS_REG_LDO2, PALMAS_REG_LDO2, Loading Loading @@ -355,9 +356,9 @@ struct palmas_pmic { int smps123; int smps123; int smps457; int smps457; int range[PALMAS_REG_SMPS10]; int range[PALMAS_REG_SMPS10_OUT1]; unsigned int ramp_delay[PALMAS_REG_SMPS10]; unsigned int ramp_delay[PALMAS_REG_SMPS10_OUT1]; unsigned int current_reg_mode[PALMAS_REG_SMPS10]; unsigned int current_reg_mode[PALMAS_REG_SMPS10_OUT1]; }; }; struct palmas_resource { struct palmas_resource { Loading Loading
Documentation/devicetree/bindings/regulator/palmas-pmic.txt +2 −2 Original line number Original line Diff line number Diff line Loading @@ -25,8 +25,8 @@ Optional nodes: Additional custom properties are listed below. Additional custom properties are listed below. For ti,palmas-pmic - smps12, smps123, smps3 depending on OTP, For ti,palmas-pmic - smps12, smps123, smps3 depending on OTP, smps45, smps457, smps7 depending on variant, smps6, smps[8-10], smps45, smps457, smps7 depending on variant, smps6, smps[8-9], ldo[1-9], ldoln, ldousb. smps10_out2, smps10_out1, do[1-9], ldoln, ldousb. Optional sub-node properties: Optional sub-node properties: ti,warm-reset - maintain voltage during warm reset(boolean) ti,warm-reset - maintain voltage during warm reset(boolean) Loading
drivers/regulator/palmas-regulator.c +24 −6 Original line number Original line Diff line number Diff line Loading @@ -97,10 +97,15 @@ static const struct regs_info palmas_regs_info[] = { .ctrl_addr = PALMAS_SMPS9_CTRL, .ctrl_addr = PALMAS_SMPS9_CTRL, }, }, { { .name = "SMPS10", .name = "SMPS10_OUT2", .sname = "smps10-in", .sname = "smps10-in", .ctrl_addr = PALMAS_SMPS10_CTRL, .ctrl_addr = PALMAS_SMPS10_CTRL, }, }, { .name = "SMPS10_OUT1", .sname = "smps10-out2", .ctrl_addr = PALMAS_SMPS10_CTRL, }, { { .name = "LDO1", .name = "LDO1", .sname = "ldo1-in", .sname = "ldo1-in", Loading Loading @@ -487,6 +492,8 @@ static struct regulator_ops palmas_ops_smps10 = { .set_voltage_sel = regulator_set_voltage_sel_regmap, .set_voltage_sel = regulator_set_voltage_sel_regmap, .list_voltage = regulator_list_voltage_linear, .list_voltage = regulator_list_voltage_linear, .map_voltage = regulator_map_voltage_linear, .map_voltage = regulator_map_voltage_linear, .set_bypass = regulator_set_bypass_regmap, .get_bypass = regulator_get_bypass_regmap, }; }; static int palmas_is_enabled_ldo(struct regulator_dev *dev) static int palmas_is_enabled_ldo(struct regulator_dev *dev) Loading Loading @@ -538,7 +545,8 @@ static int palmas_smps_init(struct palmas *palmas, int id, return ret; return ret; switch (id) { switch (id) { case PALMAS_REG_SMPS10: case PALMAS_REG_SMPS10_OUT1: case PALMAS_REG_SMPS10_OUT2: reg &= ~PALMAS_SMPS10_CTRL_MODE_SLEEP_MASK; reg &= ~PALMAS_SMPS10_CTRL_MODE_SLEEP_MASK; if (reg_init->mode_sleep) if (reg_init->mode_sleep) reg |= reg_init->mode_sleep << reg |= reg_init->mode_sleep << Loading Loading @@ -681,7 +689,8 @@ static struct of_regulator_match palmas_matches[] = { { .name = "smps7", }, { .name = "smps7", }, { .name = "smps8", }, { .name = "smps8", }, { .name = "smps9", }, { .name = "smps9", }, { .name = "smps10", }, { .name = "smps10_out2", }, { .name = "smps10_out1", }, { .name = "ldo1", }, { .name = "ldo1", }, { .name = "ldo2", }, { .name = "ldo2", }, { .name = "ldo3", }, { .name = "ldo3", }, Loading Loading @@ -838,7 +847,8 @@ static int palmas_regulators_probe(struct platform_device *pdev) continue; continue; ramp_delay_support = true; ramp_delay_support = true; break; break; case PALMAS_REG_SMPS10: case PALMAS_REG_SMPS10_OUT1: case PALMAS_REG_SMPS10_OUT2: if (!PALMAS_PMIC_HAS(palmas, SMPS10_BOOST)) if (!PALMAS_PMIC_HAS(palmas, SMPS10_BOOST)) continue; continue; } } Loading Loading @@ -872,7 +882,8 @@ static int palmas_regulators_probe(struct platform_device *pdev) pmic->desc[id].id = id; pmic->desc[id].id = id; switch (id) { switch (id) { case PALMAS_REG_SMPS10: case PALMAS_REG_SMPS10_OUT1: case PALMAS_REG_SMPS10_OUT2: pmic->desc[id].n_voltages = PALMAS_SMPS10_NUM_VOLTAGES; pmic->desc[id].n_voltages = PALMAS_SMPS10_NUM_VOLTAGES; pmic->desc[id].ops = &palmas_ops_smps10; pmic->desc[id].ops = &palmas_ops_smps10; pmic->desc[id].vsel_reg = pmic->desc[id].vsel_reg = Loading @@ -882,7 +893,14 @@ static int palmas_regulators_probe(struct platform_device *pdev) pmic->desc[id].enable_reg = pmic->desc[id].enable_reg = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, PALMAS_SMPS10_CTRL); PALMAS_SMPS10_CTRL); if (id == PALMAS_REG_SMPS10_OUT1) pmic->desc[id].enable_mask = SMPS10_SWITCH_EN; else pmic->desc[id].enable_mask = SMPS10_BOOST_EN; pmic->desc[id].enable_mask = SMPS10_BOOST_EN; pmic->desc[id].bypass_reg = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, PALMAS_SMPS10_CTRL); pmic->desc[id].bypass_mask = SMPS10_BYPASS_EN; pmic->desc[id].min_uV = 3750000; pmic->desc[id].min_uV = 3750000; pmic->desc[id].uV_step = 1250000; pmic->desc[id].uV_step = 1250000; break; break; Loading
include/linux/mfd/palmas.h +5 −4 Original line number Original line Diff line number Diff line Loading @@ -160,7 +160,8 @@ enum palmas_regulators { PALMAS_REG_SMPS7, PALMAS_REG_SMPS7, PALMAS_REG_SMPS8, PALMAS_REG_SMPS8, PALMAS_REG_SMPS9, PALMAS_REG_SMPS9, PALMAS_REG_SMPS10, PALMAS_REG_SMPS10_OUT2, PALMAS_REG_SMPS10_OUT1, /* LDO regulators */ /* LDO regulators */ PALMAS_REG_LDO1, PALMAS_REG_LDO1, PALMAS_REG_LDO2, PALMAS_REG_LDO2, Loading Loading @@ -355,9 +356,9 @@ struct palmas_pmic { int smps123; int smps123; int smps457; int smps457; int range[PALMAS_REG_SMPS10]; int range[PALMAS_REG_SMPS10_OUT1]; unsigned int ramp_delay[PALMAS_REG_SMPS10]; unsigned int ramp_delay[PALMAS_REG_SMPS10_OUT1]; unsigned int current_reg_mode[PALMAS_REG_SMPS10]; unsigned int current_reg_mode[PALMAS_REG_SMPS10_OUT1]; }; }; struct palmas_resource { struct palmas_resource { Loading