xtensa/espressif: Update common-source integration for Xtensa devices

This commit updates the common-source integration for Xtensa-based
Espressif devices (ESP32, ESP32-S2, and ESP32-S3). This is part of a larger
common-source update split by architecture for better maintainability.

Major components updated:
- IRQ allocator refactoring with intr_alloc integration
- Common-source drivers (GPIO, RMT, I2C, SPI, UART, etc.)
- Espressif components upgrade to release/master.b-test
- Peripheral drivers (ADC, PWM, LEDC, MCPWM, PCNT, Temperature Sensor, etc.)
- Wireless adapters (Wi-Fi and BLE)
- esp_timer migration to the common-source path for Xtensa devices
- Common-source power management implementation (auto-sleep and wakeup paths)
- Board defconfigs for all Xtensa Espressif boards
- SMP support improvements for ESP32-S3
- Critical section handling improvements

Key architectural changes:
- IRQ Allocator: The new interrupt allocator enables multiple mapping
  options from interrupt sources to CPU interrupts, providing flexibility
  required by modern peripherals. Although this introduces breaking changes
  to the interrupt handling API, the required ARCH_MINIMAL_VECTORTABLE
  Kconfig option is explicitly checked during startup to ensure proper
  configuration. This validation prevents runtime issues from configuration
  mismatches.
- Xtensa-specific interrupt handling via esp_xtensa_intr.c providing
  NuttX-native implementations of xt_ints_on/off and interrupt handlers,
  avoiding conflicts with NuttX's core Xtensa macros.
- Timer/RTC unification: ESP32/ESP32-S2/ESP32-S3 move from chip-specific
  RTC/RT-timer code to common-source Espressif integration, including
  esp_timer_adapter/esp_rtc paths and the required bringup/defconfig updates.
- Power management consolidation: Xtensa PM follows the common-source
  implementation, including common-source auto-sleep behavior, UART/Wi-Fi
  wakeup coordination, and tickless-safe sleep flow compatibility.

Note: This is a large commit to maintain bisectability. Breaking the
changes into smaller commits would result in non-building intermediate
states across the common-source infrastructure update.

Tested configurations:
- All defconfigs were tested, including `ostest`.

Signed-off-by: Tiago Medicci Serrano <tiago.medicci@espressif.com>
This commit is contained in:
Tiago Medicci Serrano
2026-02-27 15:06:57 -03:00
committed by Xiang Xiao
parent c64b95ccbf
commit c17e16eaed
621 changed files with 11436 additions and 53138 deletions
+1
View File
@@ -33,3 +33,4 @@ include $(TOPDIR)/boards/Board.mk
ARCHSRCDIR = $(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src
BOARDDIR = $(ARCHSRCDIR)$(DELIM)board
CFLAGS += ${INCDIR_PREFIX}$(BOARDDIR)$(DELIM)include
CFLAGS += ${INCDIR_PREFIX}"$(ARCHSRCDIR)$(DELIM)common$(DELIM)espressif"
@@ -61,7 +61,6 @@ extern "C"
* Initialize the RMT peripheral and register an RX device.
*
* Input Parameters:
* ch - The RMT's channel that will be used
* pin - The pin used for the RX channel
*
* Returned Value:
@@ -69,7 +68,7 @@ extern "C"
*
****************************************************************************/
int board_rmt_rxinitialize(int ch, int pin);
int board_rmt_rxinitialize(int pin);
/****************************************************************************
* Name: board_rmt_txinitialize
@@ -78,7 +77,6 @@ int board_rmt_rxinitialize(int ch, int pin);
* Initialize the RMT peripheral and register an TX device.
*
* Input Parameters:
* ch - The RMT's channel that will be used
* pin - The pin used for the TX channel
*
* Returned Value:
@@ -86,7 +84,7 @@ int board_rmt_rxinitialize(int ch, int pin);
*
****************************************************************************/
int board_rmt_txinitialize(int ch, int pin);
int board_rmt_txinitialize(int pin);
#endif /* CONFIG_ESP_RMT */
@@ -167,7 +167,6 @@ SECTIONS
*libpp.a:wifi_slp_rx_iram.*(.literal .text .literal.* .text.*)
*libarch.a:*esp_loader.*(.literal .text .literal.* .text.*)
*libarch.a:esp32s3_cpuindex.*(.literal .text .literal.* .text.*)
*libarch.a:esp32s3_irq.*(.literal .text .literal.* .text.*)
*libarch.a:esp32s3_user.*(.literal .text .literal.* .text.*)
*libarch.a:esp32s3_spiflash.*(.literal .text .literal.* .text.*)
*libarch.a:xtensa_assert.*(.literal .text .literal.* .text.*)
@@ -177,6 +176,9 @@ SECTIONS
*libarch.a:xtensa_modifyreg32.*(.literal .text .literal.* .text.*)
*libarch.a:xtensa_testset.*(.literal .text .literal.* .text.*)
*libarch.a:esp_app_desc.*(.literal .text .literal.* .text.*)
*libarch.a:intr_alloc.*(.literal.esp_intr_get_intno .text.esp_intr_get_intno)
*libarch.a:xtensa_intr.*(.literal.xt_get_interrupt_handler .text.xt_get_interrupt_handler)
*libarch.a:xtensa_intr.*(.literal.xt_get_interrupt_handler_arg .text.xt_get_interrupt_handler_arg)
*libc.a:sq_remlast.*(.literal .text .literal.* .text.*)
@@ -194,6 +196,7 @@ SECTIONS
*libsched.a:spinlock.*(.literal .text .literal.* .text.*)
*libsched.a:*sched_get_stackinfo.*(.literal .text .literal.* .text.*)
*libsched.a:stack_record.*(.literal .text .literal.* .text.*)
*libsched.a:stack_monitor.*(.literal .text .literal.* .text.*)
#ifdef CONFIG_ESP32S3_SPEED_UP_ISR
*libarch.a:xtensa_switchcontext.*(.literal.up_switch_context .text.up_switch_context)
@@ -235,6 +238,7 @@ SECTIONS
*libarch.a:*periph_ctrl.*(.text .text.* .literal .literal.*)
*libarch.a:*clk.*(.text .text.* .literal .literal.*)
*libarch.a:*efuse_hal.*(.literal.is_eco0 .text.is_eco0)
*libarch.a:*efuse_utility.*(.text .text.* .literal .literal.*)
*libarch.a:*esp_clk.*(.text .text.* .literal .literal.*)
*libarch.a:*esp_clk_tree.*(.text .text.* .literal .literal.*)
*libarch.a:*esp_clk_tree_common.*(.text .text.* .literal .literal.*)
@@ -307,11 +311,22 @@ SECTIONS
*libarch.a:spi_flash_os_func_noos.*(.literal .literal.* .text .text.*)
*libarch.a:spi_flash_os_func_app.*(.literal .literal.* .text .text.*)
*libarch.a:flash_brownout_hook.*(.literal .literal.* .text .text.*)
*libarch.a:esp_cache.*(.literal .literal.* .text .text.*)
*libarch.a:esp_cache_utils.*(.literal .literal.* .text .text.*)
*libarch.a:cache_utils.*(.literal .literal.* .text .text.*)
*libarch.a:memspi_host_driver.*(.literal .literal.* .text .text.*)
*libarch.a:critical_section.*(.literal .literal.* .text .text.*)
*libarch.a:os.*(.literal.nuttx_enter_critical .text.nuttx_enter_critical)
*libarch.a:os.*(.literal.nuttx_exit_critical .text.nuttx_exit_critical)
*libarch.a:*sleep_modes.*(.literal.esp_sleep_sub_mode_force_disable* .text.esp_sleep_sub_mode_force_disable*)
*libarch.a:intr_alloc.*(.literal.esp_intr_get_intno .text.esp_intr_get_intno)
*libarch.a:intr_alloc.*(.literal.esp_intr_get_cpu .text.esp_intr_get_cpu)
*libarch.a:interrupt.*(.literal.intr_handler_get .text.intr_handler_get)
*libarch.a:interrupt.*(.literal.intr_handler_get_arg .text.intr_handler_get_arg)
*libarch.a:interrupt.*(.literal.intr_get_item .text.intr_get_item)
*libarch.a:interrupt.*(.literal.intr_handler_get_arg .text.intr_handler_get_arg)
*libc.a:*lib_instrument.*(.text .text.* .literal .literal.*)
*libc.a:arch_atomic.*(.text .text.* .literal .literal.*)
*(.wifirxiram .wifirxiram.*)
*(.wifi0iram .wifi0iram.*)
@@ -448,6 +463,7 @@ SECTIONS
*libarch.a:*esp_loader.*(.rodata .rodata.*)
*libarch.a:esp32s3_spiflash.*(.rodata .rodata.*)
*libarch.a:esp_spiflash.*(.rodata .rodata.*)
*libarch.a:*efuse_utility.*(.rodata .rodata.*)
*libarch.a:*brownout.*(.rodata .rodata.*)
*libarch.a:*cpu.*(.rodata .rodata.*)
*libarch.a:*gpio_hal.*(.rodata .rodata.*)
@@ -521,9 +537,14 @@ SECTIONS
*libarch.a:spi_flash_os_func_noos.*(.rodata .rodata.*)
*libarch.a:spi_flash_os_func_app.*(.rodata .rodata.*)
*libarch.a:flash_brownout_hook.*(.rodata .rodata.*)
*libarch.a:esp_cache.*(.rodata .rodata.*)
*libarch.a:esp_cache_utils.*(.rodata .rodata.*)
*libarch.a:cache_utils.*(.rodata .rodata.*)
*libarch.a:memspi_host_driver.*(.rodata .rodata.*)
*libarch.a:critical_section.*(.rodata .rodata.*)
*libarch.a:os.*(.rodata.g_int_flags_count .rodata.g_int_flags)
*libarch.a:*sleep_modes.*(.rodata.esp_sleep_sub_mode_force_disable*)
*libc.a:arch_atomic.*(.rodata .rodata.*)
. = ALIGN(4);
_edata = ABSOLUTE(.);
@@ -689,9 +710,7 @@ SECTIONS
. = ALIGN(4);
_sinit = ABSOLUTE(.);
__init_array_start = ABSOLUTE(.);
KEEP (*(EXCLUDE_FILE (*crtend.* *crtbegin.*) .ctors SORT(.ctors.*)))
__init_array_end = ABSOLUTE(.);
_einit = ABSOLUTE(.);
/* Addresses of memory regions reserved via SOC_RESERVE_MEMORY_REGION() */
@@ -803,6 +822,8 @@ SECTIONS
.rtc.data :
{
. = ALIGN(4);
*(.rtc.force_slow .rtc.force_slow.*)
*(.rtc.data)
*(.rtc.data.*)
*(.rtc.rodata)
@@ -22,6 +22,8 @@
/* Provide these so there is no need for using config files for this */
#include "esp32s3_aliases.ld"
__uirom_start = ORIGIN(UIROM);
__uirom_size = LENGTH(UIROM);
__uirom_end = ORIGIN(UIROM) + LENGTH(UIROM);
@@ -114,6 +116,9 @@ SECTIONS
*libkarch.a:xtensa_interruptcontext.*(.literal .text .literal.* .text.*)
*libkarch.a:xtensa_testset.*(.literal .text .literal.* .text.*)
*libkarch.a:esp_app_desc.*(.literal .text .literal.* .text.*)
*libkarch.a:intr_alloc.*(.literal.esp_intr_get_intno .text.esp_intr_get_intno)
*libkarch.a:xtensa_intr.*(.literal.xt_get_interrupt_handler .text.xt_get_interrupt_handler)
*libkarch.a:xtensa_intr.*(.literal.xt_get_interrupt_handler_arg .text.xt_get_interrupt_handler_arg)
*libkarch.a:esp_spiflash.*(.literal .text .literal.* .text.*)
*libkarch.a:esp_flash_api.*(.text .text.* .literal .literal.*)
*libkarch.a:esp_flash_spi_init.*(.text .text.* .literal .literal.*)
@@ -125,6 +130,7 @@ SECTIONS
*libkarch.a:spi_flash_os_func_noos.*(.literal .literal.* .text .text.*)
*libkarch.a:spi_flash_os_func_app.*(.literal .literal.* .text .text.*)
*libkarch.a:flash_brownout_hook.*(.literal .literal.* .text .text.*)
*libkarch.a:esp_cache_utils.*(.literal .literal.* .text .text.*)
*libkarch.a:esp_cache.*(.literal .literal.* .text .text.*)
*libkarch.a:cache_utils.*(.literal .literal.* .text .text.*)
*libkarch.a:memspi_host_driver.*(.literal .literal.* .text .text.*)
@@ -252,6 +258,7 @@ SECTIONS
*libsched.a:irq_dispatch.*(.rodata .rodata.*)
*libc.a:*lib_instrument.*(.rodata .rodata.*)
*libc.a:arch_atomic.*(.rodata .rodata.*)
. = ALIGN(4);
_edata = ABSOLUTE(.);
@@ -79,7 +79,6 @@ SECTIONS
*(.iram1 .iram1.*)
*libarch.a:esp32s3_cpuindex.*(.literal .text .literal.* .text.*)
*libarch.a:esp32s3_irq.*(.literal .text .literal.* .text.*)
*libarch.a:esp32s3_user.*(.literal .text .literal.* .text.*)
*libarch.a:esp32s3_spiflash.*(.literal .text .literal.* .text.*)
*libarch.a:xtensa_assert.*(.literal .text .literal.* .text.*)
@@ -110,6 +109,7 @@ SECTIONS
*libsched.a:stack_record.*(.literal .text .literal.* .text.*)
*libc.a:*lib_instrument.*(.literal .text .literal.* .text.*)
*libc.a:arch_atomic.*(.literal .text .literal.* .text.*)
#ifdef CONFIG_ESP32S3_SPEED_UP_ISR
*libarch.a:xtensa_switchcontext.*(.literal.up_switch_context .text.up_switch_context)
@@ -263,7 +263,7 @@ SECTIONS
*libarch.a:spi_flash_os_func*.*(.rodata .rodata.*)
*libarch.a:flash_brownout_hook.*(.rodata .rodata.*)
*libarch.a:memspi_host_driver.*(.rodata .rodata.*)
*libc.a:arch_atomic.*(.rodata .rodata.*)
_edata = ABSOLUTE(.);
. = ALIGN(4);
@@ -186,7 +186,6 @@ SECTIONS
*libarch.a:*esp_loader.*(.text .text.* .literal .literal.*)
*libarch.a:esp32s3_cpuindex.*(.literal .text .literal.* .text.*)
*libarch.a:esp32s3_irq.*(.literal .text .literal.* .text.*)
*libarch.a:esp32s3_user.*(.literal .text .literal.* .text.*)
*libarch.a:esp32s3_spiflash.*(.literal .text .literal.* .text.*)
*libarch.a:xtensa_assert.*(.literal .text .literal.* .text.*)
@@ -201,6 +200,7 @@ SECTIONS
*libarch.a:*mmu_hal.*(.text .text.* .literal .literal.*)
*libc.a:sq_remlast.*(.literal .text .literal.* .text.*)
*libc.a:arch_atomic.*(.literal .text .literal.* .text.*)
*libdrivers.a:syslog_flush.*(.literal .text .literal.* .text.*)
@@ -348,6 +348,8 @@ SECTIONS
*libc.a:lib_stackchk.*(.rodata .rodata.*)
#endif
*libc.a:arch_atomic.*(.rodata .rodata.*)
_edata = ABSOLUTE(.);
. = ALIGN(4);
@@ -34,8 +34,6 @@
#include <nuttx/config.h>
#include "esp32s3_aliases.ld"
#define SRAM_IRAM_START 0x40370000
#define SRAM_DIRAM_I_START 0x40378000
@@ -79,7 +79,6 @@
* Initialize the RMT peripheral and register an RX device.
*
* Input Parameters:
* ch - The RMT's channel that will be used
* pin - The pin used for the RX channel
*
* Returned Value:
@@ -87,11 +86,11 @@
*
****************************************************************************/
int board_rmt_rxinitialize(int ch, int pin)
int board_rmt_rxinitialize(int pin)
{
int ret;
struct rmt_dev_s *rmt = esp_rmt_rx_init(ch, pin);
struct rmt_dev_s *rmt = esp_rmt_rx_init(pin);
ret = rmtchar_register(rmt);
if (ret < 0)
@@ -110,7 +109,6 @@ int board_rmt_rxinitialize(int ch, int pin)
* Initialize the RMT peripheral and register an TX device.
*
* Input Parameters:
* ch - The RMT's channel that will be used
* pin - The pin used for the TX channel
*
* Returned Value:
@@ -118,7 +116,7 @@ int board_rmt_rxinitialize(int ch, int pin)
*
****************************************************************************/
int board_rmt_txinitialize(int ch, int pin)
int board_rmt_txinitialize(int pin)
{
int ret;
struct rmt_dev_s *rmt;
@@ -126,7 +124,7 @@ int board_rmt_txinitialize(int ch, int pin)
struct ws2812_dev_s *led;
#endif
rmt = esp_rmt_tx_init(ch, pin);
rmt = esp_rmt_tx_init(pin);
if (rmt == NULL)
{
rmterr("ERROR: esp_rmt_tx_init failed\n");
@@ -124,8 +124,9 @@ static int init_ota_partitions(void)
{
struct mtd_dev_s *mtd;
int ret = OK;
int i;
for (int i = 0; i < nitems(g_ota_partition_table); ++i)
for (i = 0; i < nitems(g_ota_partition_table); ++i)
{
const struct partition_s *part = &g_ota_partition_table[i];
#if defined(CONFIG_ESP32S3_SPIRAM) || defined(CONFIG_ESP32S3_PARTITION_TABLE)
@@ -451,8 +452,6 @@ int board_spiflash_init(void)
#if defined(CONFIG_ESP32S3_SPIRAM) || defined(CONFIG_ESP32S3_PARTITION_TABLE)
ret = esp32s3_spiflash_init();
#else
ret = esp_spiflash_init();
#endif
if (ret < 0)
{
@@ -31,7 +31,6 @@
#include "esp32s3_board_wdt.h"
#include "esp32s3_wdt_lowerhalf.h"
#include "esp32s3_wdt.h"
/****************************************************************************
* Pre-processor Definitions
@@ -95,4 +94,3 @@ int board_wdt_init(void)
return ret;
}
@@ -40,7 +40,7 @@
#include "xtensa.h"
#include "espressif/esp_efuse.h"
#include "esp32s3_gpio.h"
#include "espressif/esp_gpio.h"
#ifdef CONFIG_LAN9250_SPI
#include "esp32s3_spi.h"
#else
@@ -109,9 +109,8 @@ static int lan9250_attach(const struct lan9250_lower_s *lower,
xcpt_t handler, void *arg)
{
int ret;
int irq = ESP32S3_PIN2IRQ(LAN9250_IRQ);
ret = irq_attach(irq, handler, arg);
ret = esp_gpio_irq(LAN9250_IRQ, handler, arg);
if (ret < 0)
{
syslog(LOG_ERR, "ERROR: irq_attach() failed: %d\n", ret);
@@ -139,11 +138,7 @@ static int lan9250_attach(const struct lan9250_lower_s *lower,
static void lan9250_enable(const struct lan9250_lower_s *lower)
{
int irq = ESP32S3_PIN2IRQ(LAN9250_IRQ);
/* Configure the interrupt for rising and falling edges */
esp32s3_gpioirqenable(irq, ONLOW);
esp_gpioirqenable(LAN9250_IRQ);
ninfo("Enable the interrupt\n");
}
@@ -163,10 +158,8 @@ static void lan9250_enable(const struct lan9250_lower_s *lower)
static void lan9250_disable(const struct lan9250_lower_s *lower)
{
int irq = ESP32S3_PIN2IRQ(LAN9250_IRQ);
ninfo("Disable the interrupt\n");
esp32s3_gpioirqdisable(irq);
esp_gpioirqdisable(LAN9250_IRQ);
}
/****************************************************************************
@@ -283,8 +276,11 @@ int esp32s3_lan9250_initialize(int port)
{
int ret;
esp32s3_configgpio(LAN9250_IRQ, INPUT_FUNCTION_2 | PULLUP);
esp32s3_configgpio(LAN9250_RST, OUTPUT_FUNCTION_2 | PULLUP);
/* Configure the interrupt for rising and falling edges */
esp_configgpio(LAN9250_IRQ, INPUT_FUNCTION_2 | PULLUP | ONLOW);
esp_configgpio(LAN9250_RST, OUTPUT_FUNCTION_2 | PULLUP);
#ifdef CONFIG_LAN9250_SPI
g_dev = esp32s3_spibus_initialize(port);
@@ -331,10 +327,8 @@ int esp32s3_lan9250_initialize(int port)
int esp32s3_lan9250_uninitialize(int port)
{
int ret;
int irq;
irq = ESP32S3_PIN2IRQ(LAN9250_IRQ);
esp32s3_gpioirqdisable(irq);
esp_gpioirqdisable(LAN9250_IRQ);
#ifdef CONFIG_LAN9250_SPI
ret = esp32s3_spibus_uninitialize((struct spi_dev_s *)g_dev);
@@ -15,6 +15,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -15,6 +15,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -15,6 +15,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -15,6 +15,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -15,6 +15,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -15,6 +15,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -15,6 +15,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -32,7 +32,7 @@
#include <nuttx/spi/spi.h>
#include "esp32s3_gpio.h"
#include "espressif/esp_gpio.h"
#include "esp32s3-8048S043.h"
/****************************************************************************
@@ -36,7 +36,7 @@
#include <nuttx/input/touchscreen.h>
#include "esp32s3_i2c.h"
#include "esp32s3_gpio.h"
#include "espressif/esp_gpio.h"
#include "hardware/esp32s3_gpio_sigmap.h"
#include "esp32s3-8048S043.h"
@@ -40,6 +40,9 @@
#include <nuttx/himem/himem.h>
#include <arch/board/board.h>
#include "espressif/esp_gpio.h"
#include "esp32s3_start.h"
#ifdef CONFIG_ESP32S3_I2C
# include "esp32s3_i2c.h"
#endif
@@ -49,7 +52,11 @@
#endif
#ifdef CONFIG_RTC_DRIVER
# include "esp32s3_rtc_lowerhalf.h"
# include "espressif/esp_rtc.h"
#endif
#ifdef CONFIG_ESPRESSIF_HR_TIMER
# include "espressif/esp_hr_timer.h"
#endif
#ifdef CONFIG_ESPRESSIF_EFUSE
@@ -109,6 +116,14 @@ int esp32s3_bringup(void)
{
int ret;
#ifdef CONFIG_ESPRESSIF_HR_TIMER
ret = esp_hr_timer_init();
if (ret < 0)
{
syslog(LOG_ERR, "ERROR: esp_hr_timer_init() failed: %d\n", ret);
}
#endif
#if defined(CONFIG_ESP32S3_SPIRAM) && \
defined(CONFIG_ESP32S3_SPIRAM_BANKSWITCH_ENABLE)
ret = esp_himem_init();
@@ -195,7 +210,7 @@ int esp32s3_bringup(void)
#ifdef CONFIG_RTC_DRIVER
/* Instantiate the ESP32-S3 RTC driver */
ret = esp32s3_rtc_driverinit();
ret = esp_rtc_driverinit();
if (ret < 0)
{
syslog(LOG_ERR,
@@ -34,7 +34,7 @@
#include <nuttx/board.h>
#include <nuttx/irq.h>
#include "esp32s3_gpio.h"
#include "espressif/esp_gpio.h"
#include "hardware/esp32s3_gpio_sigmap.h"
#include "esp32s3-8048S043.h"
@@ -56,7 +56,7 @@
uint32_t board_button_initialize(void)
{
esp32s3_configgpio(BUTTON_BOOT, INPUT_FUNCTION_2 | PULLUP);
esp_configgpio(BUTTON_BOOT, INPUT_FUNCTION_2 | PULLUP | CHANGE);
return 1;
}
@@ -77,13 +77,13 @@ uint32_t board_buttons(void)
int i = 0;
int n = 0;
bool b0 = esp32s3_gpioread(BUTTON_BOOT);
bool b0 = esp_gpioread(BUTTON_BOOT);
for (i = 0; i < 10; i++)
{
up_mdelay(1);
bool b1 = esp32s3_gpioread(BUTTON_BOOT);
bool b1 = esp_gpioread(BUTTON_BOOT);
if (b0 == b1)
{
@@ -129,38 +129,6 @@ uint32_t board_buttons(void)
#ifdef CONFIG_ARCH_IRQBUTTONS
int board_button_irq(int id, xcpt_t irqhandler, void *arg)
{
int ret;
DEBUGASSERT(id == 0);
int irq = ESP32S3_PIN2IRQ(BUTTON_BOOT);
if (irqhandler != NULL)
{
/* Make sure the interrupt is disabled */
esp32s3_gpioirqdisable(irq);
ret = irq_attach(irq, irqhandler, arg);
if (ret < 0)
{
syslog(LOG_ERR, "ERROR: irq_attach() failed: %d\n", ret);
return ret;
}
gpioinfo("Attach %p\n", irqhandler);
gpioinfo("Enabling the interrupt\n");
/* Configure the interrupt for rising and falling edges */
esp32s3_gpioirqenable(irq, CHANGE);
}
else
{
gpioinfo("Disable the interrupt\n");
esp32s3_gpioirqdisable(irq);
}
return OK;
return esp_gpio_irq(BUTTON_BOOT, irqhandler, arg);
}
#endif
@@ -36,8 +36,8 @@
#include <arch/board/board.h>
#include "espressif/esp_gpio.h"
#include "esp32s3-8048S043.h"
#include "esp32s3_gpio.h"
#include "hardware/esp32s3_gpio_sigmap.h"
#ifdef CONFIG_ESPRESSIF_DEDICATED_GPIO
@@ -50,7 +50,7 @@
* Pre-processor Definitions
****************************************************************************/
#if !defined(CONFIG_ESP32S3_GPIO_IRQ) && BOARD_NGPIOINT > 0
#if !defined(CONFIG_ESPRESSIF_GPIO_IRQ) && BOARD_NGPIOINT > 0
# error "NGPIOINT is > 0 and GPIO interrupts aren't enabled"
#endif
@@ -66,11 +66,11 @@
#define GPIO_IN1 18
/* Interrupt pins. GPIO21 is used as an example, any other inputs could be
* used.
/* Interrupt pins. GPIO0 is used as an example, any other inputs could be
* used. This is the BOOT button.
*/
#define GPIO_IRQPIN1 21
#define GPIO_IRQPIN1 0
/* Dedicated GPIO pins. GPIO4 and GPIO5 is used as an example, any other
* GPIOs could be used.
@@ -221,7 +221,7 @@ static int gpout_read(struct gpio_dev_s *dev, bool *value)
DEBUGASSERT(esp32s3gpio->id < BOARD_NGPIOOUT);
gpioinfo("Reading...\n");
*value = esp32s3_gpioread(g_gpiooutputs[esp32s3gpio->id]);
*value = esp_gpioread(g_gpiooutputs[esp32s3gpio->id]);
return OK;
}
@@ -237,7 +237,7 @@ static int gpout_write(struct gpio_dev_s *dev, bool value)
DEBUGASSERT(esp32s3gpio->id < BOARD_NGPIOOUT);
gpioinfo("Writing %d\n", (int)value);
esp32s3_gpiowrite(g_gpiooutputs[esp32s3gpio->id], value);
esp_gpiowrite(g_gpiooutputs[esp32s3gpio->id], value);
return OK;
}
#endif
@@ -255,7 +255,7 @@ static int gpin_read(struct gpio_dev_s *dev, bool *value)
DEBUGASSERT(esp32s3gpio->id < BOARD_NGPIOIN);
gpioinfo("Reading... pin %" PRIu32 "\n", g_gpioinputs[esp32s3gpio->id]);
*value = esp32s3_gpioread(g_gpioinputs[esp32s3gpio->id]);
*value = esp_gpioread(g_gpioinputs[esp32s3gpio->id]);
return OK;
}
#endif
@@ -289,7 +289,7 @@ static int gpint_read(struct gpio_dev_s *dev, bool *value)
DEBUGASSERT(esp32s3gpint->esp32s3gpio.id < BOARD_NGPIOINT);
gpioinfo("Reading int pin...\n");
*value = esp32s3_gpioread(g_gpiointinputs[esp32s3gpint->esp32s3gpio.id]);
*value = esp_gpioread(g_gpiointinputs[esp32s3gpint->esp32s3gpio.id]);
return OK;
}
@@ -302,23 +302,27 @@ static int gpint_attach(struct gpio_dev_s *dev,
{
struct esp32s3gpint_dev_s *esp32s3gpint =
(struct esp32s3gpint_dev_s *)dev;
int irq = ESP32S3_PIN2IRQ(g_gpiointinputs[esp32s3gpint->esp32s3gpio.id]);
int ret;
gpioinfo("Attaching the callback\n");
/* Make sure the interrupt is disabled */
esp32s3_gpioirqdisable(irq);
ret = irq_attach(irq,
esp32s3gpio_interrupt,
&g_gpint[esp32s3gpint->esp32s3gpio.id]);
esp_gpioirqdisable(g_gpiointinputs[esp32s3gpint->esp32s3gpio.id]);
ret = esp_gpio_irq(g_gpiointinputs[esp32s3gpint->esp32s3gpio.id],
esp32s3gpio_interrupt,
&g_gpint[esp32s3gpint->esp32s3gpio.id]);
if (ret < 0)
{
syslog(LOG_ERR, "ERROR: gpint_attach() failed: %d\n", ret);
return ret;
}
/* Make sure the interrupt is disabled */
esp_gpioirqdisable(g_gpiointinputs[esp32s3gpint->esp32s3gpio.id]);
gpioinfo("Attach %p\n", callback);
esp32s3gpint->callback = callback;
return OK;
@@ -331,7 +335,6 @@ static int gpint_attach(struct gpio_dev_s *dev,
static int gpint_enable(struct gpio_dev_s *dev, bool enable)
{
struct esp32s3gpint_dev_s *esp32s3gpint = (struct esp32s3gpint_dev_s *)dev;
int irq = ESP32S3_PIN2IRQ(g_gpiointinputs[esp32s3gpint->esp32s3gpio.id]);
if (enable)
{
@@ -341,13 +344,13 @@ static int gpint_enable(struct gpio_dev_s *dev, bool enable)
/* Configure the interrupt for rising edge */
esp32s3_gpioirqenable(irq, RISING);
esp_gpioirqenable(g_gpiointinputs[esp32s3gpint->esp32s3gpio.id]);
}
}
else
{
gpioinfo("Disable the interrupt\n");
esp32s3_gpioirqdisable(irq);
esp_gpioirqdisable(g_gpiointinputs[esp32s3gpint->esp32s3gpio.id]);
}
return OK;
@@ -379,10 +382,9 @@ int esp32s3_gpio_init(void)
/* Configure the pins that will be used as output */
esp32s3_gpio_matrix_out(g_gpiooutputs[i], SIG_GPIO_OUT_IDX, 0, 0);
esp32s3_configgpio(g_gpiooutputs[i], OUTPUT_FUNCTION_2 |
INPUT_FUNCTION_2);
esp32s3_gpiowrite(g_gpiooutputs[i], 0);
esp_gpio_matrix_out(g_gpiooutputs[i], SIG_GPIO_OUT_IDX, 0, 0);
esp_configgpio(g_gpiooutputs[i], OUTPUT_FUNCTION_2 | INPUT_FUNCTION_2);
esp_gpiowrite(g_gpiooutputs[i], 0);
pincount++;
}
@@ -400,7 +402,7 @@ int esp32s3_gpio_init(void)
/* Configure the pins that will be used as INPUT */
esp32s3_configgpio(g_gpioinputs[i], INPUT_FUNCTION_2);
esp_configgpio(g_gpioinputs[i], INPUT_FUNCTION_2);
pincount++;
}
@@ -418,8 +420,8 @@ int esp32s3_gpio_init(void)
/* Configure the pins that will be used as interrupt input */
esp32s3_configgpio(g_gpiointinputs[i], INPUT_FUNCTION_2 | PULLDOWN);
esp_configgpio(g_gpiointinputs[i],
INPUT_FUNCTION_2 | PULLUP | FALLING);
pincount++;
}
#endif
@@ -36,7 +36,7 @@
#include <nuttx/video/fb.h>
#include <nuttx/signal.h>
#include "esp32s3_gpio.h"
#include "espressif/esp_gpio.h"
#include "esp32s3-8048S043.h"
/****************************************************************************
@@ -81,8 +81,8 @@ int board_lcd_initialize(void)
{
int ret;
esp32s3_configgpio(ESP32S3_DISPLAY_BCKL, OUTPUT);
esp32s3_gpiowrite(ESP32S3_DISPLAY_BCKL, true);
esp_configgpio(ESP32S3_DISPLAY_BCKL, OUTPUT);
esp_gpiowrite(ESP32S3_DISPLAY_BCKL, true);
#ifdef CONFIG_VIDEO_FB
/* Initialize and register the framebuffer driver */
@@ -19,6 +19,9 @@ CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM2N16R8V=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQBUTTONS=y
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -19,6 +19,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM2N16R8V=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -19,6 +19,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM2N16R8V=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -17,6 +17,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM2N16R8V=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -17,6 +17,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM2N16R8V=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -42,7 +42,7 @@
#include <arch/board/board.h>
#include "esp32s3_gpio.h"
#include "espressif/esp_gpio.h"
#include "esp32s3_spi.h"
#include "hardware/esp32s3_gpio_sigmap.h"
@@ -488,21 +488,21 @@ static struct ili9341_lcd_s *esp32s3_initializa_ili9342c(int spi_port)
/* Initialize non-SPI GPIOs */
esp32s3_configgpio(DISPLAY_DC, OUTPUT);
esp32s3_configgpio(DISPLAY_RST, OUTPUT);
esp32s3_configgpio(DISPLAY_BCKL, OUTPUT);
esp_configgpio(DISPLAY_DC, OUTPUT);
esp_configgpio(DISPLAY_RST, OUTPUT);
esp_configgpio(DISPLAY_BCKL, OUTPUT);
/* Reset LCD */
nxsched_usleep(10 * 1000);
esp32s3_gpiowrite(DISPLAY_RST, true);
esp_gpiowrite(DISPLAY_RST, true);
nxsched_usleep(10 * 1000);
esp32s3_gpiowrite(DISPLAY_RST, false);
esp_gpiowrite(DISPLAY_RST, false);
nxsched_usleep(50 * 1000);
/* Turn on LCD backlight */
esp32s3_gpiowrite(DISPLAY_BCKL, true);
esp_gpiowrite(DISPLAY_BCKL, true);
g_lcddev.spi_dev = esp32s3_spibus_initialize(spi_port);
if (!g_lcddev.spi_dev)
@@ -547,7 +547,9 @@ static void ili9342c_configure(struct ili9341_lcd_s *lcd,
lcd->sendcmd(lcd, cmd);
if (data_bytes)
{
for (int i = 0; i < data_bytes; i++)
int i;
for (i = 0; i < data_bytes; i++)
{
lcd->sendparam(lcd, data[i]);
}
@@ -576,6 +578,7 @@ static void ili9342c_configure(struct ili9341_lcd_s *lcd,
int board_lcd_initialize(void)
{
struct ili9341_lcd_s *ili9342c_lcd;
int i;
ili9342c_lcd = esp32s3_initializa_ili9342c(DISPLAY_SPI);
if (!ili9342c_lcd)
@@ -591,7 +594,7 @@ int board_lcd_initialize(void)
return -ENODEV;
}
for (int i = 0; i < nitems(g_lcd_config); i++)
for (i = 0; i < nitems(g_lcd_config); i++)
{
ili9342c_configure(ili9342c_lcd,
g_lcd_config[i].cmd,
@@ -40,7 +40,7 @@
#include <arch/board/board.h>
#include "esp32s3_gpio.h"
#include "espressif/esp_gpio.h"
#include "esp32s3_spi.h"
#include "hardware/esp32s3_gpio_sigmap.h"
@@ -78,20 +78,20 @@ int board_lcd_initialize(void)
{
/* Initialize non-SPI GPIOs */
esp32s3_configgpio(DISPLAY_DC, OUTPUT);
esp32s3_configgpio(DISPLAY_RST, OUTPUT);
esp32s3_configgpio(DISPLAY_BCKL, OUTPUT);
esp_configgpio(DISPLAY_DC, OUTPUT);
esp_configgpio(DISPLAY_RST, OUTPUT);
esp_configgpio(DISPLAY_BCKL, OUTPUT);
/* Reset LCD */
esp32s3_gpiowrite(DISPLAY_RST, false);
esp_gpiowrite(DISPLAY_RST, false);
nxsched_usleep(10 * 1000);
esp32s3_gpiowrite(DISPLAY_RST, true);
esp_gpiowrite(DISPLAY_RST, true);
nxsched_usleep(10 * 1000);
/* Turn on LCD backlight */
esp32s3_gpiowrite(DISPLAY_BCKL, true);
esp_gpiowrite(DISPLAY_BCKL, true);
g_spidev = esp32s3_spibus_initialize(DISPLAY_SPI);
if (!g_spidev)
@@ -32,7 +32,7 @@
#include <nuttx/spi/spi.h>
#include "esp32s3_gpio.h"
#include "espressif/esp_gpio.h"
#include "esp32s3-box.h"
/****************************************************************************
@@ -72,7 +72,7 @@ int esp32s3_spi2_cmddata(struct spi_dev_s *dev, uint32_t devid, bool cmd)
* data bits are data or a command.
*/
esp32s3_gpiowrite(DISPLAY_DC, !cmd);
esp_gpiowrite(DISPLAY_DC, !cmd);
return OK;
}
@@ -114,7 +114,7 @@ int esp32s3_spi3_cmddata(struct spi_dev_s *dev, uint32_t devid, bool cmd)
* data bits are data or a command.
*/
esp32s3_gpiowrite(CONFIG_ESP32S3_SPI3_MISOPIN, !cmd);
esp_gpiowrite(CONFIG_ESP32S3_SPI3_MISOPIN, !cmd);
return OK;
}
@@ -36,7 +36,7 @@
#include <nuttx/input/touchscreen.h>
#include "esp32s3_i2c.h"
#include "esp32s3_gpio.h"
#include "espressif/esp_gpio.h"
#include "hardware/esp32s3_gpio_sigmap.h"
#include "esp32s3-box.h"
@@ -36,7 +36,7 @@
#include <nuttx/input/touchscreen.h>
#include "esp32s3_i2c.h"
#include "esp32s3_gpio.h"
#include "espressif/esp_gpio.h"
#include "hardware/esp32s3_gpio_sigmap.h"
#include "esp32s3-box.h"
@@ -38,6 +38,9 @@
#include <errno.h>
#include <nuttx/fs/fs.h>
#include "espressif/esp_gpio.h"
#include "esp32s3_start.h"
#ifdef CONFIG_ESP32S3_TIMER
# include "esp32s3_board_tim.h"
#endif
@@ -54,10 +57,6 @@
# include "esp32s3_wifi_adapter.h"
#endif
#ifdef CONFIG_ESP32S3_RT_TIMER
# include "esp32s3_rt_timer.h"
#endif
#ifdef CONFIG_WATCHDOG
# include "esp32s3_board_wdt.h"
#endif
@@ -67,7 +66,11 @@
#endif
#ifdef CONFIG_RTC_DRIVER
# include "esp32s3_rtc_lowerhalf.h"
# include "espressif/esp_rtc.h"
#endif
#ifdef CONFIG_ESPRESSIF_HR_TIMER
# include "espressif/esp_hr_timer.h"
#endif
#ifdef CONFIG_ESPRESSIF_EFUSE
@@ -107,6 +110,14 @@ int esp32s3_bringup(void)
{
int ret;
#ifdef CONFIG_ESPRESSIF_HR_TIMER
ret = esp_hr_timer_init();
if (ret < 0)
{
syslog(LOG_ERR, "ERROR: esp_hr_timer_init() failed: %d\n", ret);
}
#endif
#if defined(CONFIG_ESPRESSIF_EFUSE)
ret = esp_efuse_initialize("/dev/efuse");
if (ret < 0)
@@ -146,18 +157,10 @@ int esp32s3_bringup(void)
}
#endif
#ifdef CONFIG_ESP32S3_RT_TIMER
ret = esp32s3_rt_timer_init();
if (ret < 0)
{
syslog(LOG_ERR, "Failed to initialize RT timer: %d\n", ret);
}
#endif
#ifdef CONFIG_RTC_DRIVER
/* Instantiate the ESP32-S3 RTC driver */
ret = esp32s3_rtc_driverinit();
ret = esp_rtc_driverinit();
if (ret < 0)
{
syslog(LOG_ERR,
@@ -34,7 +34,7 @@
#include <nuttx/board.h>
#include <nuttx/irq.h>
#include "esp32s3_gpio.h"
#include "espressif/esp_gpio.h"
#include "hardware/esp32s3_gpio_sigmap.h"
#include "esp32s3-box.h"
@@ -56,7 +56,7 @@
uint32_t board_button_initialize(void)
{
esp32s3_configgpio(BUTTON_BOOT, INPUT_FUNCTION_2 | PULLUP);
esp_configgpio(BUTTON_BOOT, INPUT_FUNCTION_2 | PULLUP | CHANGE);
return 1;
}
@@ -77,13 +77,13 @@ uint32_t board_buttons(void)
int i = 0;
int n = 0;
bool b0 = esp32s3_gpioread(BUTTON_BOOT);
bool b0 = esp_gpioread(BUTTON_BOOT);
for (i = 0; i < 10; i++)
{
up_mdelay(1);
bool b1 = esp32s3_gpioread(BUTTON_BOOT);
bool b1 = esp_gpioread(BUTTON_BOOT);
if (b0 == b1)
{
@@ -129,38 +129,6 @@ uint32_t board_buttons(void)
#ifdef CONFIG_ARCH_IRQBUTTONS
int board_button_irq(int id, xcpt_t irqhandler, void *arg)
{
int ret;
DEBUGASSERT(id == 0);
int irq = ESP32S3_PIN2IRQ(BUTTON_BOOT);
if (irqhandler != NULL)
{
/* Make sure the interrupt is disabled */
esp32s3_gpioirqdisable(irq);
ret = irq_attach(irq, irqhandler, arg);
if (ret < 0)
{
syslog(LOG_ERR, "ERROR: irq_attach() failed: %d\n", ret);
return ret;
}
gpioinfo("Attach %p\n", irqhandler);
gpioinfo("Enabling the interrupt\n");
/* Configure the interrupt for rising and falling edges */
esp32s3_gpioirqenable(irq, CHANGE);
}
else
{
gpioinfo("Disable the interrupt\n");
esp32s3_gpioirqdisable(irq);
}
return OK;
return esp_gpio_irq(BUTTON_BOOT, irqhandler, arg);
}
#endif
@@ -16,6 +16,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -19,6 +19,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_AUDIO=y
@@ -84,6 +87,8 @@ CONFIG_PTHREAD_MUTEX_TYPES=y
CONFIG_RAM_SIZE=114688
CONFIG_RAM_START=0x20000000
CONFIG_RR_INTERVAL=200
CONFIG_RTC=y
CONFIG_RTC_DRIVER=y
CONFIG_SCHED_LPWORK=y
CONFIG_SCHED_WAITPID=y
CONFIG_SMP=y
@@ -18,6 +18,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARDCTL_RESET=y
@@ -28,7 +31,6 @@ CONFIG_DEFAULT_TASK_STACKSIZE=4096
CONFIG_DRIVERS_BLUETOOTH=y
CONFIG_DRIVERS_IEEE80211=y
CONFIG_DRIVERS_WIRELESS=y
CONFIG_ESP32S3_RT_TIMER_TASK_STACK_SIZE=4096
CONFIG_ESP32S3_UART0=y
CONFIG_ESPRESSIF_BLE=y
CONFIG_FS_LARGEFILE=y
@@ -59,6 +61,8 @@ CONFIG_PTHREAD_MUTEX_TYPES=y
CONFIG_RAM_SIZE=114688
CONFIG_RAM_START=0x20000000
CONFIG_RR_INTERVAL=200
CONFIG_RTC=y
CONFIG_RTC_DRIVER=y
CONFIG_SCHED_WAITPID=y
CONFIG_SIG_DEFAULT=y
CONFIG_SPINLOCK=y
@@ -18,6 +18,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BLUETOOTH_TXCMD_PRIORITY=120
@@ -31,7 +34,6 @@ CONFIG_DEFAULT_TASK_STACKSIZE=4096
CONFIG_DRIVERS_BLUETOOTH=y
CONFIG_DRIVERS_IEEE80211=y
CONFIG_DRIVERS_WIRELESS=y
CONFIG_ESP32S3_RT_TIMER_TASK_STACK_SIZE=4096
CONFIG_ESP32S3_UART0=y
CONFIG_ESPRESSIF_BLE=y
CONFIG_ESPRESSIF_WIFI=y
@@ -81,6 +83,8 @@ CONFIG_PTHREAD_MUTEX_TYPES=y
CONFIG_RAM_SIZE=114688
CONFIG_RAM_START=0x20000000
CONFIG_RR_INTERVAL=200
CONFIG_RTC=y
CONFIG_RTC_DRIVER=y
CONFIG_SCHED_WAITPID=y
CONFIG_SIG_DEFAULT=y
CONFIG_SPINLOCK=y
@@ -18,6 +18,9 @@ CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQBUTTONS=y
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -16,6 +16,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -15,6 +15,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_SETJMP_H=y
CONFIG_ARCH_XTENSA=y
CONFIG_BENCHMARK_COREMARK=y
@@ -20,6 +20,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -16,6 +16,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -16,6 +16,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -17,6 +17,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_USE_COPY_SECTION=y
CONFIG_ARCH_XTENSA=y
@@ -20,6 +20,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -17,6 +17,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BCH=y
@@ -30,7 +33,6 @@ CONFIG_DRIVERS_IEEE80211=y
CONFIG_DRIVERS_WIRELESS=y
CONFIG_ESP32S3_OTG=y
CONFIG_ESP32S3_OTG_ENDPOINT_NUM=2
CONFIG_ESP32S3_RT_TIMER_TASK_STACK_SIZE=4096
CONFIG_ESP32S3_SPIFLASH=y
CONFIG_ESP32S3_SPIFLASH_SPIFFS=y
CONFIG_ESP32S3_UART0=y
@@ -76,6 +78,8 @@ CONFIG_PTHREAD_MUTEX_TYPES=y
CONFIG_RAM_SIZE=114688
CONFIG_RAM_START=0x20000000
CONFIG_RR_INTERVAL=200
CONFIG_RTC=y
CONFIG_RTC_DRIVER=y
CONFIG_SCHED_CHILD_STATUS=y
CONFIG_SCHED_HAVE_PARENT=y
CONFIG_SCHED_LPWORK=y
@@ -18,6 +18,9 @@ CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BOARD_LOOPSPERMSEC=16717
@@ -25,7 +28,6 @@ CONFIG_BUILTIN=y
CONFIG_DEFAULT_TASK_STACKSIZE=4096
CONFIG_DRIVERS_IEEE80211=y
CONFIG_DRIVERS_WIRELESS=y
CONFIG_ESP32S3_RT_TIMER_TASK_STACK_SIZE=4096
CONFIG_ESP32S3_SPIFLASH=y
CONFIG_ESP32S3_SPIFLASH_SPIFFS=y
CONFIG_ESP32S3_UART0=y
@@ -69,6 +71,8 @@ CONFIG_PTHREAD_MUTEX_TYPES=y
CONFIG_RAM_SIZE=114688
CONFIG_RAM_START=0x20000000
CONFIG_RR_INTERVAL=200
CONFIG_RTC=y
CONFIG_RTC_DRIVER=y
CONFIG_SCHED_CHILD_STATUS=y
CONFIG_SCHED_HAVE_PARENT=y
CONFIG_SCHED_LPWORK=y

Some files were not shown because too many files have changed in this diff Show More