PM QoS: Simplify PM QoS expansion/merge
Alex Frid [Thu, 15 Dec 2011 21:34:45 +0000 (13:34 -0800)]
- Replace class ID #define with enumeration
- Loop through PM QoS objects during initialization (rather than
  initializing them one-by-one)

Change-Id: I185b700b52c752c62e7550fe739adc498fc989ef
Signed-off-by: Alex Frid <afrid@nvidia.com>
Reviewed-on: http://git-master/r/70603
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Antti Miettinen <amiettinen@nvidia.com>
Reviewed-by: Diwakar Tundlam <dtundlam@nvidia.com>
Reviewed-by: Scott Williams <scwilliams@nvidia.com>
Reviewed-by: Yu-Huan Hsu <yhsu@nvidia.com>

include/linux/pm_qos_params.h
kernel/pm_qos_params.c

index a7d87f9..c1f1775 100644 (file)
@@ -8,12 +8,17 @@
 #include <linux/notifier.h>
 #include <linux/miscdevice.h>
 
-#define PM_QOS_RESERVED 0
-#define PM_QOS_CPU_DMA_LATENCY 1
-#define PM_QOS_NETWORK_LATENCY 2
-#define PM_QOS_NETWORK_THROUGHPUT 3
+enum {
+       PM_QOS_RESERVED = 0,
+       PM_QOS_CPU_DMA_LATENCY,
+       PM_QOS_NETWORK_LATENCY,
+       PM_QOS_NETWORK_THROUGHPUT,
+
+       /* insert new class ID */
+
+       PM_QOS_NUM_CLASSES,
+};
 
-#define PM_QOS_NUM_CLASSES 4
 #define PM_QOS_DEFAULT_VALUE -1
 
 #define PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE       (2000 * USEC_PER_SEC)
index 37f05d0..d6a47e4 100644 (file)
@@ -459,21 +459,18 @@ static ssize_t pm_qos_power_write(struct file *filp, const char __user *buf,
 static int __init pm_qos_power_init(void)
 {
        int ret = 0;
+       int i;
 
-       ret = register_pm_qos_misc(&cpu_dma_pm_qos);
-       if (ret < 0) {
-               printk(KERN_ERR "pm_qos_param: cpu_dma_latency setup failed\n");
-               return ret;
-       }
-       ret = register_pm_qos_misc(&network_lat_pm_qos);
-       if (ret < 0) {
-               printk(KERN_ERR "pm_qos_param: network_latency setup failed\n");
-               return ret;
+       BUILD_BUG_ON(ARRAY_SIZE(pm_qos_array) != PM_QOS_NUM_CLASSES);
+
+       for (i = 1; i < PM_QOS_NUM_CLASSES; i++) {
+               ret = register_pm_qos_misc(pm_qos_array[i]);
+               if (ret < 0) {
+                       printk(KERN_ERR "pm_qos_param: %s setup failed\n",
+                              pm_qos_array[i]->name);
+                       return ret;
+               }
        }
-       ret = register_pm_qos_misc(&network_throughput_pm_qos);
-       if (ret < 0)
-               printk(KERN_ERR
-                       "pm_qos_param: network_throughput setup failed\n");
 
        return ret;
 }