regulator: tps65910: Correct VIO voltage configuration
authorLaxman Dewangan <ldewangan@nvidia.com>
Fri, 17 Feb 2012 13:26:11 +0000 (18:56 +0530)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Sun, 11 Mar 2012 20:48:41 +0000 (20:48 +0000)
The VIO regulator register specify the voltage configuration
on bit3:2 of its register. And hence only these bits should
be modified when setting voltage and used when reading voltage
from register setting.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
drivers/regulator/tps65910-regulator.c

index 9092b7f998c19b7819dca58c43e40c49db8a9a3b..a9bb6d45ceff3169ca1f66aa4c92f52132316b9a 100644 (file)
@@ -674,8 +674,9 @@ static int tps65911_get_voltage(struct regulator_dev *dev)
                step_mv = 100;
                break;
        case TPS65910_REG_VIO:
+               value &= LDO_SEL_MASK;
+               value >>= LDO_SEL_SHIFT;
                return pmic->info[id]->voltage_table[value] * 1000;
-               break;
        default:
                return -EINVAL;
        }
@@ -767,9 +768,11 @@ static int tps65911_set_voltage(struct regulator_dev *dev, unsigned selector)
        case TPS65911_REG_LDO6:
        case TPS65911_REG_LDO7:
        case TPS65911_REG_LDO8:
-       case TPS65910_REG_VIO:
                return tps65910_modify_bits(pmic, reg,
                                (selector << LDO_SEL_SHIFT), LDO3_SEL_MASK);
+       case TPS65910_REG_VIO:
+               return tps65910_modify_bits(pmic, reg,
+                               (selector << LDO_SEL_SHIFT), LDO_SEL_MASK);
        }
 
        return -EINVAL;