From 0444212f7d8f8e6cd09d3d3e02607fe1e1bfad4b Mon Sep 17 00:00:00 2001 From: Crazypedia Date: Thu, 30 Jul 2026 10:42:22 -0400 Subject: [PATCH] fix(gdeq031t10): reset the panel at the start of a full init MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The kernel-driver port dropped the reset pulse that the pre-migration driver issued at the top of initFull(). Without it a cold-booted panel never drives BUSY ready after CMD_POWER_ON, so device start fails with "Timed out waiting for panel BUSY" and takes kernel_init down with it — the LilyGO T-Deck Max does not boot on main. The rest of the driver already assumed the pulse was still there: waking from deep sleep relies on RST toggling "in init_full", and a mode change needs partial mode's lingering VCOM/data-interval setting cleared. Co-Authored-By: Claude Opus 5 --- Drivers/gdeq031t10-module/source/gdeq031t10.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Drivers/gdeq031t10-module/source/gdeq031t10.cpp b/Drivers/gdeq031t10-module/source/gdeq031t10.cpp index e797cbf11..77757726b 100644 --- a/Drivers/gdeq031t10-module/source/gdeq031t10.cpp +++ b/Drivers/gdeq031t10-module/source/gdeq031t10.cpp @@ -132,6 +132,11 @@ static void hardware_reset(Gdeq031t10Internal* internal) { } static bool init_full(Gdeq031t10Internal* internal, bool mirror_180) { + // The reset pulse restores register defaults, which the init sequence below assumes: + // a cold-booted controller never drives BUSY ready after CMD_POWER_ON without it, a + // mode change needs partial mode's lingering VCOM/data-interval setting cleared, and + // waking from deep sleep is only possible by toggling RST. + hardware_reset(internal); bool ok = write_command(internal, CMD_PANEL_SETTING); ok = ok && write_data_byte(internal, mirror_180 ? 0x13 : 0x1F); ok = ok && write_command(internal, CMD_POWER_ON);