1 /* SPDX-License-Identifier: GPL-2.0-only */ << 2 /* 1 /* 3 * Copyright (c) 2015-2016 MediaTek Inc. 2 * Copyright (c) 2015-2016 MediaTek Inc. 4 * Author: Yong Wu <yong.wu@mediatek.com> 3 * Author: Yong Wu <yong.wu@mediatek.com> >> 4 * >> 5 * This program is free software; you can redistribute it and/or modify >> 6 * it under the terms of the GNU General Public License version 2 as >> 7 * published by the Free Software Foundation. >> 8 * >> 9 * This program is distributed in the hope that it will be useful, >> 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of >> 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> 12 * GNU General Public License for more details. 5 */ 13 */ 6 #ifndef MTK_IOMMU_SMI_H 14 #ifndef MTK_IOMMU_SMI_H 7 #define MTK_IOMMU_SMI_H 15 #define MTK_IOMMU_SMI_H 8 16 9 #include <linux/bitops.h> 17 #include <linux/bitops.h> 10 #include <linux/device.h> 18 #include <linux/device.h> 11 19 12 #if IS_ENABLED(CONFIG_MTK_SMI) !! 20 #ifdef CONFIG_MTK_SMI 13 21 14 enum iommu_atf_cmd { !! 22 #define MTK_LARB_NR_MAX 8 15 IOMMU_ATF_CMD_CONFIG_SMI_LARB, << 16 IOMMU_ATF_CMD_CONFIG_INFRA_IOMMU, << 17 IOMMU_ATF_CMD_MAX, << 18 }; << 19 23 20 #define MTK_SMI_MMU_EN(port) BIT(port) 24 #define MTK_SMI_MMU_EN(port) BIT(port) 21 25 22 struct mtk_smi_larb_iommu { 26 struct mtk_smi_larb_iommu { 23 struct device *dev; 27 struct device *dev; 24 unsigned int mmu; 28 unsigned int mmu; 25 unsigned char bank[32]; << 26 }; 29 }; >> 30 >> 31 struct mtk_smi_iommu { >> 32 unsigned int larb_nr; >> 33 struct mtk_smi_larb_iommu larb_imu[MTK_LARB_NR_MAX]; >> 34 }; >> 35 >> 36 /* >> 37 * mtk_smi_larb_get: Enable the power domain and clocks for this local arbiter. >> 38 * It also initialize some basic setting(like iommu). >> 39 * mtk_smi_larb_put: Disable the power domain and clocks for this local arbiter. >> 40 * Both should be called in non-atomic context. >> 41 * >> 42 * Returns 0 if successful, negative on failure. >> 43 */ >> 44 int mtk_smi_larb_get(struct device *larbdev); >> 45 void mtk_smi_larb_put(struct device *larbdev); >> 46 >> 47 #else >> 48 >> 49 static inline int mtk_smi_larb_get(struct device *larbdev) >> 50 { >> 51 return 0; >> 52 } >> 53 >> 54 static inline void mtk_smi_larb_put(struct device *larbdev) { } 27 55 28 #endif 56 #endif 29 57 30 #endif 58 #endif 31 59
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.