diff options
author | Milton Miller <miltonm@bga.com> | 2011-06-24 05:05:24 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2011-09-19 19:19:35 -0400 |
commit | d24f9c6999eacd3a7bc2b289e49fcb2bf2fafef2 (patch) | |
tree | 66276ee7149e5eab4b7ec9785bad7bdf0564ea3d /arch/powerpc/kernel/vio.c | |
parent | 3a8f7558e475b68254d8bc3a2211f3f89bf67a71 (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.c | 7 |
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 | ||
608 | static u64 vio_dma_get_required_mask(struct device *dev) | ||
609 | { | ||
610 | return dma_iommu_ops.get_required_mask(dev); | ||
611 | } | ||
612 | |||
608 | struct dma_map_ops vio_dma_mapping_ops = { | 613 | struct 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 | /** |