diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/iommu.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/include/linux/iommu.h b/include/linux/iommu.h index 9a631f87d9d5..ec6d5798de81 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -124,6 +124,8 @@ extern struct dentry *iommu_debugfs_top; * @domain_set_attr: Change domain attributes * @pgsize_bitmap: bitmap of supported page sizes * @trigger_fault: trigger a fault on the device attached to an iommu domain + * @reg_read: read an IOMMU register + * @reg_write: write an IOMMU register */ struct iommu_ops { bool (*capable)(enum iommu_cap); @@ -159,6 +161,10 @@ struct iommu_ops { int (*dma_supported)(struct iommu_domain *domain, struct device *dev, u64 mask); void (*trigger_fault)(struct iommu_domain *domain, unsigned long flags); + unsigned long (*reg_read)(struct iommu_domain *domain, + unsigned long offset); + void (*reg_write)(struct iommu_domain *domain, unsigned long val, + unsigned long offset); unsigned long pgsize_bitmap; }; @@ -196,6 +202,10 @@ extern void iommu_set_fault_handler(struct iommu_domain *domain, iommu_fault_handler_t handler, void *token); extern void iommu_trigger_fault(struct iommu_domain *domain, unsigned long flags); +extern unsigned long iommu_reg_read(struct iommu_domain *domain, + unsigned long offset); +extern void iommu_reg_write(struct iommu_domain *domain, unsigned long offset, + unsigned long val); extern int iommu_attach_group(struct iommu_domain *domain, struct iommu_group *group); @@ -390,6 +400,17 @@ static inline void iommu_trigger_fault(struct iommu_domain *domain, { } +static inline unsigned long iommu_reg_read(struct iommu_domain *domain, + unsigned long offset) +{ + return 0; +} + +static inline void iommu_reg_write(struct iommu_domain *domain, + unsigned long val, unsigned long offset) +{ +} + static inline int iommu_attach_group(struct iommu_domain *domain, struct iommu_group *group) { |
