diff options
-rw-r--r-- | vmeta_lib.c | 49 |
1 files changed, 23 insertions, 26 deletions
diff --git a/vmeta_lib.c b/vmeta_lib.c index 364c035..bfcd2d3 100644 --- a/vmeta_lib.c +++ b/vmeta_lib.c @@ -267,34 +267,31 @@ void * vdec_os_api_dma_alloc_writecombine(UNSG32 size, UNSG32 align, UNSG32 * pP UNSG32 vdec_os_api_flush_cache(UNSG32 vaddr, UNSG32 size, enum dma_data_direction direction) { + int bmm_direction; + + switch (direction) { + case DMA_NONE: + default: + bmm_direction = BMM_DMA_NONE; + break; + case DMA_FROM_DEVICE: + bmm_direction = BMM_DMA_FROM_DEVICE; + break; + case DMA_TO_DEVICE: + bmm_direction = BMM_DMA_TO_DEVICE; + break; + case DMA_BIDIRECTIONAL: + bmm_direction = BMM_DMA_BIDIRECTIONAL; + break; + } + + if (bmm_direction == BMM_DMA_NONE) + return 0; + if (0 < size) { - switch (direction) { - case DMA_NONE: - break; - case DMA_FROM_DEVICE: - bmm_flush_cache_range((void *)vaddr, size, BMM_DMA_FROM_DEVICE); - break; - case DMA_TO_DEVICE: - bmm_flush_cache_range((void *)vaddr, size, BMM_DMA_TO_DEVICE); - break; - case DMA_BIDIRECTIONAL: - bmm_flush_cache_range((void *)vaddr, size, BMM_DMA_BIDIRECTIONAL); - break; - } + bmm_flush_cache_range((void *)vaddr, size, bmm_direction); } else { - switch (direction) { - case DMA_NONE: - break; - case DMA_FROM_DEVICE: - bmm_flush_cache((void *)vaddr, BMM_DMA_FROM_DEVICE); - break; - case DMA_TO_DEVICE: - bmm_flush_cache((void *)vaddr, BMM_DMA_TO_DEVICE); - break; - case DMA_BIDIRECTIONAL: - bmm_flush_cache((void *)vaddr, BMM_DMA_BIDIRECTIONAL); - break; - } + bmm_flush_cache((void *)vaddr, bmm_direction); } return 0; } |