power: pfuze100: Fix off by one error in voltage table handling
authorTrent Piepho <tpiepho@impinj.com>
Thu, 4 Apr 2019 21:52:04 +0000 (21:52 +0000)
committerStefano Babic <sbabic@denx.de>
Tue, 11 Jun 2019 08:42:48 +0000 (10:42 +0200)
The code that sets a regulator by looking up the voltage in a table had
an off by one error.  vsel_mask is a bitmask, not the number of table
entries, so a vsel_mask value of 0x7 indicates there are 8, not 7,
entries in the table.

Cc: Peng Fan <Peng.Fan@freescale.com>
Cc: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Trent Piepho <tpiepho@impinj.com>
drivers/power/regulator/pfuze100.c

index 99073d6018c0eeb313474ea4fd8a559e2b4a31f7..d6d35f3a39d6ffffcb747e11d768afed94dd76ca 100644 (file)
@@ -482,11 +482,11 @@ static int pfuze100_regulator_val(struct udevice *dev, int op, int *uV)
                debug("Set voltage for REGULATOR_TYPE_FIXED regulator\n");
                return -EINVAL;
        } else if (desc->volt_table) {
-               for (i = 0; i < desc->vsel_mask; i++) {
+               for (i = 0; i <= desc->vsel_mask; i++) {
                        if (*uV == desc->volt_table[i])
                                break;
                }
-               if (i == desc->vsel_mask) {
+               if (i == desc->vsel_mask + 1) {
                        debug("Unsupported voltage %u\n", *uV);
                        return -EINVAL;
                }