diff options
author | Axel Lin <axel.lin@gmail.com> | 2012-06-13 08:27:58 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-06-17 16:07:19 -0400 |
commit | d580cb5e78763eb3d8149e0d60a0a73d355d27c5 (patch) | |
tree | 890fbb5042f90a9708fab973adabfb924202de76 /drivers/regulator/wm831x-dcdc.c | |
parent | 0a4796896bda399a63090dad267896ea93d44fa7 (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.c | 44 |
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 | ||
602 | static int wm831x_buckp_set_voltage_int(struct regulator_dev *rdev, int reg, | 602 | static 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 | |||
622 | static 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 | |||
633 | static 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 | ||
643 | static struct regulator_ops wm831x_buckp_ops = { | 616 | static 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, |