This is an automated email from the ASF dual-hosted git repository.
xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 59fa5956724 boards/esp32s3-xiao: wire up board_spiflash_init()
59fa5956724 is described below
commit 59fa5956724e6f1dea7cec603b6374ec0e4d700c
Author: Felipe Moura <[email protected]>
AuthorDate: Tue Sep 15 20:27:38 2026 -0300
boards/esp32s3-xiao: wire up board_spiflash_init()
esp32s3-devkit and esp32s3-eye both call board_spiflash_init() from
their bring-up to register the internal SPI flash MTD partition and
mount its file system; esp32s3-xiao never did, so CONFIG_ESP32S3_SPIFLASH
built but no /dev/... MTD partition or mount ever appeared -- same shape
of gap as the IMU, SD, console and Wi-Fi wiring already fixed for this
board.
Guarded with pm_stay(PM_IDLE_DOMAIN, PM_IDLE) the same way the Wi-Fi
bring-up below it is: flash operations run with the cache disabled and
can't tolerate PM_STANDBY's clock gating either.
Confirmed under QEMU's esp32s3 machine: LittleFS mounts, and a counter
file written to it survives a reboot.
Signed-off-by: Felipe Moura <[email protected]>
Assisted-by: Claude:claude-sonnet-5
---
boards/xtensa/esp32s3/esp32s3-xiao/src/esp32s3-xiao.h | 18 ++++++++++++++++++
.../xtensa/esp32s3/esp32s3-xiao/src/esp32s3_bringup.c | 18 ++++++++++++++++++
2 files changed, 36 insertions(+)
diff --git a/boards/xtensa/esp32s3/esp32s3-xiao/src/esp32s3-xiao.h
b/boards/xtensa/esp32s3/esp32s3-xiao/src/esp32s3-xiao.h
index 1413c4ac227..3b9d3c9caba 100644
--- a/boards/xtensa/esp32s3/esp32s3-xiao/src/esp32s3-xiao.h
+++ b/boards/xtensa/esp32s3/esp32s3-xiao/src/esp32s3-xiao.h
@@ -115,5 +115,23 @@ int board_lsm6ds3trc_initialize(int devno, int busno);
int esp_openeth_initialize(void);
#endif
+/****************************************************************************
+ * Name: board_spiflash_init
+ *
+ * Description:
+ * Initialize the SPI flash MTD partition and mount the file system
+ * selected by CONFIG_ESP32S3_SPIFLASH_FS on it. Implemented by the
+ * shared ESP32-S3 board code in
+ * boards/xtensa/esp32s3/common/src/esp32s3_board_spiflash.c.
+ *
+ * Returned Value:
+ * Zero (OK) on success; a negated errno value on failure.
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_ESP32S3_SPIFLASH
+int board_spiflash_init(void);
+#endif
+
#endif /* __ASSEMBLY__ */
#endif /* __BOARDS_XTENSA_ESP32S3_ESP32S3_XIAO_SRC_ESP32S3_XIAO_H */
diff --git a/boards/xtensa/esp32s3/esp32s3-xiao/src/esp32s3_bringup.c
b/boards/xtensa/esp32s3/esp32s3-xiao/src/esp32s3_bringup.c
index 6dc222264d9..53c669687eb 100644
--- a/boards/xtensa/esp32s3/esp32s3-xiao/src/esp32s3_bringup.c
+++ b/boards/xtensa/esp32s3/esp32s3-xiao/src/esp32s3_bringup.c
@@ -114,6 +114,24 @@ int esp32s3_bringup(void)
}
#endif
+#ifdef CONFIG_ESP32S3_SPIFLASH
+# ifdef CONFIG_PM
+ /* Flash ops run with the cache disabled; same PM guard as Wi-Fi below. */
+
+ pm_stay(PM_IDLE_DOMAIN, PM_IDLE);
+# endif
+
+ ret = board_spiflash_init();
+ if (ret < 0)
+ {
+ syslog(LOG_ERR, "ERROR: Failed to initialize SPI flash: %d\n", ret);
+ }
+
+# ifdef CONFIG_PM
+ pm_relax(PM_IDLE_DOMAIN, PM_IDLE);
+# endif
+#endif
+
#ifdef CONFIG_DEV_GPIO
ret = esp32s3_gpio_init();
if (ret < 0)