Commit 327adaed authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

PM / QoS: Add no_constraints_value field to struct pm_qos_constraints

Add a new field, no_constraints_value, to struct pm_qos_constraints
representing a list of PM QoS constraint requests to be returned by
pm_qos_get_value() when that list of requests is empty.

That field will be equal to default_value for all of the existing
global PM QoS classes and for the resume latency device PM QoS type,
but it will be different from default_value for the new latency
tolerance device PM QoS type introduced by the next changeset.
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent b02f6695
...@@ -190,6 +190,7 @@ static int dev_pm_qos_constraints_allocate(struct device *dev) ...@@ -190,6 +190,7 @@ static int dev_pm_qos_constraints_allocate(struct device *dev)
plist_head_init(&c->list); plist_head_init(&c->list);
c->target_value = PM_QOS_RESUME_LATENCY_DEFAULT_VALUE; c->target_value = PM_QOS_RESUME_LATENCY_DEFAULT_VALUE;
c->default_value = PM_QOS_RESUME_LATENCY_DEFAULT_VALUE; c->default_value = PM_QOS_RESUME_LATENCY_DEFAULT_VALUE;
c->no_constraint_value = PM_QOS_RESUME_LATENCY_DEFAULT_VALUE;
c->type = PM_QOS_MIN; c->type = PM_QOS_MIN;
c->notifiers = n; c->notifiers = n;
......
...@@ -77,6 +77,7 @@ struct pm_qos_constraints { ...@@ -77,6 +77,7 @@ struct pm_qos_constraints {
struct plist_head list; struct plist_head list;
s32 target_value; /* Do not change to 64 bit */ s32 target_value; /* Do not change to 64 bit */
s32 default_value; s32 default_value;
s32 no_constraint_value;
enum pm_qos_type type; enum pm_qos_type type;
struct blocking_notifier_head *notifiers; struct blocking_notifier_head *notifiers;
}; };
......
...@@ -66,6 +66,7 @@ static struct pm_qos_constraints cpu_dma_constraints = { ...@@ -66,6 +66,7 @@ static struct pm_qos_constraints cpu_dma_constraints = {
.list = PLIST_HEAD_INIT(cpu_dma_constraints.list), .list = PLIST_HEAD_INIT(cpu_dma_constraints.list),
.target_value = PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE, .target_value = PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE,
.default_value = PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE, .default_value = PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE,
.no_constraint_value = PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE,
.type = PM_QOS_MIN, .type = PM_QOS_MIN,
.notifiers = &cpu_dma_lat_notifier, .notifiers = &cpu_dma_lat_notifier,
}; };
...@@ -79,6 +80,7 @@ static struct pm_qos_constraints network_lat_constraints = { ...@@ -79,6 +80,7 @@ static struct pm_qos_constraints network_lat_constraints = {
.list = PLIST_HEAD_INIT(network_lat_constraints.list), .list = PLIST_HEAD_INIT(network_lat_constraints.list),
.target_value = PM_QOS_NETWORK_LAT_DEFAULT_VALUE, .target_value = PM_QOS_NETWORK_LAT_DEFAULT_VALUE,
.default_value = PM_QOS_NETWORK_LAT_DEFAULT_VALUE, .default_value = PM_QOS_NETWORK_LAT_DEFAULT_VALUE,
.no_constraint_value = PM_QOS_NETWORK_LAT_DEFAULT_VALUE,
.type = PM_QOS_MIN, .type = PM_QOS_MIN,
.notifiers = &network_lat_notifier, .notifiers = &network_lat_notifier,
}; };
...@@ -93,6 +95,7 @@ static struct pm_qos_constraints network_tput_constraints = { ...@@ -93,6 +95,7 @@ static struct pm_qos_constraints network_tput_constraints = {
.list = PLIST_HEAD_INIT(network_tput_constraints.list), .list = PLIST_HEAD_INIT(network_tput_constraints.list),
.target_value = PM_QOS_NETWORK_THROUGHPUT_DEFAULT_VALUE, .target_value = PM_QOS_NETWORK_THROUGHPUT_DEFAULT_VALUE,
.default_value = PM_QOS_NETWORK_THROUGHPUT_DEFAULT_VALUE, .default_value = PM_QOS_NETWORK_THROUGHPUT_DEFAULT_VALUE,
.no_constraint_value = PM_QOS_NETWORK_THROUGHPUT_DEFAULT_VALUE,
.type = PM_QOS_MAX, .type = PM_QOS_MAX,
.notifiers = &network_throughput_notifier, .notifiers = &network_throughput_notifier,
}; };
...@@ -128,7 +131,7 @@ static const struct file_operations pm_qos_power_fops = { ...@@ -128,7 +131,7 @@ static const struct file_operations pm_qos_power_fops = {
static inline int pm_qos_get_value(struct pm_qos_constraints *c) static inline int pm_qos_get_value(struct pm_qos_constraints *c)
{ {
if (plist_head_empty(&c->list)) if (plist_head_empty(&c->list))
return c->default_value; return c->no_constraint_value;
switch (c->type) { switch (c->type) {
case PM_QOS_MIN: case PM_QOS_MIN:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment