Merge branch 'topic/hdsp' into for-linus
[pandora-kernel.git] / arch / powerpc / platforms / iseries / iommu.c
index 6ed75bf..4021982 100644 (file)
@@ -174,9 +174,10 @@ static struct iommu_table *iommu_table_find(struct iommu_table * tbl)
 }
 
 
-void iommu_devnode_init_iSeries(struct pci_dev *pdev, struct device_node *dn)
+static void pci_dma_dev_setup_iseries(struct pci_dev *pdev)
 {
        struct iommu_table *tbl;
+       struct device_node *dn = pdev->sysdata;
        struct pci_dn *pdn = PCI_DN(dn);
        const u32 *lsn = of_get_property(dn, "linux,logical-slot-number", NULL);
 
@@ -194,6 +195,8 @@ void iommu_devnode_init_iSeries(struct pci_dev *pdev, struct device_node *dn)
                kfree(tbl);
        pdev->dev.archdata.dma_data = pdn->iommu_table;
 }
+#else
+#define pci_dma_dev_setup_iseries      NULL
 #endif
 
 static struct iommu_table veth_iommu_table;
@@ -202,7 +205,7 @@ static struct iommu_table vio_iommu_table;
 void *iseries_hv_alloc(size_t size, dma_addr_t *dma_handle, gfp_t flag)
 {
        return iommu_alloc_coherent(NULL, &vio_iommu_table, size, dma_handle,
-                               DMA_32BIT_MASK, flag, -1);
+                               DMA_BIT_MASK(32), flag, -1);
 }
 EXPORT_SYMBOL_GPL(iseries_hv_alloc);
 
@@ -217,7 +220,7 @@ dma_addr_t iseries_hv_map(void *vaddr, size_t size,
 {
        return iommu_map_page(NULL, &vio_iommu_table, virt_to_page(vaddr),
                              (unsigned long)vaddr % PAGE_SIZE, size,
-                             DMA_32BIT_MASK, direction, NULL);
+                             DMA_BIT_MASK(32), direction, NULL);
 }
 
 void iseries_hv_unmap(dma_addr_t dma_handle, size_t size,
@@ -251,5 +254,6 @@ void iommu_init_early_iSeries(void)
        ppc_md.tce_build = tce_build_iSeries;
        ppc_md.tce_free  = tce_free_iSeries;
 
+       ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_iseries;
        set_pci_dma_ops(&dma_iommu_ops);
 }