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