1 /* SPDX-License-Identifier: GPL-2.0-only */ 1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 2 /* 3 * Copyright (c) 2015-2016 MediaTek Inc. 3 * Copyright (c) 2015-2016 MediaTek Inc. 4 * Author: Yong Wu <yong.wu@mediatek.com> 4 * Author: Yong Wu <yong.wu@mediatek.com> 5 */ 5 */ 6 #ifndef MTK_IOMMU_SMI_H 6 #ifndef MTK_IOMMU_SMI_H 7 #define MTK_IOMMU_SMI_H 7 #define MTK_IOMMU_SMI_H 8 8 9 #include <linux/bitops.h> 9 #include <linux/bitops.h> 10 #include <linux/device.h> 10 #include <linux/device.h> 11 11 12 #if IS_ENABLED(CONFIG_MTK_SMI) !! 12 #ifdef CONFIG_MTK_SMI 13 13 14 enum iommu_atf_cmd { !! 14 #define MTK_LARB_NR_MAX 16 15 IOMMU_ATF_CMD_CONFIG_SMI_LARB, << 16 IOMMU_ATF_CMD_CONFIG_INFRA_IOMMU, << 17 IOMMU_ATF_CMD_MAX, << 18 }; << 19 15 20 #define MTK_SMI_MMU_EN(port) BIT(port) 16 #define MTK_SMI_MMU_EN(port) BIT(port) 21 17 22 struct mtk_smi_larb_iommu { 18 struct mtk_smi_larb_iommu { 23 struct device *dev; 19 struct device *dev; 24 unsigned int mmu; 20 unsigned int mmu; 25 unsigned char bank[32]; << 26 }; 21 }; >> 22 >> 23 struct mtk_smi_iommu { >> 24 unsigned int larb_nr; >> 25 struct mtk_smi_larb_iommu larb_imu[MTK_LARB_NR_MAX]; >> 26 }; >> 27 >> 28 /* >> 29 * mtk_smi_larb_get: Enable the power domain and clocks for this local arbiter. >> 30 * It also initialize some basic setting(like iommu). >> 31 * mtk_smi_larb_put: Disable the power domain and clocks for this local arbiter. >> 32 * Both should be called in non-atomic context. >> 33 * >> 34 * Returns 0 if successful, negative on failure. >> 35 */ >> 36 int mtk_smi_larb_get(struct device *larbdev); >> 37 void mtk_smi_larb_put(struct device *larbdev); >> 38 >> 39 #else >> 40 >> 41 static inline int mtk_smi_larb_get(struct device *larbdev) >> 42 { >> 43 return 0; >> 44 } >> 45 >> 46 static inline void mtk_smi_larb_put(struct device *larbdev) { } 27 47 28 #endif 48 #endif 29 49 30 #endif 50 #endif 31 51
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.