mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-24 13:55:56 +00:00

When an Arm Ltd GIC (Arm GIC-[567]00) is instantiated with one or more ITSes, the ITS MMIO frames appear between the distributor and redistributor addresses. This makes the beginning of the redistributor region dependent on the existence and number of ITSes. To support various FPGA images, with and without ITSes, probe the addresses in question, to learn whether they accommodate an ITS or a redistributor. This can be safely done by looking at the PIDR[01] registers, which contain an ID code for each region, documented in the Arm GIC TRMs. We try to find all ITSes instantiated, and skip either two or four 64K frames, depending on GICv4.1 support. At some point we will find the first redistributor; this address we then update in the DTB. Change-Id: Iefb88c2afa989e044fe0b36b7020b56538c60b07 Signed-off-by: Andre Przywara <andre.przywara@arm.com>
33 lines
764 B
C
33 lines
764 B
C
/*
|
|
* Copyright (c) 2020, ARM Limited and Contributors. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef FPGA_PRIVATE_H
|
|
#define FPGA_PRIVATE_H
|
|
|
|
#include "../fpga_def.h"
|
|
#include <platform_def.h>
|
|
|
|
#define C_RUNTIME_READY_KEY (0xaa55aa55)
|
|
#define VALID_MPID (1U)
|
|
#define FPGA_MAX_DTB_SIZE 0x10000
|
|
|
|
#ifndef __ASSEMBLER__
|
|
|
|
extern unsigned char fpga_valid_mpids[PLATFORM_CORE_COUNT];
|
|
|
|
void fpga_console_init(void);
|
|
|
|
void plat_fpga_gic_init(void);
|
|
void fpga_pwr_gic_on_finish(void);
|
|
void fpga_pwr_gic_off(void);
|
|
unsigned int plat_fpga_calc_core_pos(uint32_t mpid);
|
|
unsigned int fpga_get_nr_gic_cores(void);
|
|
uintptr_t fpga_get_redist_size(void);
|
|
uintptr_t fpga_get_redist_base(void);
|
|
|
|
#endif /* __ASSEMBLER__ */
|
|
|
|
#endif /* FPGA_PRIVATE_H */
|