From: Christian Gmeiner <christian.gmeiner@xxxxxxxxx> 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@xxxxxxxxx> --- 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 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel