msm: kgsl: Use the first command to initiate busy
There may be multiple command submissions per-frame. Start your
busy count only on the first one.
Signed-off-by: Lucille Sylvester <lsylvest@codeaurora.org>
diff --git a/drivers/gpu/msm/kgsl_pwrscale.c b/drivers/gpu/msm/kgsl_pwrscale.c
index 0d3120f..37e5d2d 100644
--- a/drivers/gpu/msm/kgsl_pwrscale.c
+++ b/drivers/gpu/msm/kgsl_pwrscale.c
@@ -221,13 +221,21 @@
void kgsl_pwrscale_busy(struct kgsl_device *device)
{
if (device->pwrscale.policy && device->pwrscale.policy->busy)
- device->pwrscale.policy->busy(device, &device->pwrscale);
+ if (!device->pwrscale.gpu_busy) {
+ device->pwrscale.policy->busy(device,
+ &device->pwrscale);
+ device->pwrscale.gpu_busy = 1;
+ }
}
void kgsl_pwrscale_idle(struct kgsl_device *device)
{
if (device->pwrscale.policy && device->pwrscale.policy->idle)
- device->pwrscale.policy->idle(device, &device->pwrscale);
+ if (device->pwrscale.gpu_busy) {
+ device->pwrscale.policy->idle(device,
+ &device->pwrscale);
+ device->pwrscale.gpu_busy = 0;
+ }
}
EXPORT_SYMBOL(kgsl_pwrscale_idle);
diff --git a/drivers/gpu/msm/kgsl_pwrscale.h b/drivers/gpu/msm/kgsl_pwrscale.h
index 6904608..2046f78 100644
--- a/drivers/gpu/msm/kgsl_pwrscale.h
+++ b/drivers/gpu/msm/kgsl_pwrscale.h
@@ -36,6 +36,7 @@
struct kgsl_pwrscale_policy *policy;
struct kobject kobj;
void *priv;
+ int gpu_busy;
};
struct kgsl_pwrscale_policy_attribute {