msm: kgsl: Add idle_stats based pwrscale policy
Add a pwrscale policy to transmit idle statistics
to userspace via the MSM idle_stats_device core.
Signed-off-by: Lucille Sylvester <lsylvest@codeaurora.org>
diff --git a/drivers/gpu/msm/z180.c b/drivers/gpu/msm/z180.c
index 27004af..a8aff37 100644
--- a/drivers/gpu/msm/z180.c
+++ b/drivers/gpu/msm/z180.c
@@ -522,6 +522,8 @@
if (status)
goto error_close_ringbuffer;
+ kgsl_pwrscale_init(device);
+
return status;
error_close_ringbuffer:
@@ -537,6 +539,7 @@
device = (struct kgsl_device *)pdev->id_entry->driver_data;
+ kgsl_pwrscale_close(device);
kgsl_device_platform_remove(device);
z180_ringbuffer_close(device);
@@ -861,8 +864,19 @@
static void z180_power_stats(struct kgsl_device *device,
struct kgsl_power_stats *stats)
{
- stats->total_time = 0;
- stats->busy_time = 0;
+ struct kgsl_pwrctrl *pwr = &device->pwrctrl;
+
+ if (pwr->time == 0) {
+ pwr->time = ktime_to_us(ktime_get());
+ stats->total_time = 0;
+ stats->busy_time = 0;
+ } else {
+ s64 tmp;
+ tmp = ktime_to_us(ktime_get());
+ stats->total_time = tmp - pwr->time;
+ stats->busy_time = tmp - pwr->time;
+ pwr->time = tmp;
+ }
}
static void z180_irqctrl(struct kgsl_device *device, int state)