Commit graph

62927 commits

Author SHA1 Message Date
Piyush Patle
703726849f espressif/rmt: guard lirc board registration with DRIVERS_RC
The common ESP board RMT bring-up files are built whenever ESP_RMT is
enabled, but the esp_lirc declarations are only visible when DRIVERS_RC
is enabled.

Guard the esp_lirc header include and esp_lirc_rx_initialize() /
esp_lirc_tx_initialize() calls with CONFIG_DRIVERS_RC so non-RC ESP
configs continue to build while keeping the LIRC registration path for
the rmt configs.

Signed-off-by: Piyush Patle <piyushpatle228@gmail.com>
2026-04-04 11:18:32 -03:00
Piyush Patle
140f2c1c78 docs/rc: document RC/LIRC drivers and remove empty drivers/rmt files
Add documentation for the RC/LIRC character driver subsystem covering
device registration, the LIRC interface, and usage from user space.

Remove placeholder empty files under drivers/rmt that were left over
from the rmtchar era and are no longer referenced.

Signed-off-by: Piyush Patle <piyushpatle228@gmail.com>
2026-04-04 11:18:32 -03:00
Piyush Patle
7b590f9c43 espressif/rmt: replace rmtchar with arch-specific lirc adapter
Replace the ESP-specific rmtchar upper-half with arch-local esp_lirc
adapters for Xtensa and RISC-V.

 This moves the RMT upper-half out of drivers/rmt, registers LIRC
 devices from the ESP board bring-up paths, and removes the old common
 rmtchar driver and headers.

 Also update the ESP Kconfig and build wiring to build esp_lirc when
 ESP_RMT and DRIVERS_RC are enabled.

 Fixes discovered during hardware validation:
  - register TX as /dev/lirc1 so RX and TX do not collide
  - parse the RX worker thread argument from the correct argv slot
  - keep RX devices from advertising TX capability

Signed-off-by: Piyush Patle <piyushpatle228@gmail.com>
2026-04-04 11:18:32 -03:00
simbit18
96005c6a7d boards/risc-v/esp32c3: CMake added XIAO ESP32C3 board
CMake added  Seeed Studio XIAO ESP32C3 board

Signed-off-by: simbit18 <simbit18@gmail.com>
2026-04-04 08:43:47 +08:00
wangjianyu3
bcb1332792 graphics/nxglib: use putarea for lcd copyrectangle when available
For LCD drivers that implement putarea(), use it to copy the entire
rectangle in a single call instead of per-row putrun() calls. This
avoids the per-row overhead of setting the display window
(CASET+RASET over SPI) for every scanline.

Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
2026-04-03 16:54:38 +02:00
wangjianyu3
439ec6c09b boards/lckfb-szpi-esp32s3: add ES7210 board support
Add board-level support for ES7210 4-ch ADC on lckfb-szpi-esp32s3:

- configs/es7210/defconfig: Board configuration with I2C0, I2S0,
  ES7210 driver enabled. I2S pins: BCLK=14, DIN=12, MCLK=38, WS=13,
  sample rate 48kHz.
- src/esp32s3_board_es7210.c: Board init registering ES7210 on I2C0
  bus with I2S0 as audio transport
- src/esp32s3_bringup.c: Call ES7210 board init on startup; skip
  generic I2S audio device registration on I2S0 when ES7210 is
  enabled to avoid conflicting audio device on the same port
- src/esp32s3-szpi.h: ES7210 I2C address and device path defines
- src/Make.defs: Build integration for CONFIG_AUDIO_ES7210

Tested: 48kHz/2ch/16bit recording on ESP32-S3 (lckfb-szpi N16R8),
verified with nxrecorder and es7210_test.

Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
2026-04-03 13:34:36 +08:00
wangjianyu3
5ba0d062b1 audio: add ES7210 4-ch ADC codec driver
Add ES7210 audio ADC driver for NuttX implementing the audio
lower-half interface. Supports 4-channel recording via I2S with
configurable sample rate, bit depth, and mic gain.

- drivers/audio/es7210.c: Codec driver using LPWORK for async buffer
  management, I2C register access, and NuttX audio buffer management
- drivers/audio/es7210.h: Internal register definitions and macros
- include/nuttx/audio/es7210.h: Public header with platform config
  structure and es7210_initialize() API
- drivers/audio/Kconfig, Make.defs, CMakeLists.txt: Build system
  integration for CONFIG_AUDIO_ES7210

Key implementation details:
- ES7210_SDP_NORMAL (normal I2S) instead of TDM, matching NuttX
  I2S standard Philips mode
- ES7210_ADC_PGA_POWER_ON bit in gain registers REG43-46, required
  for analog front-end amplifier power-on
- 50ms startup delay in es7210_start for codec clock stabilization
- I2S_IOCTL(AUDIOIOC_STOP) in es7210_stop to notify I2S layer,
  preventing DMA from running without buffers after stop

Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
2026-04-03 13:34:36 +08:00
wangjianyu3
c100e9a9e8 esp_i2s: use actual channel count for BCLK calculation
The I2S BCLK frequency is calculated as:
  bclk = sample_rate * total_slot * data_width

Previously, total_slot was always taken from the static config
(esp_i2s0_config / esp_i2s1_config), which is hardcoded to 2.
This is correct for mono and stereo, but wrong for TDM modes
with more than 2 channels (e.g. 4-channel recording with ES7210).

With 4 channels but total_slot=2, the BCLK is only half of what
it should be, causing the actual sample rate to be half of the
requested rate (e.g. requesting 16 kHz actually samples at 8 kHz).

Replace priv->config->total_slot with MAX(priv->channels, 2) in
all three BCLK calculation sites (i2s_check_mclkfrequency and
i2s_set_clock for both master and slave paths). The MIN of 2
preserves the I2S protocol requirement that at least 2 slots
exist even for mono, while correctly scaling for multi-channel
TDM configurations.

Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
2026-04-03 13:34:36 +08:00
wangjianyu3
3b1aac55a8 esp_i2s: fix I2S RX DMA path for ESP32-S3
Fix multiple bugs in the I2S RX receive path on ESP32-S3 with GDMA:

- Set streaming=true in i2s_rxdma_start so completed buffers are not
  incorrectly marked AUDIO_APB_FINAL
- Restore up_enable_irq calls for DMA interrupt after esp_dma_load
  resets the channel
- Skip i2s_hal_rx_reset/rx_reset_fifo on ESP32-S3 which clears the
  TDM slot configuration set by i2s_configure
- Accept 1-16 RX channels on ESP32-S3 (was limited to 2)
- Add getreg32 read-back after DMA start to flush CPU write buffer
- Auto-stop RX channel when no pending buffers remain, preventing
  hardware from running without DMA descriptors after stop
- Remove duplicate return OK in i2s_rxdma_start
- Fix i2s_ll_tx_enable_mono_mode to i2s_ll_rx_enable_mono_mode in
  i2s_rxchannels
- Fix tx_slot_cfg.std to rx_slot_cfg.std in RX PCM slot config
- Fix DMA direction, peripheral ID, data_width, rx_start sequencing,
  and rx_eof_num word count in RX path
- Fix esp32s3_board_i2s.c I2S port index

Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
2026-04-03 13:34:36 +08:00
wangjianyu3
456f929e13 boards/esp32s3: fix uninitialized variable in board_i2sdev_initialize
Initialize 'ret' to OK to silence -Werror=maybe-uninitialized.
When neither enable_tx nor enable_rx is set, 'ret' was returned
without being assigned.

Signed-off-by: dramalife <yangyongkang@espressif.com>
2026-04-03 13:34:36 +08:00
simbit18
1b12ab5265 docs: add CMake for Waveshare ESP32-C3-Zero board
Update Build System for Waveshare ESP32-C3-Zero board

Signed-off-by: simbit18 <simbit18@gmail.com>
2026-04-02 19:21:36 -04:00
simbit18
04a2bb39a9 boards\risc-v\esp32c3: CMake added esp32-c3-zero board
CMake added  Waveshare ESP32-C3-Zero board

Signed-off-by: simbit18 <simbit18@gmail.com>
2026-04-02 19:21:36 -04:00
zhanghongyu
27214321be net/can,udp: fix conn unlock position in callback
Move conn_unlock() after the data event handling in can_callback()
and udp_callback(). Previously, the connection lock was released
immediately after devif_conn_event(), leaving the subsequent
can_data_event()/net_dataevent() and read-ahead buffer operations
unprotected. This could lead to a race condition where another
context modifies the connection state while data is being stored.

Hold the lock until the entire callback processing is complete to
ensure thread safety.

Signed-off-by: zhanghongyu <zhanghongyu@xiaomi.com>
2026-04-02 20:55:27 +08:00
Felipe Moura
11d15bb238 arm/ht32f491x3: rework PWM lower-half like nrf53
Use static lower-half instances per timer and select the channel
through Kconfig and board data instead of passing runtime PWM
routing into the driver.

This keeps the HT32 PWM support aligned with the existing NuttX
pattern and documents the esk32 single-device TMR3 routing.

Signed-off-by: Felipe Moura <moura.fmo@gmail.com>
2026-04-02 12:11:13 +02:00
Filipe Cavalcanti
b5b7e8f72e arch/espressif: add flash encryption support on CMake
Add support for burning flash encryption E-Fuses on target.

Signed-off-by: Filipe Cavalcanti <filipe.cavalcanti@espressif.com>
2026-04-02 13:16:54 +08:00
Filipe Cavalcanti
e59604bbe6 tools/espressif: add support for target flashing using CMake
Support flashing target using cmake --build <build> -t flash.

Signed-off-by: Filipe Cavalcanti <filipe.cavalcanti@espressif.com>
2026-04-02 13:16:54 +08:00
Filipe Cavalcanti
ed217f8f3f arch/risc-v: add CMake support for Espressif RISC-V devices
Adds CMake build support. Touches arch and board at the same time to avoid
creating a commit that is not able to build.

Signed-off-by: Filipe Cavalcanti <filipe.cavalcanti@espressif.com>
2026-04-02 13:16:54 +08:00
Filipe Cavalcanti
2615513a45 docs: add CMake documentation for RISC-V Espressif devices
Update NuttX documentation with CMake usage instructions for Espressif devices.

Signed-off-by: Filipe Cavalcanti <filipe.cavalcanti@espressif.com>
2026-04-02 13:16:54 +08:00
Filipe Cavalcanti
709453beca cmake: add olddefconfig target for CMake builds
Olddefconfig allows refreshing .config options if the user manually
edit some entry on .config file.

Signed-off-by: Filipe Cavalcanti <filipe.cavalcanti@espressif.com>
2026-04-02 13:16:54 +08:00
Filipe Cavalcanti
9eb07645ac cmake: add support for 3rdparty functions
Adds support for checking git hash and creating nxtmpdir.
This is already available for Make builds.

Signed-off-by: Filipe Cavalcanti <filipe.cavalcanti@espressif.com>
2026-04-02 13:16:54 +08:00
simbit18
bfbd7414eb build.yml: Fix No files were found with the provided path
Fix

Warning: No files were found with the provided path: buildartifacts/.

Signed-off-by: simbit18 <simbit18@gmail.com>
2026-04-02 06:42:08 +08:00
Peter Barada
efdbdfe409 arch/arm/stm32*: Use PRIx32 format specifier where appropriate
Replace 'x' printf format specifier with PRIx32 where
corresponding value is uint32_t type.

Signed-off-by Peter Barada <peter.barada@gmail.com>
2026-04-01 13:48:58 +08:00
Piyush Patle
bd885b7075 Documentation/verdin-mx8mp: port README.txt to rst 2026-03-31 22:15:12 -04:00
Piyush Patle
c118b9c8a7 Documentation/sam4cmp-db: port README.txt to rst 2026-03-31 22:15:12 -04:00
Piyush Patle
4d970d4a70 Documentation/olimex-lpc2378: port README.txt to rst 2026-03-31 22:15:12 -04:00
Piyush Patle
8d84652d6d Documentation/teensy-lc: port README.txt to rst 2026-03-31 22:15:12 -04:00
Eren Terzioglu
a9142d93cd Docs/risc-v/esp32p4: Add LPI2C docs
Add LPI2C docs for esp32p4

Signed-off-by: Eren Terzioglu <eren.terzioglu@espressif.com>
2026-04-01 10:06:46 +08:00
Eren Terzioglu
93ff86fab7 boards/risc-v/esp32p4: Add LPI2C board support
Add LPI2C board support for esp32p4

Signed-off-by: Eren Terzioglu <eren.terzioglu@espressif.com>
2026-04-01 10:06:46 +08:00
Eren Terzioglu
7e321e0aba arch/risc-v/espressif: Add LPI2C support for esp32p4
Add LPI2C support for esp32p4

Signed-off-by: Eren Terzioglu <eren.terzioglu@espressif.com>
2026-04-01 10:06:46 +08:00
Eren Terzioglu
ae5c08c758 Docs/risc-v/esp32p4: Add LPUART docs for esp32p4
Add LPUART docs for esp32p4

Signed-off-by: Eren Terzioglu <eren.terzioglu@espressif.com>
2026-04-01 10:06:46 +08:00
Eren Terzioglu
6480bb231d arch/risc-v/espressif: Add LPUART support for esp32p4
Add LPUART support for esp32p4

Signed-off-by: Eren Terzioglu <eren.terzioglu@espressif.com>
2026-04-01 10:06:46 +08:00
p-szafonimateusz
8b57a48d8f arch/intel64: add CPU affinity support for irq
add CPU affinity support for interrupts (up_affinity_irq)

Signed-off-by: p-szafonimateusz <p-szafonimateusz@xiaomi.com>
2026-03-31 21:10:51 +08:00
dependabot[bot]
4bfa4fa2e3 build(deps): bump pygments from 2.19.2 to 2.20.0 in /Documentation
Bumps [pygments](https://github.com/pygments/pygments) from 2.19.2 to 2.20.0.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.19.2...2.20.0)

---
updated-dependencies:
- dependency-name: pygments
  dependency-version: 2.20.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-31 08:38:01 -03:00
Eren Terzioglu
d7a4a6e0d8 Docs/risc-v/esp32p4: Add lpcore docs for esp32p4
Add lpcore docs for esp32p4

Signed-off-by: Eren Terzioglu <eren.terzioglu@espressif.com>
2026-03-31 08:37:24 -03:00
Eren Terzioglu
ce4b76ff91 boards/risc-v/esp32p4: Add lpcore board support
Add ULP lpcore board support for esp32p4

Signed-off-by: Eren Terzioglu <eren.terzioglu@espressif.com>
2026-03-31 08:37:24 -03:00
Eren Terzioglu
dedf9045c1 arch/risc-v/espressif: Add lpcore support for esp32p4
Add ULP lpcore support for esp32p4

Signed-off-by: Eren Terzioglu <eren.terzioglu@espressif.com>
2026-03-31 08:37:24 -03:00
Eren Terzioglu
24208438eb boards/risc-v/esp32p4: Add RTC GPIO support
Add RTC GPIO support for esp32p4

Signed-off-by: Eren Terzioglu <eren.terzioglu@espressif.com>
2026-03-31 08:37:24 -03:00
Eren Terzioglu
8c42fda257 arch/risc-v/espressif: Add RTC GPIO support for esp32p4
Add RTC GPIO support for esp32p4

Signed-off-by: Eren Terzioglu <eren.terzioglu@espressif.com>
2026-03-31 08:37:24 -03:00
wangjianyu3
7e29152cd7 boards/lckfb-szpi-esp32s3: enable required IRQ vector table configs for uvc
Enable CONFIG_ARCH_IRQ_TO_NDX, CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC
and CONFIG_ARCH_NUSER_INTERRUPTS=2 which are now required by the Xtensa
ESP32-S3 interrupt handling after upstream changes.

Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
2026-03-31 17:16:42 +08:00
likun17
4401b49eaa boards/risc-v/esp32p4: add Waveshare ESP32-P4-PICO-WIFI board support
Add board support for the Waveshare ESP32-P4-PICO-WIFI development
board. This board features:
- ESP32-P4 dual-core RISC-V MCU (rev v1.0)
- 768KB HP L2MEM (MM_REGIONS=2 for sram_low + sram_high)
- 32MB external NOR Flash (GD25Q256EYIGR, Quad SPI)
- 32MB SiP PSRAM (driver not yet available upstream)

Configurations:
- nsh: basic NuttX shell
- spiflash: NSH with SPI Flash (SmartFS) support

Signed-off-by: likun17 <likun17@xiaomi.com>
2026-03-30 16:46:29 +02:00
likun17
b606180da9 boards/risc-v/esp32p4: add sram_high as second heap region for rev < v3
On ESP32-P4 rev < v3, the 768KB HP L2MEM is split into two
non-contiguous regions: sram_low and sram_high. Previously only
sram_low was used for the heap, wasting 384KB of sram_high.

Export _sram_high_heap_start and _sram_high_heap_end symbols from
the linker script and add sram_high to the heap via kumm_addregion()
in riscv_addregion() when MM_REGIONS > 1.

Signed-off-by: likun17 <likun17@xiaomi.com>
2026-03-30 16:46:29 +02:00
likun17
81602e16a2 boards/risc-v/esp32p4: restore chip revision check with macro guard
The chip revision check was disabled with #if 0 for v1.0 bringup.
Restore the original #ifndef ESP32P4_IGNORE_CHIP_REVISION_CHECK
guard so boards can selectively bypass the PANIC by defining
this macro, while keeping the warning message in the #else branch.

Signed-off-by: likun17 <likun17@xiaomi.com>
2026-03-30 16:46:29 +02:00
likun17
6123cc3cbe nuttx/arch/risc-v/src/common/espressif: add 32MB flash size option
Add ESPRESSIF_FLASH_32M Kconfig option and the corresponding
esptool flash size mapping in Config.mk to support boards with
32MB NOR flash.

Signed-off-by: likun17 <likun17@xiaomi.com>
2026-03-30 16:46:29 +02:00
Felipe Moura
bd6a466317 ht32f491x3/esk32: add docs and flash helpers
Document the HT32F491x3 ESK32 board, build steps,
flashing flow, and validation commands. Add WSL and
PowerShell flash backends plus a Python wrapper.

Signed-off-by: Felipe Moura <moura.fmo@gmail.com>
2026-03-30 09:48:16 +08:00
Felipe Moura
41c53e7fdc boards/arm/ht32f491x3: add ESK32 board support
Add the ESK32 board with nsh configuration, linker script,
board bring-up, flashing helper, and user LED support.

Signed-off-by: Felipe Moura <moura.fmo@gmail.com>
2026-03-30 09:48:16 +08:00
Felipe Moura
ba6ee9d559 arch/arm/ht32f491x3: add initial support
Add initial HT32F491x3 support with startup, IRQ handling,
serial console, GPIO helpers, custom vectors, and CMake build files.

Signed-off-by: Felipe Moura <moura.fmo@gmail.com>
2026-03-30 09:48:16 +08:00
Vlad Pruteanu
3039184806 crypto/cryptosoft: Add support for PBKDF2
This adds support for PBKDF2 (SHA1 and SHA256) while leveraging
the existing infrastructure for HMAC.

Signed-off-by: Vlad Pruteanu <pruteanuvlad1611@yahoo.com>
2026-03-29 17:23:03 -03:00
trns1997
219a5ce09e build/cmake/stdlib: guard include/cxx by LIBMINIABI, fix div_t conflict
include/cxx contains NuttX's mini C++ ABI shims and must only be added
to the include path when CONFIG_LIBMINIABI is selected.  tools/Config.mk
was adding it unconditionally for every non-LIBCXX/non-UCLIBCXX build,
and the platform.cmake files for arm, arm64, risc-v, x86_64 and tricore
were adding it inside the CONFIG_LIBCXXTOOLCHAIN block.

With an unpatched downloaded ARM GNU Toolchain, <cstdlib> uses
newlib's stdlib.h, defining div_t as an anonymous struct.  A later
inclusion of NuttX's stdlib.h via <cstdio>->stdio.h->kmalloc.h then
redefines div_t with struct tag div_s, causing a conflicting declaration
error.

Guard the div_t/ldiv_t/lldiv_t definitions in stdlib.h with
redefinitions when a toolchain stdlib.h was already processed.

Also fix lldiv_s members typed as long instead of long long.

Signed-off-by: trns1997 <trns1997@gmail.com>
2026-03-29 16:45:29 -03:00
wangjianyu3
bab7e3e51b boards/lckfb-szpi-esp32s3: add UVC camera standalone defconfig
Add UVC configuration for lckfb-szpi-esp32s3 board based on gc0308
camera config, with USB OTG and UVC gadget driver enabled in
standalone (non-composite) mode.

- defconfig: enable ESP32S3_OTG, USBUVC, UVC example app
- board doc: add uvc section with usage and host verification

Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
2026-03-29 12:35:22 -03:00
wangjianyu3
4775b36316 drivers/usbdev: add UVC gadget class driver
Add USB Video Class 1.1 gadget driver supporting Bulk transport
with uncompressed YUY2 video streaming. Resolution and frame
interval are negotiated dynamically via PROBE/COMMIT control.

- uvc.h: protocol constants, streaming control struct, public API
- uvc.c: class driver with PROBE/COMMIT, bulk EP, /dev/uvc0 chardev
- Kconfig/Make.defs: USBUVC config and build rules
- boardctl.c: BOARDIOC_USBDEV_UVC standalone init path

Hardened against host disconnect:
- Removed nxmutex_lock from USB interrupt context paths
- Added 30s semaphore timeout in uvc_write with EP_CANCEL fallback
- Drain stale wrsem counts in VS_COMMIT before new stream
- Guard uvc_streaming_stop() against double EP_CANCEL race
- Handle EP_SUBMIT returning -ESHUTDOWN gracefully

Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
2026-03-29 12:35:22 -03:00