aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal
diff options
context:
space:
mode:
authorStephane D'Alu <sdalu@sdalu.com>2016-07-10 13:35:08 +0200
committerStephane D'Alu <sdalu@sdalu.com>2016-07-10 13:35:08 +0200
commit7e8e69551fc85ee5683a0c1e9a6675e5d7f3496c (patch)
tree8295e9c0acfcce930077849a28c281c6c10c9e2f /os/hal
parente5da7dbd39e5686ae7ecc908c55b827d2616bd5a (diff)
downloadChibiOS-Contrib-7e8e69551fc85ee5683a0c1e9a6675e5d7f3496c.tar.gz
ChibiOS-Contrib-7e8e69551fc85ee5683a0c1e9a6675e5d7f3496c.tar.bz2
ChibiOS-Contrib-7e8e69551fc85ee5683a0c1e9a6675e5d7f3496c.zip
moved wdg to LLD
Diffstat (limited to 'os/hal')
-rw-r--r--os/hal/ports/NRF5/NRF51822/hal_wdg_lld.c153
-rw-r--r--os/hal/ports/NRF5/NRF51822/hal_wdg_lld.h143
2 files changed, 0 insertions, 296 deletions
diff --git a/os/hal/ports/NRF5/NRF51822/hal_wdg_lld.c b/os/hal/ports/NRF5/NRF51822/hal_wdg_lld.c
deleted file mode 100644
index 632ccde..0000000
--- a/os/hal/ports/NRF5/NRF51822/hal_wdg_lld.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- ChibiOS - Copyright (C) 2016 Stephane D'Alu
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-/**
- * @file NRF5/LLD/hal_wdg_lld.c
- * @brief NRF5 Watchdog Driver subsystem low level driver source template.
- *
- * @addtogroup WDG
- * @{
- */
-
-#include "hal.h"
-
-#if HAL_USE_WDG || defined(__DOXYGEN__)
-
-/*===========================================================================*/
-/* Driver local definitions. */
-/*===========================================================================*/
-
-#define RELOAD_REQUEST_VALUE 0x6E524635
-
-/*===========================================================================*/
-/* Driver exported variables. */
-/*===========================================================================*/
-
-WDGDriver WDGD1;
-
-/*===========================================================================*/
-/* Driver local variables. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Driver local functions. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Driver interrupt handlers. */
-/*===========================================================================*/
-
-#if WDG_USE_TIMEOUT_CALLBACK == TRUE
-/**
- * @brief Watchdog vector.
- * @details This interrupt is used when watchdog timeout.
- *
- * @note Only 2 cycles at NRF5_LFCLK_FREQUENCY are available
- * to they good bye.
- *
- * @isr
- */
-OSAL_IRQ_HANDLER(Vector84) {
-
- OSAL_IRQ_PROLOGUE();
- osalSysLockFromISR();
-
- /* Notify */
- if (WDGD1.config->callback)
- WDGD1.config->callback();
-
- /* Wait for reboot */
- while (1) { /* */ }
-
- osalSysUnlockFromISR();
- OSAL_IRQ_EPILOGUE();
-}
-#endif
-
-/*===========================================================================*/
-/* Driver exported functions. */
-/*===========================================================================*/
-
-/**
- * @brief Low level WDG driver initialization.
- *
- * @notapi
- */
-void wdg_lld_init(void) {
- WDGD1.state = WDG_STOP;
- WDGD1.wdt = NRF_WDT;
-}
-
-/**
- * @brief Configures and activates the WDG peripheral.
- *
- * @note Once started there is no way out.
- *
- * @param[in] wdgp pointer to the @p WDGDriver object
- *
- * @notapi
- */
-void wdg_lld_start(WDGDriver *wdgp) {
-#if WDG_USE_TIMEOUT_CALLBACK == TRUE
- wdgp->wdt->INTENSET = WDT_INTENSET_TIMEOUT_Msk;
-#endif
-
- /* When to pause? (halt, sleep) */
- uint32_t config = 0;
- if (!wdgp->config->flags.pause_on_sleep)
- config |= WDT_CONFIG_SLEEP_Msk;
- if (!wdgp->config->flags.pause_on_halt)
- config |= WDT_CONFIG_HALT_Msk;
- wdgp->wdt->CONFIG = config;
-
- /* Timeout in milli-seconds */
- uint64_t tout = (NRF5_LFCLK_FREQUENCY * wdgp->config->timeout_ms / 1000) - 1;
- osalDbgAssert(tout <= 0xFFFFFFFF, "watchdog timout value exceeded");
- wdgp->wdt->CRV = (uint32_t)tout;
-
- /* Reload request (using RR0) */
- wdgp->wdt->RREN = WDT_RREN_RR0_Msk;
-
- /* Say your prayers, little one. */
- wdgp->wdt->TASKS_START = 1;
-}
-
-/**
- * @brief Deactivates the WDG peripheral.
- *
- * @param[in] wdgp pointer to the @p WDGDriver object
- *
- * @api
- */
-void wdg_lld_stop(WDGDriver *wdgp) {
- (void)wdgp;
- osalDbgAssert(false, "WDG cannot be stopped once activated");
-}
-
-/**
- * @brief Reloads WDG's counter.
- *
- * @param[in] wdgp pointer to the @p WDGDriver object
- *
- * @notapi
- */
-void wdg_lld_reset(WDGDriver * wdgp) {
- wdgp->wdt->RR[0] = RELOAD_REQUEST_VALUE;
-}
-
-#endif /* HAL_USE_WDG */
-
-/** @} */
diff --git a/os/hal/ports/NRF5/NRF51822/hal_wdg_lld.h b/os/hal/ports/NRF5/NRF51822/hal_wdg_lld.h
deleted file mode 100644
index ea5b2f0..0000000
--- a/os/hal/ports/NRF5/NRF51822/hal_wdg_lld.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- ChibiOS - Copyright (C) 2016 Stephane D'Alu
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-/**
- * @file NRF5/LLD/hal_wdg_lld.h
- * @brief NRF5 Watchdog Driver subsystem low level driver header template.
- *
- * @addtogroup WDG
- * @{
- */
-
-#ifndef HAL_WDG_LLD_H
-#define HAL_WDG_LLD_H
-
-#if (HAL_USE_WDG == TRUE) || defined(__DOXYGEN__)
-
-/*===========================================================================*/
-/* Driver constants. */
-/*===========================================================================*/
-
-#define WDG_MAX_TIMEOUT_MS \
- ((uint32_t)(0xFFFFFFFFu * 1000 / NRF5_LFCLK_FREQUENCY))
-
-/*===========================================================================*/
-/* Driver pre-compile time settings. */
-/*===========================================================================*/
-
-/**
- * @name Configuration options
- * @{
- */
-
-/**
- * @brief WDG driver implement timeout callback.
- * @note The default is @p FALSE.
- */
-#if !defined(WDG_USE_TIMEOUT_CALLBACK) || defined(__DOXYGEN__)
-#define WDG_USE_TIMEOUT_CALLBACK FALSE
-#endif
-/** @} */
-
-
-/*===========================================================================*/
-/* Derived constants and error checks. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Driver data structures and types. */
-/*===========================================================================*/
-
-/**
- * @brief Type of a structure representing an WDG driver.
- */
-typedef struct WDGDriver WDGDriver;
-
-/**
- * @brief Driver configuration structure.
- * @note It could be empty on some architectures.
- */
-typedef struct {
- struct {
- /**
- * @brief Pause watchdog while the CPU is sleeping
- */
- uint8_t pause_on_sleep : 1;
- /**
- * @brief Pause watchdog while the CPU is halted by the debugger
- */
- uint8_t pause_on_halt : 1;
- } flags;
- /**
- *
- */
- uint32_t timeout_ms;
-#if WDG_USE_TIMEOUT_CALLBACK == TRUE
- /**
- * @brief Notification callback when watchdog timedout
- *
- * @note About 2 cycles at NRF5_LFCLK_FREQUENCY are available
- * before automatic reboot.
- *
- */
- void (*callback)(void);
-#endif
-} WDGConfig;
-
-
-
-/**
- * @brief Structure representing an WDG driver.
- */
-struct WDGDriver {
- /**
- * @brief Driver state.
- */
- wdgstate_t state;
- /**
- * @brief Current configuration data.
- */
- const WDGConfig *config;
- /* End of the mandatory fields.*/
- NRF_WDT_Type *wdt;
-};
-
-/*===========================================================================*/
-/* Driver macros. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* External declarations. */
-/*===========================================================================*/
-
-extern WDGDriver WDGD1;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
- void wdg_lld_init(void);
- void wdg_lld_start(WDGDriver *wdgp);
- void wdg_lld_stop(WDGDriver *wdgp);
- void wdg_lld_reset(WDGDriver *wdgp);
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* HAL_USE_WDG == TRUE */
-
-#endif /* HAL_WDG_LLD_H */
-
-/** @} */