summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vmeta_lib.c49
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;
}