aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/vio.c
diff options
context:
space:
mode:
authorMilton Miller <miltonm@bga.com>2011-06-24 05:05:24 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2011-09-19 19:19:35 -0400
commitd24f9c6999eacd3a7bc2b289e49fcb2bf2fafef2 (patch)
tree66276ee7149e5eab4b7ec9785bad7bdf0564ea3d /arch/powerpc/kernel/vio.c
parent3a8f7558e475b68254d8bc3a2211f3f89bf67a71 (diff)
powerpc: Use the newly added get_required_mask dma_map_ops hook
Now that the generic code has dma_map_ops set, instead of having a messy ifdef & if block in the base dma_get_required_mask hook push the computation into the dma ops. If the ops fails to set the get_required_mask hook default to the width of dma_addr_t. This also corrects ibmbus ibmebus_dma_supported to require a 64 bit mask. I doubt anything is checking or setting the dma mask on that bus. Signed-off-by: Milton Miller <miltonm@bga.com> Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> Cc: linuxppc-dev@lists.ozlabs.org Cc: linux-kernel@vger.kernel.org Cc: benh@kernel.crashing.org Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/kernel/vio.c')
-rw-r--r--arch/powerpc/kernel/vio.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c
index 1b695fdc362b..c0493259d133 100644
--- a/arch/powerpc/kernel/vio.c
+++ b/arch/powerpc/kernel/vio.c
@@ -605,6 +605,11 @@ static int vio_dma_iommu_dma_supported(struct device *dev, u64 mask)
605 return dma_iommu_ops.dma_supported(dev, mask); 605 return dma_iommu_ops.dma_supported(dev, mask);
606} 606}
607 607
608static u64 vio_dma_get_required_mask(struct device *dev)
609{
610 return dma_iommu_ops.get_required_mask(dev);
611}
612
608struct dma_map_ops vio_dma_mapping_ops = { 613struct dma_map_ops vio_dma_mapping_ops = {
609 .alloc_coherent = vio_dma_iommu_alloc_coherent, 614 .alloc_coherent = vio_dma_iommu_alloc_coherent,
610 .free_coherent = vio_dma_iommu_free_coherent, 615 .free_coherent = vio_dma_iommu_free_coherent,
@@ -613,7 +618,7 @@ struct dma_map_ops vio_dma_mapping_ops = {
613 .map_page = vio_dma_iommu_map_page, 618 .map_page = vio_dma_iommu_map_page,
614 .unmap_page = vio_dma_iommu_unmap_page, 619 .unmap_page = vio_dma_iommu_unmap_page,
615 .dma_supported = vio_dma_iommu_dma_supported, 620 .dma_supported = vio_dma_iommu_dma_supported,
616 621 .get_required_mask = vio_dma_get_required_mask,
617}; 622};
618 623
619/** 624/**