pm_qos: Add PM_QOS_BUS_FREQUENCY pm_qos to guarantee required memory bus frequency
authorChanwoo Choi <cw00.choi@samsung.com>
Fri, 11 Jul 2014 01:02:06 +0000 (10:02 +0900)
committerChanho Park <chanho61.park@samsung.com>
Tue, 18 Nov 2014 03:00:16 +0000 (12:00 +0900)
This patch add PM_QOS_BUS_FREQUENCY pm_qos to guarantee required memory bus
frequency.

Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
include/linux/pm_qos.h
kernel/power/qos.c

index 5a95013..caa4e98 100644 (file)
@@ -15,6 +15,7 @@ enum {
        PM_QOS_CPU_DMA_LATENCY,
        PM_QOS_NETWORK_LATENCY,
        PM_QOS_NETWORK_THROUGHPUT,
+       PM_QOS_BUS_FREQUENCY,
 
        /* insert new class ID */
        PM_QOS_NUM_CLASSES,
@@ -34,6 +35,11 @@ enum pm_qos_flags_status {
 #define PM_QOS_NETWORK_THROUGHPUT_DEFAULT_VALUE        0
 #define PM_QOS_DEV_LAT_DEFAULT_VALUE           0
 
+#define PM_QOS_DEV_LAT_DEFAULT_VALUE           0
+#define PM_QOS_BUS_FREQUENCY_MAX_VALUE         400000
+#define PM_QOS_BUS_FREQUENCY_MIN_VALUE         100000
+#define PM_QOS_BUS_FREQUENCY_DEFAULT_VALUE     PM_QOS_BUS_FREQUENCY_MIN_VALUE
+
 #define PM_QOS_FLAG_NO_POWER_OFF       (1 << 0)
 #define PM_QOS_FLAG_REMOTE_WAKEUP      (1 << 1)
 
index 25cf89b..789e69f 100644 (file)
@@ -100,12 +100,25 @@ static struct pm_qos_object network_throughput_pm_qos = {
        .name = "network_throughput",
 };
 
+static BLOCKING_NOTIFIER_HEAD(bus_frequency_notifier);
+static struct pm_qos_constraints bus_frequency_constraints = {
+       .list = PLIST_HEAD_INIT(bus_frequency_constraints.list),
+       .target_value = PM_QOS_BUS_FREQUENCY_DEFAULT_VALUE,
+       .default_value = PM_QOS_BUS_FREQUENCY_DEFAULT_VALUE,
+       .type = PM_QOS_MAX,
+       .notifiers = &bus_frequency_notifier,
+};
+static struct pm_qos_object bus_frequency_pm_qos = {
+       .constraints = &bus_frequency_constraints,
+       .name = "bus_frequency",
+};
 
 static struct pm_qos_object *pm_qos_array[] = {
        &null_pm_qos,
        &cpu_dma_pm_qos,
        &network_lat_pm_qos,
-       &network_throughput_pm_qos
+       &network_throughput_pm_qos,
+       &bus_frequency_pm_qos,
 };
 
 static ssize_t pm_qos_power_write(struct file *filp, const char __user *buf,