Lines Matching refs:viommu

48 	struct viot_iommu		*viommu;  member
77 static int __init viot_get_pci_iommu_fwnode(struct viot_iommu *viommu, in viot_get_pci_iommu_fwnode() argument
103 viommu->fwnode = dev_fwnode(&pdev->dev); in viot_get_pci_iommu_fwnode()
108 static int __init viot_get_mmio_iommu_fwnode(struct viot_iommu *viommu, in viot_get_mmio_iommu_fwnode() argument
123 viommu->fwnode = &adev->fwnode; in viot_get_mmio_iommu_fwnode()
130 struct viot_iommu *viommu; in viot_get_iommu() local
138 list_for_each_entry(viommu, &viot_iommus, list) in viot_get_iommu()
139 if (viommu->offset == offset) in viot_get_iommu()
140 return viommu; in viot_get_iommu()
145 viommu = kzalloc(sizeof(*viommu), GFP_KERNEL); in viot_get_iommu()
146 if (!viommu) in viot_get_iommu()
149 viommu->offset = offset; in viot_get_iommu()
155 ret = viot_get_pci_iommu_fwnode(viommu, node->pci.segment, in viot_get_iommu()
162 ret = viot_get_mmio_iommu_fwnode(viommu, in viot_get_iommu()
171 list_add(&viommu->list, &viot_iommus); in viot_get_iommu()
172 return viommu; in viot_get_iommu()
175 kfree(viommu); in viot_get_iommu()
212 ep->viommu = viot_get_iommu(node->pci.output_node); in viot_parse_node()
223 ep->viommu = viot_get_iommu(node->mmio.output_node); in viot_parse_node()
232 if (!ep->viommu) { in viot_parse_node()
307 static int viot_dev_iommu_init(struct device *dev, struct viot_iommu *viommu, in viot_dev_iommu_init() argument
312 if (!viommu) in viot_dev_iommu_init()
316 if (device_match_fwnode(dev, viommu->fwnode)) in viot_dev_iommu_init()
319 ops = iommu_ops_from_fwnode(viommu->fwnode); in viot_dev_iommu_init()
324 return acpi_iommu_fwspec_init(dev, epid, viommu->fwnode, ops); in viot_dev_iommu_init()
342 return viot_dev_iommu_init(aliased_dev, ep->viommu, in viot_pci_dev_iommu_init()
360 return viot_dev_iommu_init(&pdev->dev, ep->viommu, in viot_mmio_dev_iommu_init()