Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6d6ef30e authored by Arve Hjønnevåg's avatar Arve Hjønnevåg Committed by Dmitry Shmidt
Browse files

ANDROID: Optionally flush entire dcache from v6_dma_flush_range



If CACHE_FLUSH_RANGE_LIMIT is defined, then the entire dcache will
be flushed if the requested range is larger than this limit.

Change-Id: I29277d645a9d6716b1952cf3b870c78496261dd0
Signed-off-by: default avatarArve Hjønnevåg <arve@android.com>
parent c6023aa6
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -270,6 +270,11 @@ v6_dma_clean_range:
 *	- end     - virtual end address of region
 */
ENTRY(v6_dma_flush_range)
#ifdef CONFIG_CACHE_FLUSH_RANGE_LIMIT
	sub	r2, r1, r0
	cmp	r2, #CONFIG_CACHE_FLUSH_RANGE_LIMIT
	bhi	v6_dma_flush_dcache_all
#endif
#ifdef CONFIG_DMA_CACHE_RWFO
	ldrb	r2, [r0]		@ read for ownership
	strb	r2, [r0]		@ write for ownership
@@ -292,6 +297,18 @@ ENTRY(v6_dma_flush_range)
	mcr	p15, 0, r0, c7, c10, 4		@ drain write buffer
	ret	lr

#ifdef CONFIG_CACHE_FLUSH_RANGE_LIMIT
v6_dma_flush_dcache_all:
	mov	r0, #0
#ifdef HARVARD_CACHE
	mcr	p15, 0, r0, c7, c14, 0		@ D cache clean+invalidate
#else
	mcr	p15, 0, r0, c7, c15, 0		@ Cache clean+invalidate
#endif
	mcr	p15, 0, r0, c7, c10, 4		@ drain write buffer
	mov	pc, lr
#endif

/*
 *	dma_map_area(start, size, dir)
 *	- start	- kernel virtual start address