Skip to content

fix(gdeq031t10): reset the panel at the start of a full init - #603

Merged
KenVanHoeylandt merged 1 commit into
TactilityProject:mainfrom
Crazypedia:fix/gdeq031t10-init-reset
Jul 30, 2026
Merged

fix(gdeq031t10): reset the panel at the start of a full init#603
KenVanHoeylandt merged 1 commit into
TactilityProject:mainfrom
Crazypedia:fix/gdeq031t10-init-reset

Conversation

@Crazypedia

@Crazypedia Crazypedia commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Fixes #602.

The kernel-driver port in #582 dropped the reset pulse that the pre-migration driver issued at the top of its full init:

bool Gdeq031t10Display::initFull() {
    reset();
    bool ok = writeCommand(CMD_PANEL_SETTING);
    ...

hardware_reset() survived the port but is only reachable from the reset() display op, which nothing calls on the start path. Without the pulse a cold-booted controller never drives BUSY ready after CMD_POWER_ON, so display fails to start, and since a failed device start aborts kernel_init, the LilyGO T-Deck Max does not boot at all on current main.

Two comments in the driver already assume the pulse is still there, so this also restores deep-sleep wake and the register-default reset that a waveform-mode change relies on:

  • gdeq031t10_disp_on_off(): "Toggling RST (in init_full) also wakes the panel from deep sleep."
  • A mode change needs partial mode's lingering VCOM/data-interval setting cleared, which was the original reason reset() lived in initFull() rather than at construction.

Verification

Hardware, LilyGO T-Deck Max. Before:

I (1566) device: start display
E (6571) GDEQ031T10: Timed out waiting for panel BUSY
E (6571) GDEQ031T10: Full init failed
E (6573) kernel: kernel_init failed to construct+add+start device: display (gooddisplay,gdeq031t10)
E (6582) Tactility: Failed to initialize kernel

After:

I (1566) device: start display
I (1631) GDEQ031T10: waited 42 ms until not busy
I (1631) driver: bound gdeq031t10 to display
I (1631) kernel: init done

Boot completes, the SD card mounts, and refreshes run normally (draw_bitmap: refresh_full, waited 1014 ms until not busy).

Summary by CodeRabbit

  • Bug Fixes
    • Improved device initialization by resetting hardware before the full startup sequence.
    • Ensured reliable recovery from deep sleep and cleared lingering settings from partial operation.

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 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: a087ed9c-bf69-4c33-a5b7-0ff240c18d8e

📥 Commits

Reviewing files that changed from the base of the PR and between f13c18f and 0444212.

📒 Files selected for processing (1)
  • Drivers/gdeq031t10-module/source/gdeq031t10.cpp

📝 Walkthrough

Walkthrough

init_full() now begins by calling hardware_reset(internal) before executing the GDEQ031T10 panel initialization sequence. Comments document that the reset restores controller register defaults, clears lingering partial-mode settings, and supports waking the panel from deep sleep.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: restoring the panel reset at the start of full initialization.
Linked Issues check ✅ Passed The change matches issue #602 by adding hardware_reset() at the start of init_full(), restoring boot, wake, and waveform-mode behavior.
Out of Scope Changes check ✅ Passed The PR appears scoped to the reset fix and only adds brief comments, with no unrelated code changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@KenVanHoeylandt

Copy link
Copy Markdown
Contributor

Thank you!

@KenVanHoeylandt
KenVanHoeylandt merged commit 94deee8 into TactilityProject:main Jul 30, 2026
61 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

T-Deck Max does not boot on main: GDEQ031T10 init lost its reset pulse

2 participants