xref: /rk3399_ARM-atf/plat/mediatek/mt8195/include/plat_mtk_lpm.h (revision 7fa35d068ff9eabbf252414fd778cc4de7a4b141)
1acc85548SJames Liao /*
2*d336e093SEdward-JW Yang  * Copyright (c) 2021, MediaTek Inc. All rights reserved.
3acc85548SJames Liao  *
4acc85548SJames Liao  * SPDX-License-Identifier: BSD-3-Clause
5acc85548SJames Liao  */
6acc85548SJames Liao 
7acc85548SJames Liao #ifndef PLAT_MTK_LPM_H
8acc85548SJames Liao #define PLAT_MTK_LPM_H
9acc85548SJames Liao 
10acc85548SJames Liao #include <lib/psci/psci.h>
11acc85548SJames Liao #include <lib/utils_def.h>
12acc85548SJames Liao 
13*d336e093SEdward-JW Yang #define MT_IRQ_REMAIN_MAX	U(32)
14acc85548SJames Liao #define MT_IRQ_REMAIN_CAT_LOG	BIT(31)
15acc85548SJames Liao 
16acc85548SJames Liao struct mt_irqremain {
17acc85548SJames Liao 	unsigned int count;
18acc85548SJames Liao 	unsigned int irqs[MT_IRQ_REMAIN_MAX];
19acc85548SJames Liao 	unsigned int wakeupsrc_cat[MT_IRQ_REMAIN_MAX];
20acc85548SJames Liao 	unsigned int wakeupsrc[MT_IRQ_REMAIN_MAX];
21acc85548SJames Liao };
22acc85548SJames Liao 
23acc85548SJames Liao #define PLAT_RC_STATUS_READY		BIT(0)
24acc85548SJames Liao #define PLAT_RC_STATUS_FEATURE_EN	BIT(1)
25acc85548SJames Liao #define PLAT_RC_STATUS_UART_NONSLEEP	BIT(31)
26acc85548SJames Liao 
27acc85548SJames Liao struct mt_lpm_tz {
28acc85548SJames Liao 	int (*pwr_prompt)(unsigned int cpu, const psci_power_state_t *state);
29acc85548SJames Liao 	int (*pwr_reflect)(unsigned int cpu, const psci_power_state_t *state);
30acc85548SJames Liao 
31acc85548SJames Liao 	int (*pwr_cpu_on)(unsigned int cpu, const psci_power_state_t *state);
32acc85548SJames Liao 	int (*pwr_cpu_dwn)(unsigned int cpu, const psci_power_state_t *state);
33acc85548SJames Liao 
34acc85548SJames Liao 	int (*pwr_cluster_on)(unsigned int cpu,
35acc85548SJames Liao 					const psci_power_state_t *state);
36acc85548SJames Liao 	int (*pwr_cluster_dwn)(unsigned int cpu,
37acc85548SJames Liao 					const psci_power_state_t *state);
38acc85548SJames Liao 
39acc85548SJames Liao 	int (*pwr_mcusys_on)(unsigned int cpu, const psci_power_state_t *state);
40acc85548SJames Liao 	int (*pwr_mcusys_on_finished)(unsigned int cpu,
41acc85548SJames Liao 					const psci_power_state_t *state);
42acc85548SJames Liao 	int (*pwr_mcusys_dwn)(unsigned int cpu,
43acc85548SJames Liao 					const psci_power_state_t *state);
44acc85548SJames Liao };
45acc85548SJames Liao 
46acc85548SJames Liao const struct mt_lpm_tz *mt_plat_cpu_pm_init(void);
47acc85548SJames Liao 
48acc85548SJames Liao #endif /* PLAT_MTK_LPM_H */
49