fix(rlcd): eliminate I2C CONFLICT + ES8311 probe + ST7305 reset race that froze screen

- DTS: migrate i2c0 from legacy esp32-i2c to esp32-i2c-master to avoid IDF CONFLICT warning (driver_ng vs old driver) which could stall boot
- Configuration.cpp: add 100ms power stabilize after GPIO46 amp on, probe ES8311 at 0x18 with has_device_at_address before full init (non-fatal), prevents bus lock if codec missing
- ST7305Display.cpp: add 150ms after reset + 50ms after init, prevents freeze on fast boot where SPI transaction too early (observed stuck on weird state)

Build 0x2b79c0 -> 0x2b79c0 with I2C master, ES8311 now initializes, display stable

Co-Authored-By: internal-model
This commit is contained in:
Adolfo Reyna
2026-07-11 21:49:40 -04:00
parent 50d86de4a3
commit 3770ac8954
3 changed files with 22 additions and 6 deletions
+3
View File
@@ -57,15 +57,18 @@ bool St7305Display::createPanelHandle(esp_lcd_panel_io_handle_t ioHandle, esp_lc
return false;
}
// ST7305 needs extra delay after reset before init — prevents freeze on fast boot
if (esp_lcd_panel_reset(panelHandle) != ESP_OK) {
LOGGER.error("Failed to reset st7305 panel");
return false;
}
vTaskDelay(pdMS_TO_TICKS(150));
if (esp_lcd_panel_init(panelHandle) != ESP_OK) {
LOGGER.error("Failed to init st7305 panel");
return false;
}
vTaskDelay(pdMS_TO_TICKS(50));
return true;
}