summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/asm-sh/dma-mapping.h32
-rw-r--r--include/asm-sh/machvec.h4
2 files changed, 36 insertions, 0 deletions
diff --git a/include/asm-sh/dma-mapping.h b/include/asm-sh/dma-mapping.h
index f3817945edb5..8f149477ee2c 100644
--- a/include/asm-sh/dma-mapping.h
+++ b/include/asm-sh/dma-mapping.h
@@ -44,6 +44,8 @@ static inline void *dma_alloc_coherent(struct device *dev, size_t size,
if (dev && dev->bus == &pci_bus_type)
return __pci_alloc_consistent(NULL, size, dma_handle);
#endif
+ if (sh_mv.mv_consistent_alloc)
+ return sh_mv.mv_consistent_alloc(dev, size, dma_handle, flag);
return consistent_alloc(flag, size, dma_handle);
}
@@ -61,6 +63,11 @@ static inline void dma_free_coherent(struct device *dev, size_t size,
}
#endif
+ if (sh_mv.mv_consistent_free) {
+ sh_mv.mv_consistent_free(dev, size, vaddr, dma_handle);
+ return;
+ }
+
consistent_free(vaddr, size);
}
@@ -152,6 +159,26 @@ static inline void dma_sync_sg(struct device *dev, struct scatterlist *sg,
}
}
+static inline void dma_sync_single_for_cpu(struct device *dev,
+ dma_addr_t dma_handle, size_t size,
+ enum dma_data_direction dir)
+ __attribute__ ((alias("dma_sync_single")));
+
+static inline void dma_sync_single_for_device(struct device *dev,
+ dma_addr_t dma_handle, size_t size,
+ enum dma_data_direction dir)
+ __attribute__ ((alias("dma_sync_single")));
+
+static inline void dma_sync_sg_for_cpu(struct device *dev,
+ struct scatterlist *sg, int nelems,
+ enum dma_data_direction dir)
+ __attribute__ ((alias("dma_sync_sg")));
+
+static inline void dma_sync_sg_for_device(struct device *dev,
+ struct scatterlist *sg, int nelems,
+ enum dma_data_direction dir)
+ __attribute__ ((alias("dma_sync_sg")));
+
static inline int dma_get_cache_alignment(void)
{
/*
@@ -161,5 +188,10 @@ static inline int dma_get_cache_alignment(void)
return L1_CACHE_BYTES;
}
+static inline int dma_mapping_error(dma_addr_t dma_addr)
+{
+ return dma_addr == 0;
+}
+
#endif /* __ASM_SH_DMA_MAPPING_H */
diff --git a/include/asm-sh/machvec.h b/include/asm-sh/machvec.h
index 4953570c961d..8a2e3dcd1779 100644
--- a/include/asm-sh/machvec.h
+++ b/include/asm-sh/machvec.h
@@ -17,6 +17,7 @@
#include <asm/machtypes.h>
#include <asm/machvec_init.h>
+struct device;
struct timeval;
struct sh_machine_vector
@@ -62,6 +63,9 @@ struct sh_machine_vector
void (*mv_init_pci)(void);
void (*mv_heartbeat)(void);
+
+ void *(*mv_consistent_alloc)(struct device *, size_t, dma_addr_t *, int);
+ void (*mv_consistent_free)(struct device *, size_t, void *, dma_addr_t);
};
extern struct sh_machine_vector sh_mv;