xref: /rk3399_ARM-atf/plat/arm/board/automotive_rd/platform/rdaspen/rdaspen_bl31_setup.c (revision 9acaf99f427623304e6cdf7a0d0bca8803282da6)
1 /*
2  * Copyright (c) 2025, Arm Limited. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #include <assert.h>
8 #include <drivers/arm/css/css_mhu_doorbell.h>
9 #include <drivers/arm/css/scmi.h>
10 #include <drivers/arm/dsu.h>
11 
12 static scmi_channel_plat_info_t plat_rd_scmi_info[] = {
13 	{
14 		.scmi_mbx_mem = CSS_SCMI_PAYLOAD_BASE,
15 		.db_reg_addr = PLAT_CSS_MHU_BASE + MHU_V3_SENDER_REG_SET(0),
16 		.db_preserve_mask = 0xfffffffe,
17 		.db_modify_mask = 0x1,
18 		.ring_doorbell = &mhu_ring_doorbell,
19 	},
20 };
21 
plat_css_get_scmi_info(unsigned int channel_id)22 scmi_channel_plat_info_t *plat_css_get_scmi_info(unsigned int channel_id)
23 {
24 	assert(channel_id == 0U);
25 	return &plat_rd_scmi_info[channel_id];
26 }
27 
plat_arm_psci_override_pm_ops(plat_psci_ops_t * ops)28 const plat_psci_ops_t *plat_arm_psci_override_pm_ops(plat_psci_ops_t *ops)
29 {
30 	return css_scmi_override_pm_ops(ops);
31 }
32 
33 const dsu_driver_data_t plat_dsu_data = {
34 	.clusterpwrdwn_pwrdn = false,
35 	.clusterpwrdwn_memret = false,
36 	.clusterpwrctlr_cachepwr = CLUSTERPWRCTLR_CACHEPWR_RESET,
37 	.clusterpwrctlr_funcret = CLUSTERPWRCTLR_FUNCRET_RESET
38 };
39 
40 #if defined(SPD_spmd) && (SPMC_AT_EL3 == 0)
41 /*
42  * A dummy implementation of the platform handler for Group0 secure interrupt.
43  */
plat_spmd_handle_group0_interrupt(uint32_t intid)44 int plat_spmd_handle_group0_interrupt(uint32_t intid)
45 {
46 	(void)intid;
47 	return -1;
48 }
49 #endif /* defined(SPD_spmd) && (SPMC_AT_EL3 == 0) */
50