msm: kgsl: Remove wakelock and pm_qos requirements
System wake latencies have improved to the point that we can allow
power collapse during graphics processing.
Change-Id: I41dd04c82894347518450b0c8e6ee5fae01f859c
Signed-off-by: Lucille Sylvester <lsylvest@codeaurora.org>
diff --git a/drivers/gpu/msm/kgsl.c b/drivers/gpu/msm/kgsl.c
index e84d473..a0a4056 100644
--- a/drivers/gpu/msm/kgsl.c
+++ b/drivers/gpu/msm/kgsl.c
@@ -24,6 +24,7 @@
#include <linux/ashmem.h>
#include <linux/major.h>
#include <linux/ion.h>
+#include <mach/socinfo.h>
#include "kgsl.h"
#include "kgsl_debugfs.h"
@@ -1939,8 +1940,8 @@
kgsl_cffdump_close(device->id);
kgsl_pwrctrl_uninit_sysfs(device);
- wake_lock_destroy(&device->idle_wakelock);
- pm_qos_remove_request(&device->pm_qos_req_dma);
+ if (cpu_is_msm8x60())
+ wake_lock_destroy(&device->idle_wakelock);
idr_destroy(&device->context_idr);
@@ -2031,9 +2032,9 @@
if (ret != 0)
goto err_close_mmu;
- 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);
+ if (cpu_is_msm8x60())
+ wake_lock_init(&device->idle_wakelock,
+ WAKE_LOCK_IDLE, device->name);
idr_init(&device->context_idr);
diff --git a/drivers/gpu/msm/kgsl_device.h b/drivers/gpu/msm/kgsl_device.h
index 6ae9258..fd203ef 100644
--- a/drivers/gpu/msm/kgsl_device.h
+++ b/drivers/gpu/msm/kgsl_device.h
@@ -15,7 +15,6 @@
#include <linux/idr.h>
#include <linux/wakelock.h>
-#include <linux/pm_qos_params.h>
#include <linux/earlysuspend.h>
#include "kgsl.h"
@@ -165,7 +164,6 @@
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;
};
diff --git a/drivers/gpu/msm/kgsl_pwrctrl.c b/drivers/gpu/msm/kgsl_pwrctrl.c
index c5f5c7b..7034fd8 100644
--- a/drivers/gpu/msm/kgsl_pwrctrl.c
+++ b/drivers/gpu/msm/kgsl_pwrctrl.c
@@ -13,6 +13,7 @@
#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"
@@ -23,7 +24,6 @@
#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
@@ -731,9 +731,8 @@
device->state = device->requested_state;
device->requested_state = KGSL_STATE_NONE;
- wake_unlock(&device->idle_wakelock);
- pm_qos_update_request(&device->pm_qos_req_dma,
- PM_QOS_DEFAULT_VALUE);
+ if (device->idle_wakelock.name)
+ wake_unlock(&device->idle_wakelock);
KGSL_PWR_WARN(device, "state -> NAP/SLEEP(%d), device %d\n",
device->state, device->id);
@@ -786,8 +785,9 @@
mod_timer(&device->idle_timer,
jiffies + device->pwrctrl.interval_timeout);
- wake_lock(&device->idle_wakelock);
- pm_qos_update_request(&device->pm_qos_req_dma, GPU_SWFI_LATENCY);
+ if (device->idle_wakelock.name)
+ wake_lock(&device->idle_wakelock);
+
KGSL_PWR_INFO(device, "wake return for device %d\n", device->id);
}
EXPORT_SYMBOL(kgsl_pwrctrl_wake);