regulator: tps6594-regulator: Fix the number of irqs for TPS65224 and TPS6594

The number of irqs is computed to allocate the right amount of memory for
the irq data. An array of struct tps6594_regulator_irq_data is allocated
one time for all the irqs. Each irq uses one cell of the array.

If the computed number of irqs is not correct, not allocated memory could
be used.

Fix the	values used in the calculation for TPS6594 and TPS65224.

Fixes: 00c826525f (regulator: tps6594-regulator: Add TI TPS65224 PMIC regulators)
Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
Tested-by: Nishanth Menon <nm@ti.com>
Link: https://msgid.link/r/20240603170100.2394402-1-thomas.richard@bootlin.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Thomas Richard 2024-06-03 19:01:00 +02:00 committed by Mark Brown
parent c3f38fa61a
commit 8141b6da17
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0

View File

@ -653,18 +653,14 @@ static int tps6594_regulator_probe(struct platform_device *pdev)
} }
} }
if (tps->chip_id == LP8764) { if (tps->chip_id == TPS65224) {
nr_buck = ARRAY_SIZE(buck_regs);
nr_ldo = 0;
nr_types = REGS_INT_NB;
} else if (tps->chip_id == TPS65224) {
nr_buck = ARRAY_SIZE(tps65224_buck_regs); nr_buck = ARRAY_SIZE(tps65224_buck_regs);
nr_ldo = ARRAY_SIZE(tps65224_ldo_regs); nr_ldo = ARRAY_SIZE(tps65224_ldo_regs);
nr_types = REGS_INT_NB; nr_types = TPS65224_REGS_INT_NB;
} else { } else {
nr_buck = ARRAY_SIZE(buck_regs); nr_buck = ARRAY_SIZE(buck_regs);
nr_ldo = ARRAY_SIZE(tps6594_ldo_regs); nr_ldo = (tps->chip_id == LP8764) ? 0 : ARRAY_SIZE(tps6594_ldo_regs);
nr_types = TPS65224_REGS_INT_NB; nr_types = REGS_INT_NB;
} }
reg_irq_nb = nr_types * (nr_buck + nr_ldo); reg_irq_nb = nr_types * (nr_buck + nr_ldo);