drm/etnaviv: need to disable clock gating when doing profiling
As done by Vivante kernel driver. Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> Reviewed-by: Lucas Stach <l.stach@pengutronix.de> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
This commit is contained in:
parent
49168ee91d
commit
2c8b0c5a99
|
@ -1346,6 +1346,13 @@ static void sync_point_perfmon_sample(struct etnaviv_gpu *gpu,
|
||||||
static void sync_point_perfmon_sample_pre(struct etnaviv_gpu *gpu,
|
static void sync_point_perfmon_sample_pre(struct etnaviv_gpu *gpu,
|
||||||
struct etnaviv_event *event)
|
struct etnaviv_event *event)
|
||||||
{
|
{
|
||||||
|
u32 val;
|
||||||
|
|
||||||
|
/* disable clock gating */
|
||||||
|
val = gpu_read(gpu, VIVS_PM_POWER_CONTROLS);
|
||||||
|
val &= ~VIVS_PM_POWER_CONTROLS_ENABLE_MODULE_CLOCK_GATING;
|
||||||
|
gpu_write(gpu, VIVS_PM_POWER_CONTROLS, val);
|
||||||
|
|
||||||
sync_point_perfmon_sample(gpu, event, ETNA_PM_PROCESS_PRE);
|
sync_point_perfmon_sample(gpu, event, ETNA_PM_PROCESS_PRE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1354,6 +1361,7 @@ static void sync_point_perfmon_sample_post(struct etnaviv_gpu *gpu,
|
||||||
{
|
{
|
||||||
const struct etnaviv_cmdbuf *cmdbuf = event->cmdbuf;
|
const struct etnaviv_cmdbuf *cmdbuf = event->cmdbuf;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
u32 val;
|
||||||
|
|
||||||
sync_point_perfmon_sample(gpu, event, ETNA_PM_PROCESS_POST);
|
sync_point_perfmon_sample(gpu, event, ETNA_PM_PROCESS_POST);
|
||||||
|
|
||||||
|
@ -1362,6 +1370,11 @@ static void sync_point_perfmon_sample_post(struct etnaviv_gpu *gpu,
|
||||||
|
|
||||||
*pmr->bo_vma = pmr->sequence;
|
*pmr->bo_vma = pmr->sequence;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* enable clock gating */
|
||||||
|
val = gpu_read(gpu, VIVS_PM_POWER_CONTROLS);
|
||||||
|
val |= VIVS_PM_POWER_CONTROLS_ENABLE_MODULE_CLOCK_GATING;
|
||||||
|
gpu_write(gpu, VIVS_PM_POWER_CONTROLS, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue