Signed-off-by: Bjorn Andersson <bjorn.andersson@xxxxxxxxxxxxxx> --- 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-arm-msm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html