|
@@ -217,16 +217,6 @@ static inline unsigned long verify_bit_range(unsigned long* bitmap,
|
|
|
|
|
|
#endif /* CONFIG_IOMMU_DEBUG */
|
|
|
|
|
|
-static inline unsigned int num_dma_pages(unsigned long dma, unsigned int dmalen)
|
|
|
-{
|
|
|
- unsigned int npages;
|
|
|
-
|
|
|
- npages = PAGE_ALIGN(dma + dmalen) - (dma & PAGE_MASK);
|
|
|
- npages >>= PAGE_SHIFT;
|
|
|
-
|
|
|
- return npages;
|
|
|
-}
|
|
|
-
|
|
|
static inline int translation_enabled(struct iommu_table *tbl)
|
|
|
{
|
|
|
/* only PHBs with translation enabled have an IOMMU table */
|
|
@@ -408,7 +398,7 @@ static void calgary_unmap_sg(struct device *dev,
|
|
|
if (dmalen == 0)
|
|
|
break;
|
|
|
|
|
|
- npages = num_dma_pages(dma, dmalen);
|
|
|
+ npages = iommu_num_pages(dma, dmalen, PAGE_SIZE);
|
|
|
iommu_free(tbl, dma, npages);
|
|
|
}
|
|
|
}
|
|
@@ -427,7 +417,7 @@ static int calgary_map_sg(struct device *dev, struct scatterlist *sg,
|
|
|
BUG_ON(!sg_page(s));
|
|
|
|
|
|
vaddr = (unsigned long) sg_virt(s);
|
|
|
- npages = num_dma_pages(vaddr, s->length);
|
|
|
+ npages = iommu_num_pages(vaddr, s->length, PAGE_SIZE);
|
|
|
|
|
|
entry = iommu_range_alloc(dev, tbl, npages);
|
|
|
if (entry == bad_dma_address) {
|
|
@@ -464,7 +454,7 @@ static dma_addr_t calgary_map_single(struct device *dev, phys_addr_t paddr,
|
|
|
struct iommu_table *tbl = find_iommu_table(dev);
|
|
|
|
|
|
uaddr = (unsigned long)vaddr;
|
|
|
- npages = num_dma_pages(uaddr, size);
|
|
|
+ npages = iommu_num_pages(uaddr, size, PAGE_SIZE);
|
|
|
|
|
|
return iommu_alloc(dev, tbl, vaddr, npages, direction);
|
|
|
}
|
|
@@ -475,7 +465,7 @@ static void calgary_unmap_single(struct device *dev, dma_addr_t dma_handle,
|
|
|
struct iommu_table *tbl = find_iommu_table(dev);
|
|
|
unsigned int npages;
|
|
|
|
|
|
- npages = num_dma_pages(dma_handle, size);
|
|
|
+ npages = iommu_num_pages(dma_handle, size, PAGE_SIZE);
|
|
|
iommu_free(tbl, dma_handle, npages);
|
|
|
}
|
|
|
|