blob: e471b551a6c0e6f87b4a11ca1812ee7639818e5e [file] [log] [blame]
Edward-JW Yang1c7fd0b2021-06-28 11:29:51 +08001/*
2 * Copyright (c) 2021, 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
12enum PLAT_SPM_COND {
13 PLAT_SPM_COND_MTCMOS1 = 0,
14 PLAT_SPM_COND_CG_INFRA_0,
15 PLAT_SPM_COND_CG_INFRA_1,
16 PLAT_SPM_COND_CG_INFRA_2,
17 PLAT_SPM_COND_CG_INFRA_3,
18 PLAT_SPM_COND_CG_INFRA_4,
19 PLAT_SPM_COND_CG_PERI_SW_0,
20 PLAT_SPM_COND_CG_VPPSYS0_SW_CG_0,
21 PLAT_SPM_COND_CG_VPPSYS0_SW_CG_1,
22 PLAT_SPM_COND_CG_VPPSYS0_SW_CG_2,
23 PLAT_SPM_COND_CG_VPPSYS1_SW_CG_0,
24 PLAT_SPM_COND_CG_VPPSYS1_SW_CG_1,
25 PLAT_SPM_COND_CG_VDOSYS0_SW_CG_0,
26 PLAT_SPM_COND_CG_VDOSYS0_SW_CG_1,
27 PLAT_SPM_COND_CG_VDOSYS1_SW_CG_0,
28 PLAT_SPM_COND_CG_VDOSYS1_SW_CG_1,
29 PLAT_SPM_COND_CG_VDOSYS1_SW_CG_2,
30 PLAT_SPM_COND_CG_I2C_SW_CG,
31 PLAT_SPM_COND_MAX,
32};
33
34enum PLAT_SPM_COND_PLL {
35 PLAT_SPM_COND_PLL_UNIVPLL = 0,
36 PLAT_SPM_COND_PLL_MFGPLL,
37 PLAT_SPM_COND_PLL_MSDCPLL,
38 PLAT_SPM_COND_PLL_TVDPLL,
39 PLAT_SPM_COND_PLL_MMPLL,
40 PLAT_SPM_COND_PLL_MAX,
41};
42
43#define PLL_BIT_MFGPLL BIT(PLAT_SPM_COND_PLL_MFGPLL)
44#define PLL_BIT_MMPLL BIT(PLAT_SPM_COND_PLL_MMPLL)
45#define PLL_BIT_UNIVPLL BIT(PLAT_SPM_COND_PLL_UNIVPLL)
46#define PLL_BIT_MSDCPLL BIT(PLAT_SPM_COND_PLL_MSDCPLL)
47#define PLL_BIT_TVDPLL BIT(PLAT_SPM_COND_PLL_TVDPLL)
48
49/* Definition about SPM_COND_CHECK_BLOCKED
50 * bit [00 ~ 17]: cg blocking index
51 * bit [18 ~ 29]: pll blocking index
52 * bit [30] : pll blocking information
53 * bit [31] : idle condition check fail
54 */
55#define SPM_COND_BLOCKED_CG_IDX U(0)
56#define SPM_COND_BLOCKED_PLL_IDX U(18)
57#define SPM_COND_CHECK_BLOCKED_PLL BIT(30)
58#define SPM_COND_CHECK_FAIL BIT(31)
59
60struct mt_spm_cond_tables {
61 char *name;
62 unsigned int table_cg[PLAT_SPM_COND_MAX];
63 unsigned int table_pll;
64 void *priv;
65};
66
67extern unsigned int mt_spm_cond_check(int state_id,
68 const struct mt_spm_cond_tables *src,
69 const struct mt_spm_cond_tables *dest,
70 struct mt_spm_cond_tables *res);
71extern int mt_spm_cond_update(struct mt_resource_constraint **con,
72 int stateid, void *priv);
73#endif /* MT_SPM_CONDIT_H */