mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-08-14 16:37:05 +02:00
Only one hardcode interrupt handler is supported as of now. This is IPI interrupt between APU and PMC processor. This patch adds infrastructure to register multiple interrupt handlers. This infrastructure was used and tested for two interrupts and so, interrupt id and handler container size is 2 which is defined by MAX_INTR_EL3. Interrupt id is not used as container index due to size constraints. User is expected to adjust MAX_INTR_EL3 based on how many interrupts are handled in TF-A Signed-off-by: Tanmay Shah <tanmay.shah@amd.com> Change-Id: Id49d94f6773fbb6874ccf89c0d12572efc7e678e
40 lines
1.1 KiB
C
40 lines
1.1 KiB
C
/*
|
|
* Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved.
|
|
* Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
|
|
* Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef PLAT_PRIVATE_H
|
|
#define PLAT_PRIVATE_H
|
|
|
|
#include <lib/xlat_tables/xlat_tables.h>
|
|
#include <bl31/interrupt_mgmt.h>
|
|
|
|
typedef struct versal_intr_info_type_el3 {
|
|
uint32_t id;
|
|
interrupt_type_handler_t handler;
|
|
} versal_intr_info_type_el3_t;
|
|
|
|
void versal_config_setup(void);
|
|
|
|
const mmap_region_t *plat_versal_get_mmap(void);
|
|
|
|
void plat_versal_gic_driver_init(void);
|
|
void plat_versal_gic_init(void);
|
|
void plat_versal_gic_cpuif_enable(void);
|
|
void plat_versal_gic_cpuif_disable(void);
|
|
void plat_versal_gic_pcpu_init(void);
|
|
void plat_versal_gic_save(void);
|
|
void plat_versal_gic_resume(void);
|
|
|
|
uint32_t versal_calc_core_pos(u_register_t mpidr);
|
|
/*
|
|
* Register handler to specific GIC entrance
|
|
* for INTR_TYPE_EL3 type of interrupt
|
|
*/
|
|
int32_t request_intr_type_el3(uint32_t irq, interrupt_type_handler_t fiq_handler);
|
|
|
|
#endif /* PLAT_PRIVATE_H */
|