unsigned int edev_count;
        struct mutex lock;
 
-       struct dev_pm_opp *curr_opp;
+       unsigned long curr_freq;
 
        struct regulator *regulator;
        struct clk *clk;
 {
        struct exynos_bus *bus = dev_get_drvdata(dev);
        struct dev_pm_opp *new_opp;
-       unsigned long old_freq, new_freq, old_volt, new_volt, tol;
+       unsigned long old_freq, new_freq, new_volt, tol;
        int ret = 0;
 
        /* Get new opp-bus instance according to new bus clock */
 
        new_freq = dev_pm_opp_get_freq(new_opp);
        new_volt = dev_pm_opp_get_voltage(new_opp);
-       old_freq = dev_pm_opp_get_freq(bus->curr_opp);
-       old_volt = dev_pm_opp_get_voltage(bus->curr_opp);
+       old_freq = bus->curr_freq;
        rcu_read_unlock();
 
        if (old_freq == new_freq)
                        goto out;
                }
        }
-       bus->curr_opp = new_opp;
+       bus->curr_freq = new_freq;
 
        dev_dbg(dev, "Set the frequency of bus (%lukHz -> %lukHz)\n",
                        old_freq/1000, new_freq/1000);
        struct devfreq_event_data edata;
        int ret;
 
-       rcu_read_lock();
-       stat->current_frequency = dev_pm_opp_get_freq(bus->curr_opp);
-       rcu_read_unlock();
+       stat->current_frequency = bus->curr_freq;
 
        ret = exynos_bus_get_event(bus, &edata);
        if (ret < 0) {
        }
 
        new_freq = dev_pm_opp_get_freq(new_opp);
-       old_freq = dev_pm_opp_get_freq(bus->curr_opp);
+       old_freq = bus->curr_freq;
        rcu_read_unlock();
 
        if (old_freq == new_freq)
        }
 
        *freq = new_freq;
-       bus->curr_opp = new_opp;
+       bus->curr_freq = new_freq;
 
        dev_dbg(dev, "Set the frequency of bus (%lukHz -> %lukHz)\n",
                        old_freq/1000, new_freq/1000);
                              struct exynos_bus *bus)
 {
        struct device *dev = bus->dev;
+       struct dev_pm_opp *opp;
        unsigned long rate;
        int ret;
 
        }
 
        /* Get the freq and voltage from OPP table to scale the bus freq */
-       rcu_read_lock();
        ret = dev_pm_opp_of_add_table(dev);
        if (ret < 0) {
                dev_err(dev, "failed to get OPP table\n");
-               rcu_read_unlock();
                goto err_clk;
        }
 
        rate = clk_get_rate(bus->clk);
-       bus->curr_opp = devfreq_recommended_opp(dev, &rate, 0);
-       if (IS_ERR(bus->curr_opp)) {
+
+       rcu_read_lock();
+       opp = devfreq_recommended_opp(dev, &rate, 0);
+       if (IS_ERR(opp)) {
                dev_err(dev, "failed to find dev_pm_opp\n");
                rcu_read_unlock();
-               ret = PTR_ERR(bus->curr_opp);
+               ret = PTR_ERR(opp);
                goto err_opp;
        }
+       bus->curr_freq = dev_pm_opp_get_freq(opp);
        rcu_read_unlock();
 
        return 0;