blob: c110fb816f447673922c576c78ba0c4b10b49013 [file] [log] [blame]
Amit Nagal055796f2024-06-05 12:32:38 +05301/*
2 * Copyright (c) 2022, Xilinx, Inc. All rights reserved.
Ben Levinskyd84ecb72025-04-08 23:06:15 +05303 * Copyright (c) 2022-2025, Advanced Micro Devices, Inc. All rights reserved.
Amit Nagal055796f2024-06-05 12:32:38 +05304 *
5 * SPDX-License-Identifier: BSD-3-Clause
6 */
7
8/* Versal Gen 2 IPI management enums and defines */
9
10#ifndef PLAT_IPI_H
11#define PLAT_IPI_H
12
13#include <stdint.h>
Ben Levinskyd84ecb72025-04-08 23:06:15 +053014#include <lib/utils_def.h>
Amit Nagal055796f2024-06-05 12:32:38 +053015
16#include <ipi.h>
17
18/*********************************************************************
19 * IPI agent IDs macros
20 ********************************************************************/
21#define IPI_ID_PMC 1U
22#define IPI_ID_APU 2U
23#define IPI_ID_RPU0 3U
24#define IPI_ID_RPU1 4U
25#define IPI_ID_3 5U
26#define IPI_ID_4 6U
27#define IPI_ID_5 7U
Ben Levinskya472d3f2025-04-07 21:57:40 +053028#define IPI_ID_PMC_NOBUF 8U
29#define IPI_ID_6_NOBUF_95 9U
30#define IPI_ID_1_NOBUF 10U
31#define IPI_ID_2_NOBUF 11U
32#define IPI_ID_3_NOBUF 12U
33#define IPI_ID_4_NOBUF 13U
34#define IPI_ID_5_NOBUF 14U
35#define IPI_ID_6_NOBUF_101 15U
36#define IPI_ID_MAX 16U
Amit Nagal055796f2024-06-05 12:32:38 +053037
38/*********************************************************************
39 * IPI message buffers
40 ********************************************************************/
41#define IPI_BUFFER_BASEADDR (0xEB3F0000U)
42
43#define IPI_LOCAL_ID IPI_ID_APU
44#define IPI_REMOTE_ID IPI_ID_PMC
45
46#define IPI_BUFFER_LOCAL_BASE (IPI_BUFFER_BASEADDR + (IPI_LOCAL_ID * 0x200U))
47#define IPI_BUFFER_REMOTE_BASE (IPI_BUFFER_BASEADDR + (IPI_REMOTE_ID * 0x200U))
48
49#define IPI_BUFFER_TARGET_LOCAL_OFFSET (IPI_LOCAL_ID * 0x40U)
50#define IPI_BUFFER_TARGET_REMOTE_OFFSET (IPI_REMOTE_ID * 0x40U)
51
52#define IPI_BUFFER_MAX_WORDS 8
53
54#define IPI_BUFFER_REQ_OFFSET 0x0U
55#define IPI_BUFFER_RESP_OFFSET 0x20U
56
57/*********************************************************************
58 * Platform specific IPI API declarations
59 ********************************************************************/
60
61/* Configure IPI table */
62extern void soc_ipi_config_table_init(void);
63
64/*******************************************************************************
65 * IPI registers and bitfields
66 ******************************************************************************/
67#define IPI0_REG_BASE (0xEB330000U)
Ben Levinskyd84ecb72025-04-08 23:06:15 +053068#define IPI0_TRIG_BIT BIT_32(2)
69#define PMC_IPI_TRIG_BIT BIT_32(1)
Amit Nagal055796f2024-06-05 12:32:38 +053070#define IPI1_REG_BASE (0xEB340000U)
Ben Levinskyd84ecb72025-04-08 23:06:15 +053071#define IPI1_TRIG_BIT BIT_32(3)
Amit Nagal055796f2024-06-05 12:32:38 +053072#define IPI2_REG_BASE (0xEB350000U)
Ben Levinskyd84ecb72025-04-08 23:06:15 +053073#define IPI2_TRIG_BIT BIT_32(4)
Amit Nagal055796f2024-06-05 12:32:38 +053074#define IPI3_REG_BASE (0xEB360000U)
Ben Levinskyd84ecb72025-04-08 23:06:15 +053075#define IPI3_TRIG_BIT BIT_32(5)
Amit Nagal055796f2024-06-05 12:32:38 +053076#define IPI4_REG_BASE (0xEB370000U)
Ben Levinskyd84ecb72025-04-08 23:06:15 +053077#define IPI4_TRIG_BIT BIT_32(6)
Amit Nagal055796f2024-06-05 12:32:38 +053078#define IPI5_REG_BASE (0xEB380000U)
Ben Levinskyd84ecb72025-04-08 23:06:15 +053079#define IPI5_TRIG_BIT BIT_32(7)
Amit Nagal055796f2024-06-05 12:32:38 +053080
Ben Levinskya472d3f2025-04-07 21:57:40 +053081#define PMC_NOBUF_REG_BASE (0xEB390000U)
82#define PMC_NOBUF_TRIG_BIT BIT_32(8)
83#define IPI6_NOBUF_95_REG_BASE (0xEB3A0000U)
84#define IPI6_NOBUF_95_TRIG_BIT BIT_32(9)
85#define IPI1_NOBUF_REG_BASE (0xEB3B0000U)
86#define IPI1_NOBUF_TRIG_BIT BIT_32(10)
87#define IPI2_NOBUF_REG_BASE (0xEB3B1000U)
88#define IPI2_NOBUF_TRIG_BIT BIT_32(11)
89#define IPI3_NOBUF_REG_BASE (0xEB3B2000U)
90#define IPI3_NOBUF_TRIG_BIT BIT_32(12)
91#define IPI4_NOBUF_REG_BASE (0xEB3B3000U)
92#define IPI4_NOBUF_TRIG_BIT BIT_32(13)
93#define IPI5_NOBUF_REG_BASE (0xEB3B4000U)
94#define IPI5_NOBUF_TRIG_BIT BIT_32(14)
95#define IPI6_NOBUF_101_REG_BASE (0xEB3B5000U)
96#define IPI6_NOBUF_101_TRIG_BIT BIT_32(15)
97
Amit Nagal055796f2024-06-05 12:32:38 +053098#endif /* PLAT_IPI_H */