]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
x86: add free_coherent dma_ops callback to Calgary IOMMU driver
authorJoerg Roedel <joerg.roedel@amd.com>
Tue, 19 Aug 2008 14:32:41 +0000 (16:32 +0200)
committerIngo Molnar <mingo@elte.hu>
Fri, 22 Aug 2008 06:34:47 +0000 (08:34 +0200)
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Acked-by: Muli Ben-Yehuda <muli@il.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/pci-calgary_64.c

index 218d783ed7a8969bae11bd86750a8121e8030fdd..afb020fdb19cbfa30b21ee9fe6838bbaa8698ddf 100644 (file)
@@ -511,8 +511,22 @@ error:
        return ret;
 }
 
+static void calgary_free_coherent(struct device *dev, size_t size,
+                                 void *vaddr, dma_addr_t dma_handle)
+{
+       unsigned int npages;
+       struct iommu_table *tbl = find_iommu_table(dev);
+
+       size = PAGE_ALIGN(size);
+       npages = size >> PAGE_SHIFT;
+
+       iommu_free(tbl, dma_handle, npages);
+       free_pages((unsigned long)vaddr, get_order(size));
+}
+
 static struct dma_mapping_ops calgary_dma_ops = {
        .alloc_coherent = calgary_alloc_coherent,
+       .free_coherent = calgary_free_coherent,
        .map_single = calgary_map_single,
        .unmap_single = calgary_unmap_single,
        .map_sg = calgary_map_sg,