From 0158ea89f27df1173b54dcb9e8862f34d5312f2f Mon Sep 17 00:00:00 2001 From: Russell King Date: Thu, 18 Oct 2012 12:25:48 +0100 Subject: Sanitize vdec_os_api_flush_cache() No point in repeating all the logic multiple times. Just convert the direction argument and then call the appropriate function according to the size. --- vmeta_lib.c | 49 +++++++++++++++++++++++-------------------------- 1 file 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; } -- cgit