From 0c440cfdfe8b80576c346a5bbfa0264be5229857 Mon Sep 17 00:00:00 2001 From: Sara Souza Date: Tue, 13 Apr 2021 22:41:41 -0300 Subject: [PATCH] xtensa/esp32: Reorganize the timer logic for wireless use --- arch/xtensa/src/esp32/esp32_rt_timer.c | 4 ++- arch/xtensa/src/esp32/esp32_tim.c | 32 ++----------------- arch/xtensa/src/esp32/esp32_tim.h | 1 - .../esp32/esp32-devkitc/src/esp32_bringup.c | 2 +- .../esp32-ethernet-kit/src/esp32_bringup.c | 2 +- .../esp32-wrover-kit/src/esp32_bringup.c | 2 +- 6 files changed, 8 insertions(+), 35 deletions(-) diff --git a/arch/xtensa/src/esp32/esp32_rt_timer.c b/arch/xtensa/src/esp32/esp32_rt_timer.c index cb7dd7f440..f539becca8 100644 --- a/arch/xtensa/src/esp32/esp32_rt_timer.c +++ b/arch/xtensa/src/esp32/esp32_rt_timer.c @@ -57,6 +57,7 @@ #define RT_TIMER_TASK_STACK_SIZE CONFIG_ESP32_RT_TIMER_TASK_STACK_SIZE #define ESP32_TIMER_PRESCALER (APB_CLK_FREQ / (1000 * 1000)) +#define ESP32_RT_TIMER 0 /* Timer 0 */ /**************************************************************************** * Private Data @@ -597,7 +598,7 @@ int esp32_rt_timer_init(void) irqstate_t flags; struct esp32_tim_dev_s *tim; - tim = esp32_tim0_init(); + tim = esp32_tim_init(ESP32_RT_TIMER); if (!tim) { tmrerr("ERROR: Failed to initialize ESP32 timer0\n"); @@ -669,6 +670,7 @@ void esp32_rt_timer_deinit(void) flags = enter_critical_section(); ESP32_TIM_STOP(s_esp32_tim_dev); + esp32_tim_deinit(s_esp32_tim_dev); s_esp32_tim_dev = NULL; leave_critical_section(flags); diff --git a/arch/xtensa/src/esp32/esp32_tim.c b/arch/xtensa/src/esp32/esp32_tim.c index 88cd8c681f..70fe03ccd0 100644 --- a/arch/xtensa/src/esp32/esp32_tim.c +++ b/arch/xtensa/src/esp32/esp32_tim.c @@ -732,9 +732,7 @@ static int esp32_tim_checkint(FAR struct esp32_tim_dev_s *dev) * Name: esp32_tim_init * * Description: - * Initialize TIMER device, if software real-time timer - * (CONFIG_ESP32_RT_TIMER) is enabled, then timer0 can't - * be initialized by this function directly. + * Initialize TIMER device. * ****************************************************************************/ @@ -746,7 +744,7 @@ FAR struct esp32_tim_dev_s *esp32_tim_init(int timer) switch (timer) { -#if defined(CONFIG_ESP32_TIMER0) && !defined(CONFIG_ESP32_RT_TIMER) +#ifdef CONFIG_ESP32_TIMER0 case 0: { tim = &g_esp32_tim0_priv; @@ -819,29 +817,3 @@ void esp32_tim_deinit(FAR struct esp32_tim_dev_s *dev) tim->inuse = false; } - -/**************************************************************************** - * Name: esp32_tim0_init - * - * Description: - * Initialize TIMER0 device, this function is only used by software - * real-time timer(esp32_rt_timer.c). - * - ****************************************************************************/ - -#ifdef CONFIG_ESP32_RT_TIMER - -FAR struct esp32_tim_dev_s *esp32_tim0_init(void) -{ - FAR struct esp32_tim_priv_s *tim = &g_esp32_tim0_priv; - - if (tim->inuse == true) - { - tmrerr("ERROR: Timer0 is already in use\n"); - tim = NULL; - } - - return (FAR struct esp32_tim_dev_s *)tim; -} - -#endif /* CONFIG_ESP32_RT_TIMER */ diff --git a/arch/xtensa/src/esp32/esp32_tim.h b/arch/xtensa/src/esp32/esp32_tim.h index b602477372..f3dcaa07d4 100644 --- a/arch/xtensa/src/esp32/esp32_tim.h +++ b/arch/xtensa/src/esp32/esp32_tim.h @@ -116,6 +116,5 @@ struct esp32_tim_ops_s FAR struct esp32_tim_dev_s *esp32_tim_init(int timer); void esp32_tim_deinit(FAR struct esp32_tim_dev_s *dev); -FAR struct esp32_tim_dev_s *esp32_tim0_init(void); #endif /* __ARCH_XTENSA_SRC_ESP32_ESP32_TIM_H */ diff --git a/boards/xtensa/esp32/esp32-devkitc/src/esp32_bringup.c b/boards/xtensa/esp32/esp32-devkitc/src/esp32_bringup.c index 62f0f3b3dd..21dc666877 100644 --- a/boards/xtensa/esp32/esp32-devkitc/src/esp32_bringup.c +++ b/boards/xtensa/esp32/esp32-devkitc/src/esp32_bringup.c @@ -202,7 +202,7 @@ int esp32_bringup(void) #ifdef CONFIG_TIMER -#ifdef CONFIG_ESP32_TIMER0 +#if defined(CONFIG_ESP32_TIMER0) && !defined(CONFIG_ESP32_RT_TIMER) ret = esp32_timer_initialize("/dev/timer0", TIMER0); if (ret < 0) { diff --git a/boards/xtensa/esp32/esp32-ethernet-kit/src/esp32_bringup.c b/boards/xtensa/esp32/esp32-ethernet-kit/src/esp32_bringup.c index b77a66e7ae..726cefc114 100644 --- a/boards/xtensa/esp32/esp32-ethernet-kit/src/esp32_bringup.c +++ b/boards/xtensa/esp32/esp32-ethernet-kit/src/esp32_bringup.c @@ -169,7 +169,7 @@ int esp32_bringup(void) #ifdef CONFIG_TIMER -#ifdef CONFIG_ESP32_TIMER0 +#if defined(CONFIG_ESP32_TIMER0) && !defined(CONFIG_ESP32_RT_TIMER) ret = esp32_timer_initialize("/dev/timer0", TIMER0); if (ret < 0) { diff --git a/boards/xtensa/esp32/esp32-wrover-kit/src/esp32_bringup.c b/boards/xtensa/esp32/esp32-wrover-kit/src/esp32_bringup.c index ea4700fa8e..41300a2eb9 100644 --- a/boards/xtensa/esp32/esp32-wrover-kit/src/esp32_bringup.c +++ b/boards/xtensa/esp32/esp32-wrover-kit/src/esp32_bringup.c @@ -189,7 +189,7 @@ int esp32_bringup(void) #ifdef CONFIG_TIMER -#ifdef CONFIG_ESP32_TIMER0 +#if defined(CONFIG_ESP32_TIMER0) && !defined(CONFIG_ESP32_RT_TIMER) ret = esp32_timer_initialize("/dev/timer0", TIMER0); if (ret < 0) {