diff options
| -rw-r--r-- | drivers/iommu/arm/arm-smmu/arm-smmu.c | 13 | ||||
| -rw-r--r-- | drivers/iommu/arm/arm-smmu/arm-smmu.h | 1 | 
2 files changed, 14 insertions, 0 deletions
| diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu.c b/drivers/iommu/arm/arm-smmu/arm-smmu.c index 6f72c4d208ca..d20ce4d57df2 100644 --- a/drivers/iommu/arm/arm-smmu/arm-smmu.c +++ b/drivers/iommu/arm/arm-smmu/arm-smmu.c @@ -1450,6 +1450,18 @@ static void arm_smmu_release_device(struct device *dev)  	iommu_fwspec_free(dev);  } +static void arm_smmu_probe_finalize(struct device *dev) +{ +	struct arm_smmu_master_cfg *cfg; +	struct arm_smmu_device *smmu; + +	cfg = dev_iommu_priv_get(dev); +	smmu = cfg->smmu; + +	if (smmu->impl->probe_finalize) +		smmu->impl->probe_finalize(smmu, dev); +} +  static struct iommu_group *arm_smmu_device_group(struct device *dev)  {  	struct arm_smmu_master_cfg *cfg = dev_iommu_priv_get(dev); @@ -1569,6 +1581,7 @@ static struct iommu_ops arm_smmu_ops = {  	.iova_to_phys		= arm_smmu_iova_to_phys,  	.probe_device		= arm_smmu_probe_device,  	.release_device		= arm_smmu_release_device, +	.probe_finalize		= arm_smmu_probe_finalize,  	.device_group		= arm_smmu_device_group,  	.enable_nesting		= arm_smmu_enable_nesting,  	.set_pgtable_quirks	= arm_smmu_set_pgtable_quirks, diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu.h b/drivers/iommu/arm/arm-smmu/arm-smmu.h index c31a59d35c64..147c95e7c59c 100644 --- a/drivers/iommu/arm/arm-smmu/arm-smmu.h +++ b/drivers/iommu/arm/arm-smmu/arm-smmu.h @@ -439,6 +439,7 @@ struct arm_smmu_impl {  				  struct device *dev, int start);  	void (*write_s2cr)(struct arm_smmu_device *smmu, int idx);  	void (*write_sctlr)(struct arm_smmu_device *smmu, int idx, u32 reg); +	void (*probe_finalize)(struct arm_smmu_device *smmu, struct device *dev);  };  #define INVALID_SMENDX			-1 | 
