|
@@ -194,7 +194,9 @@ static struct ipmmu_vmsa_device *to_ipmmu(struct device *dev)
|
|
|
#define IMPMBA(n) (0x0280 + ((n) * 4))
|
|
|
#define IMPMBD(n) (0x02c0 + ((n) * 4))
|
|
|
|
|
|
-#define IMUCTR(n) (0x0300 + ((n) * 16))
|
|
|
+#define IMUCTR(n) ((n) < 32 ? IMUCTR0(n) : IMUCTR32(n))
|
|
|
+#define IMUCTR0(n) (0x0300 + ((n) * 16))
|
|
|
+#define IMUCTR32(n) (0x0600 + (((n) - 32) * 16))
|
|
|
#define IMUCTR_FIXADDEN (1 << 31)
|
|
|
#define IMUCTR_FIXADD_MASK (0xff << 16)
|
|
|
#define IMUCTR_FIXADD_SHIFT 16
|
|
@@ -204,7 +206,9 @@ static struct ipmmu_vmsa_device *to_ipmmu(struct device *dev)
|
|
|
#define IMUCTR_FLUSH (1 << 1)
|
|
|
#define IMUCTR_MMUEN (1 << 0)
|
|
|
|
|
|
-#define IMUASID(n) (0x0308 + ((n) * 16))
|
|
|
+#define IMUASID(n) ((n) < 32 ? IMUASID0(n) : IMUASID32(n))
|
|
|
+#define IMUASID0(n) (0x0308 + ((n) * 16))
|
|
|
+#define IMUASID32(n) (0x0608 + (((n) - 32) * 16))
|
|
|
#define IMUASID_ASID8_MASK (0xff << 8)
|
|
|
#define IMUASID_ASID8_SHIFT 8
|
|
|
#define IMUASID_ASID0_MASK (0xff << 0)
|
|
@@ -955,7 +959,7 @@ static int ipmmu_probe(struct platform_device *pdev)
|
|
|
}
|
|
|
|
|
|
mmu->dev = &pdev->dev;
|
|
|
- mmu->num_utlbs = 32;
|
|
|
+ mmu->num_utlbs = 48;
|
|
|
spin_lock_init(&mmu->lock);
|
|
|
bitmap_zero(mmu->ctx, IPMMU_CTX_MAX);
|
|
|
mmu->features = of_device_get_match_data(&pdev->dev);
|