extern const struct dma_map_ops dma_iommu_ops;
 
-static inline unsigned long device_to_mask(struct device *dev)
-{
-       if (dev->dma_mask && *dev->dma_mask)
-               return *dev->dma_mask;
-       /* Assume devices without mask can take 32 bit addresses */
-       return 0xfffffffful;
-}
-
 #endif /* __KERNEL__ */
 #endif /* _ASM_IOMMU_H */
 
                return dma_direct_map_page(dev, page, offset, size, direction,
                                attrs);
        return iommu_map_page(dev, get_iommu_table_base(dev), page, offset,
-                             size, device_to_mask(dev), direction, attrs);
+                             size, dma_get_mask(dev), direction, attrs);
 }
 
 
        if (dma_iommu_map_bypass(dev, attrs))
                return dma_direct_map_sg(dev, sglist, nelems, direction, attrs);
        return ppc_iommu_map_sg(dev, get_iommu_table_base(dev), sglist, nelems,
-                               device_to_mask(dev), direction, attrs);
+                               dma_get_mask(dev), direction, attrs);
 }
 
 static void dma_iommu_unmap_sg(struct device *dev, struct scatterlist *sglist,
 
 
        if (vio_cmo_alloc(viodev, roundup(size, IOMMU_PAGE_SIZE(tbl))))
                goto out_fail;
-       ret = iommu_map_page(dev, tbl, page, offset, size, device_to_mask(dev),
+       ret = iommu_map_page(dev, tbl, page, offset, size, dma_get_mask(dev),
                        direction, attrs);
        if (unlikely(ret == DMA_MAPPING_ERROR))
                goto out_deallocate;
 
        if (vio_cmo_alloc(viodev, alloc_size))
                goto out_fail;
-       ret = ppc_iommu_map_sg(dev, tbl, sglist, nelems, device_to_mask(dev),
+       ret = ppc_iommu_map_sg(dev, tbl, sglist, nelems, dma_get_mask(dev),
                        direction, attrs);
        if (unlikely(!ret))
                goto out_deallocate;