diff options
-rw-r--r-- | Documentation/devicetree/bindings/gpu/adreno.txt | 3 | ||||
-rw-r--r-- | drivers/gpu/msm/adreno.c | 5 | ||||
-rw-r--r-- | drivers/gpu/msm/kgsl_pwrctrl.c | 10 | ||||
-rw-r--r-- | drivers/gpu/msm/kgsl_pwrctrl.h | 2 |
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; |