diff options
-rw-r--r-- | drivers/base/power/opp/core.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/base/power/opp/core.c b/drivers/base/power/opp/core.c index 2824d3a5e9f0..6441dfda489f 100644 --- a/drivers/base/power/opp/core.c +++ b/drivers/base/power/opp/core.c | |||
@@ -584,6 +584,7 @@ int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq) | |||
584 | struct clk *clk; | 584 | struct clk *clk; |
585 | unsigned long freq, old_freq; | 585 | unsigned long freq, old_freq; |
586 | unsigned long u_volt, u_volt_min, u_volt_max; | 586 | unsigned long u_volt, u_volt_min, u_volt_max; |
587 | unsigned long old_u_volt, old_u_volt_min, old_u_volt_max; | ||
587 | int ret; | 588 | int ret; |
588 | 589 | ||
589 | if (unlikely(!target_freq)) { | 590 | if (unlikely(!target_freq)) { |
@@ -633,6 +634,14 @@ int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq) | |||
633 | return ret; | 634 | return ret; |
634 | } | 635 | } |
635 | 636 | ||
637 | if (IS_ERR(old_opp)) { | ||
638 | old_u_volt = 0; | ||
639 | } else { | ||
640 | old_u_volt = old_opp->u_volt; | ||
641 | old_u_volt_min = old_opp->u_volt_min; | ||
642 | old_u_volt_max = old_opp->u_volt_max; | ||
643 | } | ||
644 | |||
636 | u_volt = opp->u_volt; | 645 | u_volt = opp->u_volt; |
637 | u_volt_min = opp->u_volt_min; | 646 | u_volt_min = opp->u_volt_min; |
638 | u_volt_max = opp->u_volt_max; | 647 | u_volt_max = opp->u_volt_max; |
@@ -677,9 +686,10 @@ restore_freq: | |||
677 | __func__, old_freq); | 686 | __func__, old_freq); |
678 | restore_voltage: | 687 | restore_voltage: |
679 | /* This shouldn't harm even if the voltages weren't updated earlier */ | 688 | /* This shouldn't harm even if the voltages weren't updated earlier */ |
680 | if (!IS_ERR(old_opp)) | 689 | if (old_u_volt) { |
681 | _set_opp_voltage(dev, reg, old_opp->u_volt, | 690 | _set_opp_voltage(dev, reg, old_u_volt, old_u_volt_min, |
682 | old_opp->u_volt_min, old_opp->u_volt_max); | 691 | old_u_volt_max); |
692 | } | ||
683 | 693 | ||
684 | return ret; | 694 | return ret; |
685 | } | 695 | } |