summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/iommu.h21
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)
{