Skip to content

Commit

Permalink
drm/etnaviv: split out starting of FE idle loop
Browse files Browse the repository at this point in the history
Move buffer setup and starting of the FE loop in the kernel ringbuffer
into a separate function. This is a preparation to start the FE later
in the submit process.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Guido Günther <agx@sigxcpu.org>
  • Loading branch information
Lucas Stach committed Aug 15, 2019
1 parent 27b6727 commit d80d842
Showing 1 changed file with 16 additions and 10 deletions.
26 changes: 16 additions & 10 deletions drivers/gpu/drm/etnaviv/etnaviv_gpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -600,6 +600,20 @@ void etnaviv_gpu_start_fe(struct etnaviv_gpu *gpu, u32 address, u16 prefetch)
}
}

static void etnaviv_gpu_start_fe_idleloop(struct etnaviv_gpu *gpu)
{
u32 address = etnaviv_cmdbuf_get_va(&gpu->buffer, &gpu->cmdbuf_mapping);
u16 prefetch;

/* setup the MMU */
etnaviv_iommu_restore(gpu, gpu->mmu_context);

/* Start command processor */
prefetch = etnaviv_buffer_init(gpu);

etnaviv_gpu_start_fe(gpu, address, prefetch);
}

static void etnaviv_gpu_setup_pulse_eater(struct etnaviv_gpu *gpu)
{
/*
Expand Down Expand Up @@ -633,8 +647,6 @@ static void etnaviv_gpu_setup_pulse_eater(struct etnaviv_gpu *gpu)

static void etnaviv_gpu_hw_init(struct etnaviv_gpu *gpu)
{
u16 prefetch;

if ((etnaviv_is_model_rev(gpu, GC320, 0x5007) ||
etnaviv_is_model_rev(gpu, GC320, 0x5220)) &&
gpu_read(gpu, VIVS_HI_CHIP_TIME) != 0x2062400) {
Expand Down Expand Up @@ -680,15 +692,9 @@ static void etnaviv_gpu_hw_init(struct etnaviv_gpu *gpu)
/* setup the pulse eater */
etnaviv_gpu_setup_pulse_eater(gpu);

/* setup the MMU */
etnaviv_iommu_restore(gpu, gpu->mmu_context);

/* Start command processor */
prefetch = etnaviv_buffer_init(gpu);

gpu_write(gpu, VIVS_HI_INTR_ENBL, ~0U);
etnaviv_gpu_start_fe(gpu, etnaviv_cmdbuf_get_va(&gpu->buffer,
&gpu->cmdbuf_mapping), prefetch);

etnaviv_gpu_start_fe_idleloop(gpu);
}

int etnaviv_gpu_init(struct etnaviv_gpu *gpu)
Expand Down

0 comments on commit d80d842

Please sign in to comment.