aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal/ports/STM32/LLD/EXTIv1
diff options
context:
space:
mode:
authorGiovanni Di Sirio <gdisirio@gmail.com>2018-02-19 09:58:04 +0000
committerGiovanni Di Sirio <gdisirio@gmail.com>2018-02-19 09:58:04 +0000
commit37b7b9df74431fe2c5b435d854c577c41aec29a2 (patch)
tree331ed7799d6663c45a17d00e6d184ab6e438b67f /os/hal/ports/STM32/LLD/EXTIv1
parent1e076f0a0aecc26fc53496c2f275855d36de8382 (diff)
downloadChibiOS-37b7b9df74431fe2c5b435d854c577c41aec29a2.tar.gz
ChibiOS-37b7b9df74431fe2c5b435d854c577c41aec29a2.tar.bz2
ChibiOS-37b7b9df74431fe2c5b435d854c577c41aec29a2.zip
Removed EXTIv1 from STM32/LLD.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@11506 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/hal/ports/STM32/LLD/EXTIv1')
-rw-r--r--os/hal/ports/STM32/LLD/EXTIv1/driver.mk9
-rw-r--r--os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.c239
-rw-r--r--os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.h155
-rw-r--r--os/hal/ports/STM32/LLD/EXTIv1/notes.txt23
4 files changed, 0 insertions, 426 deletions
diff --git a/os/hal/ports/STM32/LLD/EXTIv1/driver.mk b/os/hal/ports/STM32/LLD/EXTIv1/driver.mk
deleted file mode 100644
index 53ebf6246..000000000
--- a/os/hal/ports/STM32/LLD/EXTIv1/driver.mk
+++ /dev/null
@@ -1,9 +0,0 @@
-ifeq ($(USE_SMART_BUILD),yes)
-ifneq ($(findstring HAL_USE_EXT TRUE,$(HALCONF)),)
-PLATFORMSRC += $(CHIBIOS)/os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.c
-endif
-else
-PLATFORMSRC += $(CHIBIOS)/os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.c
-endif
-
-PLATFORMINC += $(CHIBIOS)/os/hal/ports/STM32/LLD/EXTIv1
diff --git a/os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.c b/os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.c
deleted file mode 100644
index ab2ab1c59..000000000
--- a/os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.c
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
-
- 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 EXTIv1/hal_ext_lld.c
- * @brief STM32 EXT subsystem low level driver source.
- *
- * @addtogroup EXT
- * @{
- */
-
-#include "hal.h"
-
-#if HAL_USE_EXT || defined(__DOXYGEN__)
-
-/*===========================================================================*/
-/* Driver local definitions. */
-/*===========================================================================*/
-
-/* Handling a difference in ST headers.*/
-#if defined(STM32L4XX)
-#define EMR EMR1
-#define IMR IMR1
-#define PR PR1
-#define RTSR RTSR1
-#define FTSR FTSR1
-#endif
-
-/*===========================================================================*/
-/* Driver exported variables. */
-/*===========================================================================*/
-
-/**
- * @brief EXTD1 driver identifier.
- */
-EXTDriver EXTD1;
-
-/*===========================================================================*/
-/* Driver local variables and types. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Driver local functions. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Driver interrupt handlers. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Driver exported functions. */
-/*===========================================================================*/
-
-/**
- * @brief Low level EXT driver initialization.
- *
- * @notapi
- */
-void ext_lld_init(void) {
-
- /* Driver initialization.*/
- extObjectInit(&EXTD1);
-}
-
-/**
- * @brief Configures and activates the EXT peripheral.
- *
- * @param[in] extp pointer to the @p EXTDriver object
- *
- * @notapi
- */
-void ext_lld_start(EXTDriver *extp) {
- expchannel_t line;
-
- if (extp->state == EXT_STOP)
- ext_lld_exti_irq_enable();
-
- /* Configuration of automatic channels.*/
- for (line = 0; line < EXT_MAX_CHANNELS; line++)
- if (extp->config->channels[line].mode & EXT_CH_MODE_AUTOSTART)
- ext_lld_channel_enable(extp, line);
- else
- ext_lld_channel_disable(extp, line);
-}
-
-/**
- * @brief Deactivates the EXT peripheral.
- *
- * @param[in] extp pointer to the @p EXTDriver object
- *
- * @notapi
- */
-void ext_lld_stop(EXTDriver *extp) {
-
- if (extp->state == EXT_ACTIVE)
- ext_lld_exti_irq_disable();
-
- EXTI->EMR = 0;
- EXTI->IMR = STM32_EXTI_IMR_MASK;
- EXTI->PR = ~STM32_EXTI_IMR_MASK;
-#if STM32_EXTI_NUM_LINES > 32
- EXTI->IMR2 = STM32_EXTI_IMR2_MASK;
- EXTI->PR2 = ~STM32_EXTI_IMR2_MASK;
-#endif
-}
-
-/**
- * @brief Enables an EXT channel.
- *
- * @param[in] extp pointer to the @p EXTDriver object
- * @param[in] channel channel to be enabled
- *
- * @notapi
- */
-void ext_lld_channel_enable(EXTDriver *extp, expchannel_t channel) {
- uint32_t cmask = (1 << (channel & 0x1F));
-
- /* Setting the associated GPIO for external channels.*/
- if (channel < 16) {
- uint32_t n = channel >> 2;
- uint32_t mask = ~(0xF << ((channel & 3) * 4));
- uint32_t port = ((extp->config->channels[channel].mode &
- EXT_MODE_GPIO_MASK) >>
- EXT_MODE_GPIO_OFF) << ((channel & 3) * 4);
-
-#if defined(STM32F1XX)
- AFIO->EXTICR[n] = (AFIO->EXTICR[n] & mask) | port;
-#else /* !defined(STM32F1XX) */
- SYSCFG->EXTICR[n] = (SYSCFG->EXTICR[n] & mask) | port;
-#endif /* !defined(STM32F1XX) */
- }
-
-#if STM32_EXTI_NUM_LINES > 32
- if (channel < 32) {
-#endif
- /* Masked out lines must not be touched by this driver.*/
- if ((cmask & STM32_EXTI_IMR_MASK) != 0U) {
- return;
- }
-
- /* Programming edge registers.*/
- if (extp->config->channels[channel].mode & EXT_CH_MODE_RISING_EDGE)
- EXTI->RTSR |= cmask;
- else
- EXTI->RTSR &= ~cmask;
- if (extp->config->channels[channel].mode & EXT_CH_MODE_FALLING_EDGE)
- EXTI->FTSR |= cmask;
- else
- EXTI->FTSR &= ~cmask;
-
- /* Programming interrupt and event registers.*/
- if (extp->config->channels[channel].cb != NULL) {
- EXTI->IMR |= cmask;
- EXTI->EMR &= ~cmask;
- }
- else {
- EXTI->EMR |= cmask;
- EXTI->IMR &= ~cmask;
- }
-#if STM32_EXTI_NUM_LINES > 32
- }
- else {
- /* Masked out lines must not be touched by this driver.*/
- if ((cmask & STM32_EXTI_IMR2_MASK) != 0U) {
- return;
- }
-
- /* Programming edge registers.*/
- if (extp->config->channels[channel].mode & EXT_CH_MODE_RISING_EDGE)
- EXTI->RTSR2 |= cmask;
- else
- EXTI->RTSR2 &= ~cmask;
- if (extp->config->channels[channel].mode & EXT_CH_MODE_FALLING_EDGE)
- EXTI->FTSR2 |= cmask;
- else
- EXTI->FTSR2 &= ~cmask;
-
- /* Programming interrupt and event registers.*/
- if (extp->config->channels[channel].cb != NULL) {
- EXTI->IMR2 |= cmask;
- EXTI->EMR2 &= ~cmask;
- }
- else {
- EXTI->EMR2 |= cmask;
- EXTI->IMR2 &= ~cmask;
- }
- }
-#endif
-}
-
-/**
- * @brief Disables an EXT channel.
- *
- * @param[in] extp pointer to the @p EXTDriver object
- * @param[in] channel channel to be disabled
- *
- * @notapi
- */
-void ext_lld_channel_disable(EXTDriver *extp, expchannel_t channel) {
- uint32_t cmask = (1 << (channel & 0x1F));
-
- (void)extp;
-
-#if STM32_EXTI_NUM_LINES > 32
- if (channel < 32) {
-#endif
- EXTI->IMR &= ~cmask;
- EXTI->EMR &= ~cmask;
- EXTI->RTSR &= ~cmask;
- EXTI->FTSR &= ~cmask;
- EXTI->PR = cmask;
-#if STM32_EXTI_NUM_LINES > 32
- }
- else {
- EXTI->IMR2 &= ~cmask;
- EXTI->EMR2 &= ~cmask;
- EXTI->RTSR2 &= ~cmask;
- EXTI->FTSR2 &= ~cmask;
- EXTI->PR2 = cmask;
- }
-#endif
-}
-
-#endif /* HAL_USE_EXT */
-
-/** @} */
diff --git a/os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.h b/os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.h
deleted file mode 100644
index 577e80c44..000000000
--- a/os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.h
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
-
- 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 EXTIv1/hal_ext_lld.h
- * @brief STM32 EXT subsystem low level driver header.
- *
- * @addtogroup EXT
- * @{
- */
-
-#ifndef HAL_EXT_LLD_H
-#define HAL_EXT_LLD_H
-
-#if HAL_USE_EXT || defined(__DOXYGEN__)
-
-#include "hal_ext_lld_isr.h"
-
-/*===========================================================================*/
-/* Driver constants. */
-/*===========================================================================*/
-
-/**
- * @brief Available number of EXT channels.
- */
-#define EXT_MAX_CHANNELS STM32_EXTI_NUM_LINES
-
-/**
- * @name STM32-specific EXT channel modes
- * @{
- */
-#define EXT_MODE_GPIO_MASK 0xF0 /**< @brief Port field mask. */
-#define EXT_MODE_GPIO_OFF 4 /**< @brief Port field offset. */
-#define EXT_MODE_GPIOA 0x00 /**< @brief GPIOA identifier. */
-#define EXT_MODE_GPIOB 0x10 /**< @brief GPIOB identifier. */
-#define EXT_MODE_GPIOC 0x20 /**< @brief GPIOC identifier. */
-#define EXT_MODE_GPIOD 0x30 /**< @brief GPIOD identifier. */
-#define EXT_MODE_GPIOE 0x40 /**< @brief GPIOE identifier. */
-#define EXT_MODE_GPIOF 0x50 /**< @brief GPIOF identifier. */
-#define EXT_MODE_GPIOG 0x60 /**< @brief GPIOG identifier. */
-#define EXT_MODE_GPIOH 0x70 /**< @brief GPIOH identifier. */
-#define EXT_MODE_GPIOI 0x80 /**< @brief GPIOI identifier. */
-/** @} */
-
-/*===========================================================================*/
-/* Driver pre-compile time settings. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Derived constants and error checks. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* Driver data structures and types. */
-/*===========================================================================*/
-
-/**
- * @brief EXT channel identifier.
- */
-typedef uint32_t expchannel_t;
-
-/**
- * @brief Type of an EXT generic notification callback.
- *
- * @param[in] extp pointer to the @p EXPDriver object triggering the
- * callback
- */
-typedef void (*extcallback_t)(EXTDriver *extp, expchannel_t channel);
-
-/**
- * @brief Channel configuration structure.
- */
-typedef struct {
- /**
- * @brief Channel mode.
- */
- uint32_t mode;
- /**
- * @brief Channel callback.
- * @details In the STM32 implementation a @p NULL callback pointer is
- * valid and configures the channel as an event sources instead
- * of an interrupt source.
- */
- extcallback_t cb;
-} EXTChannelConfig;
-
-/**
- * @brief Driver configuration structure.
- * @note It could be empty on some architectures.
- */
-typedef struct {
- /**
- * @brief Channel configurations.
- */
- EXTChannelConfig channels[EXT_MAX_CHANNELS];
- /* End of the mandatory fields.*/
-} EXTConfig;
-
-/**
- * @brief Structure representing an EXT driver.
- */
-struct EXTDriver {
- /**
- * @brief Driver state.
- */
- extstate_t state;
- /**
- * @brief Current configuration data.
- */
- const EXTConfig *config;
- /* End of the mandatory fields.*/
-};
-
-/*===========================================================================*/
-/* Driver macros. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* External declarations. */
-/*===========================================================================*/
-
-#if !defined(__DOXYGEN__)
-extern EXTDriver EXTD1;
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
- void ext_lld_init(void);
- void ext_lld_start(EXTDriver *extp);
- void ext_lld_stop(EXTDriver *extp);
- void ext_lld_channel_enable(EXTDriver *extp, expchannel_t channel);
- void ext_lld_channel_disable(EXTDriver *extp, expchannel_t channel);
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* HAL_USE_EXT */
-
-#endif /* HAL_EXT_LLD_H */
-
-/** @} */
diff --git a/os/hal/ports/STM32/LLD/EXTIv1/notes.txt b/os/hal/ports/STM32/LLD/EXTIv1/notes.txt
deleted file mode 100644
index 10eda50d4..000000000
--- a/os/hal/ports/STM32/LLD/EXTIv1/notes.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-STM32 EXT driver implementation through EXTI unit.
-
-There are several kind of EXTI lines:
-
-1) GPIO lines. Always in range 0..15, always handled by the EXT driver.
-2) Configurable peripheral events not shared, always handled by the EXT driver.
-3) Configurable peripheral events shared with other, non EXTI, interrupts.
- The EXTI driver declares the ISR and has to call the IRQ handler of the
- other driver.
-4) Direct lines (1 in IMR register after reset). The EXTI driver never touches
- the default configuration for direct lines and does not declare ISRs.
-5) Unused lines. The EXTI driver does not declare ISRs.
-
-The file registry must export:
-STM32_EXTI_NUM_LINES - Range of configurable lines, it can have holes of
- unused or direct lines. Configurable line numbers go
- from 0 to STM32_EXTI_NUM_LINES-1.
-STM32_EXTI_IMR_MASK - Direct lines and unused lines marked as 1 in this
- mask, configurable lines marked as 0.
-STM32_EXTI_IMR2_MASK - Optional, for lines 32...63.
-
-ISRs are not declared inside the driver, each sub-family must have its own
-ext_lld_isr.h and ext_lld_isr.c files.