Skip to content

Commit 58979ad

Browse files
committed
drm/etnaviv: fix DMA direction handling for cached RW buffers
The dma sync operation needs to be done with DMA_BIDIRECTIONAL when the BO is prepared for both read and write operations. Fixes: a8c21a5 ("drm/etnaviv: add initial etnaviv DRM driver") Signed-off-by: Lucas Stach <l.stach@pengutronix.de> Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de> Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
1 parent a3ecd97 commit 58979ad

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

drivers/gpu/drm/etnaviv/etnaviv_gem.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -355,9 +355,11 @@ static void *etnaviv_gem_vmap_impl(struct etnaviv_gem_object *obj)
355355

356356
static inline enum dma_data_direction etnaviv_op_to_dma_dir(u32 op)
357357
{
358-
if (op & ETNA_PREP_READ)
358+
op &= ETNA_PREP_READ | ETNA_PREP_WRITE;
359+
360+
if (op == ETNA_PREP_READ)
359361
return DMA_FROM_DEVICE;
360-
else if (op & ETNA_PREP_WRITE)
362+
else if (op == ETNA_PREP_WRITE)
361363
return DMA_TO_DEVICE;
362364
else
363365
return DMA_BIDIRECTIONAL;

0 commit comments

Comments
 (0)