drivers: counter: esp32c2: Add support

Add counter support to ESP32C2 and ESP8684

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
This commit is contained in:
Raffael Rostagno 2024-08-05 14:23:37 -03:00 committed by Anas Nashif
commit c1f8948e76
3 changed files with 17 additions and 7 deletions

View file

@ -22,7 +22,7 @@
#include <zephyr/drivers/clock_control.h> #include <zephyr/drivers/clock_control.h>
#include <zephyr/drivers/clock_control/esp32_clock_control.h> #include <zephyr/drivers/clock_control/esp32_clock_control.h>
#if defined(CONFIG_SOC_SERIES_ESP32C3) #if defined(CONFIG_SOC_SERIES_ESP32C2) || defined(CONFIG_SOC_SERIES_ESP32C3)
#include <zephyr/drivers/interrupt_controller/intc_esp32c3.h> #include <zephyr/drivers/interrupt_controller/intc_esp32c3.h>
#else #else
#include <zephyr/drivers/interrupt_controller/intc_esp32.h> #include <zephyr/drivers/interrupt_controller/intc_esp32.h>
@ -31,7 +31,7 @@
#include <zephyr/logging/log.h> #include <zephyr/logging/log.h>
LOG_MODULE_REGISTER(esp32_counter_rtc, CONFIG_COUNTER_LOG_LEVEL); LOG_MODULE_REGISTER(esp32_counter_rtc, CONFIG_COUNTER_LOG_LEVEL);
#if defined(CONFIG_SOC_SERIES_ESP32C3) #if defined(CONFIG_SOC_SERIES_ESP32C2) || defined(CONFIG_SOC_SERIES_ESP32C3)
#define ESP32_COUNTER_RTC_ISR_HANDLER isr_handler_t #define ESP32_COUNTER_RTC_ISR_HANDLER isr_handler_t
#else #else
#define ESP32_COUNTER_RTC_ISR_HANDLER intr_handler_t #define ESP32_COUNTER_RTC_ISR_HANDLER intr_handler_t
@ -108,7 +108,8 @@ static int counter_esp32_set_alarm(const struct device *dev, uint8_t chan_id,
uint32_t now; uint32_t now;
uint32_t ticks = 0; uint32_t ticks = 0;
#if defined(CONFIG_SOC_SERIES_ESP32) || defined(CONFIG_SOC_SERIES_ESP32C3) #if defined(CONFIG_SOC_SERIES_ESP32) || defined(CONFIG_SOC_SERIES_ESP32C2) || \
defined(CONFIG_SOC_SERIES_ESP32C3)
/* In ESP32/C3 Series the min possible value is 30 us*/ /* In ESP32/C3 Series the min possible value is 30 us*/
if (counter_ticks_to_us(dev, alarm_cfg->ticks) < 30) { if (counter_ticks_to_us(dev, alarm_cfg->ticks) < 30) {
return -EINVAL; return -EINVAL;

View file

@ -18,16 +18,16 @@
#include <zephyr/drivers/counter.h> #include <zephyr/drivers/counter.h>
#include <zephyr/spinlock.h> #include <zephyr/spinlock.h>
#include <zephyr/kernel.h> #include <zephyr/kernel.h>
#ifndef CONFIG_SOC_SERIES_ESP32C3 #if defined(CONFIG_SOC_SERIES_ESP32C2) || defined(CONFIG_SOC_SERIES_ESP32C3)
#include <zephyr/drivers/interrupt_controller/intc_esp32.h>
#else
#include <zephyr/drivers/interrupt_controller/intc_esp32c3.h> #include <zephyr/drivers/interrupt_controller/intc_esp32c3.h>
#else
#include <zephyr/drivers/interrupt_controller/intc_esp32.h>
#endif #endif
#include <zephyr/device.h> #include <zephyr/device.h>
#include <zephyr/logging/log.h> #include <zephyr/logging/log.h>
LOG_MODULE_REGISTER(esp32_counter, CONFIG_COUNTER_LOG_LEVEL); LOG_MODULE_REGISTER(esp32_counter, CONFIG_COUNTER_LOG_LEVEL);
#ifdef CONFIG_SOC_SERIES_ESP32C3 #if defined(CONFIG_SOC_SERIES_ESP32C2) || defined(CONFIG_SOC_SERIES_ESP32C3)
#define ISR_HANDLER isr_handler_t #define ISR_HANDLER isr_handler_t
#else #else
#define ISR_HANDLER intr_handler_t #define ISR_HANDLER intr_handler_t
@ -70,9 +70,11 @@ static int counter_esp32_init(const struct device *dev)
case TIMER_GROUP_0: case TIMER_GROUP_0:
periph_module_enable(PERIPH_TIMG0_MODULE); periph_module_enable(PERIPH_TIMG0_MODULE);
break; break;
#if !defined(CONFIG_SOC_SERIES_ESP32C2)
case TIMER_GROUP_1: case TIMER_GROUP_1:
periph_module_enable(PERIPH_TIMG1_MODULE); periph_module_enable(PERIPH_TIMG1_MODULE);
break; break;
#endif
default: default:
return -ENOTSUP; return -ENOTSUP;
} }

View file

@ -0,0 +1,7 @@
&timer0 {
status = "okay";
};
&rtc_timer {
status = "okay";
};