Signed-off-by: Bjorn Andersson <[email protected]>
---
 drivers/regulator/core.c         | 40 ++++++++--------------------------------
 include/linux/regulator/driver.h |  5 -----
 2 files changed, 8 insertions(+), 37 deletions(-)

diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 2a53515..cfab6fc 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -662,7 +662,6 @@ static int drms_uA_update(struct regulator_dev *rdev)
 {
        struct regulator *sibling;
        int current_uA = 0, output_uV, input_uV, err;
-       unsigned int mode;
 
        /*
         * first check to see if we can set modes at all, otherwise just
@@ -672,14 +671,9 @@ static int drms_uA_update(struct regulator_dev *rdev)
        if (err < 0)
                return 0;
 
-       if (!rdev->desc->ops->get_optimum_mode &&
-           !rdev->desc->ops->set_optimum_mode)
+       if (!rdev->desc->ops->set_optimum_mode)
                return 0;
 
-       if (!rdev->desc->ops->set_mode &&
-           !rdev->desc->ops->set_optimum_mode)
-               return -EINVAL;
-
        /* get output voltage */
        output_uV = _regulator_get_voltage(rdev);
        if (output_uV <= 0) {
@@ -702,31 +696,13 @@ static int drms_uA_update(struct regulator_dev *rdev)
        list_for_each_entry(sibling, &rdev->consumer_list, list)
                current_uA += sibling->uA_load;
 
-       if (rdev->desc->ops->set_optimum_mode) {
-               /* set the optimum mode for our new total regulator load */
-               err = rdev->desc->ops->set_optimum_mode(rdev,
-                                                       input_uV, output_uV,
-                                                       current_uA);
-               if (err < 0)
-                       rdev_err(rdev, "failed to set optimum mode @ %d uA %d 
-> %d uV\n",
-                                current_uA, input_uV, output_uV);
-       } else {
-               /* now get the optimum mode for our new total regulator load */
-               mode = rdev->desc->ops->get_optimum_mode(rdev, input_uV,
-                                                        output_uV, current_uA);
-
-               /* check the new mode is allowed */
-               err = regulator_mode_constrain(rdev, &mode);
-               if (err < 0) {
-                       rdev_err(rdev, "failed to get optimum mode @ %d uA %d 
-> %d uV\n",
-                                current_uA, input_uV, output_uV);
-                       return err;
-               }
-
-               err = rdev->desc->ops->set_mode(rdev, mode);
-               if (err < 0)
-                       rdev_err(rdev, "failed to set optimum mode %x\n", mode);
-       }
+       /* set the optimum mode for our new total regulator load */
+       err = rdev->desc->ops->set_optimum_mode(rdev,
+                                               input_uV, output_uV,
+                                               current_uA);
+       if (err < 0)
+               rdev_err(rdev, "failed to set optimum mode @ %d uA %d -> %d 
uV\n",
+                        current_uA, input_uV, output_uV);
 
        return err;
 }
diff --git a/include/linux/regulator/driver.h b/include/linux/regulator/driver.h
index 837addb..f472cb5 100644
--- a/include/linux/regulator/driver.h
+++ b/include/linux/regulator/driver.h
@@ -95,8 +95,6 @@ struct regulator_linear_range {
  * @get_mode: Get the configured operating mode for the regulator.
  * @get_status: Return actual (not as-configured) status of regulator, as a
  *     REGULATOR_STATUS value (or negative errno)
- * @get_optimum_mode: Get the most efficient operating mode for the regulator
- *                    when running with the specified parameters.
  * @set_optimum_mode: Set the most efficient operating mode for the regulator
  *                    when running with the specified parameters.
  *
@@ -165,9 +163,6 @@ struct regulator_ops {
         */
        int (*get_status)(struct regulator_dev *);
 
-       /* get most efficient regulator operating mode for load */
-       unsigned int (*get_optimum_mode) (struct regulator_dev *, int input_uV,
-                                         int output_uV, int load_uA);
        /* set most efficient regulator operating mode for load */
        int (*set_optimum_mode)(struct regulator_dev *, int input_uV,
                                int output_uV, int load_uA);
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to