1c73a90e5STejas Patel /* 2bfd06265SMichal Simek * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved. 3bfd06265SMichal Simek * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved. 4c73a90e5STejas Patel * 5c73a90e5STejas Patel * SPDX-License-Identifier: BSD-3-Clause 6c73a90e5STejas Patel */ 7c73a90e5STejas Patel 8c73a90e5STejas Patel /* Versal IPI management enums and defines */ 9c73a90e5STejas Patel 10c73a90e5STejas Patel #ifndef PLAT_IPI_H 11c73a90e5STejas Patel #define PLAT_IPI_H 12c73a90e5STejas Patel 13c73a90e5STejas Patel #include <ipi.h> 14c73a90e5STejas Patel #include <stdint.h> 15c73a90e5STejas Patel 16c73a90e5STejas Patel /********************************************************************* 17c73a90e5STejas Patel * IPI agent IDs macros 18c73a90e5STejas Patel ********************************************************************/ 19c73a90e5STejas Patel #define IPI_ID_PMC 1U 20c73a90e5STejas Patel #define IPI_ID_APU 2U 21c73a90e5STejas Patel #define IPI_ID_RPU0 3U 22c73a90e5STejas Patel #define IPI_ID_RPU1 4U 23c73a90e5STejas Patel #define IPI_ID_3 5U 24c73a90e5STejas Patel #define IPI_ID_4 6U 25c73a90e5STejas Patel #define IPI_ID_5 7U 26c73a90e5STejas Patel 27c73a90e5STejas Patel /********************************************************************* 28c73a90e5STejas Patel * IPI message buffers 29c73a90e5STejas Patel ********************************************************************/ 30c73a90e5STejas Patel #define IPI_BUFFER_BASEADDR 0xFF3F0000U 31c73a90e5STejas Patel 32068b0bc6SMichal Simek #define IPI_LOCAL_ID IPI_ID_APU 33068b0bc6SMichal Simek #define IPI_REMOTE_ID IPI_ID_PMC 34068b0bc6SMichal Simek 35*69a5bee4SMichal Simek #define IPI_BUFFER_LOCAL_BASE (IPI_BUFFER_BASEADDR + (IPI_LOCAL_ID * 0x200U)) 36*69a5bee4SMichal Simek #define IPI_BUFFER_REMOTE_BASE (IPI_BUFFER_BASEADDR + (IPI_REMOTE_ID * 0x200U)) 37c73a90e5STejas Patel 38*69a5bee4SMichal Simek #define IPI_BUFFER_TARGET_LOCAL_OFFSET (IPI_LOCAL_ID * 0x40U) 39*69a5bee4SMichal Simek #define IPI_BUFFER_TARGET_REMOTE_OFFSET (IPI_REMOTE_ID * 0x40U) 40c73a90e5STejas Patel 41c73a90e5STejas Patel #define IPI_BUFFER_MAX_WORDS 8 42c73a90e5STejas Patel 43c73a90e5STejas Patel #define IPI_BUFFER_REQ_OFFSET 0x0U 44c73a90e5STejas Patel #define IPI_BUFFER_RESP_OFFSET 0x20U 45c73a90e5STejas Patel 46c73a90e5STejas Patel /********************************************************************* 47c73a90e5STejas Patel * Platform specific IPI API declarations 48c73a90e5STejas Patel ********************************************************************/ 49c73a90e5STejas Patel 50c73a90e5STejas Patel /* Configure IPI table for versal */ 51c73a90e5STejas Patel void versal_ipi_config_table_init(void); 52c73a90e5STejas Patel 53b2258ce3SMichal Simek /* IPI registers and bitfields */ 54b2258ce3SMichal Simek #define PMC_REG_BASE U(0xFF320000) 55b2258ce3SMichal Simek #define PMC_IPI_TRIG_BIT (1U << 1U) 56b2258ce3SMichal Simek #define IPI0_REG_BASE U(0xFF330000) 57b2258ce3SMichal Simek #define IPI0_TRIG_BIT (1U << 2U) 58b2258ce3SMichal Simek #define IPI1_REG_BASE U(0xFF340000) 59b2258ce3SMichal Simek #define IPI1_TRIG_BIT (1U << 3U) 60b2258ce3SMichal Simek #define IPI2_REG_BASE U(0xFF350000) 61b2258ce3SMichal Simek #define IPI2_TRIG_BIT (1U << 4U) 62b2258ce3SMichal Simek #define IPI3_REG_BASE U(0xFF360000) 63b2258ce3SMichal Simek #define IPI3_TRIG_BIT (1U << 5U) 64b2258ce3SMichal Simek #define IPI4_REG_BASE U(0xFF370000) 65b2258ce3SMichal Simek #define IPI4_TRIG_BIT (1U << 5U) 66b2258ce3SMichal Simek #define IPI5_REG_BASE U(0xFF380000) 67b2258ce3SMichal Simek #define IPI5_TRIG_BIT (1U << 6U) 68b2258ce3SMichal Simek 69c73a90e5STejas Patel #endif /* PLAT_IPI_H */ 70