Skip to content

Commit 5a70826

Browse files
zhengnan-chenjoergroedel
authored andcommitted
iommu/mediatek: mt8189: Add MM IOMMUs support
Add support for mt8189 MM IOMMUs. Signed-off-by: Zhengnan Chen <zhengnan.chen@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Reviewed-by: Yong Wu <yong.wu@mediatek.com> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
1 parent f4b97d3 commit 5a70826

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

drivers/iommu/mtk_iommu.c

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1771,6 +1771,33 @@ static const struct mtk_iommu_plat_data mt8189_data_infra = {
17711771
.iova_region_nr = ARRAY_SIZE(single_domain),
17721772
};
17731773

1774+
static const u32 mt8189_larb_region_msk[MT8192_MULTI_REGION_NR_MAX][MTK_LARB_NR_MAX] = {
1775+
[0] = {~0, ~0, ~0, [22] = BIT(0)}, /* Region0: all ports for larb0/1/2 */
1776+
[1] = {[3] = ~0, [4] = ~0}, /* Region1: all ports for larb4(3)/7(4) */
1777+
[2] = {[5] = ~0, [6] = ~0, /* Region2: all ports for larb9(5)/11(6) */
1778+
[7] = ~0, [8] = ~0, /* Region2: all ports for larb13(7)/14(8) */
1779+
[9] = ~0, [10] = ~0, /* Region2: all ports for larb16(9)/17(10) */
1780+
[11] = ~0, [12] = ~0, /* Region2: all ports for larb19(11)/20(12) */
1781+
[21] = ~0}, /* Region2: larb21 fake GCE larb */
1782+
};
1783+
1784+
static const struct mtk_iommu_plat_data mt8189_data_mm = {
1785+
.m4u_plat = M4U_MT8189,
1786+
.flags = HAS_BCLK | HAS_SUB_COMM_3BITS | OUT_ORDER_WR_EN |
1787+
WR_THROT_EN | IOVA_34_EN | MTK_IOMMU_TYPE_MM |
1788+
PGTABLE_PA_35_EN | DL_WITH_MULTI_LARB,
1789+
.hw_list = &m4ulist,
1790+
.inv_sel_reg = REG_MMU_INV_SEL_GEN2,
1791+
.banks_num = 5,
1792+
.banks_enable = {true, false, false, false, false},
1793+
.iova_region = mt8192_multi_dom,
1794+
.iova_region_nr = ARRAY_SIZE(mt8192_multi_dom),
1795+
.iova_region_larb_msk = mt8189_larb_region_msk,
1796+
.larbid_remap = {{0}, {1}, {21/* GCE_D */, 21/* GCE_M */, 2},
1797+
{19, 20, 9, 11}, {7}, {4},
1798+
{13, 17}, {14, 16}},
1799+
};
1800+
17741801
static const struct mtk_iommu_plat_data mt8192_data = {
17751802
.m4u_plat = M4U_MT8192,
17761803
.flags = HAS_BCLK | HAS_SUB_COMM_2BITS | OUT_ORDER_WR_EN |
@@ -1874,6 +1901,7 @@ static const struct of_device_id mtk_iommu_of_ids[] = {
18741901
{ .compatible = "mediatek,mt8188-iommu-vpp", .data = &mt8188_data_vpp},
18751902
{ .compatible = "mediatek,mt8189-iommu-apu", .data = &mt8189_data_apu},
18761903
{ .compatible = "mediatek,mt8189-iommu-infra", .data = &mt8189_data_infra},
1904+
{ .compatible = "mediatek,mt8189-iommu-mm", .data = &mt8189_data_mm},
18771905
{ .compatible = "mediatek,mt8192-m4u", .data = &mt8192_data},
18781906
{ .compatible = "mediatek,mt8195-iommu-infra", .data = &mt8195_data_infra},
18791907
{ .compatible = "mediatek,mt8195-iommu-vdo", .data = &mt8195_data_vdo},

0 commit comments

Comments
 (0)