#include <asm/scatterlist.h>
#include <asm/dma-coherence.h>
#include <asm/cache.h>
-@@ -10,14 +16,47 @@
- #include <dma-coherence.h>
- #endif
+@@ -12,12 +18,47 @@
+
+ extern struct dma_map_ops *mips_dma_map_ops;
--extern struct dma_map_ops *mips_dma_map_ops;
+void __dma_sync(struct page *page, unsigned long offset, size_t size,
+ enum dma_data_direction direction);
+void *mips_dma_alloc_coherent(struct device *dev, size_t size,
+ struct dma_attrs *attrs);
+void mips_dma_free_coherent(struct device *dev, size_t size, void *vaddr,
+ dma_addr_t dma_handle, struct dma_attrs *attrs);
-
++
static inline struct dma_map_ops *get_dma_ops(struct device *dev)
{
+#ifdef CONFIG_SYS_HAS_DMA_OPS
}
static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
-@@ -30,12 +69,309 @@ static inline bool dma_capable(struct de
+@@ -30,12 +71,309 @@ static inline bool dma_capable(struct de
static inline void dma_mark_clean(void *addr, size_t size) {}
}
static inline int dma_mapping_error(struct device *dev, u64 mask)
-@@ -43,7 +379,9 @@ static inline int dma_mapping_error(stru
+@@ -43,7 +381,9 @@ static inline int dma_mapping_error(stru
struct dma_map_ops *ops = get_dma_ops(dev);
debug_dma_mapping_error(dev, mask);
}
static inline int
-@@ -69,7 +407,11 @@ static inline void *dma_alloc_attrs(stru
+@@ -69,7 +409,11 @@ static inline void *dma_alloc_attrs(stru
void *ret;
struct dma_map_ops *ops = get_dma_ops(dev);
debug_dma_alloc_coherent(dev, size, *dma_handle, ret);
-@@ -84,7 +426,10 @@ static inline void dma_free_attrs(struct
+@@ -84,7 +428,10 @@ static inline void dma_free_attrs(struct
{
struct dma_map_ops *ops = get_dma_ops(dev);