xref: /rk3399_ARM-atf/plat/arm/board/tc/tc_bl31_setup.c (revision 6ec0c65b09745fd0f4cee44ee3aa99870303f448)
1*6ec0c65bSUsama Arif /*
2*6ec0c65bSUsama Arif  * Copyright (c) 2020, ARM Limited and Contributors. All rights reserved.
3*6ec0c65bSUsama Arif  *
4*6ec0c65bSUsama Arif  * SPDX-License-Identifier: BSD-3-Clause
5*6ec0c65bSUsama Arif  */
6*6ec0c65bSUsama Arif 
7*6ec0c65bSUsama Arif #include <assert.h>
8*6ec0c65bSUsama Arif 
9*6ec0c65bSUsama Arif #include <libfdt.h>
10*6ec0c65bSUsama Arif #include <tc_plat.h>
11*6ec0c65bSUsama Arif 
12*6ec0c65bSUsama Arif #include <common/bl_common.h>
13*6ec0c65bSUsama Arif #include <common/debug.h>
14*6ec0c65bSUsama Arif #include <drivers/arm/css/css_mhu_doorbell.h>
15*6ec0c65bSUsama Arif #include <drivers/arm/css/scmi.h>
16*6ec0c65bSUsama Arif #include <plat/arm/common/plat_arm.h>
17*6ec0c65bSUsama Arif #include <plat/common/platform.h>
18*6ec0c65bSUsama Arif 
19*6ec0c65bSUsama Arif static scmi_channel_plat_info_t tc_scmi_plat_info[] = {
20*6ec0c65bSUsama Arif 	{
21*6ec0c65bSUsama Arif 		.scmi_mbx_mem = CSS_SCMI_PAYLOAD_BASE,
22*6ec0c65bSUsama Arif 		.db_reg_addr = PLAT_CSS_MHU_BASE + SENDER_REG_SET(0),
23*6ec0c65bSUsama Arif 		.db_preserve_mask = 0xfffffffe,
24*6ec0c65bSUsama Arif 		.db_modify_mask = 0x1,
25*6ec0c65bSUsama Arif 		.ring_doorbell = &mhuv2_ring_doorbell,
26*6ec0c65bSUsama Arif 	}
27*6ec0c65bSUsama Arif };
28*6ec0c65bSUsama Arif 
29*6ec0c65bSUsama Arif void bl31_platform_setup(void)
30*6ec0c65bSUsama Arif {
31*6ec0c65bSUsama Arif 	tc_bl31_common_platform_setup();
32*6ec0c65bSUsama Arif }
33*6ec0c65bSUsama Arif 
34*6ec0c65bSUsama Arif scmi_channel_plat_info_t *plat_css_get_scmi_info(int channel_id)
35*6ec0c65bSUsama Arif {
36*6ec0c65bSUsama Arif 
37*6ec0c65bSUsama Arif 	return &tc_scmi_plat_info[channel_id];
38*6ec0c65bSUsama Arif 
39*6ec0c65bSUsama Arif }
40*6ec0c65bSUsama Arif 
41*6ec0c65bSUsama Arif void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
42*6ec0c65bSUsama Arif 				u_register_t arg2, u_register_t arg3)
43*6ec0c65bSUsama Arif {
44*6ec0c65bSUsama Arif 	arm_bl31_early_platform_setup((void *)arg0, arg1, arg2, (void *)arg3);
45*6ec0c65bSUsama Arif }
46*6ec0c65bSUsama Arif 
47*6ec0c65bSUsama Arif void tc_bl31_common_platform_setup(void)
48*6ec0c65bSUsama Arif {
49*6ec0c65bSUsama Arif 	arm_bl31_platform_setup();
50*6ec0c65bSUsama Arif }
51*6ec0c65bSUsama Arif 
52*6ec0c65bSUsama Arif const plat_psci_ops_t *plat_arm_psci_override_pm_ops(plat_psci_ops_t *ops)
53*6ec0c65bSUsama Arif {
54*6ec0c65bSUsama Arif 	return css_scmi_override_pm_ops(ops);
55*6ec0c65bSUsama Arif }
56