From 4b36d69630fcd58cd38da90d8b430bdf82c1e114 Mon Sep 17 00:00:00 2001 From: Eren Terzioglu Date: Mon, 28 Apr 2025 13:44:56 +0200 Subject: [PATCH] boards/xtensa: Add SDM peripheral board layer support for esp[-|-s2|-s3] Add SDM perpiheral board layer support for Xtensa based Espressif devices Signed-off-by: Eren Terzioglu --- .../xtensa/esp32/common/src/esp32_board_dac.c | 17 ++++++- .../esp32/esp32-devkitc/configs/sdm/defconfig | 48 ++++++++++++++++++ .../esp32s2-saola-1/configs/sdm/defconfig | 47 +++++++++++++++++ .../esp32s2-saola-1/src/esp32s2_bringup.c | 21 ++++++++ .../esp32s3-devkit/configs/sdm/defconfig | 50 +++++++++++++++++++ .../esp32s3-devkit/src/esp32s3_bringup.c | 21 ++++++++ 6 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 boards/xtensa/esp32/esp32-devkitc/configs/sdm/defconfig create mode 100644 boards/xtensa/esp32s2/esp32s2-saola-1/configs/sdm/defconfig create mode 100644 boards/xtensa/esp32s3/esp32s3-devkit/configs/sdm/defconfig diff --git a/boards/xtensa/esp32/common/src/esp32_board_dac.c b/boards/xtensa/esp32/common/src/esp32_board_dac.c index 10c8f19aa3..bacc6f727f 100644 --- a/boards/xtensa/esp32/common/src/esp32_board_dac.c +++ b/boards/xtensa/esp32/common/src/esp32_board_dac.c @@ -32,6 +32,10 @@ #include #include +#ifdef CONFIG_ESP_SDM +# include "espressif/esp_sdm.h" +#endif + /**************************************************************************** * Private Data ****************************************************************************/ @@ -44,7 +48,7 @@ * Name: board_dac_initialize * * Description: - * Initialize and register the Digital to Analog Convertor (DAC) driver. + * Initialize and register the Digital to Analog Converter (DAC) driver. * * Input Parameters: * path - The device number, used to build the device path as @@ -61,7 +65,18 @@ int board_dac_initialize(const char *path) /* Initialize DAC */ +#ifdef CONFIG_ESP_SDM + struct esp_sdm_chan_config_s config = + { + .gpio_num = 5, + .sample_rate_hz = 1000 * 1000, + .flags = 0, + }; + + struct dac_dev_s *dev = esp_sdminitialize(config); +#else struct dac_dev_s *dev = esp32_dac_initialize(); +#endif if (dev != NULL) { /* Try to register the DAC */ diff --git a/boards/xtensa/esp32/esp32-devkitc/configs/sdm/defconfig b/boards/xtensa/esp32/esp32-devkitc/configs/sdm/defconfig new file mode 100644 index 0000000000..e3639c6bbf --- /dev/null +++ b/boards/xtensa/esp32/esp32-devkitc/configs/sdm/defconfig @@ -0,0 +1,48 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_ARCH_LEDS is not set +# CONFIG_NSH_ARGCAT is not set +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +CONFIG_ARCH="xtensa" +CONFIG_ARCH_BOARD="esp32-devkitc" +CONFIG_ARCH_BOARD_COMMON=y +CONFIG_ARCH_BOARD_ESP32_DEVKITC=y +CONFIG_ARCH_CHIP="esp32" +CONFIG_ARCH_CHIP_ESP32=y +CONFIG_ARCH_CHIP_ESP32WROVER=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_ARCH_XTENSA=y +CONFIG_BOARD_LOOPSPERMSEC=16717 +CONFIG_BUILTIN=y +CONFIG_ESP32_UART0=y +CONFIG_ESP_SDM=y +CONFIG_EXAMPLES_DAC=y +CONFIG_FS_PROCFS=y +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_IDLETHREAD_STACKSIZE=3072 +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INIT_STACKSIZE=3072 +CONFIG_INTELHEX_BINARY=y +CONFIG_LINE_MAX=64 +CONFIG_MM_REGIONS=3 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_READLINE=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_RAM_SIZE=114688 +CONFIG_RAM_START=0x20000000 +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_WAITPID=y +CONFIG_START_DAY=6 +CONFIG_START_MONTH=12 +CONFIG_START_YEAR=2011 +CONFIG_SYSLOG_BUFFER=y +CONFIG_SYSTEM_NSH=y +CONFIG_UART0_SERIAL_CONSOLE=y diff --git a/boards/xtensa/esp32s2/esp32s2-saola-1/configs/sdm/defconfig b/boards/xtensa/esp32s2/esp32s2-saola-1/configs/sdm/defconfig new file mode 100644 index 0000000000..c848a85b94 --- /dev/null +++ b/boards/xtensa/esp32s2/esp32s2-saola-1/configs/sdm/defconfig @@ -0,0 +1,47 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_ARCH_LEDS is not set +# CONFIG_NSH_ARGCAT is not set +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +CONFIG_ARCH="xtensa" +CONFIG_ARCH_BOARD="esp32s2-saola-1" +CONFIG_ARCH_BOARD_COMMON=y +CONFIG_ARCH_BOARD_ESP32S2_SAOLA_1=y +CONFIG_ARCH_CHIP="esp32s2" +CONFIG_ARCH_CHIP_ESP32S2=y +CONFIG_ARCH_CHIP_ESP32S2WROVER=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_ARCH_XTENSA=y +CONFIG_BOARD_LOOPSPERMSEC=16717 +CONFIG_BUILTIN=y +CONFIG_ESP32S2_UART0=y +CONFIG_ESP_SDM=y +CONFIG_EXAMPLES_DAC=y +CONFIG_FS_PROCFS=y +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_IDLETHREAD_STACKSIZE=3072 +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INIT_STACKSIZE=3072 +CONFIG_INTELHEX_BINARY=y +CONFIG_LINE_MAX=64 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_READLINE=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_RAM_SIZE=114688 +CONFIG_RAM_START=0x20000000 +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_WAITPID=y +CONFIG_START_DAY=6 +CONFIG_START_MONTH=12 +CONFIG_START_YEAR=2011 +CONFIG_SYSLOG_BUFFER=y +CONFIG_SYSTEM_NSH=y +CONFIG_UART0_SERIAL_CONSOLE=y diff --git a/boards/xtensa/esp32s2/esp32s2-saola-1/src/esp32s2_bringup.c b/boards/xtensa/esp32s2/esp32s2-saola-1/src/esp32s2_bringup.c index d1fa8eb93a..cd090470fb 100644 --- a/boards/xtensa/esp32s2/esp32s2-saola-1/src/esp32s2_bringup.c +++ b/boards/xtensa/esp32s2/esp32s2-saola-1/src/esp32s2_bringup.c @@ -113,6 +113,10 @@ # include "esp32s2_board_adc.h" #endif +#ifdef CONFIG_ESP_SDM +# include "espressif/esp_sdm.h" +#endif + #include "esp32s2-saola-1.h" /**************************************************************************** @@ -424,6 +428,23 @@ int esp32s2_bringup(void) } #endif +#ifdef CONFIG_ESP_SDM + struct esp_sdm_chan_config_s config = + { + .gpio_num = 5, + .sample_rate_hz = 1000 * 1000, + .flags = 0, + }; + + struct dac_dev_s *dev = esp_sdminitialize(config); + ret = dac_register("/dev/dac0", dev); + if (ret < 0) + { + syslog(LOG_ERR, "Failed to initialize DAC driver: %d\n", + ret); + } +#endif + #ifdef CONFIG_ESP_PCNT ret = board_pcnt_initialize(); if (ret < 0) diff --git a/boards/xtensa/esp32s3/esp32s3-devkit/configs/sdm/defconfig b/boards/xtensa/esp32s3/esp32s3-devkit/configs/sdm/defconfig new file mode 100644 index 0000000000..43f85e9b6a --- /dev/null +++ b/boards/xtensa/esp32s3/esp32s3-devkit/configs/sdm/defconfig @@ -0,0 +1,50 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_ARCH_LEDS is not set +# CONFIG_NSH_ARGCAT is not set +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +CONFIG_ARCH="xtensa" +CONFIG_ARCH_BOARD="esp32s3-devkit" +CONFIG_ARCH_BOARD_COMMON=y +CONFIG_ARCH_BOARD_ESP32S3_DEVKIT=y +CONFIG_ARCH_CHIP="esp32s3" +CONFIG_ARCH_CHIP_ESP32S3=y +CONFIG_ARCH_CHIP_ESP32S3WROOM1N4=y +CONFIG_ARCH_INTERRUPTSTACK=2048 +CONFIG_ARCH_STACKDUMP=y +CONFIG_ARCH_XTENSA=y +CONFIG_BOARD_LOOPSPERMSEC=16717 +CONFIG_BUILTIN=y +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_ESP32S3_UART0=y +CONFIG_ESP_SDM=y +CONFIG_EXAMPLES_DAC=y +CONFIG_FS_PROCFS=y +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_IDLETHREAD_STACKSIZE=3072 +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INIT_STACKSIZE=3072 +CONFIG_INTELHEX_BINARY=y +CONFIG_LINE_MAX=64 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_READLINE=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_RAM_SIZE=114688 +CONFIG_RAM_START=0x20000000 +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_WAITPID=y +CONFIG_START_DAY=6 +CONFIG_START_MONTH=12 +CONFIG_START_YEAR=2011 +CONFIG_SYSLOG_BUFFER=y +CONFIG_SYSTEM_NSH=y +CONFIG_UART0_SERIAL_CONSOLE=y diff --git a/boards/xtensa/esp32s3/esp32s3-devkit/src/esp32s3_bringup.c b/boards/xtensa/esp32s3/esp32s3-devkit/src/esp32s3_bringup.c index 917ece9fe1..63a70c7b06 100644 --- a/boards/xtensa/esp32s3/esp32s3-devkit/src/esp32s3_bringup.c +++ b/boards/xtensa/esp32s3/esp32s3-devkit/src/esp32s3_bringup.c @@ -141,6 +141,10 @@ # include "espressif/esp_nxdiag.h" #endif +#ifdef CONFIG_ESP_SDM +# include "espressif/esp_sdm.h" +#endif + #include "esp32s3-devkit.h" /**************************************************************************** @@ -532,6 +536,23 @@ int esp32s3_bringup(void) } #endif +#ifdef CONFIG_ESP_SDM + struct esp_sdm_chan_config_s config = + { + .gpio_num = 5, + .sample_rate_hz = 1000 * 1000, + .flags = 0, + }; + + struct dac_dev_s *dev = esp_sdminitialize(config); + ret = dac_register("/dev/dac0", dev); + if (ret < 0) + { + syslog(LOG_ERR, "Failed to initialize DAC driver: %d\n", + ret); + } +#endif + #ifdef CONFIG_ESP_MCPWM_CAPTURE ret = board_capture_initialize(); if (ret < 0)