Loading drivers/gpu/msm/adreno_a6xx_gmu.c +30 −8 Original line number Diff line number Diff line Loading @@ -457,15 +457,8 @@ static int a6xx_gmu_device_start(struct adreno_device *adreno_dev) if (timed_poll_check(device, A6XX_GMU_CM3_FW_INIT_RESULT, val, GMU_START_TIMEOUT, mask)) { u32 val; /* * The breadcrumb is written to a gmu virtual mapping * which points to dtcm byte offset 0x3fdc. */ gmu_core_regread(device, A6XX_GMU_CM3_DTCM_START + (0x3fdc >> 2), &val); dev_err(&gmu->pdev->dev, "GMU doesn't boot: 0x%x\n", val); dev_err(&gmu->pdev->dev, "GMU doesn't boot\n"); gmu_fault_snapshot(device); return -ETIMEDOUT; } Loading Loading @@ -2145,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) { Loading Loading @@ -2209,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: Loading @@ -2234,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; Loading Loading @@ -2282,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: Loading Loading @@ -2928,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; Loading @@ -2944,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; } Loading Loading @@ -2977,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; Loading Loading @@ -3014,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; } Loading @@ -3040,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); Loading Loading @@ -3086,6 +3098,8 @@ static int a6xx_power_off(struct adreno_device *adreno_dev) kgsl_pwrscale_sleep(device); trace_kgsl_pwr_set_state(device, KGSL_STATE_SLUMBER); return ret; } Loading Loading @@ -3177,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); Loading @@ -3199,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); Loading Loading @@ -3239,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; Loading @@ -3252,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 Loading drivers/gpu/msm/adreno_a6xx_rgmu.c +24 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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: Loading Loading @@ -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; Loading @@ -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; } Loading @@ -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; Loading @@ -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 Loading Loading @@ -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; Loading @@ -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; } Loading Loading @@ -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); Loading Loading @@ -1065,6 +1083,8 @@ static int a6xx_power_off(struct adreno_device *adreno_dev) kgsl_pwrscale_sleep(device); trace_kgsl_pwr_set_state(device, KGSL_STATE_SLUMBER); return ret; } Loading Loading @@ -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); Loading @@ -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); Loading drivers/gpu/msm/adreno_perfcounter.c +1 −1 Original line number Diff line number Diff line Loading @@ -753,7 +753,7 @@ static int _perfcounter_enable_default(struct adreno_device *adreno_dev, reg = &(grp->regs[counter]); if (_perfcounter_inline_update(adreno_dev, group) && test_bit(ADRENO_DEVICE_STARTED, &adreno_dev->priv)) { (device->state == KGSL_STATE_ACTIVE)) { struct adreno_ringbuffer *rb = &adreno_dev->ringbuffers[0]; unsigned int buf[4]; unsigned int *cmds = buf; Loading Loading
drivers/gpu/msm/adreno_a6xx_gmu.c +30 −8 Original line number Diff line number Diff line Loading @@ -457,15 +457,8 @@ static int a6xx_gmu_device_start(struct adreno_device *adreno_dev) if (timed_poll_check(device, A6XX_GMU_CM3_FW_INIT_RESULT, val, GMU_START_TIMEOUT, mask)) { u32 val; /* * The breadcrumb is written to a gmu virtual mapping * which points to dtcm byte offset 0x3fdc. */ gmu_core_regread(device, A6XX_GMU_CM3_DTCM_START + (0x3fdc >> 2), &val); dev_err(&gmu->pdev->dev, "GMU doesn't boot: 0x%x\n", val); dev_err(&gmu->pdev->dev, "GMU doesn't boot\n"); gmu_fault_snapshot(device); return -ETIMEDOUT; } Loading Loading @@ -2145,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) { Loading Loading @@ -2209,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: Loading @@ -2234,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; Loading Loading @@ -2282,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: Loading Loading @@ -2928,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; Loading @@ -2944,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; } Loading Loading @@ -2977,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; Loading Loading @@ -3014,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; } Loading @@ -3040,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); Loading Loading @@ -3086,6 +3098,8 @@ static int a6xx_power_off(struct adreno_device *adreno_dev) kgsl_pwrscale_sleep(device); trace_kgsl_pwr_set_state(device, KGSL_STATE_SLUMBER); return ret; } Loading Loading @@ -3177,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); Loading @@ -3199,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); Loading Loading @@ -3239,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; Loading @@ -3252,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 Loading
drivers/gpu/msm/adreno_a6xx_rgmu.c +24 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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: Loading Loading @@ -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; Loading @@ -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; } Loading @@ -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; Loading @@ -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 Loading Loading @@ -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; Loading @@ -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; } Loading Loading @@ -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); Loading Loading @@ -1065,6 +1083,8 @@ static int a6xx_power_off(struct adreno_device *adreno_dev) kgsl_pwrscale_sleep(device); trace_kgsl_pwr_set_state(device, KGSL_STATE_SLUMBER); return ret; } Loading Loading @@ -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); Loading @@ -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); Loading
drivers/gpu/msm/adreno_perfcounter.c +1 −1 Original line number Diff line number Diff line Loading @@ -753,7 +753,7 @@ static int _perfcounter_enable_default(struct adreno_device *adreno_dev, reg = &(grp->regs[counter]); if (_perfcounter_inline_update(adreno_dev, group) && test_bit(ADRENO_DEVICE_STARTED, &adreno_dev->priv)) { (device->state == KGSL_STATE_ACTIVE)) { struct adreno_ringbuffer *rb = &adreno_dev->ringbuffers[0]; unsigned int buf[4]; unsigned int *cmds = buf; Loading