diff --git a/drivers/gpu/msm/adreno_a6xx_gmu.c b/drivers/gpu/msm/adreno_a6xx_gmu.c index 28e9a7254d2d..e7b2f5124748 100644 --- a/drivers/gpu/msm/adreno_a6xx_gmu.c +++ b/drivers/gpu/msm/adreno_a6xx_gmu.c @@ -2138,6 +2138,8 @@ static int a6xx_gmu_first_boot(struct adreno_device *adreno_dev) struct a6xx_gmu_device *gmu = to_a6xx_gmu(adreno_dev); int level, ret; + trace_kgsl_pwr_request_state(device, KGSL_STATE_AWARE); + ret = a6xx_gmu_aop_send_acd_state(gmu->mailbox.channel, adreno_dev->acd_enabled); if (ret) { @@ -2202,6 +2204,8 @@ static int a6xx_gmu_first_boot(struct adreno_device *adreno_dev) device->gmu_fault = false; + trace_kgsl_pwr_set_state(device, KGSL_STATE_AWARE); + return 0; err: @@ -2227,6 +2231,8 @@ static int a6xx_gmu_boot(struct adreno_device *adreno_dev) struct a6xx_gmu_device *gmu = to_a6xx_gmu(adreno_dev); int ret = 0; + trace_kgsl_pwr_request_state(device, KGSL_STATE_AWARE); + ret = a6xx_gmu_enable_gdsc(adreno_dev); if (ret) return ret; @@ -2275,6 +2281,8 @@ static int a6xx_gmu_boot(struct adreno_device *adreno_dev) device->gmu_fault = false; + trace_kgsl_pwr_set_state(device, KGSL_STATE_AWARE); + return 0; err: @@ -2921,6 +2929,8 @@ static int a6xx_boot(struct adreno_device *adreno_dev) WARN_ON(test_bit(GMU_PRIV_GPU_STARTED, &gmu->flags)); + trace_kgsl_pwr_request_state(device, KGSL_STATE_ACTIVE); + ret = a6xx_gmu_boot(adreno_dev); if (ret) return ret; @@ -2937,6 +2947,8 @@ static int a6xx_boot(struct adreno_device *adreno_dev) set_bit(GMU_PRIV_GPU_STARTED, &gmu->flags); device->state = KGSL_STATE_ACTIVE; + trace_kgsl_pwr_set_state(device, KGSL_STATE_ACTIVE); + return ret; } @@ -2970,6 +2982,8 @@ static int a6xx_first_boot(struct adreno_device *adreno_dev) if (ret) return ret; + trace_kgsl_pwr_request_state(device, KGSL_STATE_ACTIVE); + ret = a6xx_gmu_first_boot(adreno_dev); if (ret) return ret; @@ -3007,6 +3021,9 @@ static int a6xx_first_boot(struct adreno_device *adreno_dev) device->state = KGSL_STATE_ACTIVE; + trace_kgsl_pwr_set_state(device, KGSL_STATE_ACTIVE); + + return 0; } @@ -3033,6 +3050,8 @@ static int a6xx_power_off(struct adreno_device *adreno_dev) WARN_ON(!test_bit(GMU_PRIV_GPU_STARTED, &gmu->flags)); + trace_kgsl_pwr_request_state(device, KGSL_STATE_SLUMBER); + ret = a6xx_gmu_oob_set(device, oob_gpu); if (ret) { a6xx_gmu_oob_clear(device, oob_gpu); @@ -3079,6 +3098,8 @@ no_gx_power: kgsl_pwrscale_sleep(device); + trace_kgsl_pwr_set_state(device, KGSL_STATE_SLUMBER); + return ret; } @@ -3170,6 +3191,8 @@ static int a6xx_gmu_pm_suspend(struct adreno_device *adreno_dev) if (test_bit(GMU_PRIV_PM_SUSPEND, &gmu->flags)) return 0; + trace_kgsl_pwr_request_state(device, KGSL_STATE_SUSPEND); + /* Halt any new submissions */ reinit_completion(&device->halt_gate); @@ -3192,6 +3215,8 @@ static int a6xx_gmu_pm_suspend(struct adreno_device *adreno_dev) adreno_dispatcher_halt(device); + trace_kgsl_pwr_set_state(device, KGSL_STATE_SUSPEND); + return 0; err: adreno_dispatcher_start(device); @@ -3232,6 +3257,8 @@ static void a6xx_gmu_touch_wakeup(struct adreno_device *adreno_dev) if (test_bit(GMU_PRIV_GPU_STARTED, &gmu->flags)) goto done; + trace_kgsl_pwr_request_state(device, KGSL_STATE_ACTIVE); + ret = a6xx_gmu_boot(adreno_dev); if (ret) return; @@ -3245,6 +3272,8 @@ static void a6xx_gmu_touch_wakeup(struct adreno_device *adreno_dev) set_bit(GMU_PRIV_GPU_STARTED, &gmu->flags); device->state = KGSL_STATE_ACTIVE; + trace_kgsl_pwr_set_state(device, KGSL_STATE_ACTIVE); + done: /* * When waking up from a touch event we want to stay active long enough diff --git a/drivers/gpu/msm/adreno_a6xx_rgmu.c b/drivers/gpu/msm/adreno_a6xx_rgmu.c index 0b0846230a2d..2e086d3bd3d0 100644 --- a/drivers/gpu/msm/adreno_a6xx_rgmu.c +++ b/drivers/gpu/msm/adreno_a6xx_rgmu.c @@ -800,6 +800,8 @@ static int a6xx_rgmu_boot(struct adreno_device *adreno_dev) struct kgsl_device *device = KGSL_DEVICE(adreno_dev); int ret; + trace_kgsl_pwr_request_state(device, KGSL_STATE_AWARE); + ret = a6xx_rgmu_enable_gdsc(adreno_dev); if (ret) return ret; @@ -827,6 +829,8 @@ static int a6xx_rgmu_boot(struct adreno_device *adreno_dev) device->gmu_fault = false; + trace_kgsl_pwr_set_state(device, KGSL_STATE_AWARE); + return 0; err: @@ -871,6 +875,8 @@ static int a6xx_boot(struct adreno_device *adreno_dev) if (test_bit(RGMU_PRIV_GPU_STARTED, &rgmu->flags)) return 0; + trace_kgsl_pwr_request_state(device, KGSL_STATE_ACTIVE); + ret = a6xx_rgmu_boot(adreno_dev); if (ret) return ret; @@ -888,6 +894,8 @@ static int a6xx_boot(struct adreno_device *adreno_dev) device->state = KGSL_STATE_ACTIVE; + trace_kgsl_pwr_set_state(device, KGSL_STATE_ACTIVE); + return 0; } @@ -908,6 +916,8 @@ static void a6xx_rgmu_touch_wakeup(struct adreno_device *adreno_dev) if (test_bit(RGMU_PRIV_GPU_STARTED, &rgmu->flags)) goto done; + trace_kgsl_pwr_request_state(device, KGSL_STATE_ACTIVE); + ret = a6xx_rgmu_boot(adreno_dev); if (ret) return; @@ -922,6 +932,8 @@ static void a6xx_rgmu_touch_wakeup(struct adreno_device *adreno_dev) device->state = KGSL_STATE_ACTIVE; + trace_kgsl_pwr_set_state(device, KGSL_STATE_ACTIVE); + done: /* * When waking up from a touch event we want to stay active long enough @@ -963,6 +975,8 @@ static int a6xx_first_boot(struct adreno_device *adreno_dev) if (ret) return ret; + trace_kgsl_pwr_request_state(device, KGSL_STATE_ACTIVE); + ret = a6xx_rgmu_boot(adreno_dev); if (ret) return ret; @@ -986,6 +1000,8 @@ static int a6xx_first_boot(struct adreno_device *adreno_dev) device->state = KGSL_STATE_ACTIVE; + trace_kgsl_pwr_set_state(device, KGSL_STATE_ACTIVE); + return 0; } @@ -1018,6 +1034,8 @@ static int a6xx_power_off(struct adreno_device *adreno_dev) if (!test_bit(RGMU_PRIV_GPU_STARTED, &rgmu->flags)) return 0; + trace_kgsl_pwr_request_state(device, KGSL_STATE_SLUMBER); + ret = a6xx_rgmu_oob_set(device, oob_gpu); if (ret) { a6xx_rgmu_oob_clear(device, oob_gpu); @@ -1065,6 +1083,8 @@ no_gx_power: kgsl_pwrscale_sleep(device); + trace_kgsl_pwr_set_state(device, KGSL_STATE_SLUMBER); + return ret; } @@ -1117,6 +1137,8 @@ static int a6xx_rgmu_pm_suspend(struct adreno_device *adreno_dev) if (test_bit(RGMU_PRIV_PM_SUSPEND, &rgmu->flags)) return 0; + trace_kgsl_pwr_request_state(device, KGSL_STATE_SUSPEND); + /* Halt any new submissions */ reinit_completion(&device->halt_gate); @@ -1138,6 +1160,8 @@ static int a6xx_rgmu_pm_suspend(struct adreno_device *adreno_dev) adreno_dispatcher_halt(device); + trace_kgsl_pwr_set_state(device, KGSL_STATE_SUSPEND); + return 0; err: adreno_dispatcher_start(device);