qcom_iommu 86 drivers/iommu/qcom_iommu.c struct qcom_iommu_dev *qcom_iommu = to_iommu(fwspec); qcom_iommu 87 drivers/iommu/qcom_iommu.c if (!qcom_iommu) qcom_iommu 89 drivers/iommu/qcom_iommu.c return qcom_iommu->ctxs[asid - 1]; qcom_iommu 224 drivers/iommu/qcom_iommu.c struct qcom_iommu_dev *qcom_iommu, qcom_iommu 242 drivers/iommu/qcom_iommu.c .iommu_dev = qcom_iommu->dev, qcom_iommu 245 drivers/iommu/qcom_iommu.c qcom_domain->iommu = qcom_iommu; qcom_iommu 248 drivers/iommu/qcom_iommu.c dev_err(qcom_iommu->dev, "failed to allocate pagetable ops\n"); qcom_iommu 262 drivers/iommu/qcom_iommu.c ret = qcom_scm_restore_sec_cfg(qcom_iommu->sec_id, ctx->asid); qcom_iommu 264 drivers/iommu/qcom_iommu.c dev_err(qcom_iommu->dev, "secure init failed: %d\n", ret); qcom_iommu 368 drivers/iommu/qcom_iommu.c struct qcom_iommu_dev *qcom_iommu = to_iommu(fwspec); qcom_iommu 372 drivers/iommu/qcom_iommu.c if (!qcom_iommu) { qcom_iommu 378 drivers/iommu/qcom_iommu.c pm_runtime_get_sync(qcom_iommu->dev); qcom_iommu 379 drivers/iommu/qcom_iommu.c ret = qcom_iommu_init_domain(domain, qcom_iommu, fwspec); qcom_iommu 380 drivers/iommu/qcom_iommu.c pm_runtime_put_sync(qcom_iommu->dev); qcom_iommu 388 drivers/iommu/qcom_iommu.c if (qcom_domain->iommu != qcom_iommu) { qcom_iommu 392 drivers/iommu/qcom_iommu.c dev_name(qcom_iommu->dev)); qcom_iommu 402 drivers/iommu/qcom_iommu.c struct qcom_iommu_dev *qcom_iommu = to_iommu(fwspec); qcom_iommu 409 drivers/iommu/qcom_iommu.c pm_runtime_get_sync(qcom_iommu->dev); qcom_iommu 418 drivers/iommu/qcom_iommu.c pm_runtime_put_sync(qcom_iommu->dev); qcom_iommu 518 drivers/iommu/qcom_iommu.c struct qcom_iommu_dev *qcom_iommu = to_iommu(dev_iommu_fwspec_get(dev)); qcom_iommu 522 drivers/iommu/qcom_iommu.c if (!qcom_iommu) qcom_iommu 530 drivers/iommu/qcom_iommu.c link = device_link_add(dev, qcom_iommu->dev, DL_FLAG_PM_RUNTIME); qcom_iommu 532 drivers/iommu/qcom_iommu.c dev_err(qcom_iommu->dev, "Unable to create device link between %s and %s\n", qcom_iommu 533 drivers/iommu/qcom_iommu.c dev_name(qcom_iommu->dev), dev_name(dev)); qcom_iommu 542 drivers/iommu/qcom_iommu.c iommu_device_link(&qcom_iommu->iommu, dev); qcom_iommu 549 drivers/iommu/qcom_iommu.c struct qcom_iommu_dev *qcom_iommu = to_iommu(dev_iommu_fwspec_get(dev)); qcom_iommu 551 drivers/iommu/qcom_iommu.c if (!qcom_iommu) qcom_iommu 554 drivers/iommu/qcom_iommu.c iommu_device_unlink(&qcom_iommu->iommu, dev); qcom_iommu 562 drivers/iommu/qcom_iommu.c struct qcom_iommu_dev *qcom_iommu; qcom_iommu 577 drivers/iommu/qcom_iommu.c qcom_iommu = platform_get_drvdata(iommu_pdev); qcom_iommu 584 drivers/iommu/qcom_iommu.c WARN_ON(asid > qcom_iommu->num_ctxs)) qcom_iommu 588 drivers/iommu/qcom_iommu.c fwspec->iommu_priv = qcom_iommu; qcom_iommu 594 drivers/iommu/qcom_iommu.c if (WARN_ON(qcom_iommu != fwspec->iommu_priv)) qcom_iommu 619 drivers/iommu/qcom_iommu.c static int qcom_iommu_enable_clocks(struct qcom_iommu_dev *qcom_iommu) qcom_iommu 623 drivers/iommu/qcom_iommu.c ret = clk_prepare_enable(qcom_iommu->iface_clk); qcom_iommu 625 drivers/iommu/qcom_iommu.c dev_err(qcom_iommu->dev, "Couldn't enable iface_clk\n"); qcom_iommu 629 drivers/iommu/qcom_iommu.c ret = clk_prepare_enable(qcom_iommu->bus_clk); qcom_iommu 631 drivers/iommu/qcom_iommu.c dev_err(qcom_iommu->dev, "Couldn't enable bus_clk\n"); qcom_iommu 632 drivers/iommu/qcom_iommu.c clk_disable_unprepare(qcom_iommu->iface_clk); qcom_iommu 639 drivers/iommu/qcom_iommu.c static void qcom_iommu_disable_clocks(struct qcom_iommu_dev *qcom_iommu) qcom_iommu 641 drivers/iommu/qcom_iommu.c clk_disable_unprepare(qcom_iommu->bus_clk); qcom_iommu 642 drivers/iommu/qcom_iommu.c clk_disable_unprepare(qcom_iommu->iface_clk); qcom_iommu 707 drivers/iommu/qcom_iommu.c struct qcom_iommu_dev *qcom_iommu = dev_get_drvdata(dev->parent); qcom_iommu 752 drivers/iommu/qcom_iommu.c qcom_iommu->ctxs[ctx->asid - 1] = ctx; qcom_iommu 759 drivers/iommu/qcom_iommu.c struct qcom_iommu_dev *qcom_iommu = dev_get_drvdata(pdev->dev.parent); qcom_iommu 764 drivers/iommu/qcom_iommu.c qcom_iommu->ctxs[ctx->asid - 1] = NULL; qcom_iommu 784 drivers/iommu/qcom_iommu.c static bool qcom_iommu_has_secure_context(struct qcom_iommu_dev *qcom_iommu) qcom_iommu 788 drivers/iommu/qcom_iommu.c for_each_child_of_node(qcom_iommu->dev->of_node, child) qcom_iommu 798 drivers/iommu/qcom_iommu.c struct qcom_iommu_dev *qcom_iommu; qcom_iommu 809 drivers/iommu/qcom_iommu.c qcom_iommu = devm_kzalloc(dev, struct_size(qcom_iommu, ctxs, max_asid), qcom_iommu 811 drivers/iommu/qcom_iommu.c if (!qcom_iommu) qcom_iommu 813 drivers/iommu/qcom_iommu.c qcom_iommu->num_ctxs = max_asid; qcom_iommu 814 drivers/iommu/qcom_iommu.c qcom_iommu->dev = dev; qcom_iommu 818 drivers/iommu/qcom_iommu.c qcom_iommu->local_base = devm_ioremap_resource(dev, res); qcom_iommu 819 drivers/iommu/qcom_iommu.c if (IS_ERR(qcom_iommu->local_base)) qcom_iommu 820 drivers/iommu/qcom_iommu.c return PTR_ERR(qcom_iommu->local_base); qcom_iommu 823 drivers/iommu/qcom_iommu.c qcom_iommu->iface_clk = devm_clk_get(dev, "iface"); qcom_iommu 824 drivers/iommu/qcom_iommu.c if (IS_ERR(qcom_iommu->iface_clk)) { qcom_iommu 826 drivers/iommu/qcom_iommu.c return PTR_ERR(qcom_iommu->iface_clk); qcom_iommu 829 drivers/iommu/qcom_iommu.c qcom_iommu->bus_clk = devm_clk_get(dev, "bus"); qcom_iommu 830 drivers/iommu/qcom_iommu.c if (IS_ERR(qcom_iommu->bus_clk)) { qcom_iommu 832 drivers/iommu/qcom_iommu.c return PTR_ERR(qcom_iommu->bus_clk); qcom_iommu 836 drivers/iommu/qcom_iommu.c &qcom_iommu->sec_id)) { qcom_iommu 841 drivers/iommu/qcom_iommu.c if (qcom_iommu_has_secure_context(qcom_iommu)) { qcom_iommu 849 drivers/iommu/qcom_iommu.c platform_set_drvdata(pdev, qcom_iommu); qcom_iommu 860 drivers/iommu/qcom_iommu.c ret = iommu_device_sysfs_add(&qcom_iommu->iommu, dev, NULL, qcom_iommu 867 drivers/iommu/qcom_iommu.c iommu_device_set_ops(&qcom_iommu->iommu, &qcom_iommu_ops); qcom_iommu 868 drivers/iommu/qcom_iommu.c iommu_device_set_fwnode(&qcom_iommu->iommu, dev->fwnode); qcom_iommu 870 drivers/iommu/qcom_iommu.c ret = iommu_device_register(&qcom_iommu->iommu); qcom_iommu 878 drivers/iommu/qcom_iommu.c if (qcom_iommu->local_base) { qcom_iommu 880 drivers/iommu/qcom_iommu.c writel_relaxed(0xffffffff, qcom_iommu->local_base + SMMU_INTR_SEL_NS); qcom_iommu 889 drivers/iommu/qcom_iommu.c struct qcom_iommu_dev *qcom_iommu = platform_get_drvdata(pdev); qcom_iommu 895 drivers/iommu/qcom_iommu.c iommu_device_sysfs_remove(&qcom_iommu->iommu); qcom_iommu 896 drivers/iommu/qcom_iommu.c iommu_device_unregister(&qcom_iommu->iommu); qcom_iommu 903 drivers/iommu/qcom_iommu.c struct qcom_iommu_dev *qcom_iommu = dev_get_drvdata(dev); qcom_iommu 905 drivers/iommu/qcom_iommu.c return qcom_iommu_enable_clocks(qcom_iommu); qcom_iommu 910 drivers/iommu/qcom_iommu.c struct qcom_iommu_dev *qcom_iommu = dev_get_drvdata(dev); qcom_iommu 912 drivers/iommu/qcom_iommu.c qcom_iommu_disable_clocks(qcom_iommu);