#include <asm/cacheflush.h>
  
  static bool noncoherent_supported __ro_after_init;
 +int dma_cache_alignment __ro_after_init = ARCH_DMA_MINALIGN;
 +EXPORT_SYMBOL_GPL(dma_cache_alignment);
  
- void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
-                             enum dma_data_direction dir)
+ static inline void arch_dma_cache_wback(phys_addr_t paddr, size_t size)
+ {
+       void *vaddr = phys_to_virt(paddr);
+ 
+       ALT_CMO_OP(clean, vaddr, size, riscv_cbom_block_size);
+ }
+ 
+ static inline void arch_dma_cache_inv(phys_addr_t paddr, size_t size)
+ {
+       void *vaddr = phys_to_virt(paddr);
+ 
+       ALT_CMO_OP(inval, vaddr, size, riscv_cbom_block_size);
+ }
+ 
+ static inline void arch_dma_cache_wback_inv(phys_addr_t paddr, size_t size)
  {
        void *vaddr = phys_to_virt(paddr);