aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLucas Stach <l.stach@pengutronix.de>2016-08-17 09:27:52 -0400
committerLucas Stach <l.stach@pengutronix.de>2016-09-15 09:29:39 -0400
commit229855b650bd0716a3d9e82a68ebedee20a35020 (patch)
tree84797c3680569967f2b39c3d94df21d3f284ff65
parentb88163e36c0256e182447eecffba5f4b2a3f413e (diff)
drm/etnaviv: split out FE start
Split out into a new externally visible function, as the IOMMUv2 code needs this functionality, too. Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
-rw-r--r--drivers/gpu/drm/etnaviv/etnaviv_gpu.c15
-rw-r--r--drivers/gpu/drm/etnaviv/etnaviv_gpu.h1
2 files changed, 11 insertions, 5 deletions
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
index 74e09dcae75f..fcf4b927dc83 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
@@ -526,6 +526,14 @@ static void etnaviv_gpu_enable_mlcg(struct etnaviv_gpu *gpu)
526 gpu_write(gpu, VIVS_PM_MODULE_CONTROLS, pmc); 526 gpu_write(gpu, VIVS_PM_MODULE_CONTROLS, pmc);
527} 527}
528 528
529void etnaviv_gpu_start_fe(struct etnaviv_gpu *gpu, u32 address, u16 prefetch)
530{
531 gpu_write(gpu, VIVS_FE_COMMAND_ADDRESS, address);
532 gpu_write(gpu, VIVS_FE_COMMAND_CONTROL,
533 VIVS_FE_COMMAND_CONTROL_ENABLE |
534 VIVS_FE_COMMAND_CONTROL_PREFETCH(prefetch));
535}
536
529static void etnaviv_gpu_hw_init(struct etnaviv_gpu *gpu) 537static void etnaviv_gpu_hw_init(struct etnaviv_gpu *gpu)
530{ 538{
531 u16 prefetch; 539 u16 prefetch;
@@ -573,11 +581,8 @@ static void etnaviv_gpu_hw_init(struct etnaviv_gpu *gpu)
573 prefetch = etnaviv_buffer_init(gpu); 581 prefetch = etnaviv_buffer_init(gpu);
574 582
575 gpu_write(gpu, VIVS_HI_INTR_ENBL, ~0U); 583 gpu_write(gpu, VIVS_HI_INTR_ENBL, ~0U);
576 gpu_write(gpu, VIVS_FE_COMMAND_ADDRESS, 584 etnaviv_gpu_start_fe(gpu, etnaviv_iommu_get_cmdbuf_va(gpu, gpu->buffer),
577 etnaviv_iommu_get_cmdbuf_va(gpu, gpu->buffer)); 585 prefetch);
578 gpu_write(gpu, VIVS_FE_COMMAND_CONTROL,
579 VIVS_FE_COMMAND_CONTROL_ENABLE |
580 VIVS_FE_COMMAND_CONTROL_PREFETCH(prefetch));
581} 586}
582 587
583int etnaviv_gpu_init(struct etnaviv_gpu *gpu) 588int etnaviv_gpu_init(struct etnaviv_gpu *gpu)
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.h b/drivers/gpu/drm/etnaviv/etnaviv_gpu.h
index 303450b1f981..7a10a9c32a70 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.h
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.h
@@ -215,6 +215,7 @@ void etnaviv_gpu_cmdbuf_free(struct etnaviv_cmdbuf *cmdbuf);
215int etnaviv_gpu_pm_get_sync(struct etnaviv_gpu *gpu); 215int etnaviv_gpu_pm_get_sync(struct etnaviv_gpu *gpu);
216void etnaviv_gpu_pm_put(struct etnaviv_gpu *gpu); 216void etnaviv_gpu_pm_put(struct etnaviv_gpu *gpu);
217int etnaviv_gpu_wait_idle(struct etnaviv_gpu *gpu, unsigned int timeout_ms); 217int etnaviv_gpu_wait_idle(struct etnaviv_gpu *gpu, unsigned int timeout_ms);
218void etnaviv_gpu_start_fe(struct etnaviv_gpu *gpu, u32 address, u16 prefetch);
218 219
219extern struct platform_driver etnaviv_gpu_driver; 220extern struct platform_driver etnaviv_gpu_driver;
220 221