[PATCH 41/48] staging: etnaviv: change etnaviv_buffer_init() to return prefetch
Lucas Stach
l.stach at pengutronix.de
Fri Sep 25 04:57:53 PDT 2015
From: Christian Gmeiner <christian.gmeiner at gmail.com>
etnaviv_buffer_init() creates a very simple command buffer
to be able to start the FE. FE fetches 'prefetch' number of 64 bit
words via DMA and starts to execute the read buffer.
This is a very simple code cleanup and pushes the whole buffer
logic (alignment, cmd buffer commands, etc.) into etnaviv_buffer.c
Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
---
drivers/staging/etnaviv/etnaviv_buffer.c | 4 ++--
drivers/staging/etnaviv/etnaviv_drv.h | 2 +-
drivers/staging/etnaviv/etnaviv_gpu.c | 9 +++------
3 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/drivers/staging/etnaviv/etnaviv_buffer.c b/drivers/staging/etnaviv/etnaviv_buffer.c
index cbeebfde680a..1994eceae1ae 100644
--- a/drivers/staging/etnaviv/etnaviv_buffer.c
+++ b/drivers/staging/etnaviv/etnaviv_buffer.c
@@ -124,7 +124,7 @@ static void etnaviv_buffer_dump(struct etnaviv_gpu *gpu,
ptr, len * 4, 0);
}
-u32 etnaviv_buffer_init(struct etnaviv_gpu *gpu)
+u16 etnaviv_buffer_init(struct etnaviv_gpu *gpu)
{
struct etnaviv_gem_object *buffer = to_etnaviv_bo(gpu->buffer);
@@ -135,7 +135,7 @@ u32 etnaviv_buffer_init(struct etnaviv_gpu *gpu)
CMD_WAIT(buffer);
CMD_LINK(buffer, 2, gpu_va(gpu, buffer) + ((buffer->offset - 1) * 4));
- return buffer->offset;
+ return buffer->offset / 2;
}
void etnaviv_buffer_end(struct etnaviv_gpu *gpu)
diff --git a/drivers/staging/etnaviv/etnaviv_drv.h b/drivers/staging/etnaviv/etnaviv_drv.h
index b98db8c11ef3..40629207b04f 100644
--- a/drivers/staging/etnaviv/etnaviv_drv.h
+++ b/drivers/staging/etnaviv/etnaviv_drv.h
@@ -103,7 +103,7 @@ struct drm_gem_object *etnaviv_gem_new(struct drm_device *dev,
u32 size, u32 flags);
int etnaviv_gem_new_userptr(struct drm_device *dev, struct drm_file *file,
uintptr_t ptr, u32 size, u32 flags, u32 *handle);
-u32 etnaviv_buffer_init(struct etnaviv_gpu *gpu);
+u16 etnaviv_buffer_init(struct etnaviv_gpu *gpu);
void etnaviv_buffer_end(struct etnaviv_gpu *gpu);
void etnaviv_buffer_queue(struct etnaviv_gpu *gpu, unsigned int event,
struct etnaviv_gem_submit *submit);
diff --git a/drivers/staging/etnaviv/etnaviv_gpu.c b/drivers/staging/etnaviv/etnaviv_gpu.c
index 948c85a8a591..84dedb77ea76 100644
--- a/drivers/staging/etnaviv/etnaviv_gpu.c
+++ b/drivers/staging/etnaviv/etnaviv_gpu.c
@@ -379,7 +379,7 @@ static int etnaviv_hw_reset(struct etnaviv_gpu *gpu)
static void etnaviv_gpu_hw_init(struct etnaviv_gpu *gpu)
{
- u32 words; /* 32 bit words */
+ u16 prefetch;
if (gpu->identity.model == chipModel_GC320 &&
gpu_read(gpu, VIVS_HI_CHIP_TIME) != 0x2062400 &&
@@ -426,17 +426,14 @@ static void etnaviv_gpu_hw_init(struct etnaviv_gpu *gpu)
etnaviv_iommu_domain_restore(gpu, gpu->mmu->domain);
/* Start command processor */
- words = etnaviv_buffer_init(gpu);
-
- /* convert number of 32 bit words to number of 64 bit words */
- words = ALIGN(words, 2) / 2;
+ prefetch = etnaviv_buffer_init(gpu);
gpu_write(gpu, VIVS_HI_INTR_ENBL, ~0U);
gpu_write(gpu, VIVS_FE_COMMAND_ADDRESS,
etnaviv_gem_paddr_locked(gpu->buffer) - gpu->memory_base);
gpu_write(gpu, VIVS_FE_COMMAND_CONTROL,
VIVS_FE_COMMAND_CONTROL_ENABLE |
- VIVS_FE_COMMAND_CONTROL_PREFETCH(words));
+ VIVS_FE_COMMAND_CONTROL_PREFETCH(prefetch));
}
int etnaviv_gpu_init(struct etnaviv_gpu *gpu)
--
2.5.1
More information about the dri-devel
mailing list