提交 40edf108 编写于 作者: D Dan Pasanen 提交者: Zheng Zengkai

arm: partially revert 702b94bf

raspberrypi inclusion
category: feature
bugzilla: 50432

--------------------------------

* Re-expose some dmi APIs for use in VCSM
Signed-off-by: NFang Yafen <yafen@iscas.ac.cn>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 f259a5fc
...@@ -91,6 +91,21 @@ ...@@ -91,6 +91,21 @@
* DMA Cache Coherency * DMA Cache Coherency
* =================== * ===================
* *
* dma_inv_range(start, end)
*
* Invalidate (discard) the specified virtual address range.
* May not write back any entries. If 'start' or 'end'
* are not cache line aligned, those lines must be written
* back.
* - start - virtual start address
* - end - virtual end address
*
* dma_clean_range(start, end)
*
* Clean (write back) the specified virtual address range.
* - start - virtual start address
* - end - virtual end address
*
* dma_flush_range(start, end) * dma_flush_range(start, end)
* *
* Clean and invalidate the specified virtual address range. * Clean and invalidate the specified virtual address range.
...@@ -112,6 +127,8 @@ struct cpu_cache_fns { ...@@ -112,6 +127,8 @@ struct cpu_cache_fns {
void (*dma_map_area)(const void *, size_t, int); void (*dma_map_area)(const void *, size_t, int);
void (*dma_unmap_area)(const void *, size_t, int); void (*dma_unmap_area)(const void *, size_t, int);
void (*dma_inv_range)(const void *, const void *);
void (*dma_clean_range)(const void *, const void *);
void (*dma_flush_range)(const void *, const void *); void (*dma_flush_range)(const void *, const void *);
} __no_randomize_layout; } __no_randomize_layout;
...@@ -137,6 +154,8 @@ extern struct cpu_cache_fns cpu_cache; ...@@ -137,6 +154,8 @@ extern struct cpu_cache_fns cpu_cache;
* is visible to DMA, or data written by DMA to system memory is * is visible to DMA, or data written by DMA to system memory is
* visible to the CPU. * visible to the CPU.
*/ */
#define dmac_inv_range cpu_cache.dma_inv_range
#define dmac_clean_range cpu_cache.dma_clean_range
#define dmac_flush_range cpu_cache.dma_flush_range #define dmac_flush_range cpu_cache.dma_flush_range
#else #else
...@@ -156,6 +175,8 @@ extern void __cpuc_flush_dcache_area(void *, size_t); ...@@ -156,6 +175,8 @@ extern void __cpuc_flush_dcache_area(void *, size_t);
* is visible to DMA, or data written by DMA to system memory is * is visible to DMA, or data written by DMA to system memory is
* visible to the CPU. * visible to the CPU.
*/ */
extern void dmac_inv_range(const void *, const void *);
extern void dmac_clean_range(const void *, const void *);
extern void dmac_flush_range(const void *, const void *); extern void dmac_flush_range(const void *, const void *);
#endif #endif
......
...@@ -155,6 +155,8 @@ static inline void nop_dma_unmap_area(const void *s, size_t l, int f) { } ...@@ -155,6 +155,8 @@ static inline void nop_dma_unmap_area(const void *s, size_t l, int f) { }
#define __cpuc_coherent_user_range __glue(_CACHE,_coherent_user_range) #define __cpuc_coherent_user_range __glue(_CACHE,_coherent_user_range)
#define __cpuc_flush_dcache_area __glue(_CACHE,_flush_kern_dcache_area) #define __cpuc_flush_dcache_area __glue(_CACHE,_flush_kern_dcache_area)
#define dmac_inv_range __glue(_CACHE,_dma_inv_range)
#define dmac_clean_range __glue(_CACHE,_dma_clean_range)
#define dmac_flush_range __glue(_CACHE,_dma_flush_range) #define dmac_flush_range __glue(_CACHE,_dma_flush_range)
#endif #endif
......
...@@ -334,6 +334,8 @@ ENTRY(\name\()_cache_fns) ...@@ -334,6 +334,8 @@ ENTRY(\name\()_cache_fns)
.long \name\()_flush_kern_dcache_area .long \name\()_flush_kern_dcache_area
.long \name\()_dma_map_area .long \name\()_dma_map_area
.long \name\()_dma_unmap_area .long \name\()_dma_unmap_area
.long \name\()_dma_inv_range
.long \name\()_dma_clean_range
.long \name\()_dma_flush_range .long \name\()_dma_flush_range
.size \name\()_cache_fns, . - \name\()_cache_fns .size \name\()_cache_fns, . - \name\()_cache_fns
.endm .endm
......
...@@ -27,6 +27,9 @@ EXPORT_SYMBOL(__cpuc_flush_user_all); ...@@ -27,6 +27,9 @@ EXPORT_SYMBOL(__cpuc_flush_user_all);
EXPORT_SYMBOL(__cpuc_flush_user_range); EXPORT_SYMBOL(__cpuc_flush_user_range);
EXPORT_SYMBOL(__cpuc_coherent_kern_range); EXPORT_SYMBOL(__cpuc_coherent_kern_range);
EXPORT_SYMBOL(__cpuc_flush_dcache_area); EXPORT_SYMBOL(__cpuc_flush_dcache_area);
EXPORT_SYMBOL(dmac_inv_range);
EXPORT_SYMBOL(dmac_clean_range);
EXPORT_SYMBOL(dmac_flush_range);
#else #else
EXPORT_SYMBOL(cpu_cache); EXPORT_SYMBOL(cpu_cache);
#endif #endif
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册