1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* Copyright (C) 2018 Intel Corporation */ 3 /* Copyright 2018 Google LLC. */ 4 5 #ifndef __IPU3_MMU_H 6 #define __IPU3_MMU_H 7 8 #define IPU3_PAGE_SHIFT 12 9 #define IPU3_PAGE_SIZE (1UL << IPU3_PAGE_SHIFT) 10 11 /** 12 * struct imgu_mmu_info - Describes mmu geometry 13 * 14 * @aperture_start: First address that can be mapped 15 * @aperture_end: Last address that can be mapped 16 */ 17 struct imgu_mmu_info { 18 dma_addr_t aperture_start; 19 dma_addr_t aperture_end; 20 }; 21 22 struct device; 23 struct scatterlist; 24 25 struct imgu_mmu_info *imgu_mmu_init(struct device *parent, void __iomem *base); 26 void imgu_mmu_exit(struct imgu_mmu_info *info); 27 void imgu_mmu_suspend(struct imgu_mmu_info *info); 28 void imgu_mmu_resume(struct imgu_mmu_info *info); 29 30 int imgu_mmu_map(struct imgu_mmu_info *info, unsigned long iova, 31 phys_addr_t paddr, size_t size); 32 size_t imgu_mmu_unmap(struct imgu_mmu_info *info, unsigned long iova, 33 size_t size); 34 size_t imgu_mmu_map_sg(struct imgu_mmu_info *info, unsigned long iova, 35 struct scatterlist *sg, unsigned int nents); 36 #endif 37