1859e346bSEdward-JW Yang /* 2*b0208c73SLiju-Clr Chen * Copyright (c) 2021-2023, MediaTek Inc. All rights reserved. 3859e346bSEdward-JW Yang * 4859e346bSEdward-JW Yang * SPDX-License-Identifier: BSD-3-Clause 5859e346bSEdward-JW Yang */ 6859e346bSEdward-JW Yang 7859e346bSEdward-JW Yang #ifndef MT_SPM_CONDIT_H 8859e346bSEdward-JW Yang #define MT_SPM_CONDIT_H 9859e346bSEdward-JW Yang 10859e346bSEdward-JW Yang #include <mt_lp_rm.h> 11859e346bSEdward-JW Yang 12859e346bSEdward-JW Yang enum PLAT_SPM_COND { 13859e346bSEdward-JW Yang PLAT_SPM_COND_MTCMOS1 = 0, 14859e346bSEdward-JW Yang PLAT_SPM_COND_CG_INFRA_0, 15859e346bSEdward-JW Yang PLAT_SPM_COND_CG_INFRA_1, 16859e346bSEdward-JW Yang PLAT_SPM_COND_CG_INFRA_2, 17859e346bSEdward-JW Yang PLAT_SPM_COND_CG_INFRA_3, 18859e346bSEdward-JW Yang PLAT_SPM_COND_CG_INFRA_4, 19859e346bSEdward-JW Yang PLAT_SPM_COND_CG_PERI_SW_0, 20859e346bSEdward-JW Yang PLAT_SPM_COND_CG_VPPSYS0_SW_CG_0, 21859e346bSEdward-JW Yang PLAT_SPM_COND_CG_VPPSYS0_SW_CG_1, 22859e346bSEdward-JW Yang PLAT_SPM_COND_CG_VPPSYS0_SW_CG_2, 23859e346bSEdward-JW Yang PLAT_SPM_COND_CG_VPPSYS1_SW_CG_0, 24859e346bSEdward-JW Yang PLAT_SPM_COND_CG_VPPSYS1_SW_CG_1, 25859e346bSEdward-JW Yang PLAT_SPM_COND_CG_VDOSYS0_SW_CG_0, 26859e346bSEdward-JW Yang PLAT_SPM_COND_CG_VDOSYS0_SW_CG_1, 27859e346bSEdward-JW Yang PLAT_SPM_COND_CG_VDOSYS1_SW_CG_0, 28859e346bSEdward-JW Yang PLAT_SPM_COND_CG_VDOSYS1_SW_CG_1, 29859e346bSEdward-JW Yang PLAT_SPM_COND_CG_VDOSYS1_SW_CG_2, 30859e346bSEdward-JW Yang PLAT_SPM_COND_CG_I2C_SW_CG, 31859e346bSEdward-JW Yang PLAT_SPM_COND_MAX, 32859e346bSEdward-JW Yang }; 33859e346bSEdward-JW Yang 34859e346bSEdward-JW Yang enum PLAT_SPM_COND_PLL { 35859e346bSEdward-JW Yang PLAT_SPM_COND_PLL_UNIVPLL = 0, 36859e346bSEdward-JW Yang PLAT_SPM_COND_PLL_MFGPLL, 37859e346bSEdward-JW Yang PLAT_SPM_COND_PLL_MSDCPLL, 38859e346bSEdward-JW Yang PLAT_SPM_COND_PLL_TVDPLL, 39859e346bSEdward-JW Yang PLAT_SPM_COND_PLL_MMPLL, 40859e346bSEdward-JW Yang PLAT_SPM_COND_PLL_MAX, 41859e346bSEdward-JW Yang }; 42859e346bSEdward-JW Yang 43859e346bSEdward-JW Yang #define PLL_BIT_MFGPLL BIT(PLAT_SPM_COND_PLL_MFGPLL) 44859e346bSEdward-JW Yang #define PLL_BIT_MMPLL BIT(PLAT_SPM_COND_PLL_MMPLL) 45859e346bSEdward-JW Yang #define PLL_BIT_UNIVPLL BIT(PLAT_SPM_COND_PLL_UNIVPLL) 46859e346bSEdward-JW Yang #define PLL_BIT_MSDCPLL BIT(PLAT_SPM_COND_PLL_MSDCPLL) 47859e346bSEdward-JW Yang #define PLL_BIT_TVDPLL BIT(PLAT_SPM_COND_PLL_TVDPLL) 48859e346bSEdward-JW Yang 49859e346bSEdward-JW Yang /* Definition about SPM_COND_CHECK_BLOCKED 50859e346bSEdward-JW Yang * bit [00 ~ 17]: cg blocking index 51859e346bSEdward-JW Yang * bit [18 ~ 29]: pll blocking index 52859e346bSEdward-JW Yang * bit [30] : pll blocking information 53859e346bSEdward-JW Yang * bit [31] : idle condition check fail 54859e346bSEdward-JW Yang */ 55859e346bSEdward-JW Yang #define SPM_COND_BLOCKED_CG_IDX U(0) 56859e346bSEdward-JW Yang #define SPM_COND_BLOCKED_PLL_IDX U(18) 57859e346bSEdward-JW Yang #define SPM_COND_CHECK_BLOCKED_PLL BIT(30) 58859e346bSEdward-JW Yang #define SPM_COND_CHECK_FAIL BIT(31) 59859e346bSEdward-JW Yang 60859e346bSEdward-JW Yang struct mt_spm_cond_tables { 61859e346bSEdward-JW Yang char *name; 62859e346bSEdward-JW Yang unsigned int table_cg[PLAT_SPM_COND_MAX]; 63859e346bSEdward-JW Yang unsigned int table_pll; 64859e346bSEdward-JW Yang void *priv; 65859e346bSEdward-JW Yang }; 66859e346bSEdward-JW Yang 67859e346bSEdward-JW Yang extern unsigned int mt_spm_cond_check(int state_id, 68859e346bSEdward-JW Yang const struct mt_spm_cond_tables *src, 69859e346bSEdward-JW Yang const struct mt_spm_cond_tables *dest, 70859e346bSEdward-JW Yang struct mt_spm_cond_tables *res); 71*b0208c73SLiju-Clr Chen extern int mt_spm_cond_update(struct mt_resource_constraint **con, unsigned int num, 72859e346bSEdward-JW Yang int stateid, void *priv); 73859e346bSEdward-JW Yang #endif /* MT_SPM_CONDIT_H */ 74