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