On 26/12/2024 23:54, Shree Ramamoorthy wrote: > Update struct and function names to indicate if it supports TPS65219 and/or > TPS65215. The 'common' prefix is added to indicate the resource applies > to both PMICs. > > Signed-off-by: Shree Ramamoorthy <s-ramamoorthy@xxxxxx> > --- > drivers/regulator/Kconfig | 7 +-- > drivers/regulator/tps65219-regulator.c | 65 +++++++++++++++++--------- > 2 files changed, 48 insertions(+), 24 deletions(-) > > diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig > index 39297f7d8177..6cd87443f9bb 100644 > --- a/drivers/regulator/Kconfig > +++ b/drivers/regulator/Kconfig > @@ -1579,10 +1579,11 @@ config REGULATOR_TPS65219 > tristate "TI TPS65219 Power regulators" > depends on MFD_TPS65219 && OF > help > - This driver supports TPS65219 voltage regulator chips. > + This driver supports TPS65219 series and TPS65215 voltage regulator chips. > TPS65219 series of PMICs have 3 single phase BUCKs & 4 LDOs > - voltage regulators. It supports software based voltage control > - for different voltage domains. > + voltage regulators. > + TPS65215 PMIC has 3 single phase BUCKs & 2 LDOs. > + Both PMICs support software based voltage control for different voltage domains. > > config REGULATOR_TPS6594 > tristate "TI TPS6594 Power regulators" > diff --git a/drivers/regulator/tps65219-regulator.c b/drivers/regulator/tps65219-regulator.c > index b8a178ae6b42..188a988e3bbe 100644 > --- a/drivers/regulator/tps65219-regulator.c > +++ b/drivers/regulator/tps65219-regulator.c > @@ -1,10 +1,9 @@ > // SPDX-License-Identifier: GPL-2.0 > // > -// tps65219-regulator.c > -// > -// Regulator driver for TPS65219 PMIC > +// Regulator driver for TPS65215/TPS65219 PMIC > // > // Copyright (C) 2022 BayLibre Incorporated - https://www.baylibre.com/ > +// Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/ > // > // This implementation derived from tps65218 authored by > // "J Keerthy <j-keerthy@xxxxxx>" > @@ -125,12 +124,22 @@ static const struct linear_range bucks_ranges[] = { > REGULATOR_LINEAR_RANGE(3400000, 0x34, 0x3f, 0), > }; > > -static const struct linear_range ldos_1_2_ranges[] = { > +static const struct linear_range ldo_1_range[] = { > + REGULATOR_LINEAR_RANGE(600000, 0x0, 0x37, 50000), > + REGULATOR_LINEAR_RANGE(3400000, 0x38, 0x3f, 0), > +}; > + > +static const struct linear_range tps65215_ldo_2_range[] = { > + REGULATOR_LINEAR_RANGE(1200000, 0x0, 0xC, 50000), > + REGULATOR_LINEAR_RANGE(3300000, 0x36, 0x3F, 0), > +}; > + > +static const struct linear_range tps65219_ldo_2_range[] = { > REGULATOR_LINEAR_RANGE(600000, 0x0, 0x37, 50000), > REGULATOR_LINEAR_RANGE(3400000, 0x38, 0x3f, 0), > }; > > -static const struct linear_range ldos_3_4_ranges[] = { > +static const struct linear_range tps65219_ldos_3_4_range[] = { > REGULATOR_LINEAR_RANGE(1200000, 0x0, 0xC, 0), > REGULATOR_LINEAR_RANGE(1250000, 0xD, 0x35, 50000), > REGULATOR_LINEAR_RANGE(3300000, 0x36, 0x3F, 0), > @@ -174,7 +183,7 @@ static unsigned int tps65219_get_mode(struct regulator_dev *dev) > } > > /* Operations permitted on BUCK1/2/3 */ > -static const struct regulator_ops tps65219_bucks_ops = { > +static const struct regulator_ops bucks_ops = { > .is_enabled = regulator_is_enabled_regmap, > .enable = regulator_enable_regmap, > .disable = regulator_disable_regmap, > @@ -189,7 +198,7 @@ static const struct regulator_ops tps65219_bucks_ops = { > }; > > /* Operations permitted on LDO1/2 */ > -static const struct regulator_ops tps65219_ldos_1_2_ops = { > +static const struct regulator_ops ldos_1_2_ops = { > .is_enabled = regulator_is_enabled_regmap, > .enable = regulator_enable_regmap, > .disable = regulator_disable_regmap, > @@ -204,7 +213,7 @@ static const struct regulator_ops tps65219_ldos_1_2_ops = { > }; > > /* Operations permitted on LDO3/4 */ > -static const struct regulator_ops tps65219_ldos_3_4_ops = { > +static const struct regulator_ops ldos_3_4_ops = { > .is_enabled = regulator_is_enabled_regmap, > .enable = regulator_enable_regmap, > .disable = regulator_disable_regmap, > @@ -216,55 +225,69 @@ static const struct regulator_ops tps65219_ldos_3_4_ops = { > .map_voltage = regulator_map_voltage_linear_range, > }; > > -static const struct regulator_desc regulators[] = { > +static const struct regulator_desc common_regs[] = { > TPS65219_REGULATOR("BUCK1", "buck1", TPS65219_BUCK_1, > - REGULATOR_VOLTAGE, tps65219_bucks_ops, 64, > + REGULATOR_VOLTAGE, bucks_ops, 64, > TPS65219_REG_BUCK1_VOUT, > TPS65219_BUCKS_LDOS_VOUT_VSET_MASK, > TPS65219_REG_ENABLE_CTRL, > TPS65219_ENABLE_BUCK1_EN_MASK, 0, 0, bucks_ranges, > 3, 4000, 0, NULL, 0, 0), > TPS65219_REGULATOR("BUCK2", "buck2", TPS65219_BUCK_2, > - REGULATOR_VOLTAGE, tps65219_bucks_ops, 64, > + REGULATOR_VOLTAGE, bucks_ops, 64, > TPS65219_REG_BUCK2_VOUT, > TPS65219_BUCKS_LDOS_VOUT_VSET_MASK, > TPS65219_REG_ENABLE_CTRL, > TPS65219_ENABLE_BUCK2_EN_MASK, 0, 0, bucks_ranges, > 3, 4000, 0, NULL, 0, 0), > TPS65219_REGULATOR("BUCK3", "buck3", TPS65219_BUCK_3, > - REGULATOR_VOLTAGE, tps65219_bucks_ops, 64, > + REGULATOR_VOLTAGE, bucks_ops, 64, > TPS65219_REG_BUCK3_VOUT, > TPS65219_BUCKS_LDOS_VOUT_VSET_MASK, > TPS65219_REG_ENABLE_CTRL, > TPS65219_ENABLE_BUCK3_EN_MASK, 0, 0, bucks_ranges, > 3, 0, 0, NULL, 0, 0), > TPS65219_REGULATOR("LDO1", "ldo1", TPS65219_LDO_1, Could we update macro TPS65219_REGULATOR to TPS6521X_REGULATOR? > - REGULATOR_VOLTAGE, tps65219_ldos_1_2_ops, 64, > + REGULATOR_VOLTAGE, ldos_1_2_ops, 64, > TPS65219_REG_LDO1_VOUT, > TPS65219_BUCKS_LDOS_VOUT_VSET_MASK, > TPS65219_REG_ENABLE_CTRL, > - TPS65219_ENABLE_LDO1_EN_MASK, 0, 0, ldos_1_2_ranges, > + TPS65219_ENABLE_LDO1_EN_MASK, 0, 0, ldo_1_range, > 2, 0, 0, NULL, 0, TPS65219_LDOS_BYP_CONFIG_MASK), > +}; > + > +static const struct regulator_desc tps65215_regs[] = { > + // TPS65215's LDO2 is the same as TPS65219's LDO3 > + TPS65219_REGULATOR("LDO2", "ldo2", TPS65215_LDO_2, > + REGULATOR_VOLTAGE, ldos_3_4_ops, 64, > + TPS65215_REG_LDO2_VOUT, > + TPS65219_BUCKS_LDOS_VOUT_VSET_MASK, > + TPS65219_REG_ENABLE_CTRL, > + TPS65215_ENABLE_LDO2_EN_MASK, 0, 0, tps65215_ldo_2_range, > + 3, 0, 0, NULL, 0, 0), > +}; > + > +static const struct regulator_desc tps65219_regs[] = { > TPS65219_REGULATOR("LDO2", "ldo2", TPS65219_LDO_2, > - REGULATOR_VOLTAGE, tps65219_ldos_1_2_ops, 64, > + REGULATOR_VOLTAGE, ldos_1_2_ops, 64, > TPS65219_REG_LDO2_VOUT, > TPS65219_BUCKS_LDOS_VOUT_VSET_MASK, > TPS65219_REG_ENABLE_CTRL, > - TPS65219_ENABLE_LDO2_EN_MASK, 0, 0, ldos_1_2_ranges, > + TPS65219_ENABLE_LDO2_EN_MASK, 0, 0, tps65219_ldo_2_range, > 2, 0, 0, NULL, 0, TPS65219_LDOS_BYP_CONFIG_MASK), > TPS65219_REGULATOR("LDO3", "ldo3", TPS65219_LDO_3, > - REGULATOR_VOLTAGE, tps65219_ldos_3_4_ops, 64, > + REGULATOR_VOLTAGE, ldos_3_4_ops, 64, > TPS65219_REG_LDO3_VOUT, > TPS65219_BUCKS_LDOS_VOUT_VSET_MASK, > TPS65219_REG_ENABLE_CTRL, > - TPS65219_ENABLE_LDO3_EN_MASK, 0, 0, ldos_3_4_ranges, > + TPS65219_ENABLE_LDO3_EN_MASK, 0, 0, tps65219_ldos_3_4_range, > 3, 0, 0, NULL, 0, 0), > TPS65219_REGULATOR("LDO4", "ldo4", TPS65219_LDO_4, > - REGULATOR_VOLTAGE, tps65219_ldos_3_4_ops, 64, > + REGULATOR_VOLTAGE, ldos_3_4_ops, 64, > TPS65219_REG_LDO4_VOUT, > TPS65219_BUCKS_LDOS_VOUT_VSET_MASK, > TPS65219_REG_ENABLE_CTRL, > - TPS65219_ENABLE_LDO4_EN_MASK, 0, 0, ldos_3_4_ranges, > + TPS65219_ENABLE_LDO4_EN_MASK, 0, 0, tps65219_ldos_3_4_range, > 3, 0, 0, NULL, 0, 0), > }; > > @@ -362,5 +385,5 @@ static struct platform_driver tps65219_regulator_driver = { > module_platform_driver(tps65219_regulator_driver); > > MODULE_AUTHOR("Jerome Neanne <j-neanne@xxxxxxxxxxxx>"); > -MODULE_DESCRIPTION("TPS65219 voltage regulator driver"); > +MODULE_DESCRIPTION("TPS65215/TPS65219 voltage regulator driver"); "TPS65215X Voltage Regulator Driver" > MODULE_LICENSE("GPL"); -- cheers, -roger