1 /*
2  * Copyright (c) 2017-2018, Arm Limited and Contributors. All rights reserved.
3  * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
4  * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
5  *
6  * SPDX-License-Identifier: BSD-3-Clause
7  */
8 
9 /* ZynqMP IPI management enums and defines */
10 
11 #ifndef PLAT_IPI_H
12 #define PLAT_IPI_H
13 
14 #include <stdint.h>
15 #include <ipi.h>
16 
17 /*********************************************************************
18  * IPI agent IDs macros
19  ********************************************************************/
20 #define IPI_ID_APU	0U
21 #define IPI_ID_RPU0	1U
22 #define IPI_ID_RPU1	2U
23 #define IPI_ID_PMU0	3U
24 #define IPI_ID_PMU1	4U
25 #define IPI_ID_PMU2	5U
26 #define IPI_ID_PMU3	6U
27 #define IPI_ID_PL0	7U
28 #define IPI_ID_PL1	8U
29 #define IPI_ID_PL2	9U
30 #define IPI_ID_PL3	10U
31 
32 /*********************************************************************
33  * IPI message buffers
34  ********************************************************************/
35 #define IPI_BUFFER_BASEADDR	0xFF990000U
36 
37 #define IPI_LOCAL_ID		IPI_ID_APU
38 #define IPI_REMOTE_ID		IPI_ID_PMU0
39 
40 #define IPI_BUFFER_LOCAL_BASE	(IPI_BUFFER_BASEADDR + 0x400U)
41 #define IPI_BUFFER_REMOTE_BASE	(IPI_BUFFER_BASEADDR + 0xE00U)
42 
43 #define IPI_BUFFER_TARGET_LOCAL_OFFSET	0x80U
44 #define IPI_BUFFER_TARGET_REMOTE_OFFSET	0x1C0U
45 
46 #define IPI_BUFFER_MAX_WORDS	8U
47 
48 #define IPI_BUFFER_REQ_OFFSET	0x0U
49 #define IPI_BUFFER_RESP_OFFSET	0x20U
50 
51 /*********************************************************************
52  * Platform specific IPI API declarations
53  ********************************************************************/
54 
55 /* Configure IPI table for zynqmp */
56 void zynqmp_ipi_config_table_init(void);
57 
58 #endif /* PLAT_IPI_H */
59