diff options
Diffstat (limited to 'arch/powerpc/kernel/dma.c')
| -rw-r--r-- | arch/powerpc/kernel/dma.c | 18 | 
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c index 84d6367ec00..f368c075c90 100644 --- a/arch/powerpc/kernel/dma.c +++ b/arch/powerpc/kernel/dma.c @@ -12,6 +12,7 @@  #include <linux/memblock.h>  #include <asm/bug.h>  #include <asm/abs_addr.h> +#include <asm/machdep.h>  /*   * Generic direct DMA implementation @@ -154,6 +155,23 @@ EXPORT_SYMBOL(dma_direct_ops);  #define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) +int dma_set_mask(struct device *dev, u64 dma_mask) +{ +	struct dma_map_ops *dma_ops = get_dma_ops(dev); + +	if (ppc_md.dma_set_mask) +		return ppc_md.dma_set_mask(dev, dma_mask); +	if (unlikely(dma_ops == NULL)) +		return -EIO; +	if (dma_ops->set_dma_mask != NULL) +		return dma_ops->set_dma_mask(dev, dma_mask); +	if (!dev->dma_mask || !dma_supported(dev, dma_mask)) +		return -EIO; +	*dev->dma_mask = dma_mask; +	return 0; +} +EXPORT_SYMBOL(dma_set_mask); +  static int __init dma_init(void)  {         dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES);  |