From 521e1b15b6a9246630503b9ceefbaa3ee0648564 Mon Sep 17 00:00:00 2001 From: Eren Terzioglu Date: Thu, 17 Apr 2025 12:27:59 +0200 Subject: [PATCH] boards/risc-v: Add board layer support of SDM for esp32[-c3|-c6|-h2] Add SDM board layer support for risc-v based Espressif devices Signed-off-by: Eren Terzioglu --- .../esp32c3-generic/configs/sdm/defconfig | 47 ++++++++++++++++++ .../esp32c3-generic/src/esp32c3_bringup.c | 21 ++++++++ .../esp32c6-devkitc/configs/sdm/defconfig | 49 +++++++++++++++++++ .../esp32c6-devkitc/src/esp32c6_bringup.c | 21 ++++++++ .../esp32c6-devkitm/src/esp32c6_bringup.c | 21 ++++++++ .../esp32h2-devkit/configs/sdm/defconfig | 48 ++++++++++++++++++ .../esp32h2-devkit/src/esp32h2_bringup.c | 21 ++++++++ 7 files changed, 228 insertions(+) create mode 100644 boards/risc-v/esp32c3/esp32c3-generic/configs/sdm/defconfig create mode 100644 boards/risc-v/esp32c6/esp32c6-devkitc/configs/sdm/defconfig create mode 100644 boards/risc-v/esp32h2/esp32h2-devkit/configs/sdm/defconfig diff --git a/boards/risc-v/esp32c3/esp32c3-generic/configs/sdm/defconfig b/boards/risc-v/esp32c3/esp32c3-generic/configs/sdm/defconfig new file mode 100644 index 0000000000..fcfeefc8fb --- /dev/null +++ b/boards/risc-v/esp32c3/esp32c3-generic/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_NSH_ARGCAT is not set +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +CONFIG_ARCH="risc-v" +CONFIG_ARCH_BOARD="esp32c3-generic" +CONFIG_ARCH_BOARD_COMMON=y +CONFIG_ARCH_BOARD_ESP32C3_GENERIC=y +CONFIG_ARCH_CHIP="esp32c3" +CONFIG_ARCH_CHIP_ESP32C3_GENERIC=y +CONFIG_ARCH_INTERRUPTSTACK=1536 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARDCTL_RESET=y +CONFIG_BOARD_LOOPSPERMSEC=15000 +CONFIG_BUILTIN=y +CONFIG_ESP_SDM=y +CONFIG_EXAMPLES_DAC=y +CONFIG_FS_PROCFS=y +CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_PERROR_STDOUT=y +CONFIG_LIBC_STRERROR=y +CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_READLINE=y +CONFIG_NSH_STRERROR=y +CONFIG_PREALLOC_TIMERS=0 +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_BACKTRACE=y +CONFIG_SCHED_WAITPID=y +CONFIG_START_DAY=29 +CONFIG_START_MONTH=11 +CONFIG_START_YEAR=2019 +CONFIG_SYSTEM_DUMPSTACK=y +CONFIG_SYSTEM_NSH=y +CONFIG_TESTING_GETPRIME=y +CONFIG_TESTING_OSTEST=y +CONFIG_UART0_SERIAL_CONSOLE=y diff --git a/boards/risc-v/esp32c3/esp32c3-generic/src/esp32c3_bringup.c b/boards/risc-v/esp32c3/esp32c3-generic/src/esp32c3_bringup.c index 5c3bcc974c..0316657ebb 100644 --- a/boards/risc-v/esp32c3/esp32c3-generic/src/esp32c3_bringup.c +++ b/boards/risc-v/esp32c3/esp32c3-generic/src/esp32c3_bringup.c @@ -114,6 +114,10 @@ # include "espressif/esp_nxdiag.h" #endif +#ifdef CONFIG_ESP_SDM +# include "espressif/esp_sdm.h" +#endif + #include "esp32c3-generic.h" /**************************************************************************** @@ -358,6 +362,23 @@ int esp_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_ESPRESSIF_TWAI /* Initialize TWAI and register the TWAI driver. */ diff --git a/boards/risc-v/esp32c6/esp32c6-devkitc/configs/sdm/defconfig b/boards/risc-v/esp32c6/esp32c6-devkitc/configs/sdm/defconfig new file mode 100644 index 0000000000..a4f0452233 --- /dev/null +++ b/boards/risc-v/esp32c6/esp32c6-devkitc/configs/sdm/defconfig @@ -0,0 +1,49 @@ +# +# 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_NSH_ARGCAT is not set +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +CONFIG_ARCH="risc-v" +CONFIG_ARCH_BOARD="esp32c6-devkitc" +CONFIG_ARCH_BOARD_COMMON=y +CONFIG_ARCH_BOARD_ESP32C6_DEVKITC=y +CONFIG_ARCH_CHIP="esp32c6" +CONFIG_ARCH_CHIP_ESP32C6=y +CONFIG_ARCH_CHIP_ESP32C6WROOM1=y +CONFIG_ARCH_INTERRUPTSTACK=2048 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARDCTL_RESET=y +CONFIG_BOARD_LOOPSPERMSEC=15000 +CONFIG_BUILTIN=y +CONFIG_ESPRESSIF_ESP32C6=y +CONFIG_ESP_SDM=y +CONFIG_EXAMPLES_DAC=y +CONFIG_FS_PROCFS=y +CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_PERROR_STDOUT=y +CONFIG_LIBC_STRERROR=y +CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_READLINE=y +CONFIG_NSH_STRERROR=y +CONFIG_PREALLOC_TIMERS=0 +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_BACKTRACE=y +CONFIG_SCHED_WAITPID=y +CONFIG_START_DAY=29 +CONFIG_START_MONTH=11 +CONFIG_START_YEAR=2019 +CONFIG_SYSTEM_DUMPSTACK=y +CONFIG_SYSTEM_NSH=y +CONFIG_TESTING_GETPRIME=y +CONFIG_TESTING_OSTEST=y +CONFIG_UART0_SERIAL_CONSOLE=y diff --git a/boards/risc-v/esp32c6/esp32c6-devkitc/src/esp32c6_bringup.c b/boards/risc-v/esp32c6/esp32c6-devkitc/src/esp32c6_bringup.c index 4f06e70d32..2f311da29a 100644 --- a/boards/risc-v/esp32c6/esp32c6-devkitc/src/esp32c6_bringup.c +++ b/boards/risc-v/esp32c6/esp32c6-devkitc/src/esp32c6_bringup.c @@ -121,6 +121,10 @@ # include "espressif/esp_nxdiag.h" #endif +#ifdef CONFIG_ESP_SDM +# include "espressif/esp_sdm.h" +#endif + #include "esp32c6-devkitc.h" /**************************************************************************** @@ -327,6 +331,23 @@ int esp_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_ESPRESSIF_TEMP struct esp_temp_sensor_config_t cfg = TEMPERATURE_SENSOR_CONFIG(10, 50); ret = esp_temperature_sensor_initialize(cfg); diff --git a/boards/risc-v/esp32c6/esp32c6-devkitm/src/esp32c6_bringup.c b/boards/risc-v/esp32c6/esp32c6-devkitm/src/esp32c6_bringup.c index aaa8a84e1a..3daf019ffd 100644 --- a/boards/risc-v/esp32c6/esp32c6-devkitm/src/esp32c6_bringup.c +++ b/boards/risc-v/esp32c6/esp32c6-devkitm/src/esp32c6_bringup.c @@ -109,6 +109,10 @@ # include "espressif/esp_nxdiag.h" #endif +#ifdef CONFIG_ESP_SDM +# include "espressif/esp_sdm.h" +#endif + #include "esp32c6-devkitm.h" /**************************************************************************** @@ -303,6 +307,23 @@ int esp_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_ESPRESSIF_TEMP struct esp_temp_sensor_config_t cfg = TEMPERATURE_SENSOR_CONFIG(10, 50); ret = esp_temperature_sensor_initialize(cfg); diff --git a/boards/risc-v/esp32h2/esp32h2-devkit/configs/sdm/defconfig b/boards/risc-v/esp32h2/esp32h2-devkit/configs/sdm/defconfig new file mode 100644 index 0000000000..2a3e7de085 --- /dev/null +++ b/boards/risc-v/esp32h2/esp32h2-devkit/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_NSH_ARGCAT is not set +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +CONFIG_ARCH="risc-v" +CONFIG_ARCH_BOARD="esp32h2-devkit" +CONFIG_ARCH_BOARD_COMMON=y +CONFIG_ARCH_BOARD_ESP32H2_DEVKIT=y +CONFIG_ARCH_CHIP="esp32h2" +CONFIG_ARCH_CHIP_ESP32H2=y +CONFIG_ARCH_INTERRUPTSTACK=2048 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARDCTL_RESET=y +CONFIG_BOARD_LOOPSPERMSEC=15000 +CONFIG_BUILTIN=y +CONFIG_ESPRESSIF_ESP32H2=y +CONFIG_ESP_SDM=y +CONFIG_EXAMPLES_DAC=y +CONFIG_FS_PROCFS=y +CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_PERROR_STDOUT=y +CONFIG_LIBC_STRERROR=y +CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_READLINE=y +CONFIG_NSH_STRERROR=y +CONFIG_PREALLOC_TIMERS=0 +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_BACKTRACE=y +CONFIG_SCHED_WAITPID=y +CONFIG_START_DAY=29 +CONFIG_START_MONTH=11 +CONFIG_START_YEAR=2019 +CONFIG_SYSTEM_DUMPSTACK=y +CONFIG_SYSTEM_NSH=y +CONFIG_TESTING_GETPRIME=y +CONFIG_TESTING_OSTEST=y +CONFIG_UART0_SERIAL_CONSOLE=y diff --git a/boards/risc-v/esp32h2/esp32h2-devkit/src/esp32h2_bringup.c b/boards/risc-v/esp32h2/esp32h2-devkit/src/esp32h2_bringup.c index cf839fb844..0e7a0b1560 100644 --- a/boards/risc-v/esp32h2/esp32h2-devkit/src/esp32h2_bringup.c +++ b/boards/risc-v/esp32h2/esp32h2-devkit/src/esp32h2_bringup.c @@ -111,6 +111,10 @@ # include "espressif/esp_nxdiag.h" #endif +#ifdef CONFIG_ESP_SDM +# include "espressif/esp_sdm.h" +#endif + #include "esp32h2-devkit.h" /**************************************************************************** @@ -305,6 +309,23 @@ int esp_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_ESPRESSIF_TEMP struct esp_temp_sensor_config_t cfg = TEMPERATURE_SENSOR_CONFIG(10, 50); ret = esp_temperature_sensor_initialize(cfg);