mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-20 00:09:11 +00:00
i80_lcd: support skip command phase
Closes https://github.com/espressif/esp-idf/issues/10794
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -578,9 +578,16 @@ static void lcd_periph_trigger_quick_trans_done_event(esp_lcd_i80_bus_handle_t b
|
||||
static void lcd_start_transaction(esp_lcd_i80_bus_t *bus, lcd_i80_trans_descriptor_t *trans_desc)
|
||||
{
|
||||
// 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;
|
||||
// Number of data phase cycles are controlled by DMA buffer length, we only need to enable/disable the phase here
|
||||
lcd_ll_set_phase_cycles(bus->hal.dev, trans_desc->cmd_cycles, 0, trans_desc->data ? 1 : 0);
|
||||
lcd_ll_set_command(bus->hal.dev, bus->bus_width, trans_desc->cmd_value);
|
||||
uint32_t data_cycles = trans_desc->data ? 1 : 0;
|
||||
if (trans_desc->cmd_value >= 0) {
|
||||
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);
|
||||
lcd_ll_set_blank_cycles(bus->hal.dev, 1, 1);
|
||||
|
||||
if (trans_desc->data) { // some specific LCD commands can have no parameters
|
||||
gdma_start(bus->dma_chan, (intptr_t)(bus->dma_nodes));
|
||||
// delay 1us is sufficient for DMA to pass data to LCD FIFO
|
||||
|
Reference in New Issue
Block a user