1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2022, MediaTek Inc. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu #ifndef IOMMU_PRIV_H 8*91f16700Schasinglulu #define IOMMU_PRIV_H 9*91f16700Schasinglulu 10*91f16700Schasinglulu #include <common/debug.h> 11*91f16700Schasinglulu #include <lib/mmio.h> 12*91f16700Schasinglulu #include <mtk_sip_svc.h> 13*91f16700Schasinglulu 14*91f16700Schasinglulu #define LARB_CFG_ENTRY(bs, p_nr, dom) \ 15*91f16700Schasinglulu { .base = (bs), .port_nr = (p_nr), \ 16*91f16700Schasinglulu .dom_id = (dom), .to_sram = 0, } 17*91f16700Schasinglulu 18*91f16700Schasinglulu #define LARB_CFG_ENTRY_WITH_PATH(bs, p_nr, dom, sram) \ 19*91f16700Schasinglulu { .base = (bs), .port_nr = (p_nr), \ 20*91f16700Schasinglulu .dom_id = (dom), .to_sram = (sram), } 21*91f16700Schasinglulu 22*91f16700Schasinglulu #define IFR_MST_CFG_ENTRY(idx, bit) \ 23*91f16700Schasinglulu { .cfg_addr_idx = (idx), .r_mmu_en_bit = (bit), } 24*91f16700Schasinglulu 25*91f16700Schasinglulu enum IOMMU_ATF_CMD { 26*91f16700Schasinglulu IOMMU_ATF_CMD_CONFIG_SMI_LARB, /* For mm master to enable iommu */ 27*91f16700Schasinglulu IOMMU_ATF_CMD_CONFIG_INFRA_IOMMU, /* For infra master to enable iommu */ 28*91f16700Schasinglulu IOMMU_ATF_CMD_COUNT, 29*91f16700Schasinglulu }; 30*91f16700Schasinglulu 31*91f16700Schasinglulu struct mtk_smi_larb_config { 32*91f16700Schasinglulu uint32_t base; 33*91f16700Schasinglulu uint32_t port_nr; 34*91f16700Schasinglulu uint32_t dom_id; 35*91f16700Schasinglulu uint32_t to_sram; 36*91f16700Schasinglulu uint32_t sec_en_msk; 37*91f16700Schasinglulu }; 38*91f16700Schasinglulu 39*91f16700Schasinglulu struct mtk_ifr_mst_config { 40*91f16700Schasinglulu uint8_t cfg_addr_idx; 41*91f16700Schasinglulu uint8_t r_mmu_en_bit; 42*91f16700Schasinglulu }; 43*91f16700Schasinglulu 44*91f16700Schasinglulu #endif /* IOMMU_PRIV_H */ 45