Merge branches 'iommu/fixes', 'arm/mediatek', 'arm/smmu', 'arm/exynos', 'unisoc'...
[linux-2.6-microblaze.git] / drivers / iommu / arm / arm-smmu-v3 / arm-smmu-v3.h
index f985817..46e8c49 100644 (file)
 #define GERROR_PRIQ_ABT_ERR            (1 << 3)
 #define GERROR_EVTQ_ABT_ERR            (1 << 2)
 #define GERROR_CMDQ_ERR                        (1 << 0)
-#define GERROR_ERR_MASK                        0xfd
+#define GERROR_ERR_MASK                        0x1fd
 
 #define ARM_SMMU_GERRORN               0x64
 
@@ -410,8 +410,6 @@ struct arm_smmu_cmdq_ent {
                #define CMDQ_OP_PREFETCH_CFG    0x1
                struct {
                        u32                     sid;
-                       u8                      size;
-                       u64                     addr;
                } prefetch;
 
                #define CMDQ_OP_CFGI_STE        0x3
@@ -639,6 +637,15 @@ struct arm_smmu_device {
 
        /* IOMMU core code handle */
        struct iommu_device             iommu;
+
+       struct rb_root                  streams;
+       struct mutex                    streams_mutex;
+};
+
+struct arm_smmu_stream {
+       u32                             id;
+       struct arm_smmu_master          *master;
+       struct rb_node                  node;
 };
 
 /* SMMU private data for each master */
@@ -647,8 +654,8 @@ struct arm_smmu_master {
        struct device                   *dev;
        struct arm_smmu_domain          *domain;
        struct list_head                domain_head;
-       u32                             *sids;
-       unsigned int                    num_sids;
+       struct arm_smmu_stream          *streams;
+       unsigned int                    num_streams;
        bool                            ats_enabled;
        bool                            sva_enabled;
        struct list_head                bonds;
@@ -668,7 +675,6 @@ struct arm_smmu_domain {
        struct mutex                    init_mutex; /* Protects smmu pointer */
 
        struct io_pgtable_ops           *pgtbl_ops;
-       bool                            non_strict;
        atomic_t                        nr_ats_masters;
 
        enum arm_smmu_domain_stage      stage;