mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
Remove dma_cache_(wback|inv|wback_inv) functions
dma_cache_(wback|inv|wback_inv) were the earliest attempt on a generalized cache managment API for I/O purposes. Originally it was basically the raw MIPS low level cache API exported to the entire world. The API has suffered from a lack of documentation, was not very widely used unlike it's more modern brothers and can easily be replaced by dma_cache_sync. So remove it rsp. turn the surviving bits back into an arch private API, as discussed on linux-arch. Signed-off-by: Ralf Baechle <[email protected]> Acked-by: Paul Mundt <[email protected]> Acked-by: Paul Mackerras <[email protected]> Acked-by: David S. Miller <[email protected]> Acked-by: Kyle McMartin <[email protected]> Acked-by: Haavard Skinnemoen <[email protected]> Cc: <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
bc154b1efb
commit
622a9edd91
24 changed files with 19 additions and 193 deletions
|
|
@ -42,7 +42,11 @@ static inline void dma_free_coherent(struct device *dev, size_t size,
|
|||
static inline void dma_cache_sync(struct device *dev, void *vaddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
dma_cache_wback_inv((unsigned long)vaddr, size);
|
||||
unsigned long s = (unsigned long) vaddr & L1_CACHE_ALIGN_MASK;
|
||||
unsigned long e = (vaddr + size) & L1_CACHE_ALIGN_MASK;
|
||||
|
||||
for (; s <= e; s += L1_CACHE_BYTES)
|
||||
asm volatile ("ocbp %0, 0" : : "r" (s));
|
||||
}
|
||||
|
||||
static inline dma_addr_t dma_map_single(struct device *dev,
|
||||
|
|
|
|||
|
|
@ -181,54 +181,6 @@ extern void iounmap(void *addr);
|
|||
unsigned long onchip_remap(unsigned long addr, unsigned long size, const char* name);
|
||||
extern void onchip_unmap(unsigned long vaddr);
|
||||
|
||||
/*
|
||||
* The caches on some architectures aren't dma-coherent and have need to
|
||||
* handle this in software. There are three types of operations that
|
||||
* can be applied to dma buffers.
|
||||
*
|
||||
* - dma_cache_wback_inv(start, size) makes caches and RAM coherent by
|
||||
* writing the content of the caches back to memory, if necessary.
|
||||
* The function also invalidates the affected part of the caches as
|
||||
* necessary before DMA transfers from outside to memory.
|
||||
* - dma_cache_inv(start, size) invalidates the affected parts of the
|
||||
* caches. Dirty lines of the caches may be written back or simply
|
||||
* be discarded. This operation is necessary before dma operations
|
||||
* to the memory.
|
||||
* - dma_cache_wback(start, size) writes back any dirty lines but does
|
||||
* not invalidate the cache. This can be used before DMA reads from
|
||||
* memory,
|
||||
*/
|
||||
|
||||
static __inline__ void dma_cache_wback_inv (unsigned long start, unsigned long size)
|
||||
{
|
||||
unsigned long s = start & L1_CACHE_ALIGN_MASK;
|
||||
unsigned long e = (start + size) & L1_CACHE_ALIGN_MASK;
|
||||
|
||||
for (; s <= e; s += L1_CACHE_BYTES)
|
||||
asm volatile ("ocbp %0, 0" : : "r" (s));
|
||||
}
|
||||
|
||||
static __inline__ void dma_cache_inv (unsigned long start, unsigned long size)
|
||||
{
|
||||
// Note that caller has to be careful with overzealous
|
||||
// invalidation should there be partial cache lines at the extremities
|
||||
// of the specified range
|
||||
unsigned long s = start & L1_CACHE_ALIGN_MASK;
|
||||
unsigned long e = (start + size) & L1_CACHE_ALIGN_MASK;
|
||||
|
||||
for (; s <= e; s += L1_CACHE_BYTES)
|
||||
asm volatile ("ocbi %0, 0" : : "r" (s));
|
||||
}
|
||||
|
||||
static __inline__ void dma_cache_wback (unsigned long start, unsigned long size)
|
||||
{
|
||||
unsigned long s = start & L1_CACHE_ALIGN_MASK;
|
||||
unsigned long e = (start + size) & L1_CACHE_ALIGN_MASK;
|
||||
|
||||
for (; s <= e; s += L1_CACHE_BYTES)
|
||||
asm volatile ("ocbwb %0, 0" : : "r" (s));
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert a physical pointer to a virtual kernel pointer for /dev/mem
|
||||
* access
|
||||
|
|
|
|||
Loading…
Reference in a new issue