Skip to content

Commit 6b1317f

Browse files
YongWu-HFjoergroedel
authored andcommitted
iommu/mediatek: mt8192: Add iova_region_larb_msk
Add iova_region_larb_msk for mt8192. We separate the 16GB iova regions by each device's larbid/portid. Note: larb3/6/8/10/12/15 connect nothing in this SoC. Refer to the comment in include/dt-bindings/memory/mt8192-larb-port.h Define a new macro MT8192_MULTI_REGION_NR_MAX to indicate the index of mt8xxx_larb_region_msk and "struct mtk_iommu_iova_region mt8192_multi_dom" are the same. Signed-off-by: Yong Wu <yong.wu@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Link: https://lore.kernel.org/r/20230411093144.2690-6-yong.wu@mediatek.com Signed-off-by: Joerg Roedel <jroedel@suse.de>
1 parent b2a6876 commit 6b1317f

1 file changed

Lines changed: 18 additions & 1 deletion

File tree

drivers/iommu/mtk_iommu.c

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,12 @@ static const struct mtk_iommu_iova_region single_domain[] = {
336336
{.iova_base = 0, .size = SZ_4G},
337337
};
338338

339-
static const struct mtk_iommu_iova_region mt8192_multi_dom[] = {
339+
#define MT8192_MULTI_REGION_NR_MAX 6
340+
341+
#define MT8192_MULTI_REGION_NR (IS_ENABLED(CONFIG_ARCH_DMA_ADDR_T_64BIT) ? \
342+
MT8192_MULTI_REGION_NR_MAX : 1)
343+
344+
static const struct mtk_iommu_iova_region mt8192_multi_dom[MT8192_MULTI_REGION_NR] = {
340345
{ .iova_base = 0x0, .size = SZ_4G}, /* 0 ~ 4G */
341346
#if IS_ENABLED(CONFIG_ARCH_DMA_ADDR_T_64BIT)
342347
{ .iova_base = SZ_4G, .size = SZ_4G}, /* 4G ~ 8G */
@@ -1542,6 +1547,17 @@ static const struct mtk_iommu_plat_data mt8186_data_mm = {
15421547
.iova_region_nr = ARRAY_SIZE(mt8192_multi_dom),
15431548
};
15441549

1550+
static const unsigned int mt8192_larb_region_msk[MT8192_MULTI_REGION_NR_MAX][MTK_LARB_NR_MAX] = {
1551+
[0] = {~0, ~0}, /* Region0: larb0/1 */
1552+
[1] = {0, 0, 0, 0, ~0, ~0, 0, ~0}, /* Region1: larb4/5/7 */
1553+
[2] = {0, 0, ~0, 0, 0, 0, 0, 0, /* Region2: larb2/9/11/13/14/16/17/18/19/20 */
1554+
0, ~0, 0, ~0, 0, ~(u32)(BIT(9) | BIT(10)), ~(u32)(BIT(4) | BIT(5)), 0,
1555+
~0, ~0, ~0, ~0, ~0},
1556+
[3] = {0},
1557+
[4] = {[13] = BIT(9) | BIT(10)}, /* larb13 port9/10 */
1558+
[5] = {[14] = BIT(4) | BIT(5)}, /* larb14 port4/5 */
1559+
};
1560+
15451561
static const struct mtk_iommu_plat_data mt8192_data = {
15461562
.m4u_plat = M4U_MT8192,
15471563
.flags = HAS_BCLK | HAS_SUB_COMM_2BITS | OUT_ORDER_WR_EN |
@@ -1551,6 +1567,7 @@ static const struct mtk_iommu_plat_data mt8192_data = {
15511567
.banks_enable = {true},
15521568
.iova_region = mt8192_multi_dom,
15531569
.iova_region_nr = ARRAY_SIZE(mt8192_multi_dom),
1570+
.iova_region_larb_msk = mt8192_larb_region_msk,
15541571
.larbid_remap = {{0}, {1}, {4, 5}, {7}, {2}, {9, 11, 19, 20},
15551572
{0, 14, 16}, {0, 13, 18, 17}},
15561573
};

0 commit comments

Comments
 (0)