diff options
author | Russell King <rmk@arm.linux.org.uk> | 2012-10-18 12:25:48 +0100 |
---|---|---|
committer | Russell King <rmk@arm.linux.org.uk> | 2012-10-20 22:04:22 +0100 |
commit | 0158ea89f27df1173b54dcb9e8862f34d5312f2f (patch) | |
tree | 89d6703a3c456f19af981da1bb8011ea6facc9ad | |
parent | 9b12604700d9ecb9ab07746c8fd29402c5dac7d6 (diff) |
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.
-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; } |