1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright (C) Rockchip Electronics Co., Ltd. 4 * 5 * Author: 6 * Cerf Yu <cerf.yu@rock-chips.com> 7 * Huang Lee <Putin.li@rock-chips.com> 8 */ 9 #ifndef __RGA3_DMA_BUF_H__ 10 #define __RGA3_DMA_BUF_H__ 11 12 #include "rga_drv.h" 13 14 #ifndef for_each_sgtable_sg 15 /* 16 * Loop over each sg element in the given sg_table object. 17 */ 18 #define for_each_sgtable_sg(sgt, sg, i) \ 19 for_each_sg((sgt)->sgl, sg, (sgt)->orig_nents, i) 20 #endif 21 22 int rga_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr, 23 unsigned long v_addr, int format, uint32_t w, 24 uint32_t h, unsigned long *StartAddr, unsigned long *size); 25 26 int rga_virtual_memory_check(void *vaddr, u32 w, u32 h, u32 format, int fd); 27 int rga_dma_memory_check(struct rga_dma_buffer *rga_dma_buffer, struct rga_img_info_t *img); 28 29 int rga_iommu_map_sgt(struct sg_table *sgt, size_t size, 30 struct rga_dma_buffer *buffer, 31 struct device *rga_dev); 32 int rga_iommu_map(phys_addr_t paddr, size_t size, 33 struct rga_dma_buffer *buffer, 34 struct device *rga_dev); 35 void rga_iommu_unmap(struct rga_dma_buffer *buffer); 36 37 int rga_dma_map_buf(struct dma_buf *dma_buf, struct rga_dma_buffer *rga_dma_buffer, 38 enum dma_data_direction dir, struct device *rga_dev); 39 int rga_dma_map_fd(int fd, struct rga_dma_buffer *rga_dma_buffer, 40 enum dma_data_direction dir, struct device *rga_dev); 41 void rga_dma_unmap_buf(struct rga_dma_buffer *rga_dma_buffer); 42 43 void rga_dma_sync_flush_range(void *pstart, void *pend, struct rga_scheduler_t *scheduler); 44 45 #endif /* #ifndef __RGA3_DMA_BUF_H__ */ 46 47