From 37b7b9df74431fe2c5b435d854c577c41aec29a2 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Mon, 19 Feb 2018 09:58:04 +0000 Subject: Removed EXTIv1 from STM32/LLD. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@11506 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/ports/STM32/LLD/EXTIv1/driver.mk | 9 -- os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.c | 239 ---------------------------- os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.h | 155 ------------------ os/hal/ports/STM32/LLD/EXTIv1/notes.txt | 23 --- 4 files changed, 426 deletions(-) delete mode 100644 os/hal/ports/STM32/LLD/EXTIv1/driver.mk delete mode 100644 os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.c delete mode 100644 os/hal/ports/STM32/LLD/EXTIv1/hal_ext_lld.h delete mode 100644 os/hal/ports/STM32/LLD/EXTIv1/notes.txt (limited to 'os/hal/ports/STM32/LLD/EXTIv1') 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. -- cgit v1.2.3