diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2023-06-22 09:59:18 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2023-06-22 09:59:18 +0200 |
commit | 440f9ded5bf2fda32c7618d988065ba3b227831f (patch) | |
tree | f2f51b213932a0079c5eb00607242969bf0f0af7 /arch/riscv | |
parent | e692fd2127763b06d215a0fca51e2dbc338bd06c (diff) | |
parent | e3e5f59ce5149d8f7bbe4314c1774cf1d25e8816 (diff) | |
download | barebox-440f9ded5bf2fda32c7618d988065ba3b227831f.tar.gz barebox-440f9ded5bf2fda32c7618d988065ba3b227831f.tar.xz |
Merge branch 'for-next/dma-streaming-interface'
Diffstat (limited to 'arch/riscv')
-rw-r--r-- | arch/riscv/cpu/dma.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/arch/riscv/cpu/dma.c b/arch/riscv/cpu/dma.c index 5a4d714e5e..511170aaa4 100644 --- a/arch/riscv/cpu/dma.c +++ b/arch/riscv/cpu/dma.c @@ -52,23 +52,24 @@ void dma_set_ops(const struct dma_ops *ops) dma_ops = ops; } -void dma_sync_single_for_cpu(dma_addr_t address, size_t size, enum dma_data_direction dir) +void arch_sync_dma_for_cpu(void *vaddr, size_t size, + enum dma_data_direction dir) { - /* - * FIXME: This function needs a device argument to support non 1:1 mappings - */ + unsigned long start = (unsigned long)vaddr; + unsigned long end = start + size; + if (dir != DMA_TO_DEVICE) - dma_ops->inv_range(address, address + size); + dma_ops->inv_range(start, end); } -void dma_sync_single_for_device(dma_addr_t address, size_t size, enum dma_data_direction dir) +void arch_sync_dma_for_device(void *vaddr, size_t size, + enum dma_data_direction dir) { - /* - * FIXME: This function needs a device argument to support non 1:1 mappings - */ + unsigned long start = (unsigned long)vaddr; + unsigned long end = start + size; if (dir == DMA_FROM_DEVICE) - dma_ops->inv_range(address, address + size); + dma_ops->inv_range(start, end); else - dma_ops->flush_range(address, address + size); + dma_ops->flush_range(start, end); } |