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