summaryrefslogtreecommitdiff
path: root/arch/mips/mm/dma-default.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-11-14 13:03:24 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2009-11-14 13:03:24 -0800
commit24dfb2b5867df24ba03b6c4418312e23b1300aa8 (patch)
treec6381a80ee04eb253121ccfd49d05af7559c0041 /arch/mips/mm/dma-default.c
parentcd4ca27d3dedfff09000586e4ae67771608696a0 (diff)
parent5df9d11be46a9f704208644a1e7f13c6104ecff2 (diff)
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: MIPS: SMTC: Fix lockup in smtc_distribute_timer MIPS: TXx9: Update rbtx49xx_defconfig MIPS: Make local arrays with CL_SIZE static __initdata MIPS: Add DMA declare coherent memory support MIPS: Fix emulation of 64-bit FPU on FPU-less 64-bit CPUs.
Diffstat (limited to 'arch/mips/mm/dma-default.c')
-rw-r--r--arch/mips/mm/dma-default.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c
index 7e48e76148aa..9367e33fbd18 100644
--- a/arch/mips/mm/dma-default.c
+++ b/arch/mips/mm/dma-default.c
@@ -90,6 +90,9 @@ void *dma_alloc_coherent(struct device *dev, size_t size,
{
void *ret;
+ if (dma_alloc_from_coherent(dev, size, dma_handle, &ret))
+ return ret;
+
gfp = massage_gfp_flags(dev, gfp);
ret = (void *) __get_free_pages(gfp, get_order(size));
@@ -122,6 +125,10 @@ void dma_free_coherent(struct device *dev, size_t size, void *vaddr,
dma_addr_t dma_handle)
{
unsigned long addr = (unsigned long) vaddr;
+ int order = get_order(size);
+
+ if (dma_release_from_coherent(dev, order, vaddr))
+ return;
plat_unmap_dma_mem(dev, dma_handle, size, DMA_BIDIRECTIONAL);