Lines Matching refs:fwspec
1632 struct iommu_fwspec *fwspec = dev->iommu_fwspec; in iommu_fwspec_init() local
1634 if (fwspec) in iommu_fwspec_init()
1635 return ops == fwspec->ops ? 0 : -EINVAL; in iommu_fwspec_init()
1637 fwspec = kzalloc(sizeof(*fwspec), GFP_KERNEL); in iommu_fwspec_init()
1638 if (!fwspec) in iommu_fwspec_init()
1642 fwspec->iommu_fwnode = iommu_fwnode; in iommu_fwspec_init()
1643 fwspec->ops = ops; in iommu_fwspec_init()
1644 dev->iommu_fwspec = fwspec; in iommu_fwspec_init()
1651 struct iommu_fwspec *fwspec = dev->iommu_fwspec; in iommu_fwspec_free() local
1653 if (fwspec) { in iommu_fwspec_free()
1654 fwnode_handle_put(fwspec->iommu_fwnode); in iommu_fwspec_free()
1655 kfree(fwspec); in iommu_fwspec_free()
1663 struct iommu_fwspec *fwspec = dev->iommu_fwspec; in iommu_fwspec_add_ids() local
1667 if (!fwspec) in iommu_fwspec_add_ids()
1670 size = offsetof(struct iommu_fwspec, ids[fwspec->num_ids + num_ids]); in iommu_fwspec_add_ids()
1671 if (size > sizeof(*fwspec)) { in iommu_fwspec_add_ids()
1672 fwspec = krealloc(dev->iommu_fwspec, size, GFP_KERNEL); in iommu_fwspec_add_ids()
1673 if (!fwspec) in iommu_fwspec_add_ids()
1678 fwspec->ids[fwspec->num_ids + i] = ids[i]; in iommu_fwspec_add_ids()
1680 fwspec->num_ids += num_ids; in iommu_fwspec_add_ids()
1681 dev->iommu_fwspec = fwspec; in iommu_fwspec_add_ids()