Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[firefly-linux-kernel-4.4.55.git] / drivers / iommu / io-pgtable.h
index fdd792c3769825528b6c443c3e3a9440b7b6beb0..10e32f69c6681368cb04023173a4bcf0b859839a 100644 (file)
@@ -5,6 +5,10 @@
  * Public API for use by IOMMU drivers
  */
 enum io_pgtable_fmt {
+       ARM_32_LPAE_S1,
+       ARM_32_LPAE_S2,
+       ARM_64_LPAE_S1,
+       ARM_64_LPAE_S2,
        IO_PGTABLE_NUM_FMTS,
 };
 
@@ -39,7 +43,8 @@ struct iommu_gather_ops {
  * @tlb:           TLB management callbacks for this set of tables.
  */
 struct io_pgtable_cfg {
-       int                             quirks; /* IO_PGTABLE_QUIRK_* */
+       #define IO_PGTABLE_QUIRK_ARM_NS (1 << 0)        /* Set NS bit in PTEs */
+       int                             quirks;
        unsigned long                   pgsize_bitmap;
        unsigned int                    ias;
        unsigned int                    oas;
@@ -47,6 +52,16 @@ struct io_pgtable_cfg {
 
        /* Low-level data specific to the table format */
        union {
+               struct {
+                       u64     ttbr[2];
+                       u64     tcr;
+                       u64     mair[2];
+               } arm_lpae_s1_cfg;
+
+               struct {
+                       u64     vttbr;
+                       u64     vtcr;
+               } arm_lpae_s2_cfg;
        };
 };