Lines Matching refs:imgu

93 void *imgu_dmamap_alloc(struct imgu_device *imgu, struct imgu_css_map *map,  in imgu_dmamap_alloc()  argument
96 unsigned long shift = iova_shift(&imgu->iova_domain); in imgu_dmamap_alloc()
97 struct device *dev = &imgu->pci_dev->dev; in imgu_dmamap_alloc()
107 iova = alloc_iova(&imgu->iova_domain, size >> shift, in imgu_dmamap_alloc()
108 imgu->mmu->aperture_end >> shift, 0); in imgu_dmamap_alloc()
117 iovaddr = iova_dma_addr(&imgu->iova_domain, iova); in imgu_dmamap_alloc()
119 rval = imgu_mmu_map(imgu->mmu, iovaddr, in imgu_dmamap_alloc()
133 map->daddr = iova_dma_addr(&imgu->iova_domain, iova); in imgu_dmamap_alloc()
142 imgu_mmu_unmap(imgu->mmu, iova_dma_addr(&imgu->iova_domain, iova), in imgu_dmamap_alloc()
146 __free_iova(&imgu->iova_domain, iova); in imgu_dmamap_alloc()
151 void imgu_dmamap_unmap(struct imgu_device *imgu, struct imgu_css_map *map) in imgu_dmamap_unmap() argument
155 iova = find_iova(&imgu->iova_domain, in imgu_dmamap_unmap()
156 iova_pfn(&imgu->iova_domain, map->daddr)); in imgu_dmamap_unmap()
160 imgu_mmu_unmap(imgu->mmu, iova_dma_addr(&imgu->iova_domain, iova), in imgu_dmamap_unmap()
161 iova_size(iova) << iova_shift(&imgu->iova_domain)); in imgu_dmamap_unmap()
163 __free_iova(&imgu->iova_domain, iova); in imgu_dmamap_unmap()
169 void imgu_dmamap_free(struct imgu_device *imgu, struct imgu_css_map *map) in imgu_dmamap_free() argument
171 dev_dbg(&imgu->pci_dev->dev, "%s: freeing %zu @ IOVA %pad @ VA %p\n", in imgu_dmamap_free()
177 imgu_dmamap_unmap(imgu, map); in imgu_dmamap_free()
184 int imgu_dmamap_map_sg(struct imgu_device *imgu, struct scatterlist *sglist, in imgu_dmamap_map_sg() argument
187 unsigned long shift = iova_shift(&imgu->iova_domain); in imgu_dmamap_map_sg()
203 size = iova_align(&imgu->iova_domain, size); in imgu_dmamap_map_sg()
204 dev_dbg(&imgu->pci_dev->dev, "dmamap: mapping sg %d entries, %zu pages\n", in imgu_dmamap_map_sg()
207 iova = alloc_iova(&imgu->iova_domain, size >> shift, in imgu_dmamap_map_sg()
208 imgu->mmu->aperture_end >> shift, 0); in imgu_dmamap_map_sg()
212 dev_dbg(&imgu->pci_dev->dev, "dmamap: iova low pfn %lu, high pfn %lu\n", in imgu_dmamap_map_sg()
215 if (imgu_mmu_map_sg(imgu->mmu, iova_dma_addr(&imgu->iova_domain, iova), in imgu_dmamap_map_sg()
220 map->daddr = iova_dma_addr(&imgu->iova_domain, iova); in imgu_dmamap_map_sg()
226 __free_iova(&imgu->iova_domain, iova); in imgu_dmamap_map_sg()
231 int imgu_dmamap_init(struct imgu_device *imgu) in imgu_dmamap_init() argument
240 base_pfn = max_t(unsigned long, 1, imgu->mmu->aperture_start >> order); in imgu_dmamap_init()
241 init_iova_domain(&imgu->iova_domain, 1UL << order, base_pfn); in imgu_dmamap_init()
246 void imgu_dmamap_exit(struct imgu_device *imgu) in imgu_dmamap_exit() argument
248 put_iova_domain(&imgu->iova_domain); in imgu_dmamap_exit()