mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-20 03:24:25 +00:00

For NXP platforms: - Setup files for BL2 and BL31 - Other supporting files. Signed-off-by: Pankaj Gupta <pankaj.gupta@nxp.com> Change-Id: I36a1183a0652701bdede9e02d41eb976accbb017
66 lines
1.3 KiB
C
66 lines
1.3 KiB
C
/*
|
|
* Copyright 2020 NXP
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*
|
|
*/
|
|
|
|
#include <bl31/interrupt_mgmt.h>
|
|
#include <common/debug.h>
|
|
#include <ls_interrupt_mgmt.h>
|
|
#include <plat/common/platform.h>
|
|
|
|
static interrupt_type_handler_t type_el3_interrupt_table[MAX_INTR_EL3];
|
|
|
|
int request_intr_type_el3(uint32_t id, interrupt_type_handler_t handler)
|
|
{
|
|
/* Validate 'handler' and 'id' parameters */
|
|
if (!handler || id >= MAX_INTR_EL3) {
|
|
return -EINVAL;
|
|
}
|
|
|
|
/* Check if a handler has already been registered */
|
|
if (type_el3_interrupt_table[id] != NULL) {
|
|
return -EALREADY;
|
|
}
|
|
|
|
type_el3_interrupt_table[id] = handler;
|
|
|
|
return 0;
|
|
}
|
|
|
|
static uint64_t ls_el3_interrupt_handler(uint32_t id, uint32_t flags,
|
|
void *handle, void *cookie)
|
|
{
|
|
uint32_t intr_id;
|
|
interrupt_type_handler_t handler;
|
|
|
|
intr_id = plat_ic_get_pending_interrupt_id();
|
|
|
|
INFO("Interrupt recvd is %d\n", intr_id);
|
|
|
|
handler = type_el3_interrupt_table[intr_id];
|
|
if (handler != NULL) {
|
|
handler(intr_id, flags, handle, cookie);
|
|
}
|
|
|
|
/*
|
|
* Mark this interrupt as complete to avoid a interrupt storm.
|
|
*/
|
|
plat_ic_end_of_interrupt(intr_id);
|
|
|
|
return 0U;
|
|
}
|
|
|
|
void ls_el3_interrupt_config(void)
|
|
{
|
|
uint64_t flags = 0U;
|
|
uint64_t rc;
|
|
|
|
set_interrupt_rm_flag(flags, NON_SECURE);
|
|
rc = register_interrupt_type_handler(INTR_TYPE_EL3,
|
|
ls_el3_interrupt_handler, flags);
|
|
if (rc != 0U) {
|
|
panic();
|
|
}
|
|
}
|