iommu/io-pgtable: Add MTK 4GB mode in Short-descriptor
authorYong Wu <yong.wu@mediatek.com>
Sun, 13 Mar 2016 22:01:10 +0000 (06:01 +0800)
committerJoerg Roedel <jroedel@suse.de>
Tue, 5 Apr 2016 13:39:37 +0000 (15:39 +0200)
commit1afe23194d0580bc332fe27c4e8717f6562348c5
tree0781932882ab685b6c4c388db2c2bd1a9b3ffcd0
parent54c6d242fa32cba8313936e3a35f27dc2c7c3e04
iommu/io-pgtable: Add MTK 4GB mode in Short-descriptor

In MT8173, Normally the first 1GB PA is for the HW SRAM and Regs,
so the PA will be 33bits if the dram size is 4GB. We have a
"DRAM 4GB mode" toggle bit for this. If it's enabled, from CPU's
point of view, the dram PA will be from 0x1_00000000~0x1_ffffffff.

In short descriptor, the pagetable descriptor is always 32bit.
Mediatek extend bit9 in the lvl1 and lvl2 pgtable descriptor
as the 4GB mode.

In the 4GB mode, the bit9 must be set, then M4U help add 0x1_00000000
based on the PA in pagetable. Thus the M4U output address to EMI is
always 33bits(the input address is still 32bits).

We add a special quirk for this MTK-4GB mode. And in the standard
spec, Bit9 in the lvl1 is "IMPLEMENTATION DEFINED", while it's AP[2]
in the lvl2, therefore if this quirk is enabled, NO_PERMS is also
expected.

Signed-off-by: Yong Wu <yong.wu@mediatek.com>
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/io-pgtable-arm-v7s.c
drivers/iommu/io-pgtable.h