diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-05-12 06:10:25 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-05-12 06:10:25 -0400 |
commit | 5949a7e9ab2db04edaeee7c368eb4c99131f4629 (patch) | |
tree | 13e8da5dc42cc62b9721659c41045d2c27c31cc3 /drivers/regulator/tps65910-regulator.c | |
parent | 178e43aef2979525d7864daefd9499614e13800e (diff) | |
parent | 411a2df5090ccb88f4c3726e4951ebed579fec11 (diff) |
Merge remote-tracking branch 'regulator/topic/drivers' into regulator-next
Conflicts:
drivers/regulator/88pm8607.c (simple overlap with a bugfix in v3.4)
Diffstat (limited to 'drivers/regulator/tps65910-regulator.c')
-rw-r--r-- | drivers/regulator/tps65910-regulator.c | 35 |
1 files changed, 9 insertions, 26 deletions
diff --git a/drivers/regulator/tps65910-regulator.c b/drivers/regulator/tps65910-regulator.c index 43bc6c6bc8f8..5ee7e4bd8b58 100644 --- a/drivers/regulator/tps65910-regulator.c +++ b/drivers/regulator/tps65910-regulator.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
21 | #include <linux/regulator/driver.h> | 21 | #include <linux/regulator/driver.h> |
22 | #include <linux/regulator/machine.h> | 22 | #include <linux/regulator/machine.h> |
23 | #include <linux/delay.h> | ||
24 | #include <linux/slab.h> | 23 | #include <linux/slab.h> |
25 | #include <linux/gpio.h> | 24 | #include <linux/gpio.h> |
26 | #include <linux/mfd/tps65910.h> | 25 | #include <linux/mfd/tps65910.h> |
@@ -579,10 +578,10 @@ static int tps65910_get_voltage_dcdc_sel(struct regulator_dev *dev) | |||
579 | return -EINVAL; | 578 | return -EINVAL; |
580 | } | 579 | } |
581 | 580 | ||
582 | static int tps65910_get_voltage(struct regulator_dev *dev) | 581 | static int tps65910_get_voltage_sel(struct regulator_dev *dev) |
583 | { | 582 | { |
584 | struct tps65910_reg *pmic = rdev_get_drvdata(dev); | 583 | struct tps65910_reg *pmic = rdev_get_drvdata(dev); |
585 | int reg, value, id = rdev_get_id(dev), voltage = 0; | 584 | int reg, value, id = rdev_get_id(dev); |
586 | 585 | ||
587 | reg = pmic->get_ctrl_reg(id); | 586 | reg = pmic->get_ctrl_reg(id); |
588 | if (reg < 0) | 587 | if (reg < 0) |
@@ -609,9 +608,7 @@ static int tps65910_get_voltage(struct regulator_dev *dev) | |||
609 | return -EINVAL; | 608 | return -EINVAL; |
610 | } | 609 | } |
611 | 610 | ||
612 | voltage = pmic->info[id]->voltage_table[value] * 1000; | 611 | return value; |
613 | |||
614 | return voltage; | ||
615 | } | 612 | } |
616 | 613 | ||
617 | static int tps65910_get_voltage_vdd3(struct regulator_dev *dev) | 614 | static int tps65910_get_voltage_vdd3(struct regulator_dev *dev) |
@@ -619,10 +616,10 @@ static int tps65910_get_voltage_vdd3(struct regulator_dev *dev) | |||
619 | return 5 * 1000 * 1000; | 616 | return 5 * 1000 * 1000; |
620 | } | 617 | } |
621 | 618 | ||
622 | static int tps65911_get_voltage(struct regulator_dev *dev) | 619 | static int tps65911_get_voltage_sel(struct regulator_dev *dev) |
623 | { | 620 | { |
624 | struct tps65910_reg *pmic = rdev_get_drvdata(dev); | 621 | struct tps65910_reg *pmic = rdev_get_drvdata(dev); |
625 | int step_mv, id = rdev_get_id(dev); | 622 | int id = rdev_get_id(dev); |
626 | u8 value, reg; | 623 | u8 value, reg; |
627 | 624 | ||
628 | reg = pmic->get_ctrl_reg(id); | 625 | reg = pmic->get_ctrl_reg(id); |
@@ -635,13 +632,6 @@ static int tps65911_get_voltage(struct regulator_dev *dev) | |||
635 | case TPS65911_REG_LDO4: | 632 | case TPS65911_REG_LDO4: |
636 | value &= LDO1_SEL_MASK; | 633 | value &= LDO1_SEL_MASK; |
637 | value >>= LDO_SEL_SHIFT; | 634 | value >>= LDO_SEL_SHIFT; |
638 | /* The first 5 values of the selector correspond to 1V */ | ||
639 | if (value < 5) | ||
640 | value = 0; | ||
641 | else | ||
642 | value -= 4; | ||
643 | |||
644 | step_mv = 50; | ||
645 | break; | 635 | break; |
646 | case TPS65911_REG_LDO3: | 636 | case TPS65911_REG_LDO3: |
647 | case TPS65911_REG_LDO5: | 637 | case TPS65911_REG_LDO5: |
@@ -650,23 +640,16 @@ static int tps65911_get_voltage(struct regulator_dev *dev) | |||
650 | case TPS65911_REG_LDO8: | 640 | case TPS65911_REG_LDO8: |
651 | value &= LDO3_SEL_MASK; | 641 | value &= LDO3_SEL_MASK; |
652 | value >>= LDO_SEL_SHIFT; | 642 | value >>= LDO_SEL_SHIFT; |
653 | /* The first 3 values of the selector correspond to 1V */ | ||
654 | if (value < 3) | ||
655 | value = 0; | ||
656 | else | ||
657 | value -= 2; | ||
658 | |||
659 | step_mv = 100; | ||
660 | break; | 643 | break; |
661 | case TPS65910_REG_VIO: | 644 | case TPS65910_REG_VIO: |
662 | value &= LDO_SEL_MASK; | 645 | value &= LDO_SEL_MASK; |
663 | value >>= LDO_SEL_SHIFT; | 646 | value >>= LDO_SEL_SHIFT; |
664 | return pmic->info[id]->voltage_table[value] * 1000; | 647 | break; |
665 | default: | 648 | default: |
666 | return -EINVAL; | 649 | return -EINVAL; |
667 | } | 650 | } |
668 | 651 | ||
669 | return (LDO_MIN_VOLT + value * step_mv) * 1000; | 652 | return value; |
670 | } | 653 | } |
671 | 654 | ||
672 | static int tps65910_set_voltage_dcdc_sel(struct regulator_dev *dev, | 655 | static int tps65910_set_voltage_dcdc_sel(struct regulator_dev *dev, |
@@ -902,7 +885,7 @@ static struct regulator_ops tps65910_ops = { | |||
902 | .enable_time = tps65910_enable_time, | 885 | .enable_time = tps65910_enable_time, |
903 | .set_mode = tps65910_set_mode, | 886 | .set_mode = tps65910_set_mode, |
904 | .get_mode = tps65910_get_mode, | 887 | .get_mode = tps65910_get_mode, |
905 | .get_voltage = tps65910_get_voltage, | 888 | .get_voltage_sel = tps65910_get_voltage_sel, |
906 | .set_voltage_sel = tps65910_set_voltage_sel, | 889 | .set_voltage_sel = tps65910_set_voltage_sel, |
907 | .list_voltage = tps65910_list_voltage, | 890 | .list_voltage = tps65910_list_voltage, |
908 | }; | 891 | }; |
@@ -914,7 +897,7 @@ static struct regulator_ops tps65911_ops = { | |||
914 | .enable_time = tps65910_enable_time, | 897 | .enable_time = tps65910_enable_time, |
915 | .set_mode = tps65910_set_mode, | 898 | .set_mode = tps65910_set_mode, |
916 | .get_mode = tps65910_get_mode, | 899 | .get_mode = tps65910_get_mode, |
917 | .get_voltage = tps65911_get_voltage, | 900 | .get_voltage_sel = tps65911_get_voltage_sel, |
918 | .set_voltage_sel = tps65911_set_voltage_sel, | 901 | .set_voltage_sel = tps65911_set_voltage_sel, |
919 | .list_voltage = tps65911_list_voltage, | 902 | .list_voltage = tps65911_list_voltage, |
920 | }; | 903 | }; |