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