Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions src/M5GFX.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -201,13 +201,19 @@ namespace m5gfx
this->_rotation = 0; // default rotation
}

/// LCD reset line on the PMIC: AXP192 reg 0x96 bit1 (GPIO4), AXP2101 reg 0x90 bit1 (ALDO2 enable).
/// On the AXP2101, reg 0x96 is the BLDO1 (backlight) voltage, so it must not be used there.
void setResetReg(uint8_t reg) { _rst_reg = reg; }

void rst_control(bool level) override
{
uint8_t bits = level ? 2 : 0;
uint8_t mask = level ? ~0 : ~2;
// AXP192 reg 0x96 = GPIO3&4 control
lgfx::i2c::writeRegister8(axp_i2c_port, axp_i2c_addr, 0x96, bits, mask, axp_i2c_freq);
lgfx::i2c::writeRegister8(axp_i2c_port, axp_i2c_addr, _rst_reg, bits, mask, axp_i2c_freq);
}

private:
uint8_t _rst_reg = 0x96;
};
using Panel_M5StackCore2 = Panel_M5StackCore2_T<lgfx::Panel_ILI9342>;
using Panel_M5StackCore2E = Panel_M5StackCore2_T<lgfx::Panel_ILI9342E>;
Expand Down
15 changes: 12 additions & 3 deletions src/board_detect/m5/esp32_d0wdq6_setup.inl
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,21 @@ namespace m5
const spi_bus_desc_t& bus_desc, display_parts_owner_t* out)
{
out->bus.reset(make_spi_bus(bus_desc));
// Same LCD reset bit as the detector's AXP2101 variant (reset2101 / release2101).
const std::uint8_t rst_reg = (result.option & generated_options::core2::new_pmic) ? 0x90 : 0x96;
if (result.option & lcd_e_option)
{
out->panel.reset(make_panel<Panel_M5StackCore2E>(panel_core, out->bus.get()));
_set_ili9342e_read(static_cast<lgfx::Panel_ILI9342*>(out->panel.get()), bus_desc.freq_read);
auto panel = static_cast<Panel_M5StackCore2E*>(make_panel<Panel_M5StackCore2E>(panel_core, out->bus.get()));
panel->setResetReg(rst_reg);
out->panel.reset(panel);
_set_ili9342e_read(panel, bus_desc.freq_read);
}
else
{
auto panel = static_cast<Panel_M5StackCore2*>(make_panel<Panel_M5StackCore2>(panel_core, out->bus.get()));
panel->setResetReg(rst_reg);
out->panel.reset(panel);
}
else { out->panel.reset(make_panel<Panel_M5StackCore2>(panel_core, out->bus.get())); }
}

construct_status_t construct_core2(const board_result_t& result, display_parts_t* parts)
Expand Down
Loading