summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell King <rmk@arm.linux.org.uk>2012-10-18 12:25:48 +0100
committerRussell King <rmk@arm.linux.org.uk>2012-10-20 22:04:22 +0100
commit0158ea89f27df1173b54dcb9e8862f34d5312f2f (patch)
tree89d6703a3c456f19af981da1bb8011ea6facc9ad
parent9b12604700d9ecb9ab07746c8fd29402c5dac7d6 (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.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;
}