aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/regulator/wm831x-dcdc.c
diff options
context:
space:
mode:
authorAxel Lin <axel.lin@gmail.com>2012-06-13 08:27:58 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-06-17 16:07:19 -0400
commitd580cb5e78763eb3d8149e0d60a0a73d355d27c5 (patch)
tree890fbb5042f90a9708fab973adabfb924202de76 /drivers/regulator/wm831x-dcdc.c
parent0a4796896bda399a63090dad267896ea93d44fa7 (diff)
regulator: wm831x-dcdc: Convert wm831x_buckp_ops to regulator_set_voltage_sel_regmap
Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'drivers/regulator/wm831x-dcdc.c')
-rw-r--r--drivers/regulator/wm831x-dcdc.c44
1 files changed, 9 insertions, 35 deletions
diff --git a/drivers/regulator/wm831x-dcdc.c b/drivers/regulator/wm831x-dcdc.c
index fbcff56e0114..91b5b0a727ef 100644
--- a/drivers/regulator/wm831x-dcdc.c
+++ b/drivers/regulator/wm831x-dcdc.c
@@ -599,51 +599,25 @@ static struct platform_driver wm831x_buckv_driver = {
599 * BUCKP specifics 599 * BUCKP specifics
600 */ 600 */
601 601
602static int wm831x_buckp_set_voltage_int(struct regulator_dev *rdev, int reg, 602static int wm831x_buckp_set_suspend_voltage(struct regulator_dev *rdev, int uV)
603 int min_uV, int max_uV, int *selector)
604{ 603{
605 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev); 604 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev);
606 struct wm831x *wm831x = dcdc->wm831x; 605 struct wm831x *wm831x = dcdc->wm831x;
607 u16 vsel;
608
609 if (min_uV <= 34000000)
610 vsel = (min_uV - 850000) / 25000;
611 else
612 return -EINVAL;
613
614 if (regulator_list_voltage_linear(rdev, vsel) > max_uV)
615 return -EINVAL;
616
617 *selector = vsel;
618
619 return wm831x_set_bits(wm831x, reg, WM831X_DC3_ON_VSEL_MASK, vsel);
620}
621
622static int wm831x_buckp_set_voltage(struct regulator_dev *rdev,
623 int min_uV, int max_uV,
624 unsigned *selector)
625{
626 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev);
627 u16 reg = dcdc->base + WM831X_DCDC_ON_CONFIG;
628
629 return wm831x_buckp_set_voltage_int(rdev, reg, min_uV, max_uV,
630 selector);
631}
632
633static int wm831x_buckp_set_suspend_voltage(struct regulator_dev *rdev,
634 int uV)
635{
636 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev);
637 u16 reg = dcdc->base + WM831X_DCDC_SLEEP_CONTROL; 606 u16 reg = dcdc->base + WM831X_DCDC_SLEEP_CONTROL;
638 unsigned selector; 607 int sel;
608
609 sel = regulator_map_voltage_linear(rdev, uV, uV);
610 if (sel < 0)
611 return sel;
639 612
640 return wm831x_buckp_set_voltage_int(rdev, reg, uV, uV, &selector); 613 return wm831x_set_bits(wm831x, reg, WM831X_DC3_ON_VSEL_MASK, sel);
641} 614}
642 615
643static struct regulator_ops wm831x_buckp_ops = { 616static struct regulator_ops wm831x_buckp_ops = {
644 .set_voltage = wm831x_buckp_set_voltage, 617 .set_voltage_sel = regulator_set_voltage_sel_regmap,
645 .get_voltage_sel = regulator_get_voltage_sel_regmap, 618 .get_voltage_sel = regulator_get_voltage_sel_regmap,
646 .list_voltage = regulator_list_voltage_linear, 619 .list_voltage = regulator_list_voltage_linear,
620 .map_voltage = regulator_map_voltage_linear,
647 .set_suspend_voltage = wm831x_buckp_set_suspend_voltage, 621 .set_suspend_voltage = wm831x_buckp_set_suspend_voltage,
648 622
649 .is_enabled = regulator_is_enabled_regmap, 623 .is_enabled = regulator_is_enabled_regmap,