From 594133ef22fae0d737bd1b57352cf3f48a192c63 Mon Sep 17 00:00:00 2001 From: Quinn Jensen Date: Wed, 24 Oct 2007 21:27:16 -0600 Subject: CR ENGR00053563 Fix Sahara Issue For MX27 Patch for CR ENGR00053563 Fix Sahara Issue For MX27 Replace dma_map_single() with direct calls to L1,L2 cache functions. Applies to linux 2.6.22 kernel on MX27 platforms. http://www.bitshrine.org/gpp/linux-2.6.22-mx-CR-ENGR00053563-Fix-Sahara-Issue-For-MX27.patch --- drivers/mxc/security/sahara2/include/linux_port.h | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/drivers/mxc/security/sahara2/include/linux_port.h b/drivers/mxc/security/sahara2/include/linux_port.h index 1fb58366a695..f4f356b0d83b 100644 --- a/drivers/mxc/security/sahara2/include/linux_port.h +++ b/drivers/mxc/security/sahara2/include/linux_port.h @@ -1665,8 +1665,11 @@ extern void v6_flush_kern_cache_all_L2(void); * * @return void */ -#define os_cache_clean_range(start,len) \ - dma_map_single(NULL, (void*)start, len, DMA_TO_DEVICE) +#define os_cache_clean_range(start,len) \ +{ \ + dmac_clean_range(start, (void *)((unsigned long)(start) + len)); \ + outer_clean_range(__pa(start), __pa((unsigned long)(start) + len)); \ +} /*! * Invalidate a range of addresses in the cache @@ -1676,8 +1679,11 @@ extern void v6_flush_kern_cache_all_L2(void); * * @return void */ -#define os_cache_inv_range(start,len) \ - dma_map_single(NULL, (void*)start, len, DMA_FROM_DEVICE) +#define os_cache_inv_range(start,len) \ +{ \ + dmac_inv_range(start, (void *)((unsigned long)(start) + len)); \ + outer_inv_range(__pa(start), __pa((unsigned long)(start) + len)); \ +} /*! * Flush a range of addresses from the cache. That is, perform clean @@ -1688,8 +1694,11 @@ extern void v6_flush_kern_cache_all_L2(void); * * @return void */ -#define os_cache_flush_range(start,len) \ - dma_map_single(NULL, (void*)start, len, DMA_BIDIRECTIONAL) +#define os_cache_flush_range(start,len) \ +{ \ + dmac_flush_range(start, (void *)((unsigned long)(start) + len)); \ + outer_flush_range(__pa(start), __pa((unsigned long)(start) + len)); \ +} /*! @} *//* cacheops */ -- cgit v1.2.3