From 74058cd23af29fa99f97373d0737562d1976518d Mon Sep 17 00:00:00 2001 From: TOKITA Hiroshi Date: Sun, 28 Sep 2025 23:55:56 +0900 Subject: [PATCH] drivers: display: send DISPON after ili9xxx sleep exit --- drivers/display/display_ili9xxx.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/drivers/display/display_ili9xxx.c b/drivers/display/display_ili9xxx.c index ef258cfed8922..6fdba5311f48d 100644 --- a/drivers/display/display_ili9xxx.c +++ b/drivers/display/display_ili9xxx.c @@ -75,16 +75,27 @@ int ili9xxx_transmit(const struct device *dev, uint8_t cmd, const void *tx_data, static int ili9xxx_exit_sleep(const struct device *dev) { - int r; - - r = ili9xxx_transmit(dev, ILI9XXX_SLPOUT, NULL, 0); - if (r < 0) { - return r; - } - - k_sleep(K_MSEC(ILI9XXX_SLEEP_OUT_TIME)); - - return 0; + int r; + + r = ili9xxx_transmit(dev, ILI9XXX_SLPOUT, NULL, 0); + if (r < 0) { + return r; + } + + k_sleep(K_MSEC(ILI9XXX_SLEEP_OUT_TIME)); + + /* + * Some panels, including the one fitted to the M5Stack Core2, + * keep the display output blank after SLPOUT until a DISPON + * command is issued. Applications are still free to call + * display_blanking_off(), as sending DISPON twice is harmless. + */ + r = ili9xxx_display_blanking_off(dev); + if (r < 0) { + return r; + } + + return 0; } static void ili9xxx_hw_reset(const struct device *dev)