summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/devicetree/bindings/gpu/adreno.txt3
-rw-r--r--drivers/gpu/msm/adreno.c5
-rw-r--r--drivers/gpu/msm/kgsl_pwrctrl.c10
-rw-r--r--drivers/gpu/msm/kgsl_pwrctrl.h2
4 files changed, 11 insertions, 9 deletions
diff --git a/Documentation/devicetree/bindings/gpu/adreno.txt b/Documentation/devicetree/bindings/gpu/adreno.txt
index d09b8b29ebc6..e55e64eea1ea 100644
--- a/Documentation/devicetree/bindings/gpu/adreno.txt
+++ b/Documentation/devicetree/bindings/gpu/adreno.txt
@@ -107,6 +107,9 @@ Optional Properties:
- qcom,pm-qos-wakeup-latency:
Similar to the above. Driver votes against deep low
power modes right before GPU wakes up from sleep.
+- qcom,l2pc-cpu-mask-latency:
+ The CPU mask latency in microseconds to avoid L2PC
+ on masked CPUs.
- qcom,force-32bit:
Force the GPU to use 32 bit data sizes even if
it is capable of doing 64 bit.
diff --git a/drivers/gpu/msm/adreno.c b/drivers/gpu/msm/adreno.c
index 9c56d8c9c180..79e95ebb8363 100644
--- a/drivers/gpu/msm/adreno.c
+++ b/drivers/gpu/msm/adreno.c
@@ -833,6 +833,11 @@ static int adreno_of_get_power(struct adreno_device *adreno_dev,
&device->pwrctrl.pm_qos_active_latency))
device->pwrctrl.pm_qos_active_latency = 501;
+ /* get pm-qos-cpu-mask-latency, set it to default if not found */
+ if (of_property_read_u32(node, "qcom,l2pc-cpu-mask-latency",
+ &device->pwrctrl.pm_qos_cpu_mask_latency))
+ device->pwrctrl.pm_qos_cpu_mask_latency = 501;
+
/* get pm-qos-wakeup-latency, set it to default if not found */
if (of_property_read_u32(node, "qcom,pm-qos-wakeup-latency",
&device->pwrctrl.pm_qos_wakeup_latency))
diff --git a/drivers/gpu/msm/kgsl_pwrctrl.c b/drivers/gpu/msm/kgsl_pwrctrl.c
index 0d61c02ce2f1..d58645764c55 100644
--- a/drivers/gpu/msm/kgsl_pwrctrl.c
+++ b/drivers/gpu/msm/kgsl_pwrctrl.c
@@ -498,7 +498,7 @@ void kgsl_pwrctrl_update_l2pc(struct kgsl_device *device)
if ((1 << cpu) & device->pwrctrl.l2pc_cpus_mask) {
pm_qos_update_request_timeout(
&device->pwrctrl.l2pc_cpus_qos,
- device->pwrctrl.pm_qos_active_latency,
+ device->pwrctrl.pm_qos_cpu_mask_latency,
KGSL_L2PC_CPU_TIMEOUT);
}
}
@@ -1791,14 +1791,6 @@ int kgsl_pwrctrl_init(struct kgsl_device *device)
pwr->power_flags = 0;
- if (kgsl_property_read_u32(device, "qcom,pm-qos-active-latency",
- &pwr->pm_qos_active_latency))
- pwr->pm_qos_active_latency = 501;
-
- if (kgsl_property_read_u32(device, "qcom,pm-qos-wakeup-latency",
- &pwr->pm_qos_wakeup_latency))
- pwr->pm_qos_wakeup_latency = 101;
-
kgsl_property_read_u32(device, "qcom,l2pc-cpu-mask",
&pwr->l2pc_cpus_mask);
diff --git a/drivers/gpu/msm/kgsl_pwrctrl.h b/drivers/gpu/msm/kgsl_pwrctrl.h
index f00136877a58..13f0afb4f52c 100644
--- a/drivers/gpu/msm/kgsl_pwrctrl.h
+++ b/drivers/gpu/msm/kgsl_pwrctrl.h
@@ -132,6 +132,7 @@ struct kgsl_regulator {
* @l2pc_cpus_qos - qos structure to avoid L2PC on CPUs
* @pm_qos_req_dma - the power management quality of service structure
* @pm_qos_active_latency - allowed CPU latency in microseconds when active
+ * @pm_qos_cpu_mask_latency - allowed CPU mask latency in microseconds
* @pm_qos_wakeup_latency - allowed CPU latency in microseconds during wakeup
* @bus_control - true if the bus calculation is independent
* @bus_mod - modifier from the current power level for the bus vote
@@ -183,6 +184,7 @@ struct kgsl_pwrctrl {
struct pm_qos_request l2pc_cpus_qos;
struct pm_qos_request pm_qos_req_dma;
unsigned int pm_qos_active_latency;
+ unsigned int pm_qos_cpu_mask_latency;
unsigned int pm_qos_wakeup_latency;
bool bus_control;
int bus_mod;