|
@@ -1697,10 +1697,17 @@ static int _regulator_do_set_voltage(struct regulator_dev *rdev,
|
|
|
int regulator_set_voltage(struct regulator *regulator, int min_uV, int max_uV)
|
|
|
{
|
|
|
struct regulator_dev *rdev = regulator->rdev;
|
|
|
- int ret;
|
|
|
+ int ret = 0;
|
|
|
|
|
|
mutex_lock(&rdev->mutex);
|
|
|
|
|
|
+ /* If we're setting the same range as last time the change
|
|
|
+ * should be a noop (some cpufreq implementations use the same
|
|
|
+ * voltage for multiple frequencies, for example).
|
|
|
+ */
|
|
|
+ if (regulator->min_uV == min_uV && regulator->max_uV == max_uV)
|
|
|
+ goto out;
|
|
|
+
|
|
|
/* sanity check */
|
|
|
if (!rdev->desc->ops->set_voltage &&
|
|
|
!rdev->desc->ops->set_voltage_sel) {
|