xref: /rk3399_ARM-atf/plat/imx/imx8m/imx8mn/imx8mn_psci.c (revision fcb80d7d14196ff4ca454cd4f9cc6864600c333e)
158fdd608SJacky Bai /*
258fdd608SJacky Bai  * Copyright 2019-2020 NXP
358fdd608SJacky Bai  *
458fdd608SJacky Bai  * SPDX-License-Identifier: BSD-3-Clause
558fdd608SJacky Bai  */
658fdd608SJacky Bai 
758fdd608SJacky Bai #include <stdbool.h>
858fdd608SJacky Bai 
958fdd608SJacky Bai #include <arch.h>
1058fdd608SJacky Bai #include <arch_helpers.h>
1158fdd608SJacky Bai #include <common/debug.h>
1258fdd608SJacky Bai #include <lib/mmio.h>
1358fdd608SJacky Bai #include <lib/psci/psci.h>
1458fdd608SJacky Bai 
1558fdd608SJacky Bai #include <gpc.h>
1658fdd608SJacky Bai #include <imx8m_psci.h>
1758fdd608SJacky Bai #include <plat_imx8.h>
1858fdd608SJacky Bai 
1958fdd608SJacky Bai static const plat_psci_ops_t imx_plat_psci_ops = {
2058fdd608SJacky Bai 	.pwr_domain_on = imx_pwr_domain_on,
2158fdd608SJacky Bai 	.pwr_domain_on_finish = imx_pwr_domain_on_finish,
2258fdd608SJacky Bai 	.pwr_domain_off = imx_pwr_domain_off,
2358fdd608SJacky Bai 	.validate_ns_entrypoint = imx_validate_ns_entrypoint,
2458fdd608SJacky Bai 	.validate_power_state = imx_validate_power_state,
2558fdd608SJacky Bai 	.cpu_standby = imx_cpu_standby,
2658fdd608SJacky Bai 	.pwr_domain_suspend = imx_domain_suspend,
2758fdd608SJacky Bai 	.pwr_domain_suspend_finish = imx_domain_suspend_finish,
28*db5fe4f4SBoyan Karatotev 	.pwr_domain_pwr_down = imx_pwr_domain_pwr_down_wfi,
2958fdd608SJacky Bai 	.get_sys_suspend_power_state = imx_get_sys_suspend_power_state,
3058fdd608SJacky Bai 	.system_reset = imx_system_reset,
3158fdd608SJacky Bai 	.system_off = imx_system_off,
3258fdd608SJacky Bai };
3358fdd608SJacky Bai 
3458fdd608SJacky Bai /* export the platform specific psci ops */
plat_setup_psci_ops(uintptr_t sec_entrypoint,const plat_psci_ops_t ** psci_ops)3558fdd608SJacky Bai int plat_setup_psci_ops(uintptr_t sec_entrypoint,
3658fdd608SJacky Bai 			const plat_psci_ops_t **psci_ops)
3758fdd608SJacky Bai {
3858fdd608SJacky Bai 	/* sec_entrypoint is used for warm reset */
3958fdd608SJacky Bai 	imx_mailbox_init(sec_entrypoint);
4058fdd608SJacky Bai 
4158fdd608SJacky Bai 	*psci_ops = &imx_plat_psci_ops;
4258fdd608SJacky Bai 
4358fdd608SJacky Bai 	return 0;
4458fdd608SJacky Bai }
45