Messages in this thread |  | | From | Greentime Hu <> | Date | Tue, 23 Jan 2018 16:23:27 +0800 | Subject | Re: [PATCH v6 16/36] nds32: DMA mapping API |
| |
Hi, Arnd:
2018-01-18 18:26 GMT+08:00 Arnd Bergmann <arnd@arndb.de>: > On Mon, Jan 15, 2018 at 6:53 AM, Greentime Hu <green.hu@gmail.com> wrote: >> From: Greentime Hu <greentime@andestech.com> >> >> This patch adds support for the DMA mapping API. It uses dma_map_ops for >> flexibility. >> >> Signed-off-by: Vincent Chen <vincentc@andestech.com> >> Signed-off-by: Greentime Hu <greentime@andestech.com> > > I'm still unhappy about the way the cache flushes are done here as discussed > before. It's not a show-stopped, but no Ack from me.
How about this implementation?
static void nds32_dma_sync_single_for_cpu(struct device *dev, dma_addr_t handle, size_t size, enum dma_data_direction dir) { switch (direction) { case DMA_TO_DEVICE: /* writeback only */ break; case DMA_FROM_DEVICE: /* invalidate only */ case DMA_BIDIRECTIONAL: /* writeback and invalidate */ cpu_dma_inval_range(start, end); break; default: BUG(); } }
static void nds32_dma_sync_single_for_device(struct device *dev, dma_addr_t handle, size_t size, enum dma_data_direction dir) { switch (direction) { case DMA_FROM_DEVICE: /* invalidate only */ break; case DMA_TO_DEVICE: /* writeback only */ case DMA_BIDIRECTIONAL: /* writeback and invalidate */ cpu_dma_wb_range(start, end); break; default: BUG(); } }
|  |