On Fri Mar 8, 2024 at 11:34 AM CET, Bhargav Raviprakash wrote:
> From: Nirmala Devi Mal Nadar <[email protected]>
>
> Add support for TPS65224 regulators (bucks and LDOs) to TPS6594 driver as
> they have significant functional overlap. TPS65224 PMIC has 4 buck
> regulators and 3 LDOs. BUCK12 can operate in dual phase.
> The output voltages are configurable and are meant to supply power to the
> main processor and other components.
>
> Signed-off-by: Nirmala Devi Mal Nadar <[email protected]>
> Signed-off-by: Bhargav Raviprakash <[email protected]>
> ---
> drivers/regulator/Kconfig | 4 +-
> drivers/regulator/tps6594-regulator.c | 236 +++++++++++++++++++++++---
> 2 files changed, 215 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/regulator/tps6594-regulator.c b/drivers/regulator/tps6594-regulator.c
> index b7f0c8779..37d76c483 100644
> --- a/drivers/regulator/tps6594-regulator.c
> +++ b/drivers/regulator/tps6594-regulator.c
> @@ -412,14 +562,20 @@ static int tps6594_regulator_probe(struct platform_device *pdev)
> struct tps6594_ext_regulator_irq_data *irq_ext_reg_data;
> struct tps6594_regulator_irq_type *irq_type;
> u8 buck_configured[BUCK_NB] = { 0 };
> + u8 ldo_configured[LDO_NB] = { 0 };
> u8 buck_multi[MULTI_PHASE_NB] = { 0 };
> static const char * const multiphases[] = {"buck12", "buck123", "buck1234", "buck34"};
`multiphases` should prefixed like the new one.
> + static const char * const tps65224_multiphases[] = {"buck12"};
> @@ -495,25 +660,30 @@ static int tps6594_regulator_probe(struct platform_device *pdev)
> if (!irq_data)
> return -ENOMEM;
>
> - for (i = 0; i < MULTI_PHASE_NB; i++) {
> + for (i = 0; i < multi_phase_cnt; i++) {
> if (buck_multi[i] == 0)
> continue;
>
> + const struct regulator_desc *multi_regs = (tps->chip_id == TPS65224) ?
> + tps65224_multi_regs :
> + tps6594_multi_regs;
This should be declared at the top of the function.
> rdev = devm_regulator_register(&pdev->dev, &multi_regs[i], &config);
> - if (IS_ERR(rdev))
> - return dev_err_probe(tps->dev, PTR_ERR(rdev),
> - "failed to register %s regulator\n",
> - pdev->name);
> + if (IS_ERR(rdev))
> + return dev_err_probe(tps->dev, PTR_ERR(rdev),
> + "failed to register %s regulator\n",
> + pdev->name);
The indentation of the `if` looks odd. You should revert this.
> @@ -537,21 +707,34 @@ static int tps6594_regulator_probe(struct platform_device *pdev)
> if (buck_configured[i] == 1)
> continue;
>
> - rdev = devm_regulator_register(&pdev->dev, &buck_regs[i], &config);
> + const struct regulator_desc *buck_cfg = (tps->chip_id == TPS65224) ?
> + tps65224_buck_regs : buck_regs;
Same here, should be at the top of the function.
> - /* LP8764 dosen't have LDO */
> + /* LP8764 doesn't have LDO */
> if (tps->chip_id != LP8764) {
> - for (i = 0; i < ARRAY_SIZE(ldo_regs); i++) {
> + for (i = 0; i < LDO_NB; i++) {
> + if (ldo_configured[i] == 1)
> + continue;
> +
> + struct tps6594_regulator_irq_type **ldos_irq_types =
> + (tps->chip_id == TPS65224) ?
> + tps65224_ldos_irq_types : tps6594_ldos_irq_types;
> +
> + const struct regulator_desc *ldo_regs =
> + (tps->chip_id == TPS65224) ?
> + tps65224_ldo_regs : tps6594_ldo_regs;
Should be at the top of the function, please fix this in the whole file.
Best regards,
--
Esteban "Skallwar" Blanc
BayLibre
Hello,
On Thu, 14 Mar 2024 12:28:00 +0100, Esteban Blanc wrote:
> On Fri Mar 8, 2024 at 11:34 AM CET, Bhargav Raviprakash wrote:
> > From: Nirmala Devi Mal Nadar <[email protected]>
> >
> > Add support for TPS65224 regulators (bucks and LDOs) to TPS6594 driver as
> > they have significant functional overlap. TPS65224 PMIC has 4 buck
> > regulators and 3 LDOs. BUCK12 can operate in dual phase.
> > The output voltages are configurable and are meant to supply power to the
> > main processor and other components.
> >
> > Signed-off-by: Nirmala Devi Mal Nadar <[email protected]>
> > Signed-off-by: Bhargav Raviprakash <[email protected]>
> > ---
> > drivers/regulator/Kconfig | 4 +-
> > drivers/regulator/tps6594-regulator.c | 236 +++++++++++++++++++++++---
> > 2 files changed, 215 insertions(+), 25 deletions(-)
> >
> > diff --git a/drivers/regulator/tps6594-regulator.c b/drivers/regulator/tps6594-regulator.c
> > index b7f0c8779..37d76c483 100644
> > --- a/drivers/regulator/tps6594-regulator.c
> > +++ b/drivers/regulator/tps6594-regulator.c
> > @@ -412,14 +562,20 @@ static int tps6594_regulator_probe(struct platform_device *pdev)
> > struct tps6594_ext_regulator_irq_data *irq_ext_reg_data;
> > struct tps6594_regulator_irq_type *irq_type;
> > u8 buck_configured[BUCK_NB] = { 0 };
> > + u8 ldo_configured[LDO_NB] = { 0 };
> > u8 buck_multi[MULTI_PHASE_NB] = { 0 };
> > static const char * const multiphases[] = {"buck12", "buck123", "buck1234", "buck34"};
>
> `multiphases` should prefixed like the new one.
>
Sure! This will be fixed in the next version.
> > + static const char * const tps65224_multiphases[] = {"buck12"};
>
> > @@ -495,25 +660,30 @@ static int tps6594_regulator_probe(struct platform_device *pdev)
> > if (!irq_data)
> > return -ENOMEM;
> >
> > - for (i = 0; i < MULTI_PHASE_NB; i++) {
> > + for (i = 0; i < multi_phase_cnt; i++) {
> > if (buck_multi[i] == 0)
> > continue;
> >
> > + const struct regulator_desc *multi_regs = (tps->chip_id == TPS65224) ?
> > + tps65224_multi_regs :
> > + tps6594_multi_regs;
>
> This should be declared at the top of the function.
>
> > rdev = devm_regulator_register(&pdev->dev, &multi_regs[i], &config);
> > - if (IS_ERR(rdev))
> > - return dev_err_probe(tps->dev, PTR_ERR(rdev),
> > - "failed to register %s regulator\n",
> > - pdev->name);
> > + if (IS_ERR(rdev))
> > + return dev_err_probe(tps->dev, PTR_ERR(rdev),
> > + "failed to register %s regulator\n",
> > + pdev->name);
>
> The indentation of the `if` looks odd. You should revert this.
>
Sure, will fix this in the next version.
> > @@ -537,21 +707,34 @@ static int tps6594_regulator_probe(struct platform_device *pdev)
> > if (buck_configured[i] == 1)
> > continue;
> >
> > - rdev = devm_regulator_register(&pdev->dev, &buck_regs[i], &config);
> > + const struct regulator_desc *buck_cfg = (tps->chip_id == TPS65224) ?
> > + tps65224_buck_regs : buck_regs;
>
> Same here, should be at the top of the function.
>
> > - /* LP8764 dosen't have LDO */
> > + /* LP8764 doesn't have LDO */
> > if (tps->chip_id != LP8764) {
> > - for (i = 0; i < ARRAY_SIZE(ldo_regs); i++) {
> > + for (i = 0; i < LDO_NB; i++) {
> > + if (ldo_configured[i] == 1)
> > + continue;
> > +
> > + struct tps6594_regulator_irq_type **ldos_irq_types =
> > + (tps->chip_id == TPS65224) ?
> > + tps65224_ldos_irq_types : tps6594_ldos_irq_types;
> > +
> > + const struct regulator_desc *ldo_regs =
> > + (tps->chip_id == TPS65224) ?
> > + tps65224_ldo_regs : tps6594_ldo_regs;
>
> Should be at the top of the function, please fix this in the whole file.
Thanks! In the next version will move declaration to start of the function.
>
> Best regards,
>
> --
> Esteban "Skallwar" Blanc
> BayLibre
Regards,
Bhargav