Lines Matching defs:dom

66 	struct sprd_iommu_domain	*dom;
86 static struct sprd_iommu_domain *to_sprd_domain(struct iommu_domain *dom)
88 return container_of(dom, struct sprd_iommu_domain, domain);
138 struct sprd_iommu_domain *dom;
140 dom = kzalloc(sizeof(*dom), GFP_KERNEL);
141 if (!dom)
144 spin_lock_init(&dom->pgtlock);
146 dom->domain.geometry.aperture_start = 0;
147 dom->domain.geometry.aperture_end = SZ_256M - 1;
148 dom->domain.geometry.force_aperture = true;
150 return &dom->domain;
153 static void sprd_iommu_first_vpn(struct sprd_iommu_domain *dom)
155 struct sprd_iommu_device *sdev = dom->sdev;
164 val = dom->domain.geometry.aperture_start >> SPRD_IOMMU_PAGE_SHIFT;
168 static void sprd_iommu_vpn_range(struct sprd_iommu_domain *dom)
170 struct sprd_iommu_device *sdev = dom->sdev;
179 val = (dom->domain.geometry.aperture_end -
180 dom->domain.geometry.aperture_start) >> SPRD_IOMMU_PAGE_SHIFT;
184 static void sprd_iommu_first_ppn(struct sprd_iommu_domain *dom)
186 u32 val = dom->pgt_pa >> SPRD_IOMMU_PAGE_SHIFT;
187 struct sprd_iommu_device *sdev = dom->sdev;
225 static void sprd_iommu_cleanup(struct sprd_iommu_domain *dom)
230 if (!dom->sdev)
233 pgt_size = sprd_iommu_pgt_size(&dom->domain);
234 dma_free_coherent(dom->sdev->dev, pgt_size, dom->pgt_va, dom->pgt_pa);
235 dom->sdev = NULL;
236 sprd_iommu_hw_en(dom->sdev, false);
241 struct sprd_iommu_domain *dom = to_sprd_domain(domain);
243 sprd_iommu_cleanup(dom);
244 kfree(dom);
251 struct sprd_iommu_domain *dom = to_sprd_domain(domain);
255 if (sdev->dom == dom)
259 if (!dom->pgt_va) {
260 dom->pgt_va = dma_alloc_coherent(sdev->dev, pgt_size, &dom->pgt_pa, GFP_KERNEL);
261 if (!dom->pgt_va)
264 dom->sdev = sdev;
267 sdev->dom = dom;
275 sprd_iommu_first_ppn(dom);
276 sprd_iommu_first_vpn(dom);
277 sprd_iommu_vpn_range(dom);
288 struct sprd_iommu_domain *dom = to_sprd_domain(domain);
297 if (!dom->sdev) {
303 dev_err(dom->sdev->dev, "(iova(0x%lx) + size(%zx)) are not in the range!\n",
308 pgt_base_iova = dom->pgt_va + ((iova - start) >> SPRD_IOMMU_PAGE_SHIFT);
310 spin_lock_irqsave(&dom->pgtlock, flags);
315 spin_unlock_irqrestore(&dom->pgtlock, flags);
325 struct sprd_iommu_domain *dom = to_sprd_domain(domain);
335 pgt_base_iova = dom->pgt_va + ((iova - start) >> SPRD_IOMMU_PAGE_SHIFT);
337 spin_lock_irqsave(&dom->pgtlock, flags);
339 spin_unlock_irqrestore(&dom->pgtlock, flags);
347 struct sprd_iommu_domain *dom = to_sprd_domain(domain);
350 if (dom->sdev->ver == SPRD_IOMMU_EX)
356 sprd_iommu_write(dom->sdev, reg, 0xffffffff);
369 struct sprd_iommu_domain *dom = to_sprd_domain(domain);
378 spin_lock_irqsave(&dom->pgtlock, flags);
379 pa = *(dom->pgt_va + ((iova - start) >> SPRD_IOMMU_PAGE_SHIFT));
381 spin_unlock_irqrestore(&dom->pgtlock, flags);