Lines Matching defs:iommu

3  * omap iommu: tlb and pagetable primitives
18 #include <linux/iommu.h>
19 #include <linux/omap-iommu.h>
30 #include <linux/platform_data/iommu-omap.h>
33 #include "omap-iommu.h"
57 * @dom: generic iommu domain handle
325 * load_iotlb_entry - Set an iommu tlb entry
326 * @obj: target iommu
327 * @e: an iommu tlb entry info
401 * flush_iotlb_page - Clear an iommu tlb entry
402 * @obj: target iommu
403 * @da: iommu device virtual address
405 * Clear an iommu tlb entry which includes 'da' address.
439 * flush_iotlb_all - Clear all iommu tlb entries
440 * @obj: target iommu
661 * omap_iopgtable_store_entry - Make an iommu pte entry
662 * @obj: target iommu
663 * @e: an iommu tlb entry info
678 * iopgtable_lookup_entry - Lookup an iommu pte entry
679 * @obj: target iommu
680 * @da: iommu device virtual address
681 * @ppgd: iommu pgd entry pointer to be returned
682 * @ppte: iommu pte entry pointer to be returned
753 * iopgtable_clear_entry - Remove an iommu pte entry
754 * @obj: target iommu
755 * @da: iommu device virtual address
842 * omap_iommu_attach() - attach iommu device to an iommu domain
843 * @obj: target omap iommu device
879 * omap_iommu_detach - release iommu device
880 * @obj: target iommu
941 * omap_iommu_domain_deactivate - deactivate attached iommu devices
942 * @domain: iommu domain attached to the target iommu device
952 struct omap_iommu_device *iommu;
959 iommu = omap_domain->iommus;
960 iommu += (omap_domain->num_iommus - 1);
961 for (i = 0; i < omap_domain->num_iommus; i++, iommu--) {
962 oiommu = iommu->iommu_dev;
971 * omap_iommu_domain_activate - activate attached iommu devices
972 * @domain: iommu domain attached to the target iommu device
981 struct omap_iommu_device *iommu;
988 iommu = omap_domain->iommus;
989 for (i = 0; i < omap_domain->num_iommus; i++, iommu++) {
990 oiommu = iommu->iommu_dev;
999 * omap_iommu_runtime_suspend - disable an iommu device
1000 * @dev: iommu device
1041 * omap_iommu_runtime_resume - enable an iommu device
1042 * @dev: iommu device
1089 * @dev: iommu device
1108 if (!of_device_is_compatible(np, "ti,dra7-dsp-iommu"))
1128 if (!of_device_is_compatible(np, "ti,dra7-dsp-iommu"))
1194 if (of_property_read_bool(of, "ti,iommu-bus-err-back"))
1232 err = iommu_device_sysfs_add(&obj->iommu, obj->dev, NULL,
1237 err = iommu_device_register(&obj->iommu, &omap_iommu_ops, &pdev->dev);
1254 iommu_device_sysfs_remove(&obj->iommu);
1268 iommu_device_sysfs_remove(&obj->iommu);
1269 iommu_device_unregister(&obj->iommu);
1288 { .compatible = "ti,omap2-iommu" },
1289 { .compatible = "ti,omap4-iommu" },
1290 { .compatible = "ti,dra7-iommu" },
1291 { .compatible = "ti,dra7-dsp-iommu" },
1299 .name = "omap-iommu",
1325 struct omap_iommu_device *iommu;
1342 iommu = omap_domain->iommus;
1343 for (i = 0; i < omap_domain->num_iommus; i++, iommu++) {
1344 oiommu = iommu->iommu_dev;
1355 iommu--;
1356 oiommu = iommu->iommu_dev;
1369 struct omap_iommu_device *iommu;
1377 iommu = omap_domain->iommus;
1378 for (i = 0; i < omap_domain->num_iommus; i++, iommu++) {
1379 oiommu = iommu->iommu_dev;
1411 struct omap_iommu_device *iommu;
1418 odomain->iommus = kcalloc(odomain->num_iommus, sizeof(*iommu),
1423 iommu = odomain->iommus;
1424 for (i = 0; i < odomain->num_iommus; i++, iommu++) {
1425 iommu->pgtable = kzalloc(IOPGD_TABLE_SIZE, GFP_ATOMIC);
1426 if (!iommu->pgtable)
1433 if (WARN_ON(!IS_ALIGNED((long)iommu->pgtable,
1444 struct omap_iommu_device *iommu = odomain->iommus;
1446 for (i = 0; iommu && i < odomain->num_iommus; i++, iommu++)
1447 kfree(iommu->pgtable);
1459 struct omap_iommu_device *iommu;
1465 dev_err(dev, "device doesn't have an associated iommu\n");
1473 dev_err(dev, "iommu domain is already attached\n");
1480 dev_err(dev, "failed to allocate required iommu data %d\n",
1485 iommu = omap_domain->iommus;
1486 for (i = 0; i < omap_domain->num_iommus; i++, iommu++, arch_data++) {
1487 /* configure and enable the omap iommu */
1489 ret = omap_iommu_attach(oiommu, iommu->pgtable);
1491 dev_err(dev, "can't get omap iommu: %d\n", ret);
1496 iommu->iommu_dev = oiommu;
1505 iommu--;
1507 oiommu = iommu->iommu_dev;
1509 iommu->iommu_dev = NULL;
1523 struct omap_iommu_device *iommu = omap_domain->iommus;
1542 iommu += (omap_domain->num_iommus - 1);
1544 for (i = 0; i < omap_domain->num_iommus; i++, iommu--, arch_data--) {
1545 oiommu = iommu->iommu_dev;
1549 iommu->iommu_dev = NULL;
1593 * An iommu device is still attached
1606 struct omap_iommu_device *iommu = omap_domain->iommus;
1607 struct omap_iommu *oiommu = iommu->iommu_dev;
1614 * so perform the lookup using just the first iommu
1648 * Allocate the per-device iommu structure for DT-based devices.
1658 * since #iommu-cells = 0 for OMAP
1705 return &oiommu->iommu;