xref: /rk3399_ARM-atf/plat/amd/versal2/include/plat_ipi.h (revision af22b19d6b9cc3985ca61c68eb1a364dff7c4874)
1c97857dbSAmit Nagal /*
2c97857dbSAmit Nagal  * Copyright (c) 2022, Xilinx, Inc. All rights reserved.
3e18e67fcSBen Levinsky  * Copyright (c) 2022-2025, Advanced Micro Devices, Inc. All rights reserved.
4c97857dbSAmit Nagal  *
5c97857dbSAmit Nagal  * SPDX-License-Identifier: BSD-3-Clause
6c97857dbSAmit Nagal  */
7c97857dbSAmit Nagal 
8c97857dbSAmit Nagal /* Versal Gen 2 IPI management enums and defines */
9c97857dbSAmit Nagal 
10c97857dbSAmit Nagal #ifndef PLAT_IPI_H
11c97857dbSAmit Nagal #define PLAT_IPI_H
12c97857dbSAmit Nagal 
13c97857dbSAmit Nagal #include <stdint.h>
14e18e67fcSBen Levinsky #include <lib/utils_def.h>
15c97857dbSAmit Nagal 
16c97857dbSAmit Nagal #include <ipi.h>
17c97857dbSAmit Nagal 
18c97857dbSAmit Nagal /*********************************************************************
19c97857dbSAmit Nagal  * IPI agent IDs macros
20c97857dbSAmit Nagal  ********************************************************************/
21c97857dbSAmit Nagal #define IPI_ID_PMC	1U
22c97857dbSAmit Nagal #define IPI_ID_APU	2U
23c97857dbSAmit Nagal #define IPI_ID_RPU0	3U
24c97857dbSAmit Nagal #define IPI_ID_RPU1	4U
25c97857dbSAmit Nagal #define IPI_ID_3	5U
26c97857dbSAmit Nagal #define IPI_ID_4	6U
27c97857dbSAmit Nagal #define IPI_ID_5	7U
28*af22b19dSBen Levinsky #define IPI_ID_PMC_NOBUF	8U
29*af22b19dSBen Levinsky #define IPI_ID_6_NOBUF_95	9U
30*af22b19dSBen Levinsky #define IPI_ID_1_NOBUF	10U
31*af22b19dSBen Levinsky #define IPI_ID_2_NOBUF	11U
32*af22b19dSBen Levinsky #define IPI_ID_3_NOBUF	12U
33*af22b19dSBen Levinsky #define IPI_ID_4_NOBUF	13U
34*af22b19dSBen Levinsky #define IPI_ID_5_NOBUF	14U
35*af22b19dSBen Levinsky #define IPI_ID_6_NOBUF_101	15U
36*af22b19dSBen Levinsky #define IPI_ID_MAX	16U
37c97857dbSAmit Nagal 
38c97857dbSAmit Nagal /*********************************************************************
39c97857dbSAmit Nagal  * IPI message buffers
40c97857dbSAmit Nagal  ********************************************************************/
41c97857dbSAmit Nagal #define IPI_BUFFER_BASEADDR	(0xEB3F0000U)
42c97857dbSAmit Nagal 
43c97857dbSAmit Nagal #define IPI_LOCAL_ID		IPI_ID_APU
44c97857dbSAmit Nagal #define IPI_REMOTE_ID		IPI_ID_PMC
45c97857dbSAmit Nagal 
46c97857dbSAmit Nagal #define IPI_BUFFER_LOCAL_BASE	(IPI_BUFFER_BASEADDR + (IPI_LOCAL_ID * 0x200U))
47c97857dbSAmit Nagal #define IPI_BUFFER_REMOTE_BASE	(IPI_BUFFER_BASEADDR + (IPI_REMOTE_ID * 0x200U))
48c97857dbSAmit Nagal 
49c97857dbSAmit Nagal #define IPI_BUFFER_TARGET_LOCAL_OFFSET	(IPI_LOCAL_ID * 0x40U)
50c97857dbSAmit Nagal #define IPI_BUFFER_TARGET_REMOTE_OFFSET	(IPI_REMOTE_ID * 0x40U)
51c97857dbSAmit Nagal 
52c97857dbSAmit Nagal #define IPI_BUFFER_MAX_WORDS	8
53c97857dbSAmit Nagal 
54c97857dbSAmit Nagal #define IPI_BUFFER_REQ_OFFSET	0x0U
55c97857dbSAmit Nagal #define IPI_BUFFER_RESP_OFFSET	0x20U
56c97857dbSAmit Nagal 
57c97857dbSAmit Nagal /*********************************************************************
58c97857dbSAmit Nagal  * Platform specific IPI API declarations
59c97857dbSAmit Nagal  ********************************************************************/
60c97857dbSAmit Nagal 
61c97857dbSAmit Nagal /* Configure IPI table */
62c97857dbSAmit Nagal extern void soc_ipi_config_table_init(void);
63c97857dbSAmit Nagal 
64c97857dbSAmit Nagal /*******************************************************************************
65c97857dbSAmit Nagal  * IPI registers and bitfields
66c97857dbSAmit Nagal  ******************************************************************************/
67c97857dbSAmit Nagal #define IPI0_REG_BASE		(0xEB330000U)
68e18e67fcSBen Levinsky #define IPI0_TRIG_BIT		BIT_32(2)
69e18e67fcSBen Levinsky #define PMC_IPI_TRIG_BIT	BIT_32(1)
70c97857dbSAmit Nagal #define IPI1_REG_BASE		(0xEB340000U)
71e18e67fcSBen Levinsky #define IPI1_TRIG_BIT		BIT_32(3)
72c97857dbSAmit Nagal #define IPI2_REG_BASE		(0xEB350000U)
73e18e67fcSBen Levinsky #define IPI2_TRIG_BIT		BIT_32(4)
74c97857dbSAmit Nagal #define IPI3_REG_BASE		(0xEB360000U)
75e18e67fcSBen Levinsky #define IPI3_TRIG_BIT		BIT_32(5)
76c97857dbSAmit Nagal #define IPI4_REG_BASE		(0xEB370000U)
77e18e67fcSBen Levinsky #define IPI4_TRIG_BIT		BIT_32(6)
78c97857dbSAmit Nagal #define IPI5_REG_BASE		(0xEB380000U)
79e18e67fcSBen Levinsky #define IPI5_TRIG_BIT		BIT_32(7)
80c97857dbSAmit Nagal 
81*af22b19dSBen Levinsky #define PMC_NOBUF_REG_BASE	(0xEB390000U)
82*af22b19dSBen Levinsky #define PMC_NOBUF_TRIG_BIT	BIT_32(8)
83*af22b19dSBen Levinsky #define IPI6_NOBUF_95_REG_BASE	(0xEB3A0000U)
84*af22b19dSBen Levinsky #define IPI6_NOBUF_95_TRIG_BIT	BIT_32(9)
85*af22b19dSBen Levinsky #define IPI1_NOBUF_REG_BASE	(0xEB3B0000U)
86*af22b19dSBen Levinsky #define IPI1_NOBUF_TRIG_BIT	BIT_32(10)
87*af22b19dSBen Levinsky #define IPI2_NOBUF_REG_BASE	(0xEB3B1000U)
88*af22b19dSBen Levinsky #define IPI2_NOBUF_TRIG_BIT	BIT_32(11)
89*af22b19dSBen Levinsky #define IPI3_NOBUF_REG_BASE	(0xEB3B2000U)
90*af22b19dSBen Levinsky #define IPI3_NOBUF_TRIG_BIT	BIT_32(12)
91*af22b19dSBen Levinsky #define IPI4_NOBUF_REG_BASE	(0xEB3B3000U)
92*af22b19dSBen Levinsky #define IPI4_NOBUF_TRIG_BIT	BIT_32(13)
93*af22b19dSBen Levinsky #define IPI5_NOBUF_REG_BASE	(0xEB3B4000U)
94*af22b19dSBen Levinsky #define IPI5_NOBUF_TRIG_BIT	BIT_32(14)
95*af22b19dSBen Levinsky #define IPI6_NOBUF_101_REG_BASE	(0xEB3B5000U)
96*af22b19dSBen Levinsky #define IPI6_NOBUF_101_TRIG_BIT	BIT_32(15)
97*af22b19dSBen Levinsky 
98c97857dbSAmit Nagal #endif /* PLAT_IPI_H */
99