From 98b9ace61e7101b7fc00a4a6f5b05f4e7ee5d851 Mon Sep 17 00:00:00 2001 From: Chen Jichang Date: Tue, 24 Mar 2026 17:19:49 +0800 Subject: [PATCH] fix(lcd): fix lcd cmd be bypassd unexpectedly --- components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c | 4 ++-- components/esp_lcd/i80/esp_lcd_panel_io_i80.c | 4 ++-- components/esp_lcd/spi/esp_lcd_panel_io_spi.c | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c b/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c index 5303a13300e..8dfc1a89c58 100644 --- a/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c +++ b/components/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c @@ -124,7 +124,7 @@ static esp_err_t panel_io_i2c_rx_buffer(esp_lcd_panel_io_t *io, int lcd_cmd, voi { esp_err_t ret = ESP_OK; lcd_panel_io_i2c_t *i2c_panel_io = __containerof(io, lcd_panel_io_i2c_t, base); - bool send_param = (lcd_cmd >= 0); + bool send_param = (lcd_cmd != -1); if (send_param) { int write_size = 0; @@ -156,7 +156,7 @@ static esp_err_t panel_io_i2c_tx_buffer(esp_lcd_panel_io_t *io, int lcd_cmd, con { esp_err_t ret = ESP_OK; lcd_panel_io_i2c_t *i2c_panel_io = __containerof(io, lcd_panel_io_i2c_t, base); - bool send_param = (lcd_cmd >= 0); + bool send_param = (lcd_cmd != -1); uint8_t control_phase_byte = 0; size_t control_phase_size = 0; diff --git a/components/esp_lcd/i80/esp_lcd_panel_io_i80.c b/components/esp_lcd/i80/esp_lcd_panel_io_i80.c index af0b0737e0c..f004feb49a0 100644 --- a/components/esp_lcd/i80/esp_lcd_panel_io_i80.c +++ b/components/esp_lcd/i80/esp_lcd_panel_io_i80.c @@ -708,10 +708,10 @@ static void lcd_start_transaction(esp_lcd_i80_bus_t *bus, lcd_i80_trans_descript { // by default, the dummy phase is disabled because it's not common for most LCDs uint32_t dummy_cycles = 0; - uint32_t cmd_cycles = trans_desc->cmd_value >= 0 ? trans_desc->cmd_cycles : 0; + uint32_t cmd_cycles = trans_desc->cmd_value != -1 ? trans_desc->cmd_cycles : 0; // Number of data phase cycles are controlled by DMA buffer length, we only need to enable/disable the phase here uint32_t data_cycles = trans_desc->data ? 1 : 0; - if (trans_desc->cmd_value >= 0) { + if (trans_desc->cmd_value != -1) { lcd_ll_set_command(bus->hal.dev, bus->bus_width, trans_desc->cmd_value); } lcd_ll_set_phase_cycles(bus->hal.dev, cmd_cycles, dummy_cycles, data_cycles); diff --git a/components/esp_lcd/spi/esp_lcd_panel_io_spi.c b/components/esp_lcd/spi/esp_lcd_panel_io_spi.c index e05862a2f4e..21e325ef031 100644 --- a/components/esp_lcd/spi/esp_lcd_panel_io_spi.c +++ b/components/esp_lcd/spi/esp_lcd_panel_io_spi.c @@ -209,7 +209,7 @@ static esp_err_t panel_io_spi_tx_param(esp_lcd_panel_io_t *io, int lcd_cmd, cons spi_transaction_t *spi_trans = NULL; lcd_spi_trans_descriptor_t *lcd_trans = NULL; esp_lcd_panel_io_spi_t *spi_panel_io = __containerof(io, esp_lcd_panel_io_spi_t, base); - bool send_cmd = (lcd_cmd >= 0); + bool send_cmd = (lcd_cmd != -1); ESP_RETURN_ON_ERROR(spi_device_acquire_bus(spi_panel_io->spi_dev, portMAX_DELAY), TAG, "acquire spi bus failed"); @@ -265,7 +265,7 @@ static esp_err_t panel_io_spi_rx_param(esp_lcd_panel_io_t *io, int lcd_cmd, void spi_transaction_t *spi_trans = NULL; lcd_spi_trans_descriptor_t *lcd_trans = NULL; esp_lcd_panel_io_spi_t *spi_panel_io = __containerof(io, esp_lcd_panel_io_spi_t, base); - bool send_cmd = (lcd_cmd >= 0); + bool send_cmd = (lcd_cmd != -1); ESP_RETURN_ON_ERROR(spi_device_acquire_bus(spi_panel_io->spi_dev, portMAX_DELAY), TAG, "acquire spi bus failed"); @@ -323,7 +323,7 @@ static esp_err_t panel_io_spi_tx_color(esp_lcd_panel_io_t *io, int lcd_cmd, cons ESP_RETURN_ON_ERROR(spi_device_acquire_bus(spi_panel_io->spi_dev, portMAX_DELAY), TAG, "acquire spi bus failed"); - bool send_cmd = (lcd_cmd >= 0); + bool send_cmd = (lcd_cmd != -1); if (send_cmd) { // before issue a polling transaction, need to wait queued transactions finished size_t num_trans_inflight = spi_panel_io->num_trans_inflight;