1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (C) 2023 Renesas Electronics Corp. 4 */ 5 6 #ifndef __ASM_DMA_NONCOHERENT_H 7 #define __ASM_DMA_NONCOHERENT_H 8 9 #include <linux/dma-direct.h> 10 11 /* 12 * struct riscv_nonstd_cache_ops - Structure for non-standard CMO function pointers 13 * 14 * @wback: Function pointer for cache writeback 15 * @inv: Function pointer for invalidating cache 16 * @wback_inv: Function pointer for flushing the cache (writeback + invalidating) 17 */ 18 struct riscv_nonstd_cache_ops { 19 void (*wback)(phys_addr_t paddr, size_t size); 20 void (*inv)(phys_addr_t paddr, size_t size); 21 void (*wback_inv)(phys_addr_t paddr, size_t size); 22 }; 23 24 extern struct riscv_nonstd_cache_ops noncoherent_cache_ops; 25 26 void riscv_noncoherent_register_cache_ops(const struct riscv_nonstd_cache_ops *ops); 27 28 #endif /* __ASM_DMA_NONCOHERENT_H */ 29