1 /* 2 * Copyright (c) 2022, MediaTek Inc. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #ifndef MT_SPM_CONDIT_H 8 #define MT_SPM_CONDIT_H 9 10 #include <mt_lp_rm.h> 11 12 enum PLAT_SPM_COND { 13 PLAT_SPM_COND_MTCMOS1 = 0, 14 PLAT_SPM_COND_CG_INFRA_0 = 1, 15 PLAT_SPM_COND_CG_INFRA_1 = 2, 16 PLAT_SPM_COND_CG_INFRA_2 = 3, 17 PLAT_SPM_COND_CG_INFRA_3 = 4, 18 PLAT_SPM_COND_CG_INFRA_4 = 5, 19 PLAT_SPM_COND_CG_INFRA_5 = 6, 20 PLAT_SPM_COND_CG_MMSYS_0 = 7, 21 PLAT_SPM_COND_CG_MMSYS_1 = 8, 22 PLAT_SPM_COND_CG_MMSYS_2 = 9, 23 PLAT_SPM_COND_CG_MMSYS_3 = 10, 24 PLAT_SPM_COND_MAX = 11, 25 }; 26 27 #define PLL_BIT_UNIVPLL BIT(0) 28 #define PLL_BIT_MFGPLL BIT(1) 29 #define PLL_BIT_MSDCPLL BIT(2) 30 #define PLL_BIT_TVDPLL BIT(3) 31 #define PLL_BIT_MMPLL BIT(4) 32 33 /* 34 * Definition about SPM_COND_CHECK_BLOCKED 35 * bit [00 ~ 15]: cg blocking index 36 * bit [16 ~ 29]: pll blocking index 37 * bit [30] : pll blocking information 38 * bit [31] : idle condition check fail 39 */ 40 #define SPM_COND_BLOCKED_CG_IDX U(0) 41 #define SPM_COND_BLOCKED_PLL_IDX U(16) 42 #define SPM_COND_CHECK_BLOCKED_PLL BIT(30) 43 #define SPM_COND_CHECK_FAIL BIT(31) 44 45 struct mt_spm_cond_tables { 46 char *name; 47 unsigned int table_cg[PLAT_SPM_COND_MAX]; 48 unsigned int table_pll; 49 void *priv; 50 }; 51 52 extern unsigned int mt_spm_cond_check(int state_id, 53 const struct mt_spm_cond_tables *src, 54 const struct mt_spm_cond_tables *dest, 55 struct mt_spm_cond_tables *res); 56 57 extern int mt_spm_cond_update(struct mt_resource_constraint **con, 58 int stateid, void *priv); 59 60 #endif /* MT_SPM_CONDIT_H */ 61