diff options
author | Ley Foon Tan <leyfoon.tan@starfivetech.com> | 2023-06-19 10:44:39 +0300 |
---|---|---|
committer | Ley Foon Tan <leyfoon.tan@starfivetech.com> | 2023-12-04 06:00:15 +0300 |
commit | a78bb7d1b60c9693559587385c11ac0a0c0a0d9b (patch) | |
tree | e114fbe09e4581ecc7e71cebc30209a98adccf8f | |
parent | 80a25b6bcf045b1c2b6e337efd727114286993ac (diff) | |
download | linux-a78bb7d1b60c9693559587385c11ac0a0c0a0d9b.tar.xz |
riscv: Update arch_sync_dma_for_device() function
Handle different DMA directions.
Signed-off-by: Ley Foon Tan <leyfoon.tan@starfivetech.com>
-rw-r--r-- | arch/riscv/mm/dma-noncoherent.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/arch/riscv/mm/dma-noncoherent.c b/arch/riscv/mm/dma-noncoherent.c index 8a1f6e7377a9..4220f6d7d377 100644 --- a/arch/riscv/mm/dma-noncoherent.c +++ b/arch/riscv/mm/dma-noncoherent.c @@ -22,7 +22,17 @@ static bool noncoherent_supported = true; void arch_sync_dma_for_device(phys_addr_t paddr, size_t size, enum dma_data_direction dir) { - sbi_cache_flush(paddr, size); + switch (dir) { + case DMA_BIDIRECTIONAL: + case DMA_TO_DEVICE: + sbi_cache_flush(paddr, size); + break; + case DMA_FROM_DEVICE: + sbi_cache_invalidate(paddr, size); + break; + default: + BUG(); + } } void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size, enum dma_data_direction dir) |