]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - kernel/dma/coherent.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[linux.git] / kernel / dma / coherent.c
index 545e3869b0e3214e60dd1bc24488e00e039b4b6b..551b0eb7028a327b9ab4d6bbcd67c8fde43b96de 100644 (file)
@@ -123,8 +123,9 @@ int dma_declare_coherent_memory(struct device *dev, phys_addr_t phys_addr,
        return ret;
 }
 
-static void *__dma_alloc_from_coherent(struct dma_coherent_mem *mem,
-               ssize_t size, dma_addr_t *dma_handle)
+static void *__dma_alloc_from_coherent(struct device *dev,
+                                      struct dma_coherent_mem *mem,
+                                      ssize_t size, dma_addr_t *dma_handle)
 {
        int order = get_order(size);
        unsigned long flags;
@@ -143,7 +144,7 @@ static void *__dma_alloc_from_coherent(struct dma_coherent_mem *mem,
        /*
         * Memory was found in the coherent area.
         */
-       *dma_handle = mem->device_base + (pageno << PAGE_SHIFT);
+       *dma_handle = dma_get_device_base(dev, mem) + (pageno << PAGE_SHIFT);
        ret = mem->virt_base + (pageno << PAGE_SHIFT);
        spin_unlock_irqrestore(&mem->spinlock, flags);
        memset(ret, 0, size);
@@ -175,17 +176,18 @@ int dma_alloc_from_dev_coherent(struct device *dev, ssize_t size,
        if (!mem)
                return 0;
 
-       *ret = __dma_alloc_from_coherent(mem, size, dma_handle);
+       *ret = __dma_alloc_from_coherent(dev, mem, size, dma_handle);
        return 1;
 }
 
-void *dma_alloc_from_global_coherent(ssize_t size, dma_addr_t *dma_handle)
+void *dma_alloc_from_global_coherent(struct device *dev, ssize_t size,
+                                    dma_addr_t *dma_handle)
 {
        if (!dma_coherent_default_memory)
                return NULL;
 
-       return __dma_alloc_from_coherent(dma_coherent_default_memory, size,
-                       dma_handle);
+       return __dma_alloc_from_coherent(dev, dma_coherent_default_memory, size,
+                                        dma_handle);
 }
 
 static int __dma_release_from_coherent(struct dma_coherent_mem *mem,