ipq806x: Revert ARM dma mapping patch
This commit is contained in:
		| @@ -0,0 +1,144 @@ | |||||||
|  | From 733a75729c1fbb478caaed875dd9c09a878a553d Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Robert Marko <robimarko@gmail.com> | ||||||
|  | Date: Fri, 5 Jun 2020 11:44:27 +0200 | ||||||
|  | Subject: [PATCH] Revert "ARM: dma-mapping: remove dmac_clean_range and | ||||||
|  |  dmac_inv_range" | ||||||
|  |  | ||||||
|  | This partially reverts 'commit 702b94bff3c505 ("ARM: dma-mapping: | ||||||
|  | remove dmac_clean_range and dmac_inv_range")' | ||||||
|  |  | ||||||
|  | Some MSM drivers still use the dmac_clean and dmac_inv_range APIs. | ||||||
|  | Bring back the defines and exports for v7 CPUs. | ||||||
|  |  | ||||||
|  | Signed-off-by: Rohit Vaswani <rvaswani@codeaurora.org> | ||||||
|  | Signed-off-by: Abhimanyu Kapur <abhimany@codeaurora.org> | ||||||
|  | [sramana: resolved minor merge conflicts] | ||||||
|  | Signed-off-by: Srinivas Ramana <sramana@codeaurora.org> | ||||||
|  | (cherry picked from commit d6118c0a9f7ab2b131ca36dd3dbd5634603d14fe) | ||||||
|  |  | ||||||
|  | Change-Id: Ib2ddb4452711c5c2013bf29f0b5d8a3572b10357 | ||||||
|  | Signed-off-by: Manoharan Vijaya Raghavan <mraghava@codeaurora.org> | ||||||
|  |  | ||||||
|  | Signed-off-by: Robert Marko <robimarko@gmail.com> | ||||||
|  | --- | ||||||
|  |  arch/arm/include/asm/cacheflush.h | 21 +++++++++++++++++++++ | ||||||
|  |  arch/arm/include/asm/glue-cache.h |  2 ++ | ||||||
|  |  arch/arm/mm/cache-v7.S            |  6 ++++-- | ||||||
|  |  arch/arm/mm/proc-macros.S         |  2 ++ | ||||||
|  |  arch/arm/mm/proc-syms.c           |  3 +++ | ||||||
|  |  5 files changed, 32 insertions(+), 2 deletions(-) | ||||||
|  |  | ||||||
|  | --- a/arch/arm/include/asm/cacheflush.h | ||||||
|  | +++ b/arch/arm/include/asm/cacheflush.h | ||||||
|  | @@ -91,6 +91,21 @@ | ||||||
|  |   *	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) | ||||||
|  |   * | ||||||
|  |   *		Clean and invalidate the specified virtual address range. | ||||||
|  | @@ -112,6 +127,8 @@ struct cpu_cache_fns { | ||||||
|  |  	void (*dma_map_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 *); | ||||||
|  |  } __no_randomize_layout; | ||||||
|  |   | ||||||
|  | @@ -137,6 +154,8 @@ extern struct cpu_cache_fns cpu_cache; | ||||||
|  |   * is visible to DMA, or data written by DMA to system memory is | ||||||
|  |   * 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 | ||||||
|  |   | ||||||
|  |  #else | ||||||
|  | @@ -156,6 +175,8 @@ extern void __cpuc_flush_dcache_area(voi | ||||||
|  |   * is visible to DMA, or data written by DMA to system memory is | ||||||
|  |   * 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 *); | ||||||
|  |   | ||||||
|  |  #endif | ||||||
|  | --- a/arch/arm/include/asm/glue-cache.h | ||||||
|  | +++ b/arch/arm/include/asm/glue-cache.h | ||||||
|  | @@ -156,6 +156,8 @@ static inline void nop_dma_unmap_area(co | ||||||
|  |  #define __cpuc_flush_dcache_area	__glue(_CACHE,_flush_kern_dcache_area) | ||||||
|  |   | ||||||
|  |  #define dmac_flush_range		__glue(_CACHE,_dma_flush_range) | ||||||
|  | +#define dmac_inv_range			__glue(_CACHE, _dma_inv_range) | ||||||
|  | +#define dmac_clean_range		__glue(_CACHE, _dma_clean_range) | ||||||
|  |  #endif | ||||||
|  |   | ||||||
|  |  #endif | ||||||
|  | --- a/arch/arm/mm/cache-v7.S | ||||||
|  | +++ b/arch/arm/mm/cache-v7.S | ||||||
|  | @@ -363,7 +363,7 @@ ENDPROC(v7_flush_kern_dcache_area) | ||||||
|  |   *	- start   - virtual start address of region | ||||||
|  |   *	- end     - virtual end address of region | ||||||
|  |   */ | ||||||
|  | -v7_dma_inv_range: | ||||||
|  | +ENTRY(v7_dma_inv_range) | ||||||
|  |  	dcache_line_size r2, r3 | ||||||
|  |  	sub	r3, r2, #1 | ||||||
|  |  	tst	r0, r3 | ||||||
|  | @@ -393,7 +393,7 @@ ENDPROC(v7_dma_inv_range) | ||||||
|  |   *	- start   - virtual start address of region | ||||||
|  |   *	- end     - virtual end address of region | ||||||
|  |   */ | ||||||
|  | -v7_dma_clean_range: | ||||||
|  | +ENTRY(v7_dma_clean_range) | ||||||
|  |  	dcache_line_size r2, r3 | ||||||
|  |  	sub	r3, r2, #1 | ||||||
|  |  	bic	r0, r0, r3 | ||||||
|  | @@ -479,6 +479,8 @@ ENDPROC(v7_dma_unmap_area) | ||||||
|  |   | ||||||
|  |  	globl_equ	b15_dma_map_area,		v7_dma_map_area | ||||||
|  |  	globl_equ	b15_dma_unmap_area,		v7_dma_unmap_area | ||||||
|  | +	globl_equ	b15_dma_inv_range,		v7_dma_inv_range | ||||||
|  | +	globl_equ	b15_dma_clean_range,		v7_dma_clean_range | ||||||
|  |  	globl_equ	b15_dma_flush_range,		v7_dma_flush_range | ||||||
|  |   | ||||||
|  |  	define_cache_functions b15 | ||||||
|  | --- a/arch/arm/mm/proc-macros.S | ||||||
|  | +++ b/arch/arm/mm/proc-macros.S | ||||||
|  | @@ -335,6 +335,8 @@ ENTRY(\name\()_cache_fns) | ||||||
|  |  	.long	\name\()_flush_kern_dcache_area | ||||||
|  |  	.long	\name\()_dma_map_area | ||||||
|  |  	.long	\name\()_dma_unmap_area | ||||||
|  | +	.long   \name\()_dma_inv_range | ||||||
|  | +	.long   \name\()_dma_clean_range | ||||||
|  |  	.long	\name\()_dma_flush_range | ||||||
|  |  	.size	\name\()_cache_fns, . - \name\()_cache_fns | ||||||
|  |  .endm | ||||||
|  | --- a/arch/arm/mm/proc-syms.c | ||||||
|  | +++ b/arch/arm/mm/proc-syms.c | ||||||
|  | @@ -27,6 +27,9 @@ EXPORT_SYMBOL(__cpuc_flush_user_all); | ||||||
|  |  EXPORT_SYMBOL(__cpuc_flush_user_range); | ||||||
|  |  EXPORT_SYMBOL(__cpuc_coherent_kern_range); | ||||||
|  |  EXPORT_SYMBOL(__cpuc_flush_dcache_area); | ||||||
|  | +EXPORT_SYMBOL(dmac_inv_range); | ||||||
|  | +EXPORT_SYMBOL(dmac_clean_range); | ||||||
|  | +EXPORT_SYMBOL(dmac_flush_range); | ||||||
|  |  #else | ||||||
|  |  EXPORT_SYMBOL(cpu_cache); | ||||||
|  |  #endif | ||||||
		Reference in New Issue
	
	Block a user
	 ACwifidude
					ACwifidude