Revert "msm: kgsl: Remove wakelock and pm_qos requirements"
This reverts commit ef44e7338f1c021909133f481348a641d84652ee.
Conflicts:
drivers/gpu/msm/kgsl_pwrctrl.c
Change-Id: Ic67995af9e32006ffbe031367df8341f2caedf99
CRs-Fixed: 333977
Signed-off-by: Lucille Sylvester <lsylvest@codeaurora.org>
diff --git a/drivers/gpu/msm/kgsl.c b/drivers/gpu/msm/kgsl.c
index b7356ac..805e0c1 100644
--- a/drivers/gpu/msm/kgsl.c
+++ b/drivers/gpu/msm/kgsl.c
@@ -25,7 +25,6 @@
#include <linux/ashmem.h>
#include <linux/major.h>
#include <linux/ion.h>
-#include <mach/socinfo.h>
#include "kgsl.h"
#include "kgsl_debugfs.h"
@@ -2147,8 +2146,8 @@
kgsl_cffdump_close(device->id);
kgsl_pwrctrl_uninit_sysfs(device);
- if (cpu_is_msm8x60())
- wake_lock_destroy(&device->idle_wakelock);
+ wake_lock_destroy(&device->idle_wakelock);
+ pm_qos_remove_request(&device->pm_qos_req_dma);
idr_destroy(&device->context_idr);
@@ -2239,9 +2238,9 @@
if (ret != 0)
goto err_close_mmu;
- if (cpu_is_msm8x60())
- wake_lock_init(&device->idle_wakelock,
- WAKE_LOCK_IDLE, device->name);
+ wake_lock_init(&device->idle_wakelock, WAKE_LOCK_IDLE, device->name);
+ pm_qos_add_request(&device->pm_qos_req_dma, PM_QOS_CPU_DMA_LATENCY,
+ PM_QOS_DEFAULT_VALUE);
idr_init(&device->context_idr);
diff --git a/drivers/gpu/msm/kgsl_device.h b/drivers/gpu/msm/kgsl_device.h
index 06432f9..d7a25a1 100644
--- a/drivers/gpu/msm/kgsl_device.h
+++ b/drivers/gpu/msm/kgsl_device.h
@@ -15,6 +15,7 @@
#include <linux/idr.h>
#include <linux/wakelock.h>
+#include <linux/pm_qos_params.h>
#include <linux/earlysuspend.h>
#include "kgsl.h"
@@ -184,6 +185,7 @@
struct wake_lock idle_wakelock;
struct kgsl_pwrscale pwrscale;
struct kobject pwrscale_kobj;
+ struct pm_qos_request_list pm_qos_req_dma;
struct work_struct ts_expired_ws;
struct list_head events;
s64 on_time;
diff --git a/drivers/gpu/msm/kgsl_pwrctrl.c b/drivers/gpu/msm/kgsl_pwrctrl.c
index b671f86..ea67835 100644
--- a/drivers/gpu/msm/kgsl_pwrctrl.c
+++ b/drivers/gpu/msm/kgsl_pwrctrl.c
@@ -13,7 +13,6 @@
#include <linux/interrupt.h>
#include <mach/msm_iomap.h>
#include <mach/msm_bus.h>
-#include <mach/socinfo.h>
#include "kgsl.h"
#include "kgsl_pwrscale.h"
@@ -25,6 +24,7 @@
#define KGSL_PWRFLAGS_AXI_ON 2
#define KGSL_PWRFLAGS_IRQ_ON 3
+#define GPU_SWFI_LATENCY 3
#define UPDATE_BUSY_VAL 1000000
#define UPDATE_BUSY 50
@@ -743,8 +743,9 @@
_sleep_accounting(device);
kgsl_pwrctrl_clk(device, KGSL_PWRFLAGS_OFF);
kgsl_pwrctrl_set_state(device, KGSL_STATE_SLEEP);
- if (device->idle_wakelock.name)
- wake_unlock(&device->idle_wakelock);
+ wake_unlock(&device->idle_wakelock);
+ pm_qos_update_request(&device->pm_qos_req_dma,
+ PM_QOS_DEFAULT_VALUE);
break;
case KGSL_STATE_SLEEP:
case KGSL_STATE_SLUMBER:
@@ -847,9 +848,9 @@
/* Re-enable HW access */
mod_timer(&device->idle_timer,
jiffies + device->pwrctrl.interval_timeout);
-
- if (device->idle_wakelock.name)
- wake_lock(&device->idle_wakelock);
+ wake_lock(&device->idle_wakelock);
+ pm_qos_update_request(&device->pm_qos_req_dma,
+ GPU_SWFI_LATENCY);
case KGSL_STATE_ACTIVE:
break;
default: