/* SPDX-License-Identifier: GPL-2.0 */
/*
 * CPIF IOMMU header
 *
 * Copyright (c) 2021 Samsung Electronics Co., Ltd.
 */

#ifndef _EXYNOS_CPIF_IOMMU_H
#define _EXYNOS_CPIF_IOMMU_H

#if IS_ENABLED(CONFIG_EXYNOS_CPIF_IOMMU)
void cpif_sysmmu_set_use_iocc(void);
void cpif_sysmmu_enable(void);
void cpif_sysmmu_disable(void);
void cpif_sysmmu_all_buff_free(void);
void print_cpif_sysmmu_tlb(void);
int cpif_iommu_map(unsigned long iova, phys_addr_t paddr, size_t size, int prot);
size_t cpif_iommu_unmap(unsigned long iova, size_t size);
#else
static inline void cpif_sysmmu_set_use_iocc(void) { return; }
static inline void cpif_sysmmu_enable(void) { return; }
static inline void cpif_sysmmu_disable(void) { return; }
static inline void cpif_sysmmu_all_buff_free(void) { return; }
static inline void print_cpif_sysmmu_tlb(void) { return; }
static inline int cpif_iommu_map(unsigned long iova, phys_addr_t paddr,
				size_t size, int prot) { return 0; }
static inline size_t cpif_iommu_unmap(unsigned long iova, size_t size) { return 0; }
#endif

#endif /* _EXYNOS_CPIF_IOMMU_H */