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