Commit d16b045c authored by Varun Wadekar's avatar Varun Wadekar
Browse files

Tegra: fiq_glue: support to handle LEGACY_FIQ PPIs for Tegra SoCs



This patch adds support to handle secure PPIs for Tegra watchdog timers. This
functionality is currently protected by the ENABLE_WDT_LEGACY_FIQ_HANDLING
configuration variable and is only enabled for Tegra210 platforms, for now.

Change-Id: I0752ef54a986c58305e1bc8ad9be71d4a8bbd394
Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
parent 2ed09b1e
...@@ -16,9 +16,15 @@ ...@@ -16,9 +16,15 @@
#include <lib/el3_runtime/context_mgmt.h> #include <lib/el3_runtime/context_mgmt.h>
#include <plat/common/platform.h> #include <plat/common/platform.h>
#if ENABLE_WDT_LEGACY_FIQ_HANDLING
#include <flowctrl.h>
#endif
#include <tegra_def.h> #include <tegra_def.h>
#include <tegra_private.h> #include <tegra_private.h>
/* Legacy FIQ used by earlier Tegra platforms */
#define LEGACY_FIQ_PPI_WDT 28U
static DEFINE_BAKERY_LOCK(tegra_fiq_lock); static DEFINE_BAKERY_LOCK(tegra_fiq_lock);
/******************************************************************************* /*******************************************************************************
...@@ -79,6 +85,20 @@ static uint64_t tegra_fiq_interrupt_handler(uint32_t id, ...@@ -79,6 +85,20 @@ static uint64_t tegra_fiq_interrupt_handler(uint32_t id,
cm_set_elr_el3(NON_SECURE, ns_fiq_handler_addr); cm_set_elr_el3(NON_SECURE, ns_fiq_handler_addr);
} }
#if ENABLE_WDT_LEGACY_FIQ_HANDLING
/*
* Tegra platforms that use LEGACY_FIQ as the watchdog timer FIQ
* need to issue an IPI to other CPUs, to allow them to handle
* the "system hung" scenario. This interrupt is passed to the GICD
* via the Flow Controller. So, once we receive this interrupt,
* disable the routing so that we can mark it as "complete" in the
* GIC later.
*/
if (irq == LEGACY_FIQ_PPI_WDT) {
tegra_fc_disable_fiq_to_ccplex_routing();
}
#endif
/* /*
* Mark this interrupt as complete to avoid a FIQ storm. * Mark this interrupt as complete to avoid a FIQ storm.
*/ */
......
...@@ -22,6 +22,9 @@ $(eval $(call add_define,MAX_XLAT_TABLES)) ...@@ -22,6 +22,9 @@ $(eval $(call add_define,MAX_XLAT_TABLES))
MAX_MMAP_REGIONS := 15 MAX_MMAP_REGIONS := 15
$(eval $(call add_define,MAX_MMAP_REGIONS)) $(eval $(call add_define,MAX_MMAP_REGIONS))
ENABLE_WDT_LEGACY_FIQ_HANDLING := 1
$(eval $(call add_define,ENABLE_WDT_LEGACY_FIQ_HANDLING))
PLAT_INCLUDES += -I${SOC_DIR}/drivers/se PLAT_INCLUDES += -I${SOC_DIR}/drivers/se
BL31_SOURCES += drivers/ti/uart/aarch64/16550_console.S \ BL31_SOURCES += drivers/ti/uart/aarch64/16550_console.S \
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment