Lines Matching refs:qcom_domain
215 struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain); in qcom_iommu_init_domain() local
221 mutex_lock(&qcom_domain->init_mutex); in qcom_iommu_init_domain()
222 if (qcom_domain->iommu) in qcom_iommu_init_domain()
233 qcom_domain->iommu = qcom_iommu; in qcom_iommu_init_domain()
291 mutex_unlock(&qcom_domain->init_mutex); in qcom_iommu_init_domain()
294 qcom_domain->pgtbl_ops = pgtbl_ops; in qcom_iommu_init_domain()
299 qcom_domain->iommu = NULL; in qcom_iommu_init_domain()
301 mutex_unlock(&qcom_domain->init_mutex); in qcom_iommu_init_domain()
307 struct qcom_iommu_domain *qcom_domain; in qcom_iommu_domain_alloc() local
316 qcom_domain = kzalloc(sizeof(*qcom_domain), GFP_KERNEL); in qcom_iommu_domain_alloc()
317 if (!qcom_domain) in qcom_iommu_domain_alloc()
321 iommu_get_dma_cookie(&qcom_domain->domain)) { in qcom_iommu_domain_alloc()
322 kfree(qcom_domain); in qcom_iommu_domain_alloc()
326 mutex_init(&qcom_domain->init_mutex); in qcom_iommu_domain_alloc()
327 spin_lock_init(&qcom_domain->pgtbl_lock); in qcom_iommu_domain_alloc()
329 return &qcom_domain->domain; in qcom_iommu_domain_alloc()
334 struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain); in qcom_iommu_domain_free() local
336 if (WARN_ON(qcom_domain->iommu)) /* forgot to detach? */ in qcom_iommu_domain_free()
346 pm_runtime_get_sync(qcom_domain->iommu->dev); in qcom_iommu_domain_free()
348 free_io_pgtable_ops(qcom_domain->pgtbl_ops); in qcom_iommu_domain_free()
350 pm_runtime_put_sync(qcom_domain->iommu->dev); in qcom_iommu_domain_free()
352 kfree(qcom_domain); in qcom_iommu_domain_free()
358 struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain); in qcom_iommu_attach_dev() local
377 if (qcom_domain->iommu != qcom_iommu) { in qcom_iommu_attach_dev()
380 dev_name(qcom_domain->iommu->dev), in qcom_iommu_attach_dev()
392 struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain); in qcom_iommu_detach_dev() local
395 if (!qcom_domain->iommu) in qcom_iommu_detach_dev()
409 qcom_domain->iommu = NULL; in qcom_iommu_detach_dev()
417 struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain); in qcom_iommu_map() local
418 struct io_pgtable_ops *ops = qcom_domain->pgtbl_ops; in qcom_iommu_map()
423 spin_lock_irqsave(&qcom_domain->pgtbl_lock, flags); in qcom_iommu_map()
425 spin_unlock_irqrestore(&qcom_domain->pgtbl_lock, flags); in qcom_iommu_map()
434 struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain); in qcom_iommu_unmap() local
435 struct io_pgtable_ops *ops = qcom_domain->pgtbl_ops; in qcom_iommu_unmap()
445 pm_runtime_get_sync(qcom_domain->iommu->dev); in qcom_iommu_unmap()
446 spin_lock_irqsave(&qcom_domain->pgtbl_lock, flags); in qcom_iommu_unmap()
448 spin_unlock_irqrestore(&qcom_domain->pgtbl_lock, flags); in qcom_iommu_unmap()
449 pm_runtime_put_sync(qcom_domain->iommu->dev); in qcom_iommu_unmap()
456 struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain); in qcom_iommu_iotlb_sync() local
457 struct io_pgtable *pgtable = container_of(qcom_domain->pgtbl_ops, in qcom_iommu_iotlb_sync()
459 if (!qcom_domain->pgtbl_ops) in qcom_iommu_iotlb_sync()
462 pm_runtime_get_sync(qcom_domain->iommu->dev); in qcom_iommu_iotlb_sync()
464 pm_runtime_put_sync(qcom_domain->iommu->dev); in qcom_iommu_iotlb_sync()
472 struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain); in qcom_iommu_iova_to_phys() local
473 struct io_pgtable_ops *ops = qcom_domain->pgtbl_ops; in qcom_iommu_iova_to_phys()
478 spin_lock_irqsave(&qcom_domain->pgtbl_lock, flags); in qcom_iommu_iova_to_phys()
480 spin_unlock_irqrestore(&qcom_domain->pgtbl_lock, flags); in qcom_iommu_iova_to_phys()