]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/regulator/wm8350-regulator.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / regulator / wm8350-regulator.c
index fe4b8a8a9dfd43a88ba9df10a9496a1b732d4328..1bcb22c440953b6dcab42609361c150e0857fb23 100644 (file)
@@ -360,7 +360,7 @@ int wm8350_isink_set_flash(struct wm8350 *wm8350, int isink, u16 mode,
 EXPORT_SYMBOL_GPL(wm8350_isink_set_flash);
 
 static int wm8350_dcdc_set_voltage(struct regulator_dev *rdev, int min_uV,
-       int max_uV)
+                                  int max_uV, unsigned *selector)
 {
        struct wm8350 *wm8350 = rdev_get_drvdata(rdev);
        int volt_reg, dcdc = rdev_get_id(rdev), mV,
@@ -397,17 +397,18 @@ static int wm8350_dcdc_set_voltage(struct regulator_dev *rdev, int min_uV,
                return -EINVAL;
        }
 
+       *selector = mV;
+
        /* all DCDCs have same mV bits */
        val = wm8350_reg_read(wm8350, volt_reg) & ~WM8350_DC1_VSEL_MASK;
        wm8350_reg_write(wm8350, volt_reg, val | mV);
        return 0;
 }
 
-static int wm8350_dcdc_get_voltage(struct regulator_dev *rdev)
+static int wm8350_dcdc_get_voltage_sel(struct regulator_dev *rdev)
 {
        struct wm8350 *wm8350 = rdev_get_drvdata(rdev);
        int volt_reg, dcdc = rdev_get_id(rdev);
-       u16 val;
 
        switch (dcdc) {
        case WM8350_DCDC_1:
@@ -429,8 +430,7 @@ static int wm8350_dcdc_get_voltage(struct regulator_dev *rdev)
        }
 
        /* all DCDCs have same mV bits */
-       val = wm8350_reg_read(wm8350, volt_reg) & WM8350_DC1_VSEL_MASK;
-       return wm8350_dcdc_val_to_mvolts(val) * 1000;
+       return wm8350_reg_read(wm8350, volt_reg) & WM8350_DC1_VSEL_MASK;
 }
 
 static int wm8350_dcdc_list_voltage(struct regulator_dev *rdev,
@@ -754,7 +754,7 @@ static int wm8350_ldo_set_suspend_disable(struct regulator_dev *rdev)
 }
 
 static int wm8350_ldo_set_voltage(struct regulator_dev *rdev, int min_uV,
-       int max_uV)
+                                 int max_uV, unsigned *selector)
 {
        struct wm8350 *wm8350 = rdev_get_drvdata(rdev);
        int volt_reg, ldo = rdev_get_id(rdev), mV, min_mV = min_uV / 1000,
@@ -797,17 +797,18 @@ static int wm8350_ldo_set_voltage(struct regulator_dev *rdev, int min_uV,
                return -EINVAL;
        }
 
+       *selector = mV;
+
        /* all LDOs have same mV bits */
        val = wm8350_reg_read(wm8350, volt_reg) & ~WM8350_LDO1_VSEL_MASK;
        wm8350_reg_write(wm8350, volt_reg, val | mV);
        return 0;
 }
 
-static int wm8350_ldo_get_voltage(struct regulator_dev *rdev)
+static int wm8350_ldo_get_voltage_sel(struct regulator_dev *rdev)
 {
        struct wm8350 *wm8350 = rdev_get_drvdata(rdev);
        int volt_reg, ldo = rdev_get_id(rdev);
-       u16 val;
 
        switch (ldo) {
        case WM8350_LDO_1:
@@ -827,8 +828,7 @@ static int wm8350_ldo_get_voltage(struct regulator_dev *rdev)
        }
 
        /* all LDOs have same mV bits */
-       val = wm8350_reg_read(wm8350, volt_reg) & WM8350_LDO1_VSEL_MASK;
-       return wm8350_ldo_val_to_mvolts(val) * 1000;
+       return wm8350_reg_read(wm8350, volt_reg) & WM8350_LDO1_VSEL_MASK;
 }
 
 static int wm8350_ldo_list_voltage(struct regulator_dev *rdev,
@@ -1225,7 +1225,7 @@ static int wm8350_ldo_is_enabled(struct regulator_dev *rdev)
 
 static struct regulator_ops wm8350_dcdc_ops = {
        .set_voltage = wm8350_dcdc_set_voltage,
-       .get_voltage = wm8350_dcdc_get_voltage,
+       .get_voltage_sel = wm8350_dcdc_get_voltage_sel,
        .list_voltage = wm8350_dcdc_list_voltage,
        .enable = wm8350_dcdc_enable,
        .disable = wm8350_dcdc_disable,
@@ -1249,7 +1249,7 @@ static struct regulator_ops wm8350_dcdc2_5_ops = {
 
 static struct regulator_ops wm8350_ldo_ops = {
        .set_voltage = wm8350_ldo_set_voltage,
-       .get_voltage = wm8350_ldo_get_voltage,
+       .get_voltage_sel = wm8350_ldo_get_voltage_sel,
        .list_voltage = wm8350_ldo_list_voltage,
        .enable = wm8350_ldo_enable,
        .disable = wm8350_ldo_disable,