xref: /rk3399_ARM-atf/plat/arm/board/juno/juno_el3_spmc.c (revision fad88444e30621ec711dedf9ff5b4a3675b2b3a9)
1e9a457f4SYeoreum Yun /*
2e9a457f4SYeoreum Yun  * Copyright (c) 2022-2025, Arm Limited and Contributors. All rights reserved.
3e9a457f4SYeoreum Yun  *
4e9a457f4SYeoreum Yun  * SPDX-License-Identifier: BSD-3-Clause
5e9a457f4SYeoreum Yun  */
6e9a457f4SYeoreum Yun 
7e9a457f4SYeoreum Yun #include <lib/xlat_tables/xlat_tables_defs.h>
8*fad88444SYeoreum Yun #include <plat/arm/common/plat_arm.h>
9e9a457f4SYeoreum Yun #include <services/el3_spmc_ffa_memory.h>
10e9a457f4SYeoreum Yun 
11e9a457f4SYeoreum Yun #include <platform_def.h>
12e9a457f4SYeoreum Yun 
13e9a457f4SYeoreum Yun __section(".arm_el3_tzc_dram") __unused static uint8_t plat_spmc_shmem_datastore[PAGE_SIZE];
14e9a457f4SYeoreum Yun 
15e9a457f4SYeoreum Yun int plat_spmc_shmem_datastore_get(uint8_t **datastore, size_t *size)
16e9a457f4SYeoreum Yun {
17e9a457f4SYeoreum Yun 	*datastore = (uint8_t *)plat_spmc_shmem_datastore;
18e9a457f4SYeoreum Yun 	*size = PAGE_SIZE;
19e9a457f4SYeoreum Yun 	return 0;
20e9a457f4SYeoreum Yun }
21e9a457f4SYeoreum Yun 
22e9a457f4SYeoreum Yun /*
23e9a457f4SYeoreum Yun  * Add dummy implementations of memory management related platform hooks.
24e9a457f4SYeoreum Yun  * These can be used to implement platform specific functionality to support
25e9a457f4SYeoreum Yun  * a memory sharing/lending operation.
26e9a457f4SYeoreum Yun  *
27e9a457f4SYeoreum Yun  * Note: The hooks must be located as part of the initial share request and
28e9a457f4SYeoreum Yun  * final reclaim to prevent order dependencies with operations that may take
29e9a457f4SYeoreum Yun  * place in the normal world without visibility of the SPMC.
30e9a457f4SYeoreum Yun  */
31e9a457f4SYeoreum Yun int plat_spmc_shmem_begin(struct ffa_mtd *desc)
32e9a457f4SYeoreum Yun {
33e9a457f4SYeoreum Yun 	return 0;
34e9a457f4SYeoreum Yun }
35e9a457f4SYeoreum Yun int plat_spmc_shmem_reclaim(struct ffa_mtd *desc)
36e9a457f4SYeoreum Yun {
37e9a457f4SYeoreum Yun 	return 0;
38e9a457f4SYeoreum Yun }
39e9a457f4SYeoreum Yun 
40e9a457f4SYeoreum Yun int plat_spmd_handle_group0_interrupt(uint32_t intid)
41e9a457f4SYeoreum Yun {
42e9a457f4SYeoreum Yun 	/*
43e9a457f4SYeoreum Yun 	 * As of now, there are no sources of Group0 secure interrupt enabled
44e9a457f4SYeoreum Yun 	 * for Juno.
45e9a457f4SYeoreum Yun 	 */
46e9a457f4SYeoreum Yun 	(void)intid;
47e9a457f4SYeoreum Yun 	return -1;
48e9a457f4SYeoreum Yun }
49e9a457f4SYeoreum Yun 
50