mirror of
https://github.com/espressif/esp-idf.git
synced 2026-08-05 14:50:05 +03:00
fix(lcd): fix lcd cmd be bypassd unexpectedly
This commit is contained in:
@@ -119,7 +119,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;
|
||||
@@ -151,7 +151,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);
|
||||
int write_size = 0;
|
||||
uint8_t *write_buffer = (uint8_t*)heap_caps_malloc(CONTROL_PHASE_LENGTH + CMD_LENGTH + buffer_size, MALLOC_CAP_8BIT);
|
||||
ESP_GOTO_ON_FALSE(write_buffer, ESP_ERR_NO_MEM, err, TAG, "no mem for write buffer");
|
||||
|
||||
@@ -608,10 +608,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);
|
||||
|
||||
@@ -205,7 +205,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");
|
||||
|
||||
@@ -261,7 +261,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");
|
||||
|
||||
@@ -319,7 +319,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;
|
||||
|
||||
Reference in New Issue
Block a user