@@ -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+
17741801static 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