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 */
18struct 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
24extern struct riscv_nonstd_cache_ops noncoherent_cache_ops;
25
26void riscv_noncoherent_register_cache_ops(const struct riscv_nonstd_cache_ops *ops);
27
28#endif	/* __ASM_DMA_NONCOHERENT_H */
29