Commit Graph
219 Commits
Author SHA1 Message Date
s-hadinger 63c38614ed ESP32-S3 RGB display: fix permanent image shift after flash writes (DMA sync guard) (#25194)
* ESP32-S3 RGB display: fix permanent image shift after flash writes (DMA sync guard)

* update my_user_config.h
2026-10-25 22:44:23 +01:00
s-hadinger fb629eddb5 uDisplay support for SPI QSPI displays (#25156) 2026-10-18 18:36:41 +02:00
Jason2866 68157a2629 support for ESP32-C61 (#25135)
* support for ESP32-C61

* disable C61 in CI since there is no safeboot on OTA Server yet
2026-10-11 18:33:11 +02:00
Jason2866 c6b19bb70c Initial ESP32-S31 support (#25130)
* ESP32-S31 support (#588)

* Arduino IDF 6.1 based framework only for S31

* code review changes Thei for tasmota_types.h
2026-10-10 17:50:13 +02:00
db46cbc14d Added Ldo command to simplifyconfiguration of devices with on-board LDO. (#25128)
* copy pins_arduino from tasmota not framework

* move specific P4 settings out of pins_arduino.h

* keep backwards compability

with the option to redefine the specific different P4 board configs

* Keep P4 SD card on SDMMC slot 0 and set hosted MCU pins in default module

Arduino core and libraries do not see my_user_config.h, so without
BOARD_SDMMC_SLOT in pins_arduino.h SD_MMC uses slot 1 which is taken
by ESP-Hosted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Add command Ldo<x> <mV> to configure ESP32-P4 LDO3 and LDO4

LDOs are set at boot before any GPIO use. LDO settings of DSI display
descriptor, CSI camera and SD card are only used if not set by command
Ldo and are deprecated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Show clear error if pins_arduino.h for a variant is missing

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Jason2866 <obermeier.johann@googlemail.com>
Co-authored-by: Jason2866 <24528715+Jason2866@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 14:48:43 +02:00
s-hadinger 6b9855a49d LVGL option to prefer PSRAM for draw buffers using bit 5 (0x20) of :B in display.ini (#25120) 2026-10-09 16:56:45 +02:00
LesNewellands-hadinger 53dbdb72dc Fix/dsi dma2d psram buffers (#24949)
* Fix silently-dropped LVGL flush chunks on ESP32-P4 DSI panels

esp_lcd_panel_draw_bitmap()'s DMA2D path takes an internal draw
semaphore with a 0 timeout and returns ESP_ERR_INVALID_STATE (without
drawing anything) if the previous async transfer hasn't completed yet.
DSIPanel::pushColors() ignored that return value, and lv_flush_callback()
always calls lv_disp_flush_ready() regardless, so LVGL believed the
flush succeeded even when the chunk was silently dropped - leaving
stale framebuffer content on screen for that region.

Retry instead of dropping the chunk. The transfer typically completes
in well under 1ms, so poll in short bursts rather than 1ms FreeRTOS
ticks; a bounded retry count still catches a genuinely stuck transfer
and logs it instead of looping forever.

* Allow LVGL DSI draw buffers to use PSRAM on ESP32-P4

lv_pixel_buf/lv_pixel_buf2 previously preferred MALLOC_CAP_INTERNAL,
costing ~120KB of scarce internal SRAM on boards where PSRAM is
otherwise nearly idle (e.g. a 1024x600 DSI panel at 60 flushlines).
Prefer MALLOC_CAP_SPIRAM instead, falling back to internal RAM if
PSRAM is unavailable - safe now that the previous commit fixes the
DMA2D transfer race that PSRAM's slower read speed was exposing.

Also switch the flush-timing debug log from millis() to micros() and
drop its DMA-path exclusion: at a ~60KB/transfer chunk size the whole
operation completes in a few hundred microseconds, so millisecond
resolution just read back 0 or 1 and the DMA path - the one we
actually needed data from - was never logged at all.

* Remove defaulting to PSRAM for now

---------

Co-authored-by: s-hadinger <49731213+s-hadinger@users.noreply.github.com>
2026-10-09 15:22:37 +02:00
Theo Arends 22079e531d Add uDisplay I2C contast control (DisplayDimmer) 2026-09-13 15:53:23 +02:00
Theo Arends 50d9e8a13c Add support for M5Stack Unit6CL display 2026-09-11 09:50:05 +02:00
Theo Arends 7e51b9e87d Add SSD1306 SPI support 2026-09-07 16:05:14 +02:00
52b2d232e1 Fix build error: use #ifdef for USE_UNIVERSAL_TOUCH in UDSP_DEBUG block (#24957)
Building with UDSP_DEBUG enabled fails:

  lib/lib_display/UDisplay/src/uDisplay.cpp:908:24: error: #if with no expression
    908 | #if USE_UNIVERSAL_TOUCH
        |                        ^

USE_UNIVERSAL_TOUCH is defined without a value (my_user_config.h and the
user_config_override.h convention both use a bare `#define`), so `#if` expands
to an empty expression and the preprocessor errors out.

Every other test of this macro already uses #ifdef:

  uDisplay.cpp:47        #ifdef USE_UNIVERSAL_TOUCH
  uDisplay.cpp:792       #ifdef USE_UNIVERSAL_TOUCH
  uDisplay_touch.cpp:4   #ifdef USE_UNIVERSAL_TOUCH

so this looks like a typo rather than a deliberate value test.

Introduced in a1639507d ("Udisp SPI fix for mono color display", #24899). It
goes unnoticed in normal builds because the block sits inside #ifdef
UDSP_DEBUG, which ships commented out at uDisplay.cpp:27 — it only surfaces
for anyone who turns that debug logging on. Found on an ESP32-P4 build with
UDSP_DEBUG enabled for DSI init diagnostics.

Co-authored-by: Ari Friedman <afriedman@millsupplyco.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-15 13:30:40 +02:00
Christian Baars a1639507d1 Udisp SPI fix for mono color display (#24899)
* fix union offset for SPI mono display

* fix debug log to correcty use USE_UNIVERSAL_TOUCH
2026-07-14 19:03:57 +02:00
Christian BaarsandChristian Baars a027be81f6 Fix I80 pushColors swap logic for parallel displays (#24770)
Co-authored-by: Christian Baars <christianbaars@MacStudio-von-Christian.local>
2026-05-20 13:52:46 +02:00
Frederick Blais e6d471f25f Add descriptor-driven ST7305 uDisplay packing (#24738) 2026-05-19 12:24:18 +02:00
s-hadinger 87107b7950 USE_UNIVERSAL_TOUCH no more forced when USE_UNIVERSAL_DISPLAY is enabled (#24743) 2026-05-13 23:28:39 +02:00
s-hadinger 7a21f72f70 rename GPIO_DISPLAY_RESET and update GPIOs (#24742) 2026-05-13 22:42:25 +02:00
s-hadinger 47b80b961d uDisplay logs polished (#24734) 2026-05-11 22:04:55 +02:00
lz64andAri Friedman 378e1547c2 Fix uDisplay case 'T' parsing corruption for I80 parallel displays + WT32-SC01 Plus descriptor (#24506)
- Skip :TI (touch I2C) and :TS (touch SPI) lines in case 'T' of the uDisplay
  descriptor parser. These touch config lines are handled separately by
  xdsp_17_universal.ino via strstr(), but case 'T' was matching on the first
  character and unconditionally writing the subsequent values into
  panel_config->epd.lut_full_time/lut_partial_time/update_time. In the
  PanelConfigUnion, these EPD fields overlap with I80 panel bus pin config
  (cs_pin, dc_pin, wr_pin, rd_pin, data_pins), causing parallel displays to
  silently receive corrupted GPIO pin assignments and fail to render.

  The fix checks if the character after 'T' is 'I' or 'S' and skips EPD timing
  parsing for those lines. EPD descriptors using :T,<timing> continue to work
  as before.

- Remove dead reference to berry.lvgl_panel_loaded in xdrv_54_lvgl.ino.
  The member was removed from BerrySupport in commit e4c2cf591 (Berry Extension
  Manager) but the reference in start_lvgl() was left behind, causing a compile
  error when USE_BERRY_LVGL_PANEL is defined.

- Add verified display descriptor for WT32-SC01 Plus (ESP32-S3, ST7796U 480x320,
  8-bit parallel I80, FT5206 capacitive touch). Tested on Tasmota v15.3.0.1 with
  LVGL 9.5.0.

Co-authored-by: Ari Friedman <afriedman@millsupplyco.com>
2026-03-17 22:28:32 +01:00
Theo Arends bcca63da76 Add LCD second I2C bus support 2026-03-12 17:52:31 +01:00
Jason2866 7568d932f3 fix: Silent failure in pushPixels3DMA (#24520) 2026-03-03 16:23:52 +01:00
gemuandGerhard Mutz 7f7a2ceef1 fix monochrome pushpixels (#24388)
Co-authored-by: Gerhard Mutz <gerhardmutz1@imac.local>
2026-01-27 11:16:46 +01:00
Theo Arends f2ea225929 Fix Udisplay SPI driver display dimension parameters regression from v15.1.0.1 (#24376) 2026-01-26 14:55:12 +01:00
gemuandGerhard Mutz a70b32b53d some display fixes (#24368)
* update udisplay

* display select JPEG decoder, adapt to 32 bit pushpixels

* new_jpeg

* backpanel mode

* Update uDisplay.cpp

---------

Co-authored-by: Gerhard Mutz <gerhardmutz1@imac.local>
2026-01-19 11:00:47 +01:00
gemuandGerhard Mutz 9c3588256a fix udisplay bpanel with spi displays (#24278)
Co-authored-by: Gerhard Mutz <gerhardmutz1@imac.local>
2025-12-29 17:37:59 +01:00
Christian BaarsandChristian Baars b276479b29 fix displayrotate for i2c (#24214)
Co-authored-by: Christian Baars <christianbaars@MacStudio-von-Christian.local>
2025-12-11 16:13:56 +01:00
Jason2866 ce67a505ca fix possible redefine warning 2025-12-09 11:29:29 +01:00
Jason2866 449b9763d8 Adjust reset signal timing in uDisplay_touch.cpp (#24198)
Increase delay duration for reset signal in uDisplay.
2025-12-08 18:38:53 +01:00
Christian BaarsandChristian Baars e04d6ec9eb remove some debug code and old remnants (#24127)
Co-authored-by: Christian Baars <christianbaars@MacStudio-von-Christian.local>
2025-11-16 19:26:55 +01:00
Jason2866 309cdd6b1d Udisplay use library.json and folders in lib to ensure correct compile and linking (#24122) 2025-11-15 19:00:22 +01:00
Jason2866 160ec1376f Fix uDisplay DSI compile with IDF 5.4 / 5.5 based Arduino frameworks (#24110) 2025-11-12 21:01:24 +01:00
Christian Baars c0f1be5994 UDisplay Modular Refactoring, adding DSI for P4 (#24107) 2025-11-12 13:36:35 +01:00
Jason2866 00b8c62fbe move deprecated libs in lib folder lib_deprecated (#24073)
* move deprecated libs in lib folder lib_deprecated

* add wrong placed include file
2025-10-28 16:49:03 +01:00
Christian Baars 0eec031d49 split udisplay.cpp into multiple files (#24007) 2025-10-12 17:15:02 +02:00
Christian Baars abf2e22c10 remove remnants of pre 5.x IDF (#23995) 2025-10-10 17:25:24 +02:00
Jason2866 3eb6bf6c8e Add initial c5 support (#23804) 2025-08-20 21:51:23 +02:00
Jason2866 9e25fc0f30 basic P4 support (#23663) 2025-07-10 16:47:30 +02:00
sfromis cced48d824 Update uDisplay.h (#23273)
RGB565 value for pink was same as magenta. This is obviously wrong, hence correcting to the "pink" value from the docs.

While I'm far from certain about the "right" shading of color nuances, the correction does "reasonably pink" in my eyes (on a ST7789), and assuming that the value from the docs was sourced from something relevant to the small displays used with Tasmota, I consider the change to be at least a move in the right direction.

Still, the corrected value (FF80C0 in RGB888) does have the name "tea rose" when using HTML color codes as a reference, but "some people" may have more interest in long discussions like what pink "really" is.
2025-04-11 15:15:35 +02:00
Thomas Reitmayr b07bd68046 Utilize ESP-IDF's LCD driver for pushing pixels to RGB displays with ESP32-S3 (#22970)
This commit is an optimization of code and possibly performance for pushing
pixel data to an RGB display with an ESP32-S3. It uses ESP-IDF's LCD driver
for doing so and replaces multiple code paths in the previous implementation.
No code for other ESP32 variants has been changed.

Also see the discussion arendst/Tasmota#22553
2025-02-09 21:58:50 +01:00
s-hadinger dd99642cf7 Prevent crashing when display.ini is missing end # (#22471) 2024-11-14 08:24:20 +01:00
Theo Arends b53ac4a14e Fix next core I2C2 compilation 2024-10-11 14:11:00 +02:00
Jason2866 f2c61c4496 Fix uDisplay compile error (#22266)
* only esp32
2024-10-11 00:19:29 +02:00
s-hadinger d6a15aa5dc Temporarily disable SPI DMA for uDisplay (broken since esp-idf 5.3) (#22264) 2024-10-10 23:20:07 +02:00
s-hadinger 59c8d39724 uDisplay force cache writes to RGB display on ESP32S3 (#22222) 2024-09-29 23:04:24 +02:00
gemu c35c493809 i2s wav player (#22003)
* i2s wav player

* move framepointer
2024-08-26 08:48:35 +02:00
gemu d525200a11 BW invert (#21955)
* bw invert option

* invert bw
2024-08-14 13:08:17 +02:00
Theo Arends e02615827b Fix compilation without SPI 2024-07-26 13:50:15 +02:00
gemu ddcc7d9990 jpeg on bw displays (#21832) 2024-07-24 13:32:03 +02:00
gemu 58485dec2a fix resistive Touch xpt for 2 spi busses (#21814)
* fix xpt touch for 2 spi busses

* support for 2 utouch spi busses

* Update support.ino
2024-07-22 13:58:50 +02:00
gemu 00a00a3505 fix pushcolors for displaytext (#21805) 2024-07-20 08:20:19 +02:00
Theo Arends f68ac4377a Fix udisplay positional replacements (#21121) 2024-07-12 14:57:27 +02:00