diff options
Diffstat (limited to 'drivers/staging/media/ipu3/ipu3-mmu.h')
-rw-r--r-- | drivers/staging/media/ipu3/ipu3-mmu.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/drivers/staging/media/ipu3/ipu3-mmu.h b/drivers/staging/media/ipu3/ipu3-mmu.h new file mode 100644 index 000000000..a5f0bca7e --- /dev/null +++ b/drivers/staging/media/ipu3/ipu3-mmu.h @@ -0,0 +1,36 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* Copyright (C) 2018 Intel Corporation */ +/* Copyright 2018 Google LLC. */ + +#ifndef __IPU3_MMU_H +#define __IPU3_MMU_H + +#define IPU3_PAGE_SHIFT 12 +#define IPU3_PAGE_SIZE (1UL << IPU3_PAGE_SHIFT) + +/** + * struct imgu_mmu_info - Describes mmu geometry + * + * @aperture_start: First address that can be mapped + * @aperture_end: Last address that can be mapped + */ +struct imgu_mmu_info { + dma_addr_t aperture_start; + dma_addr_t aperture_end; +}; + +struct device; +struct scatterlist; + +struct imgu_mmu_info *imgu_mmu_init(struct device *parent, void __iomem *base); +void imgu_mmu_exit(struct imgu_mmu_info *info); +void imgu_mmu_suspend(struct imgu_mmu_info *info); +void imgu_mmu_resume(struct imgu_mmu_info *info); + +int imgu_mmu_map(struct imgu_mmu_info *info, unsigned long iova, + phys_addr_t paddr, size_t size); +size_t imgu_mmu_unmap(struct imgu_mmu_info *info, unsigned long iova, + size_t size); +size_t imgu_mmu_map_sg(struct imgu_mmu_info *info, unsigned long iova, + struct scatterlist *sg, unsigned int nents); +#endif |