From 38c39a44d20004b0357cf169e4dc1682cda9a0cf Mon Sep 17 00:00:00 2001 From: laranjeiro Date: Mon, 14 Jun 2010 08:26:39 +0000 Subject: cesar/{hal/lib}: Add synchronisation on fatal button git-svn-id: svn+ssh://pessac/svn/cesar/trunk@7204 017c9cb6-072f-447c-8318-d5b54f68fe89 --- cesar/hal/leon/Config | 3 ++- cesar/hal/leon/src/fatal_button.c | 16 +++++++++++++++- cesar/hal/phy/src/phy.c | 2 +- cesar/lib/src/trace.c | 4 ++-- 4 files changed, 20 insertions(+), 5 deletions(-) (limited to 'cesar') diff --git a/cesar/hal/leon/Config b/cesar/hal/leon/Config index b70600d88a..ff48a3479e 100644 --- a/cesar/hal/leon/Config +++ b/cesar/hal/leon/Config @@ -1,3 +1,4 @@ CONFIG_LEON_FATAL_BUTTON = n -CONFIG_LEON_FATAL_BUTTON_GPIO = 1 +CONFIG_GPIO_LEON_FATAL_BUTTON = y +CONFIG_GPIO_LEON_FATAL_BUTTON_GPIO = 1 CONFIG_LEON_FATAL_BUTTON_IT = 0 diff --git a/cesar/hal/leon/src/fatal_button.c b/cesar/hal/leon/src/fatal_button.c index 6b83574d8a..19a16e5151 100644 --- a/cesar/hal/leon/src/fatal_button.c +++ b/cesar/hal/leon/src/fatal_button.c @@ -17,6 +17,7 @@ #include #include "hal/leon/gpio.h" +#include "hal/gpio/gpio.h" #include "config/leon/fatal.h" @@ -46,6 +47,16 @@ leon_fatal_button_dsr (cyg_vector_t vector, cyg_ucount32 count, dbg_fatal ("fatal button pressed"); } +/** + * Fatal Synchronisation, set LEON_FATAL_BUTTON GPIO to 0. + */ +static void +leon_fatal_sync (void) +{ + GPIO_SETUP (LEON_FATAL_BUTTON, GPIO_DIRECTION_OUT); + GPIO_SET (LEON_FATAL_BUTTON, 0); +} + void leon_fatal_button_init (void) { @@ -63,6 +74,9 @@ leon_fatal_button_init (void) LEON_GPIO_IT = LEON_GPIO_IT_CONFIG (CONFIG_LEON_FATAL_BUTTON_IT, LEON_GPIO_IT_CONFIG_ENABLED | LEON_GPIO_IT_CONFIG_EDGE - | CONFIG_LEON_FATAL_BUTTON_GPIO); + | CONFIG_GPIO_LEON_FATAL_BUTTON_GPIO); + /* Register callback to dbg lib. */ + dbg_assert (!dbg_fatal_cb[0]); + dbg_fatal_cb[0] = leon_fatal_sync; } diff --git a/cesar/hal/phy/src/phy.c b/cesar/hal/phy/src/phy.c index 23baa9cecb..a64324736d 100644 --- a/cesar/hal/phy/src/phy.c +++ b/cesar/hal/phy/src/phy.c @@ -373,7 +373,7 @@ phy_init (void *user_data, phy_rx_fc_cb_t rx_fc_cb, phy_access_cb_t access_cb, ctx->resys_gil_table[PHY_GIL_3534] = PHY_RESYS_GIL_OFFSET__VALUE_3534; ctx->pbdma_start_on_resys_it = false; - dbg_do (dbg_fatal_cb[1] = phy_fatal_dump); + dbg_do (dbg_fatal_cb[2] = phy_fatal_dump); /* Attach interrupt. */ cyg_drv_interrupt_create (LEON_ITC2_HIGH_PRIORITY_ITC1_IT, LEON_ITC2_HIGH_PRIORITY_ITC1_IT_PRIORITY, diff --git a/cesar/lib/src/trace.c b/cesar/lib/src/trace.c index ad0d54377a..74c00410b1 100644 --- a/cesar/lib/src/trace.c +++ b/cesar/lib/src/trace.c @@ -52,8 +52,8 @@ trace_init (void) trace_t * const ctx = &trace_global; list_init (&ctx->buffers); #if CONFIG_TRACE_ON_FATAL - dbg_assert (!dbg_fatal_cb[0]); - dbg_fatal_cb[0] = trace_dbg_dump_all; + dbg_assert (!dbg_fatal_cb[1]); + dbg_fatal_cb[1] = trace_dbg_dump_all; #endif } -- cgit v1.2.3