diff options
| -rw-r--r-- | drivers/regulator/lp3971.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/drivers/regulator/lp3971.c b/drivers/regulator/lp3971.c index 5f68ff11a298..9cb2c0f34515 100644 --- a/drivers/regulator/lp3971.c +++ b/drivers/regulator/lp3971.c | |||
| @@ -73,8 +73,6 @@ static const unsigned int buck_voltage_map[] = { | |||
| 73 | }; | 73 | }; |
| 74 | 74 | ||
| 75 | #define BUCK_TARGET_VOL_MASK 0x3f | 75 | #define BUCK_TARGET_VOL_MASK 0x3f |
| 76 | #define BUCK_TARGET_VOL_MIN_IDX 0x01 | ||
| 77 | #define BUCK_TARGET_VOL_MAX_IDX 0x19 | ||
| 78 | 76 | ||
| 79 | #define LP3971_BUCK_RAMP_REG(x) (buck_base_addr[x]+2) | 77 | #define LP3971_BUCK_RAMP_REG(x) (buck_base_addr[x]+2) |
| 80 | 78 | ||
| @@ -140,7 +138,7 @@ static int lp3971_ldo_disable(struct regulator_dev *dev) | |||
| 140 | return lp3971_set_bits(lp3971, LP3971_LDO_ENABLE_REG, mask, 0); | 138 | return lp3971_set_bits(lp3971, LP3971_LDO_ENABLE_REG, mask, 0); |
| 141 | } | 139 | } |
| 142 | 140 | ||
| 143 | static int lp3971_ldo_get_voltage(struct regulator_dev *dev) | 141 | static int lp3971_ldo_get_voltage_sel(struct regulator_dev *dev) |
| 144 | { | 142 | { |
| 145 | struct lp3971 *lp3971 = rdev_get_drvdata(dev); | 143 | struct lp3971 *lp3971 = rdev_get_drvdata(dev); |
| 146 | int ldo = rdev_get_id(dev) - LP3971_LDO1; | 144 | int ldo = rdev_get_id(dev) - LP3971_LDO1; |
| @@ -149,7 +147,7 @@ static int lp3971_ldo_get_voltage(struct regulator_dev *dev) | |||
| 149 | reg = lp3971_reg_read(lp3971, LP3971_LDO_VOL_CONTR_REG(ldo)); | 147 | reg = lp3971_reg_read(lp3971, LP3971_LDO_VOL_CONTR_REG(ldo)); |
| 150 | val = (reg >> LDO_VOL_CONTR_SHIFT(ldo)) & LDO_VOL_CONTR_MASK; | 148 | val = (reg >> LDO_VOL_CONTR_SHIFT(ldo)) & LDO_VOL_CONTR_MASK; |
| 151 | 149 | ||
| 152 | return dev->desc->volt_table[val]; | 150 | return val; |
| 153 | } | 151 | } |
| 154 | 152 | ||
| 155 | static int lp3971_ldo_set_voltage_sel(struct regulator_dev *dev, | 153 | static int lp3971_ldo_set_voltage_sel(struct regulator_dev *dev, |
| @@ -168,7 +166,7 @@ static struct regulator_ops lp3971_ldo_ops = { | |||
| 168 | .is_enabled = lp3971_ldo_is_enabled, | 166 | .is_enabled = lp3971_ldo_is_enabled, |
| 169 | .enable = lp3971_ldo_enable, | 167 | .enable = lp3971_ldo_enable, |
| 170 | .disable = lp3971_ldo_disable, | 168 | .disable = lp3971_ldo_disable, |
| 171 | .get_voltage = lp3971_ldo_get_voltage, | 169 | .get_voltage_sel = lp3971_ldo_get_voltage_sel, |
| 172 | .set_voltage_sel = lp3971_ldo_set_voltage_sel, | 170 | .set_voltage_sel = lp3971_ldo_set_voltage_sel, |
| 173 | }; | 171 | }; |
| 174 | 172 | ||
| @@ -201,24 +199,16 @@ static int lp3971_dcdc_disable(struct regulator_dev *dev) | |||
| 201 | return lp3971_set_bits(lp3971, LP3971_BUCK_VOL_ENABLE_REG, mask, 0); | 199 | return lp3971_set_bits(lp3971, LP3971_BUCK_VOL_ENABLE_REG, mask, 0); |
| 202 | } | 200 | } |
| 203 | 201 | ||
| 204 | static int lp3971_dcdc_get_voltage(struct regulator_dev *dev) | 202 | static int lp3971_dcdc_get_voltage_sel(struct regulator_dev *dev) |
| 205 | { | 203 | { |
| 206 | struct lp3971 *lp3971 = rdev_get_drvdata(dev); | 204 | struct lp3971 *lp3971 = rdev_get_drvdata(dev); |
| 207 | int buck = rdev_get_id(dev) - LP3971_DCDC1; | 205 | int buck = rdev_get_id(dev) - LP3971_DCDC1; |
| 208 | u16 reg; | 206 | u16 reg; |
| 209 | int val; | ||
| 210 | 207 | ||
| 211 | reg = lp3971_reg_read(lp3971, LP3971_BUCK_TARGET_VOL1_REG(buck)); | 208 | reg = lp3971_reg_read(lp3971, LP3971_BUCK_TARGET_VOL1_REG(buck)); |
| 212 | reg &= BUCK_TARGET_VOL_MASK; | 209 | reg &= BUCK_TARGET_VOL_MASK; |
| 213 | 210 | ||
| 214 | if (reg <= BUCK_TARGET_VOL_MAX_IDX) | 211 | return reg; |
| 215 | val = buck_voltage_map[reg]; | ||
| 216 | else { | ||
| 217 | val = 0; | ||
| 218 | dev_warn(&dev->dev, "chip reported incorrect voltage value.\n"); | ||
| 219 | } | ||
| 220 | |||
| 221 | return val; | ||
| 222 | } | 212 | } |
| 223 | 213 | ||
| 224 | static int lp3971_dcdc_set_voltage_sel(struct regulator_dev *dev, | 214 | static int lp3971_dcdc_set_voltage_sel(struct regulator_dev *dev, |
| @@ -249,7 +239,7 @@ static struct regulator_ops lp3971_dcdc_ops = { | |||
| 249 | .is_enabled = lp3971_dcdc_is_enabled, | 239 | .is_enabled = lp3971_dcdc_is_enabled, |
| 250 | .enable = lp3971_dcdc_enable, | 240 | .enable = lp3971_dcdc_enable, |
| 251 | .disable = lp3971_dcdc_disable, | 241 | .disable = lp3971_dcdc_disable, |
| 252 | .get_voltage = lp3971_dcdc_get_voltage, | 242 | .get_voltage_sel = lp3971_dcdc_get_voltage_sel, |
| 253 | .set_voltage_sel = lp3971_dcdc_set_voltage_sel, | 243 | .set_voltage_sel = lp3971_dcdc_set_voltage_sel, |
| 254 | }; | 244 | }; |
| 255 | 245 | ||
