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