return 0;
 }
 
+static int _set_opp_level(struct device *dev, struct dev_pm_opp *opp)
+{
+       unsigned int level = 0;
+       int ret = 0;
+
+       if (opp) {
+               if (opp->level == OPP_LEVEL_UNSET)
+                       return 0;
+
+               level = opp->level;
+       }
+
+       /* Request a new performance state through the device's PM domain. */
+       ret = dev_pm_domain_set_performance_state(dev, level);
+       if (ret)
+               dev_err(dev, "Failed to set performance state %u (%d)\n", level,
+                       ret);
+
+       return ret;
+}
+
 /* This is only called for PM domain for now */
 static int _set_required_opps(struct device *dev, struct opp_table *opp_table,
                              struct dev_pm_opp *opp, bool up)
                if (devs[index]) {
                        required_opp = opp ? opp->required_opps[index] : NULL;
 
-                       ret = dev_pm_opp_set_opp(devs[index], required_opp);
+                       ret = _set_opp_level(devs[index], required_opp);
                        if (ret)
                                return ret;
                }
        return 0;
 }
 
-static int _set_opp_level(struct device *dev, struct dev_pm_opp *opp)
-{
-       unsigned int level = 0;
-       int ret = 0;
-
-       if (opp) {
-               if (opp->level == OPP_LEVEL_UNSET)
-                       return 0;
-
-               level = opp->level;
-       }
-
-       /* Request a new performance state through the device's PM domain. */
-       ret = dev_pm_domain_set_performance_state(dev, level);
-       if (ret)
-               dev_err(dev, "Failed to set performance state %u (%d)\n", level,
-                       ret);
-
-       return ret;
-}
-
 static void _find_current_opp(struct device *dev, struct opp_table *opp_table)
 {
        struct dev_pm_opp *opp = ERR_PTR(-ENODEV);
                        }
                }
 
-               /*
-                * Add the virtual genpd device as a user of the OPP table, so
-                * we can call dev_pm_opp_set_opp() on it directly.
-                *
-                * This will be automatically removed when the OPP table is
-                * removed, don't need to handle that here.
-                */
-               if (!_add_opp_dev(virt_dev, opp_table->required_opp_tables[index])) {
-                       ret = -ENOMEM;
-                       goto err;
-               }
-
                opp_table->required_devs[index] = virt_dev;
                index++;
                name++;