[PATCH 4/4] POWERPC: Merge 32 and 64-bit dma code
Christoph Hellwig
hch at lst.de
Tue Sep 9 08:03:49 EST 2008
> - if (unlikely(dev == NULL || dev->archdata.dma_ops == NULL))
> +
> + if (unlikely(dev == NULL) || dev->archdata.dma_ops == NULL) {
> +#ifdef CONFIG_PPC64
> return NULL;
> +#else
> + /* Use default on 32-bit if dma_ops is not set up */
> + return &dma_direct_ops;
> +#endif
> + }
> +
This is okay for the transition, but I think long-term it should
be setup for all busses.
> }
>
> @@ -132,7 +154,14 @@ static inline dma_addr_t dma_map_single_attrs(struct device *dev,
> struct dma_mapping_ops *dma_ops = get_dma_ops(dev);
>
> BUG_ON(!dma_ops);
> - return dma_ops->map_single(dev, cpu_addr, size, direction, attrs);
> +
> + if (dma_ops->map_single)
> + return dma_ops->map_single(dev, cpu_addr, size, direction,
> + attrs);
> +
> + return dma_ops->map_page(dev, virt_to_page(cpu_addr),
> + (unsigned long)cpu_addr % PAGE_SIZE, size,
> + direction, attrs);
Why would a dma ops implementation not provide map_single/unmap_single?
More information about the Linuxppc-dev
mailing list