1*4c449fcaSFriday Yang /*
2*4c449fcaSFriday Yang * Copyright (c) 2025, MediaTek Inc. All rights reserved.
3*4c449fcaSFriday Yang *
4*4c449fcaSFriday Yang * SPDX-License-Identifier: BSD-3-Clause
5*4c449fcaSFriday Yang */
6*4c449fcaSFriday Yang
7*4c449fcaSFriday Yang #include <mtk_iommu_priv.h>
8*4c449fcaSFriday Yang #include <mtk_mmap_pool.h>
9*4c449fcaSFriday Yang #include <platform_def.h>
10*4c449fcaSFriday Yang
11*4c449fcaSFriday Yang /* mm iommu */
12*4c449fcaSFriday Yang #define SMI_L0_ID (0)
13*4c449fcaSFriday Yang #define SMI_L1_ID (1)
14*4c449fcaSFriday Yang #define SMI_L2_ID (2)
15*4c449fcaSFriday Yang #define SMI_L4_ID (3)
16*4c449fcaSFriday Yang #define SMI_L7_ID (4)
17*4c449fcaSFriday Yang #define SMI_L9_ID (5)
18*4c449fcaSFriday Yang #define SMI_L11_ID (6)
19*4c449fcaSFriday Yang #define SMI_L13_ID (7)
20*4c449fcaSFriday Yang #define SMI_L14_ID (8)
21*4c449fcaSFriday Yang #define SMI_L16_ID (9)
22*4c449fcaSFriday Yang #define SMI_L17_ID (10)
23*4c449fcaSFriday Yang #define SMI_L19_ID (11)
24*4c449fcaSFriday Yang #define SMI_L20_ID (12)
25*4c449fcaSFriday Yang
26*4c449fcaSFriday Yang /* infra iommu */
27*4c449fcaSFriday Yang #define PERICFG_AO_IOMMU_0 (0x90)
28*4c449fcaSFriday Yang #define PERICFG_AO_IOMMU_1 (0x94)
29*4c449fcaSFriday Yang #define MMU_DEV_PCIE_0 (0)
30*4c449fcaSFriday Yang #define IFR_CFG_GROUP_NUM (1)
31*4c449fcaSFriday Yang
32*4c449fcaSFriday Yang static struct mtk_smi_larb_config mt8189_larb_cfg[] = {
33*4c449fcaSFriday Yang [SMI_L0_ID] = LARB_CFG_ENTRY(SMI_LARB_0_BASE, 8, 0),
34*4c449fcaSFriday Yang [SMI_L1_ID] = LARB_CFG_ENTRY(SMI_LARB_1_BASE, 8, 0),
35*4c449fcaSFriday Yang [SMI_L2_ID] = LARB_CFG_ENTRY(SMI_LARB_2_BASE, 11, 0),
36*4c449fcaSFriday Yang [SMI_L4_ID] = LARB_CFG_ENTRY(SMI_LARB_4_BASE, 12, 0),
37*4c449fcaSFriday Yang [SMI_L7_ID] = LARB_CFG_ENTRY(SMI_LARB_7_BASE, 18, 0),
38*4c449fcaSFriday Yang [SMI_L9_ID] = LARB_CFG_ENTRY(SMI_LARB_9_BASE, 29, 0),
39*4c449fcaSFriday Yang [SMI_L11_ID] = LARB_CFG_ENTRY(SMI_LARB_11_BASE, 29, 0),
40*4c449fcaSFriday Yang [SMI_L13_ID] = LARB_CFG_ENTRY(SMI_LARB_13_BASE, 15, 0),
41*4c449fcaSFriday Yang [SMI_L14_ID] = LARB_CFG_ENTRY(SMI_LARB_14_BASE, 10, 0),
42*4c449fcaSFriday Yang [SMI_L16_ID] = LARB_CFG_ENTRY(SMI_LARB_16_BASE, 17, 0),
43*4c449fcaSFriday Yang [SMI_L17_ID] = LARB_CFG_ENTRY(SMI_LARB_17_BASE, 17, 0),
44*4c449fcaSFriday Yang [SMI_L19_ID] = LARB_CFG_ENTRY(SMI_LARB_19_BASE, 4, 0),
45*4c449fcaSFriday Yang [SMI_L20_ID] = LARB_CFG_ENTRY(SMI_LARB_20_BASE, 6, 0),
46*4c449fcaSFriday Yang };
47*4c449fcaSFriday Yang
48*4c449fcaSFriday Yang static uint32_t mt8189_ifr_mst_cfg_base[IFR_CFG_GROUP_NUM] = {
49*4c449fcaSFriday Yang PERICFG_AO_BASE,
50*4c449fcaSFriday Yang };
51*4c449fcaSFriday Yang static uint32_t mt8189_ifr_mst_cfg_offs[IFR_CFG_GROUP_NUM] = {
52*4c449fcaSFriday Yang PERICFG_AO_IOMMU_1,
53*4c449fcaSFriday Yang };
54*4c449fcaSFriday Yang static struct mtk_ifr_mst_config mt8189_ifr_mst_cfg[] = {
55*4c449fcaSFriday Yang [MMU_DEV_PCIE_0] = IFR_MST_CFG_ENTRY(0, 0),
56*4c449fcaSFriday Yang };
57*4c449fcaSFriday Yang
58*4c449fcaSFriday Yang struct mtk_smi_larb_config *g_larb_cfg = &mt8189_larb_cfg[0];
59*4c449fcaSFriday Yang const unsigned int g_larb_num = ARRAY_SIZE(mt8189_larb_cfg);
60*4c449fcaSFriday Yang
61*4c449fcaSFriday Yang static struct mtk_secure_iommu_config mt8189_secure_iommu_config[] = {
62*4c449fcaSFriday Yang SEC_IOMMU_CFG_ENTRY(MM_IOMMU_BASE),
63*4c449fcaSFriday Yang };
64*4c449fcaSFriday Yang
65*4c449fcaSFriday Yang struct mtk_secure_iommu_config *g_sec_iommu_cfg = &mt8189_secure_iommu_config[0];
66*4c449fcaSFriday Yang const unsigned int g_sec_iommu_num = ARRAY_SIZE(mt8189_secure_iommu_config);
67*4c449fcaSFriday Yang
68*4c449fcaSFriday Yang struct mtk_ifr_mst_config *g_ifr_mst_cfg = &mt8189_ifr_mst_cfg[0];
69*4c449fcaSFriday Yang const unsigned int g_ifr_mst_num = ARRAY_SIZE(mt8189_ifr_mst_cfg);
70*4c449fcaSFriday Yang
71*4c449fcaSFriday Yang uint32_t *g_ifr_mst_cfg_base = &mt8189_ifr_mst_cfg_base[0];
72*4c449fcaSFriday Yang uint32_t *g_ifr_mst_cfg_offs = &mt8189_ifr_mst_cfg_offs[0];
73*4c449fcaSFriday Yang
74*4c449fcaSFriday Yang /**
75*4c449fcaSFriday Yang * Protect infra iommu enable setting registers as secure access.
76*4c449fcaSFriday Yang * This is removed in MT8189, just return here.
77*4c449fcaSFriday Yang */
mtk_infra_iommu_enable_protect(void)78*4c449fcaSFriday Yang void mtk_infra_iommu_enable_protect(void)
79*4c449fcaSFriday Yang {
80*4c449fcaSFriday Yang }
81