regulator: tps65910: check TPS65910_NUM_REGS at build time
authorMichał Mirosław <mirq-linux@rere.qmqm.pl>
Tue, 13 Jun 2017 14:41:56 +0000 (16:41 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 13 Jun 2017 17:46:48 +0000 (18:46 +0100)
Check TPS65910_NUM_REGS at build time instead of silently registering
not all regulators at runtime.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/tps65910-regulator.c

index 696116ebdf50a5b853ba847b9ef55604ed3423ae..81672a58fcc234f381a40c3b43eda132a6dd96a5 100644 (file)
@@ -1107,6 +1107,7 @@ static int tps65910_probe(struct platform_device *pdev)
 
        switch (tps65910_chip_id(tps65910)) {
        case TPS65910:
+               BUILD_BUG_ON(TPS65910_NUM_REGS < ARRAY_SIZE(tps65910_regs));
                pmic->get_ctrl_reg = &tps65910_get_ctrl_register;
                pmic->num_regulators = ARRAY_SIZE(tps65910_regs);
                pmic->ext_sleep_control = tps65910_ext_sleep_control;
@@ -1119,6 +1120,7 @@ static int tps65910_probe(struct platform_device *pdev)
                                        DCDCCTRL_DCDCCKSYNC_MASK);
                break;
        case TPS65911:
+               BUILD_BUG_ON(TPS65910_NUM_REGS < ARRAY_SIZE(tps65911_regs));
                pmic->get_ctrl_reg = &tps65911_get_ctrl_register;
                pmic->num_regulators = ARRAY_SIZE(tps65911_regs);
                pmic->ext_sleep_control = tps65911_ext_sleep_control;
@@ -1144,8 +1146,7 @@ static int tps65910_probe(struct platform_device *pdev)
        if (!pmic->rdev)
                return -ENOMEM;
 
-       for (i = 0; i < pmic->num_regulators && i < TPS65910_NUM_REGS;
-                       i++, info++) {
+       for (i = 0; i < pmic->num_regulators; i++, info++) {
                /* Register the regulators */
                pmic->info[i] = info;