mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-17 18:14:24 +00:00

New SoC is a78 based with gicv3 and uart over pl011. Communication interfaces are similar to Versal NET platform. System starts with AMD PLM firmware which loads TF-A(bl31) to memory, which is already configured, and jumps to it. PLM also prepare handoff structure for TF-A with information what components were load and flags which indicate which EL level SW should be started. Change-Id: I5065b1b7ec4ee58e77dc4096747758480c84009c Signed-off-by: Amit Nagal <amit.nagal@amd.com> Signed-off-by: Akshay Belsare <akshay.belsare@amd.com> Signed-off-by: Michal Simek <michal.simek@amd.com>
72 lines
2.2 KiB
C
72 lines
2.2 KiB
C
/*
|
|
* Copyright (c) 2022, Xilinx, Inc. All rights reserved.
|
|
* Copyright (c) 2022-2024, Advanced Micro Devices, Inc. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
/* Versal Gen 2 IPI management enums and defines */
|
|
|
|
#ifndef PLAT_IPI_H
|
|
#define PLAT_IPI_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <ipi.h>
|
|
|
|
/*********************************************************************
|
|
* IPI agent IDs macros
|
|
********************************************************************/
|
|
#define IPI_ID_PMC 1U
|
|
#define IPI_ID_APU 2U
|
|
#define IPI_ID_RPU0 3U
|
|
#define IPI_ID_RPU1 4U
|
|
#define IPI_ID_3 5U
|
|
#define IPI_ID_4 6U
|
|
#define IPI_ID_5 7U
|
|
#define IPI_ID_MAX 8U
|
|
|
|
/*********************************************************************
|
|
* IPI message buffers
|
|
********************************************************************/
|
|
#define IPI_BUFFER_BASEADDR (0xEB3F0000U)
|
|
|
|
#define IPI_LOCAL_ID IPI_ID_APU
|
|
#define IPI_REMOTE_ID IPI_ID_PMC
|
|
|
|
#define IPI_BUFFER_LOCAL_BASE (IPI_BUFFER_BASEADDR + (IPI_LOCAL_ID * 0x200U))
|
|
#define IPI_BUFFER_REMOTE_BASE (IPI_BUFFER_BASEADDR + (IPI_REMOTE_ID * 0x200U))
|
|
|
|
#define IPI_BUFFER_TARGET_LOCAL_OFFSET (IPI_LOCAL_ID * 0x40U)
|
|
#define IPI_BUFFER_TARGET_REMOTE_OFFSET (IPI_REMOTE_ID * 0x40U)
|
|
|
|
#define IPI_BUFFER_MAX_WORDS 8
|
|
|
|
#define IPI_BUFFER_REQ_OFFSET 0x0U
|
|
#define IPI_BUFFER_RESP_OFFSET 0x20U
|
|
|
|
/*********************************************************************
|
|
* Platform specific IPI API declarations
|
|
********************************************************************/
|
|
|
|
/* Configure IPI table */
|
|
extern void soc_ipi_config_table_init(void);
|
|
|
|
/*******************************************************************************
|
|
* IPI registers and bitfields
|
|
******************************************************************************/
|
|
#define IPI0_REG_BASE (0xEB330000U)
|
|
#define IPI0_TRIG_BIT (1 << 2)
|
|
#define PMC_IPI_TRIG_BIT (1 << 1)
|
|
#define IPI1_REG_BASE (0xEB340000U)
|
|
#define IPI1_TRIG_BIT (1 << 3)
|
|
#define IPI2_REG_BASE (0xEB350000U)
|
|
#define IPI2_TRIG_BIT (1 << 4)
|
|
#define IPI3_REG_BASE (0xEB360000U)
|
|
#define IPI3_TRIG_BIT (1 << 5)
|
|
#define IPI4_REG_BASE (0xEB370000U)
|
|
#define IPI4_TRIG_BIT (1 << 6)
|
|
#define IPI5_REG_BASE (0xEB380000U)
|
|
#define IPI5_TRIG_BIT (1 << 7)
|
|
|
|
#endif /* PLAT_IPI_H */
|