PM / OPP: handle allocation of device_opp in a separate routine
authorViresh Kumar <viresh.kumar@linaro.org>
Wed, 10 Dec 2014 04:15:34 +0000 (09:45 +0530)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 10 Dec 2014 21:18:34 +0000 (22:18 +0100)
Get the 'device_opp' allocation code into a separate routine to keep only the
necessary part in dev_pm_opp_add_dynamic().

Also do s/sizeof(struct device_opp)/sizeof(*dev_opp) and remove the print
message on kzalloc() failure as checkpatch warns for that.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/base/power/opp.c

index 525ffb202d77f67961983675f2cdf461937662b0..1150b9d2e01231eba04a5a380fb08fc2fdc21e63 100644 (file)
@@ -386,6 +386,27 @@ struct dev_pm_opp *dev_pm_opp_find_freq_floor(struct device *dev,
 }
 EXPORT_SYMBOL_GPL(dev_pm_opp_find_freq_floor);
 
+static struct device_opp *add_device_opp(struct device *dev)
+{
+       struct device_opp *dev_opp;
+
+       /*
+        * Allocate a new device OPP table. In the infrequent case where a new
+        * device is needed to be added, we pay this penalty.
+        */
+       dev_opp = kzalloc(sizeof(*dev_opp), GFP_KERNEL);
+       if (!dev_opp)
+               return NULL;
+
+       dev_opp->dev = dev;
+       srcu_init_notifier_head(&dev_opp->srcu_head);
+       INIT_LIST_HEAD(&dev_opp->opp_list);
+
+       /* Secure the device list modification */
+       list_add_rcu(&dev_opp->node, &dev_opp_list);
+       return dev_opp;
+}
+
 static int dev_pm_opp_add_dynamic(struct device *dev, unsigned long freq,
                                  unsigned long u_volt, bool dynamic)
 {
@@ -412,27 +433,13 @@ static int dev_pm_opp_add_dynamic(struct device *dev, unsigned long freq,
        /* Check for existing list for 'dev' */
        dev_opp = find_device_opp(dev);
        if (IS_ERR(dev_opp)) {
-               /*
-                * Allocate a new device OPP table. In the infrequent case
-                * where a new device is needed to be added, we pay this
-                * penalty.
-                */
-               dev_opp = kzalloc(sizeof(struct device_opp), GFP_KERNEL);
+               dev_opp = add_device_opp(dev);
                if (!dev_opp) {
                        mutex_unlock(&dev_opp_list_lock);
                        kfree(new_opp);
-                       dev_warn(dev,
-                               "%s: Unable to create device OPP structure\n",
-                               __func__);
                        return -ENOMEM;
                }
 
-               dev_opp->dev = dev;
-               srcu_init_notifier_head(&dev_opp->srcu_head);
-               INIT_LIST_HEAD(&dev_opp->opp_list);
-
-               /* Secure the device list modification */
-               list_add_rcu(&dev_opp->node, &dev_opp_list);
                head = &dev_opp->opp_list;
                goto list_add;
        }