Lines Matching refs:qcom_domain
116 struct qcom_iommu_domain *qcom_domain = cookie; in qcom_iommu_tlb_sync() local
117 struct iommu_fwspec *fwspec = qcom_domain->fwspec; in qcom_iommu_tlb_sync()
121 struct qcom_iommu_ctx *ctx = to_ctx(qcom_domain, fwspec->ids[i]); in qcom_iommu_tlb_sync()
135 struct qcom_iommu_domain *qcom_domain = cookie; in qcom_iommu_tlb_inv_context() local
136 struct iommu_fwspec *fwspec = qcom_domain->fwspec; in qcom_iommu_tlb_inv_context()
140 struct qcom_iommu_ctx *ctx = to_ctx(qcom_domain, fwspec->ids[i]); in qcom_iommu_tlb_inv_context()
150 struct qcom_iommu_domain *qcom_domain = cookie; in qcom_iommu_tlb_inv_range_nosync() local
151 struct iommu_fwspec *fwspec = qcom_domain->fwspec; in qcom_iommu_tlb_inv_range_nosync()
157 struct qcom_iommu_ctx *ctx = to_ctx(qcom_domain, fwspec->ids[i]); in qcom_iommu_tlb_inv_range_nosync()
220 struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain); in qcom_iommu_init_domain() local
227 mutex_lock(&qcom_domain->init_mutex); in qcom_iommu_init_domain()
228 if (qcom_domain->iommu) in qcom_iommu_init_domain()
239 qcom_domain->iommu = qcom_iommu; in qcom_iommu_init_domain()
240 qcom_domain->fwspec = fwspec; in qcom_iommu_init_domain()
242 pgtbl_ops = alloc_io_pgtable_ops(ARM_32_LPAE_S1, &pgtbl_cfg, qcom_domain); in qcom_iommu_init_domain()
253 struct qcom_iommu_ctx *ctx = to_ctx(qcom_domain, fwspec->ids[i]); in qcom_iommu_init_domain()
309 mutex_unlock(&qcom_domain->init_mutex); in qcom_iommu_init_domain()
312 qcom_domain->pgtbl_ops = pgtbl_ops; in qcom_iommu_init_domain()
317 qcom_domain->iommu = NULL; in qcom_iommu_init_domain()
319 mutex_unlock(&qcom_domain->init_mutex); in qcom_iommu_init_domain()
325 struct qcom_iommu_domain *qcom_domain; in qcom_iommu_domain_alloc_paging() local
332 qcom_domain = kzalloc(sizeof(*qcom_domain), GFP_KERNEL); in qcom_iommu_domain_alloc_paging()
333 if (!qcom_domain) in qcom_iommu_domain_alloc_paging()
336 mutex_init(&qcom_domain->init_mutex); in qcom_iommu_domain_alloc_paging()
337 spin_lock_init(&qcom_domain->pgtbl_lock); in qcom_iommu_domain_alloc_paging()
338 qcom_domain->domain.pgsize_bitmap = SZ_4K; in qcom_iommu_domain_alloc_paging()
340 return &qcom_domain->domain; in qcom_iommu_domain_alloc_paging()
345 struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain); in qcom_iommu_domain_free() local
347 if (qcom_domain->iommu) { in qcom_iommu_domain_free()
354 pm_runtime_get_sync(qcom_domain->iommu->dev); in qcom_iommu_domain_free()
355 free_io_pgtable_ops(qcom_domain->pgtbl_ops); in qcom_iommu_domain_free()
356 pm_runtime_put_sync(qcom_domain->iommu->dev); in qcom_iommu_domain_free()
359 kfree(qcom_domain); in qcom_iommu_domain_free()
365 struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain); in qcom_iommu_attach_dev() local
384 if (qcom_domain->iommu != qcom_iommu) in qcom_iommu_attach_dev()
394 struct qcom_iommu_domain *qcom_domain; in qcom_iommu_identity_attach() local
402 qcom_domain = to_qcom_iommu_domain(domain); in qcom_iommu_identity_attach()
403 if (WARN_ON(!qcom_domain->iommu)) in qcom_iommu_identity_attach()
408 struct qcom_iommu_ctx *ctx = to_ctx(qcom_domain, fwspec->ids[i]); in qcom_iommu_identity_attach()
434 struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain); in qcom_iommu_map() local
435 struct io_pgtable_ops *ops = qcom_domain->pgtbl_ops; in qcom_iommu_map()
440 spin_lock_irqsave(&qcom_domain->pgtbl_lock, flags); in qcom_iommu_map()
442 spin_unlock_irqrestore(&qcom_domain->pgtbl_lock, flags); in qcom_iommu_map()
452 struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain); in qcom_iommu_unmap() local
453 struct io_pgtable_ops *ops = qcom_domain->pgtbl_ops; in qcom_iommu_unmap()
463 pm_runtime_get_sync(qcom_domain->iommu->dev); in qcom_iommu_unmap()
464 spin_lock_irqsave(&qcom_domain->pgtbl_lock, flags); in qcom_iommu_unmap()
466 spin_unlock_irqrestore(&qcom_domain->pgtbl_lock, flags); in qcom_iommu_unmap()
467 pm_runtime_put_sync(qcom_domain->iommu->dev); in qcom_iommu_unmap()
474 struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain); in qcom_iommu_flush_iotlb_all() local
475 struct io_pgtable *pgtable = container_of(qcom_domain->pgtbl_ops, in qcom_iommu_flush_iotlb_all()
477 if (!qcom_domain->pgtbl_ops) in qcom_iommu_flush_iotlb_all()
480 pm_runtime_get_sync(qcom_domain->iommu->dev); in qcom_iommu_flush_iotlb_all()
482 pm_runtime_put_sync(qcom_domain->iommu->dev); in qcom_iommu_flush_iotlb_all()
496 struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain); in qcom_iommu_iova_to_phys() local
497 struct io_pgtable_ops *ops = qcom_domain->pgtbl_ops; in qcom_iommu_iova_to_phys()
502 spin_lock_irqsave(&qcom_domain->pgtbl_lock, flags); in qcom_iommu_iova_to_phys()
504 spin_unlock_irqrestore(&qcom_domain->pgtbl_lock, flags); in qcom_iommu_iova_to_phys()