xref: /rk3399_ARM-atf/plat/mediatek/mt8183/plat_pm.c (revision 3fa9dec43dbf1d8862d2e6c16dfac5fe6d8d317c)
1*3fa9dec4Skenny liang /*
2*3fa9dec4Skenny liang  * Copyright (c) 2019, ARM Limited and Contributors. All rights reserved.
3*3fa9dec4Skenny liang  *
4*3fa9dec4Skenny liang  * SPDX-License-Identifier: BSD-3-Clause
5*3fa9dec4Skenny liang  */
6*3fa9dec4Skenny liang 
7*3fa9dec4Skenny liang /* common headers */
8*3fa9dec4Skenny liang #include <arch_helpers.h>
9*3fa9dec4Skenny liang #include <assert.h>
10*3fa9dec4Skenny liang #include <common/debug.h>
11*3fa9dec4Skenny liang #include <lib/mmio.h>
12*3fa9dec4Skenny liang #include <lib/psci/psci.h>
13*3fa9dec4Skenny liang #include <errno.h>
14*3fa9dec4Skenny liang 
15*3fa9dec4Skenny liang /* mediatek platform specific headers */
16*3fa9dec4Skenny liang #include <platform_def.h>
17*3fa9dec4Skenny liang #include <scu.h>
18*3fa9dec4Skenny liang #include <mtk_plat_common.h>
19*3fa9dec4Skenny liang #include <power_tracer.h>
20*3fa9dec4Skenny liang #include <plat_private.h>
21*3fa9dec4Skenny liang 
22*3fa9dec4Skenny liang /*******************************************************************************
23*3fa9dec4Skenny liang  * MTK_platform handler called when an affinity instance is about to be turned
24*3fa9dec4Skenny liang  * on. The level and mpidr determine the affinity instance.
25*3fa9dec4Skenny liang  ******************************************************************************/
26*3fa9dec4Skenny liang static uintptr_t secure_entrypoint;
27*3fa9dec4Skenny liang 
28*3fa9dec4Skenny liang static const plat_psci_ops_t plat_plat_pm_ops = {
29*3fa9dec4Skenny liang 	.cpu_standby			= NULL,
30*3fa9dec4Skenny liang 	.pwr_domain_on			= NULL,
31*3fa9dec4Skenny liang 	.pwr_domain_on_finish		= NULL,
32*3fa9dec4Skenny liang 	.pwr_domain_off			= NULL,
33*3fa9dec4Skenny liang 	.pwr_domain_suspend		= NULL,
34*3fa9dec4Skenny liang 	.pwr_domain_suspend_finish	= NULL,
35*3fa9dec4Skenny liang 	.system_off			= NULL,
36*3fa9dec4Skenny liang 	.system_reset			= NULL,
37*3fa9dec4Skenny liang 	.validate_power_state		= NULL,
38*3fa9dec4Skenny liang 	.get_sys_suspend_power_state	= NULL,
39*3fa9dec4Skenny liang };
40*3fa9dec4Skenny liang 
41*3fa9dec4Skenny liang int plat_setup_psci_ops(uintptr_t sec_entrypoint,
42*3fa9dec4Skenny liang 			const plat_psci_ops_t **psci_ops)
43*3fa9dec4Skenny liang {
44*3fa9dec4Skenny liang 	*psci_ops = &plat_plat_pm_ops;
45*3fa9dec4Skenny liang 	secure_entrypoint = sec_entrypoint;
46*3fa9dec4Skenny liang 	return 0;
47*3fa9dec4Skenny liang }
48