1c97857dbSAmit Nagal /*
2c97857dbSAmit Nagal * Copyright (c) 2022, Xilinx, Inc. All rights reserved.
3af22b19dSBen 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 /*
9c97857dbSAmit Nagal * SoC IPI agent registers access management
10c97857dbSAmit Nagal */
11c97857dbSAmit Nagal
12c97857dbSAmit Nagal #include <plat_ipi.h>
13c97857dbSAmit Nagal
14*f91fbc6bSPrasad Kummari /* Versal Gen 2 ipi configuration table */
15c97857dbSAmit Nagal static const struct ipi_config ipi_table[IPI_ID_MAX] = {
16c97857dbSAmit Nagal /* A78 IPI */
17c97857dbSAmit Nagal [IPI_ID_APU] = {
18c97857dbSAmit Nagal .ipi_bit_mask = IPI0_TRIG_BIT,
19c97857dbSAmit Nagal .ipi_reg_base = IPI0_REG_BASE,
20c97857dbSAmit Nagal .secure_only = 0,
21c97857dbSAmit Nagal },
22c97857dbSAmit Nagal
23c97857dbSAmit Nagal /* PMC IPI */
24c97857dbSAmit Nagal [IPI_ID_PMC] = {
25c97857dbSAmit Nagal .ipi_bit_mask = PMC_IPI_TRIG_BIT,
26c97857dbSAmit Nagal .ipi_reg_base = IPI0_REG_BASE,
27c97857dbSAmit Nagal .secure_only = IPI_SECURE_MASK,
28c97857dbSAmit Nagal },
29c97857dbSAmit Nagal
30c97857dbSAmit Nagal /* RPU0 IPI */
31c97857dbSAmit Nagal [IPI_ID_RPU0] = {
32c97857dbSAmit Nagal .ipi_bit_mask = IPI1_TRIG_BIT,
33c97857dbSAmit Nagal .ipi_reg_base = IPI1_REG_BASE,
34c97857dbSAmit Nagal .secure_only = 0,
35c97857dbSAmit Nagal },
36c97857dbSAmit Nagal
37c97857dbSAmit Nagal /* RPU1 IPI */
38c97857dbSAmit Nagal [IPI_ID_RPU1] = {
39c97857dbSAmit Nagal .ipi_bit_mask = IPI2_TRIG_BIT,
40c97857dbSAmit Nagal .ipi_reg_base = IPI2_REG_BASE,
41c97857dbSAmit Nagal .secure_only = 0,
42c97857dbSAmit Nagal },
43c97857dbSAmit Nagal
44c97857dbSAmit Nagal /* IPI3 IPI */
45c97857dbSAmit Nagal [IPI_ID_3] = {
46c97857dbSAmit Nagal .ipi_bit_mask = IPI3_TRIG_BIT,
47c97857dbSAmit Nagal .ipi_reg_base = IPI3_REG_BASE,
48c97857dbSAmit Nagal .secure_only = 0,
49c97857dbSAmit Nagal },
50c97857dbSAmit Nagal
51c97857dbSAmit Nagal /* IPI4 IPI */
52c97857dbSAmit Nagal [IPI_ID_4] = {
53c97857dbSAmit Nagal .ipi_bit_mask = IPI4_TRIG_BIT,
54c97857dbSAmit Nagal .ipi_reg_base = IPI4_REG_BASE,
55c97857dbSAmit Nagal .secure_only = 0,
56c97857dbSAmit Nagal },
57c97857dbSAmit Nagal
58c97857dbSAmit Nagal /* IPI5 IPI */
59c97857dbSAmit Nagal [IPI_ID_5] = {
60c97857dbSAmit Nagal .ipi_bit_mask = IPI5_TRIG_BIT,
61c97857dbSAmit Nagal .ipi_reg_base = IPI5_REG_BASE,
62c97857dbSAmit Nagal .secure_only = 0,
63c97857dbSAmit Nagal },
64af22b19dSBen Levinsky
65af22b19dSBen Levinsky /* PMC_NOBUF IPI */
66af22b19dSBen Levinsky [IPI_ID_PMC_NOBUF] = {
67af22b19dSBen Levinsky .ipi_bit_mask = PMC_NOBUF_TRIG_BIT,
68af22b19dSBen Levinsky .ipi_reg_base = PMC_NOBUF_REG_BASE,
69af22b19dSBen Levinsky .secure_only = IPI_SECURE_MASK,
70af22b19dSBen Levinsky },
71af22b19dSBen Levinsky
72af22b19dSBen Levinsky /* IPI6 IPI */
73af22b19dSBen Levinsky [IPI_ID_6_NOBUF_95] = {
74af22b19dSBen Levinsky .ipi_bit_mask = IPI6_NOBUF_95_TRIG_BIT,
75af22b19dSBen Levinsky .ipi_reg_base = IPI6_NOBUF_95_REG_BASE,
76af22b19dSBen Levinsky .secure_only = 0,
77af22b19dSBen Levinsky },
78af22b19dSBen Levinsky
79af22b19dSBen Levinsky /* IPI1 NO BUF IPI */
80af22b19dSBen Levinsky [IPI_ID_1_NOBUF] = {
81af22b19dSBen Levinsky .ipi_bit_mask = IPI1_NOBUF_TRIG_BIT,
82af22b19dSBen Levinsky .ipi_reg_base = IPI1_NOBUF_REG_BASE,
83af22b19dSBen Levinsky .secure_only = 0,
84af22b19dSBen Levinsky },
85af22b19dSBen Levinsky
86af22b19dSBen Levinsky /* IPI2 NO BUF IPI */
87af22b19dSBen Levinsky [IPI_ID_2_NOBUF] = {
88af22b19dSBen Levinsky .ipi_bit_mask = IPI2_NOBUF_TRIG_BIT,
89af22b19dSBen Levinsky .ipi_reg_base = IPI2_NOBUF_REG_BASE,
90af22b19dSBen Levinsky .secure_only = 0,
91af22b19dSBen Levinsky },
92af22b19dSBen Levinsky
93af22b19dSBen Levinsky /* IPI3 NO BUF IPI */
94af22b19dSBen Levinsky [IPI_ID_3_NOBUF] = {
95af22b19dSBen Levinsky .ipi_bit_mask = IPI3_NOBUF_TRIG_BIT,
96af22b19dSBen Levinsky .ipi_reg_base = IPI3_NOBUF_REG_BASE,
97af22b19dSBen Levinsky .secure_only = 0,
98af22b19dSBen Levinsky },
99af22b19dSBen Levinsky
100af22b19dSBen Levinsky /* IPI4 NO BUF IPI */
101af22b19dSBen Levinsky [IPI_ID_4_NOBUF] = {
102af22b19dSBen Levinsky .ipi_bit_mask = IPI4_NOBUF_TRIG_BIT,
103af22b19dSBen Levinsky .ipi_reg_base = IPI4_NOBUF_REG_BASE,
104af22b19dSBen Levinsky .secure_only = 0,
105af22b19dSBen Levinsky },
106af22b19dSBen Levinsky
107af22b19dSBen Levinsky /* IPI5 NO BUF IPI */
108af22b19dSBen Levinsky [IPI_ID_5_NOBUF] = {
109af22b19dSBen Levinsky .ipi_bit_mask = IPI5_NOBUF_TRIG_BIT,
110af22b19dSBen Levinsky .ipi_reg_base = IPI5_NOBUF_REG_BASE,
111af22b19dSBen Levinsky .secure_only = 0,
112af22b19dSBen Levinsky },
113af22b19dSBen Levinsky
114af22b19dSBen Levinsky /* IPI6 NO BUF IPI */
115af22b19dSBen Levinsky [IPI_ID_6_NOBUF_101] = {
116af22b19dSBen Levinsky .ipi_bit_mask = IPI6_NOBUF_101_TRIG_BIT,
117af22b19dSBen Levinsky .ipi_reg_base = IPI6_NOBUF_101_REG_BASE,
118af22b19dSBen Levinsky .secure_only = 0,
119af22b19dSBen Levinsky },
120c97857dbSAmit Nagal };
121c97857dbSAmit Nagal
122c97857dbSAmit Nagal /**
123*f91fbc6bSPrasad Kummari * soc_ipi_config_table_init() - Initialize Versal Gen 2 IPI configuration data.
124c97857dbSAmit Nagal */
soc_ipi_config_table_init(void)125c97857dbSAmit Nagal void soc_ipi_config_table_init(void)
126c97857dbSAmit Nagal {
127c97857dbSAmit Nagal ipi_config_table_init(ipi_table, ARRAY_SIZE(ipi_table));
128c97857dbSAmit Nagal }
129