powerpc: Dont require a dma_ops struct to set dma mask
authorKumar Gala <galak@kernel.crashing.org>
Fri, 10 Jun 2011 07:22:06 +0000 (02:22 -0500)
committerKumar Gala <galak@kernel.crashing.org>
Fri, 8 Jul 2011 05:21:36 +0000 (00:21 -0500)
commit6471fc6630a507fd54fdaceceee1ddaf3c917cde
tree0532ac8edd4caef745dd28a56979cdb5037c464b
parent314b02f503c2c219fde0fcf6f086fda415f8a847
powerpc: Dont require a dma_ops struct to set dma mask

The only reason to require a dma_ops struct is to see if it has
implemented set_dma_mask.  If not we can fall back to setting the mask
directly.

This resolves an issue with how to sequence the setting of a DMA mask
for platform devices.  Before we had an issue in that we have no way of
setting the DMA mask before the various low level bus notifiers get
called that might check it (swiotlb).

So now we can do:

pdev = platform_device_alloc("foobar", 0);
dma_set_mask(&pdev->dev, DMA_BIT_MASK(37));
platform_device_add(pdev);

And expect the right thing to happen with the bus notifiers get called
via platform_device_add.

Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
arch/powerpc/kernel/dma.c