On Mon, Jan 11, 2016 at 03:17:46AM +0100, Niklas Söderlund wrote: > Enable slave transfers to devices behind IPMMU:s by mapping the slave > addresses using the dma-mapping API. > > Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx> > --- > drivers/dma/sh/rcar-dmac.c | 64 +++++++++++++++++++++++++++++++++++++++++++--- > 1 file changed, 60 insertions(+), 4 deletions(-) > > diff --git a/drivers/dma/sh/rcar-dmac.c b/drivers/dma/sh/rcar-dmac.c > index 7820d07..da94809 100644 > --- a/drivers/dma/sh/rcar-dmac.c > +++ b/drivers/dma/sh/rcar-dmac.c > @@ -13,6 +13,7 @@ > #include <linux/dma-mapping.h> > #include <linux/dmaengine.h> > #include <linux/interrupt.h> > +#include <linux/iommu.h> > #include <linux/list.h> > #include <linux/module.h> > #include <linux/mutex.h> > @@ -1101,6 +1102,24 @@ rcar_dmac_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t buf_addr, > return desc; > } > > +static dma_addr_t __rcar_dmac_dma_map(struct dma_chan *chan, phys_addr_t addr, > + size_t size, enum dma_data_direction dir) > +{ > + struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); > + struct page *page = phys_to_page(addr); > + size_t offset = addr - page_to_phys(page); > + dma_addr_t map = dma_map_page(chan->device->dev, page, offset, size, > + dir); Hmmmm, dmaengine APIs for slave cases expect that client has already ammped and provided an address which the dmaengine understands. So doing this in driver here does not sound good to me -- ~Vinod -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html