struct regulator *vdd_center;
        unsigned long rate, target_rate;
        unsigned long volt, target_volt;
-       struct dev_pm_opp *curr_opp;
 };
 
 static int rk3399_dmcfreq_target(struct device *dev, unsigned long *freq,
        target_rate = dev_pm_opp_get_freq(opp);
        target_volt = dev_pm_opp_get_voltage(opp);
 
-       dmcfreq->rate = dev_pm_opp_get_freq(dmcfreq->curr_opp);
-       dmcfreq->volt = dev_pm_opp_get_voltage(dmcfreq->curr_opp);
-
        rcu_read_unlock();
 
        if (dmcfreq->rate == target_rate)
        if (err)
                dev_err(dev, "Cannot to set vol %lu uV\n", target_volt);
 
-       dmcfreq->curr_opp = opp;
+       dmcfreq->rate = target_rate;
+       dmcfreq->volt = target_volt;
+
 out:
        mutex_unlock(&dmcfreq->lock);
        return err;
                rcu_read_unlock();
                return PTR_ERR(opp);
        }
+       data->rate = dev_pm_opp_get_freq(opp);
+       data->volt = dev_pm_opp_get_voltage(opp);
        rcu_read_unlock();
-       data->curr_opp = opp;
 
        rk3399_devfreq_dmc_profile.initial_freq = data->rate;