xref: /rk3399_ARM-atf/plat/mediatek/mt8195/drivers/spm/mt_spm_cond.h (revision 79c262327aa8ccc1ae5a0ee7f7ead3bf5ce8e022)
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