From 856d9f7d89270c4bf954d00648c0e79d70430678 Mon Sep 17 00:00:00 2001 From: chenjianqiang Date: Mon, 25 Nov 2019 14:47:19 +0800 Subject: [PATCH] bugfix(timer): recover get raw interrupt status function --- components/driver/timer.c | 4 +++- components/soc/esp32/include/hal/timer_ll.h | 14 ++++++++++++++ components/soc/esp32s2beta/include/hal/timer_ll.h | 14 ++++++++++++++ components/soc/include/hal/timer_hal.h | 10 ++++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/components/driver/timer.c b/components/driver/timer.c index 8def5fb4d1..e1303b6b59 100644 --- a/components/driver/timer.c +++ b/components/driver/timer.c @@ -436,7 +436,9 @@ esp_err_t timer_disable_intr(timer_group_t group_num, timer_idx_t timer_num) /* This function is deprecated */ timer_intr_t IRAM_ATTR timer_group_intr_get_in_isr(timer_group_t group_num) { - return timer_group_get_intr_status_in_isr(group_num); + uint32_t intr_raw_status = 0; + timer_hal_get_intr_raw_status(group_num, &intr_raw_status); + return intr_raw_status; } uint32_t IRAM_ATTR timer_group_get_intr_status_in_isr(timer_group_t group_num) diff --git a/components/soc/esp32/include/hal/timer_ll.h b/components/soc/esp32/include/hal/timer_ll.h index 71ffb60d0f..c6cff70f4e 100644 --- a/components/soc/esp32/include/hal/timer_ll.h +++ b/components/soc/esp32/include/hal/timer_ll.h @@ -296,6 +296,20 @@ FORCE_INLINE_ATTR void timer_ll_get_intr_status(timg_dev_t *hw, uint32_t *intr_s *intr_status = hw->int_st_timers.val; } +/** + * @brief Get interrupt raw status. + * + * @param group_num Timer group number, 0 for TIMERG0 or 1 for TIMERG1 + * @param intr_raw_status Interrupt raw status + * + * @return None + */ +FORCE_INLINE_ATTR void timer_ll_get_intr_raw_status(timer_group_t group_num, uint32_t *intr_raw_status) +{ + timg_dev_t *hw = TIMER_LL_GET_HW(group_num); + *intr_raw_status = hw->int_raw.val; +} + /** * @brief Set the level interrupt status, enable or disable the level interrupt. * diff --git a/components/soc/esp32s2beta/include/hal/timer_ll.h b/components/soc/esp32s2beta/include/hal/timer_ll.h index dd9cfb7296..9e78188422 100644 --- a/components/soc/esp32s2beta/include/hal/timer_ll.h +++ b/components/soc/esp32s2beta/include/hal/timer_ll.h @@ -296,6 +296,20 @@ FORCE_INLINE_ATTR void timer_ll_get_intr_status(timg_dev_t *hw, uint32_t *intr_s *intr_status = hw->int_st.val; } +/** + * @brief Get interrupt raw status. + * + * @param group_num Timer group number, 0 for TIMERG0 or 1 for TIMERG1 + * @param intr_raw_status Interrupt raw status + * + * @return None + */ +FORCE_INLINE_ATTR void timer_ll_get_intr_raw_status(timer_group_t group_num, uint32_t *intr_raw_status) +{ + timg_dev_t *hw = TIMER_LL_GET_HW(group_num); + *intr_raw_status = hw->int_raw.val; +} + /** * @brief Set the level interrupt status, enable or disable the level interrupt. * diff --git a/components/soc/include/hal/timer_hal.h b/components/soc/include/hal/timer_hal.h index 6a91e4406f..2ea8eee174 100644 --- a/components/soc/include/hal/timer_hal.h +++ b/components/soc/include/hal/timer_hal.h @@ -273,6 +273,16 @@ void timer_hal_init(timer_hal_context_t *hal, timer_group_t group_num, timer_idx */ #define timer_hal_get_intr_status(hal, intr_status) timer_ll_get_intr_status((hal)->dev, intr_status) +/** + * @brief Get interrupt raw status. + * + * @param group_num Timer group number, 0 for TIMERG0 or 1 for TIMERG1 + * @param intr_raw_status Interrupt raw status + * + * @return None + */ +#define timer_hal_get_intr_raw_status(group_num, intr_raw_status) timer_ll_get_intr_raw_status(group_num, intr_raw_status) + /** * @brief Get interrupt status register address. *