diff options
author | Lucas Stach <l.stach@pengutronix.de> | 2016-08-17 09:27:52 -0400 |
---|---|---|
committer | Lucas Stach <l.stach@pengutronix.de> | 2016-09-15 09:29:39 -0400 |
commit | 229855b650bd0716a3d9e82a68ebedee20a35020 (patch) | |
tree | 84797c3680569967f2b39c3d94df21d3f284ff65 | |
parent | b88163e36c0256e182447eecffba5f4b2a3f413e (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.c | 15 | ||||
-rw-r--r-- | drivers/gpu/drm/etnaviv/etnaviv_gpu.h | 1 |
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 | ||
529 | void 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 | |||
529 | static void etnaviv_gpu_hw_init(struct etnaviv_gpu *gpu) | 537 | static 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 | ||
583 | int etnaviv_gpu_init(struct etnaviv_gpu *gpu) | 588 | int 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); | |||
215 | int etnaviv_gpu_pm_get_sync(struct etnaviv_gpu *gpu); | 215 | int etnaviv_gpu_pm_get_sync(struct etnaviv_gpu *gpu); |
216 | void etnaviv_gpu_pm_put(struct etnaviv_gpu *gpu); | 216 | void etnaviv_gpu_pm_put(struct etnaviv_gpu *gpu); |
217 | int etnaviv_gpu_wait_idle(struct etnaviv_gpu *gpu, unsigned int timeout_ms); | 217 | int etnaviv_gpu_wait_idle(struct etnaviv_gpu *gpu, unsigned int timeout_ms); |
218 | void etnaviv_gpu_start_fe(struct etnaviv_gpu *gpu, u32 address, u16 prefetch); | ||
218 | 219 | ||
219 | extern struct platform_driver etnaviv_gpu_driver; | 220 | extern struct platform_driver etnaviv_gpu_driver; |
220 | 221 | ||