fix(t5s3-epaper): 40MHz octal PSRAM; guard EInk init; esp32s3 sw-atomic shim (#11062)

- t5s3-epaper: the board's 3.3V octal (AP_3v3) PSRAM is unreliable at the qio_opi
  default of 80MHz (Total PSRAM reads 0, display dead / boot-loop); clock it at 40MHz.
- EInkParallelDisplay: skip EInk init and no-op display ops when the PSRAM framebuffer
  is unavailable, so the node boots headless instead of hard-faulting on a NULL buffer.
- src/platform/esp32: weak software __atomic_*_{1,2,4} so esp32s3 links on toolchains
  (e.g. macOS) that lack the sized libcalls GCC emits under -mdisable-hardware-atomics.
This commit is contained in:
Ben Meadors
2026-07-20 12:13:50 +02:00
committed by GitHub
co-authored by GitHub
parent 5ded0ec8c5
commit 829ff80a09
4 changed files with 144 additions and 2 deletions
@@ -28,6 +28,14 @@ lib_deps =
https://github.com/mverch67/BQ27220/archive/07d92be846abd8a0258a50c23198dac0858b22ed.zip
https://github.com/mverch67/FastEPD/archive/0df1bff329b6fc782e062f611758880762340647.zip
; This board's 3.3V octal (AP_3v3) 8MB PSRAM is unreliable at the qio_opi default 80MHz
; (Total PSRAM reads 0); 40MHz makes it enumerate. Forces a from-source build as no
; precompiled 40MHz-octal libs exist; bandwidth is immaterial for an e-paper node.
custom_sdkconfig =
${esp32s3_base.custom_sdkconfig}
CONFIG_SPIRAM_SPEED_40M=y
CONFIG_SPIRAM_SPEED=40
[env:t5s3_epaper_inkhud]
extends = t5s3_epaper_base, inkhud
board_level = extra