aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/pm_qos_params.c
diff options
context:
space:
mode:
authorcodeworkx <daniel.hillenbrand@codeworkx.de>2012-06-02 13:09:29 +0200
committercodeworkx <daniel.hillenbrand@codeworkx.de>2012-06-02 13:09:29 +0200
commitc6da2cfeb05178a11c6d062a06f8078150ee492f (patch)
treef3b4021d252c52d6463a9b3c1bb7245e399b009c /kernel/pm_qos_params.c
parentc6d7c4dbff353eac7919342ae6b3299a378160a6 (diff)
downloadkernel_samsung_smdk4412-c6da2cfeb05178a11c6d062a06f8078150ee492f.zip
kernel_samsung_smdk4412-c6da2cfeb05178a11c6d062a06f8078150ee492f.tar.gz
kernel_samsung_smdk4412-c6da2cfeb05178a11c6d062a06f8078150ee492f.tar.bz2
samsung update 1
Diffstat (limited to 'kernel/pm_qos_params.c')
-rw-r--r--kernel/pm_qos_params.c65
1 files changed, 61 insertions, 4 deletions
diff --git a/kernel/pm_qos_params.c b/kernel/pm_qos_params.c
index 6824ca7..b61f2fd 100644
--- a/kernel/pm_qos_params.c
+++ b/kernel/pm_qos_params.c
@@ -74,7 +74,7 @@ static DEFINE_SPINLOCK(pm_qos_lock);
static struct pm_qos_object null_pm_qos;
static BLOCKING_NOTIFIER_HEAD(cpu_dma_lat_notifier);
static struct pm_qos_object cpu_dma_pm_qos = {
- .requests = PLIST_HEAD_INIT(cpu_dma_pm_qos.requests, pm_qos_lock),
+ .requests = PLIST_HEAD_INIT(cpu_dma_pm_qos.requests),
.notifiers = &cpu_dma_lat_notifier,
.name = "cpu_dma_latency",
.target_value = PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE,
@@ -84,7 +84,7 @@ static struct pm_qos_object cpu_dma_pm_qos = {
static BLOCKING_NOTIFIER_HEAD(network_lat_notifier);
static struct pm_qos_object network_lat_pm_qos = {
- .requests = PLIST_HEAD_INIT(network_lat_pm_qos.requests, pm_qos_lock),
+ .requests = PLIST_HEAD_INIT(network_lat_pm_qos.requests),
.notifiers = &network_lat_notifier,
.name = "network_latency",
.target_value = PM_QOS_NETWORK_LAT_DEFAULT_VALUE,
@@ -95,7 +95,7 @@ static struct pm_qos_object network_lat_pm_qos = {
static BLOCKING_NOTIFIER_HEAD(network_throughput_notifier);
static struct pm_qos_object network_throughput_pm_qos = {
- .requests = PLIST_HEAD_INIT(network_throughput_pm_qos.requests, pm_qos_lock),
+ .requests = PLIST_HEAD_INIT(network_throughput_pm_qos.requests),
.notifiers = &network_throughput_notifier,
.name = "network_throughput",
.target_value = PM_QOS_NETWORK_THROUGHPUT_DEFAULT_VALUE,
@@ -103,12 +103,55 @@ static struct pm_qos_object network_throughput_pm_qos = {
.type = PM_QOS_MAX,
};
+static BLOCKING_NOTIFIER_HEAD(bus_dma_throughput_notifier);
+static struct pm_qos_object bus_dma_throughput_pm_qos = {
+ .requests = PLIST_HEAD_INIT(bus_dma_throughput_pm_qos.requests),
+ .notifiers = &bus_dma_throughput_notifier,
+ .name = "bus_dma_throughput",
+ .target_value = PM_QOS_BUS_DMA_THROUGHPUT_DEFAULT_VALUE,
+ .default_value = PM_QOS_BUS_DMA_THROUGHPUT_DEFAULT_VALUE,
+ .type = PM_QOS_MAX,
+};
+
+static BLOCKING_NOTIFIER_HEAD(display_frequency_notifier);
+static struct pm_qos_object display_frequency_pm_qos = {
+ .requests = PLIST_HEAD_INIT(display_frequency_pm_qos.requests),
+ .notifiers = &display_frequency_notifier,
+ .name = "display_frequency",
+ .target_value = PM_QOS_DISPLAY_FREQUENCY_DEFAULT_VALUE,
+ .default_value = PM_QOS_DISPLAY_FREQUENCY_DEFAULT_VALUE,
+ .type = PM_QOS_MAX,
+};
+
+static BLOCKING_NOTIFIER_HEAD(bus_qos_notifier);
+static struct pm_qos_object bus_qos_pm_qos = {
+ .requests = PLIST_HEAD_INIT(bus_qos_pm_qos.requests),
+ .notifiers = &bus_qos_notifier,
+ .name = "bus_qos",
+ .target_value = 0,
+ .default_value = 0,
+ .type = PM_QOS_MAX,
+};
+
+static BLOCKING_NOTIFIER_HEAD(dvfs_res_lat_notifier);
+static struct pm_qos_object dvfs_res_lat_pm_qos = {
+ .requests = PLIST_HEAD_INIT(dvfs_res_lat_pm_qos.requests),
+ .notifiers = &dvfs_res_lat_notifier,
+ .name = "dvfs_response_latency",
+ .target_value = PM_QOS_DVFS_RESPONSE_LAT_DEFAULT_VALUE,
+ .default_value = PM_QOS_DVFS_RESPONSE_LAT_DEFAULT_VALUE,
+ .type = PM_QOS_MIN
+};
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_dma_throughput_pm_qos,
+ &display_frequency_pm_qos,
+ &bus_qos_pm_qos,
+ &dvfs_res_lat_pm_qos,
};
static ssize_t pm_qos_power_write(struct file *filp, const char __user *buf,
@@ -474,6 +517,20 @@ static int __init pm_qos_power_init(void)
if (ret < 0)
printk(KERN_ERR
"pm_qos_param: network_throughput setup failed\n");
+ ret = register_pm_qos_misc(&bus_dma_throughput_pm_qos);
+ if (ret < 0)
+ printk(KERN_ERR
+ "pm_qos_param: bus_dma_throughput setup failed\n");
+
+ ret = register_pm_qos_misc(&display_frequency_pm_qos);
+ if (ret < 0)
+ printk(KERN_ERR
+ "pm_qos_param: display_frequency setup failed\n");
+
+ ret = register_pm_qos_misc(&dvfs_res_lat_pm_qos);
+ if (ret < 0)
+ printk(KERN_ERR
+ "pm_qos_param: dvfs_response_frequency setup failed\n");
return ret;
}