@@ -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;
}
@@ -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);
Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com> --- drivers/regulator/core.c | 40 ++++++++-------------------------------- include/linux/regulator/driver.h | 5 ----- 2 files changed, 8 insertions(+), 37 deletions(-)