Skip to content

Commit 7b4ca82

Browse files
authored
Update esp_lvgl_port_disp.c
1 parent 997c6b9 commit 7b4ca82

File tree

1 file changed

+22
-18
lines changed

1 file changed

+22
-18
lines changed

components/esp_lvgl_port/src/lvgl8/esp_lvgl_port_disp.c

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@
1818
#include "freertos/task.h"
1919
#include "freertos/semphr.h"
2020

21-
#if CONFIG_IDF_TARGET_ESP32S3 && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)
21+
#if (CONFIG_SOC_LCDCAM_RGB_LCD_SUPPORTED && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0))
2222
#include "esp_lcd_panel_rgb.h"
2323
#endif
2424

25-
#if (CONFIG_IDF_TARGET_ESP32P4 && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 3, 0))
25+
#if (CONFIG_SOC_MIPI_DSI_SUPPORTED && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 3, 0))
2626
#include "esp_lcd_mipi_dsi.h"
2727
#endif
2828

@@ -57,10 +57,10 @@ static lv_disp_t *lvgl_port_add_disp_priv(const lvgl_port_display_cfg_t *disp_cf
5757
static lvgl_port_display_ctx_t *lvgl_port_get_display_ctx(lv_disp_t *disp);
5858
#if LVGL_PORT_HANDLE_FLUSH_READY
5959
static bool lvgl_port_flush_io_ready_callback(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_io_event_data_t *edata, void *user_ctx);
60-
#if (CONFIG_IDF_TARGET_ESP32S3 && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0))
60+
#if (CONFIG_SOC_LCDCAM_RGB_LCD_SUPPORTED && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0))
6161
static bool lvgl_port_flush_rgb_vsync_ready_callback(esp_lcd_panel_handle_t panel_io, const esp_lcd_rgb_panel_event_data_t *edata, void *user_ctx);
6262
#endif
63-
#if (CONFIG_IDF_TARGET_ESP32P4 && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 3, 0))
63+
#if (CONFIG_SOC_MIPI_DSI_SUPPORTED && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 3, 0))
6464
static bool lvgl_port_flush_dpi_panel_ready_callback(esp_lcd_panel_handle_t panel_io, esp_lcd_dpi_panel_event_data_t *edata, void *user_ctx);
6565
static bool lvgl_port_flush_dpi_vsync_ready_callback(esp_lcd_panel_handle_t panel_io, esp_lcd_dpi_panel_event_data_t *edata, void *user_ctx);
6666
#endif
@@ -100,6 +100,7 @@ lv_display_t *lvgl_port_add_disp_dsi(const lvgl_port_display_cfg_t *disp_cfg, co
100100
{
101101
assert(dsi_cfg != NULL);
102102
const lvgl_port_disp_priv_cfg_t priv_cfg = {
103+
.disp_type = LVGL_PORT_DISP_TYPE_DSI,
103104
.avoid_tearing = dsi_cfg->flags.avoid_tearing,
104105
};
105106
lv_disp_t *disp = lvgl_port_add_disp_priv(disp_cfg, &priv_cfg);
@@ -109,7 +110,7 @@ lv_display_t *lvgl_port_add_disp_dsi(const lvgl_port_display_cfg_t *disp_cfg, co
109110
/* Set display type */
110111
disp_ctx->disp_type = LVGL_PORT_DISP_TYPE_DSI;
111112

112-
#if (CONFIG_IDF_TARGET_ESP32P4 && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 3, 0))
113+
#if (CONFIG_SOC_MIPI_DSI_SUPPORTED && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 3, 0))
113114
esp_lcd_dpi_panel_event_callbacks_t cbs = {0};
114115
if (dsi_cfg->flags.avoid_tearing) {
115116
cbs.on_refresh_done = lvgl_port_flush_dpi_vsync_ready_callback;
@@ -130,6 +131,7 @@ lv_display_t *lvgl_port_add_disp_rgb(const lvgl_port_display_cfg_t *disp_cfg, co
130131
{
131132
assert(rgb_cfg != NULL);
132133
const lvgl_port_disp_priv_cfg_t priv_cfg = {
134+
.disp_type = LVGL_PORT_DISP_TYPE_RGB,
133135
.avoid_tearing = rgb_cfg->flags.avoid_tearing,
134136
};
135137
lv_disp_t *disp = lvgl_port_add_disp_priv(disp_cfg, &priv_cfg);
@@ -139,16 +141,14 @@ lv_display_t *lvgl_port_add_disp_rgb(const lvgl_port_display_cfg_t *disp_cfg, co
139141
/* Set display type */
140142
disp_ctx->disp_type = LVGL_PORT_DISP_TYPE_RGB;
141143

142-
#if (CONFIG_IDF_TARGET_ESP32S3 && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0))
144+
#if (CONFIG_SOC_LCDCAM_RGB_LCD_SUPPORTED && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0))
143145
/* Register done callback */
144146
const esp_lcd_rgb_panel_event_callbacks_t vsync_cbs = {
145147
.on_vsync = lvgl_port_flush_rgb_vsync_ready_callback,
146148
};
147149

148150
const esp_lcd_rgb_panel_event_callbacks_t bb_cbs = {
149-
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(6, 0, 0)
150-
.on_frame_buf_complete = lvgl_port_flush_rgb_vsync_ready_callback,
151-
#elif ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 1, 2)
151+
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 1, 2)
152152
.on_bounce_frame_finish = lvgl_port_flush_rgb_vsync_ready_callback,
153153
#endif
154154
};
@@ -159,7 +159,7 @@ lv_display_t *lvgl_port_add_disp_rgb(const lvgl_port_display_cfg_t *disp_cfg, co
159159
ESP_ERROR_CHECK(esp_lcd_rgb_panel_register_event_callbacks(disp_ctx->panel_handle, &vsync_cbs, &disp_ctx->disp_drv));
160160
}
161161
#else
162-
ESP_RETURN_ON_FALSE(false, NULL, TAG, "RGB is supported only on ESP32S3 and from IDF 5.0!");
162+
ESP_RETURN_ON_FALSE(false, NULL, TAG, "RGB is supported only on ESP32S3/ESP32P4 and from IDF 5.0!");
163163
#endif
164164
}
165165

@@ -254,12 +254,16 @@ static lv_disp_t *lvgl_port_add_disp_priv(const lvgl_port_display_cfg_t *disp_cf
254254

255255
/* Use RGB internal buffers for avoid tearing effect */
256256
if (priv_cfg && priv_cfg->avoid_tearing) {
257-
#if CONFIG_IDF_TARGET_ESP32S3 && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)
258-
buffer_size = disp_cfg->hres * disp_cfg->vres;
259-
ESP_GOTO_ON_ERROR(esp_lcd_rgb_panel_get_frame_buffer(disp_cfg->panel_handle, 2, (void *)&buf1, (void *)&buf2), err, TAG, "Get RGB buffers failed");
260-
#elif CONFIG_IDF_TARGET_ESP32P4 && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 3, 0)
261-
buffer_size = disp_cfg->hres * disp_cfg->vres;
262-
ESP_GOTO_ON_ERROR(esp_lcd_dpi_panel_get_frame_buffer(disp_cfg->panel_handle, 2, (void *)&buf1, (void *)&buf2), err, TAG, "Get RGB buffers failed");
257+
#if CONFIG_SOC_LCDCAM_RGB_LCD_SUPPORTED && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)
258+
if(priv_cfg->disp_type == LVGL_PORT_DISP_TYPE_RGB) {
259+
buffer_size = disp_cfg->hres * disp_cfg->vres;
260+
ESP_GOTO_ON_ERROR(esp_lcd_rgb_panel_get_frame_buffer(disp_cfg->panel_handle, 2, (void *)&buf1, (void *)&buf2), err, TAG, "Get RGB buffers failed");
261+
}
262+
#elif CONFIG_SOC_MIPI_DSI_SUPPORTED && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 3, 0)
263+
if(priv_cfg->disp_type == LVGL_PORT_DISP_TYPE_DSI) {
264+
buffer_size = disp_cfg->hres * disp_cfg->vres;
265+
ESP_GOTO_ON_ERROR(esp_lcd_dpi_panel_get_frame_buffer(disp_cfg->panel_handle, 2, (void *)&buf1, (void *)&buf2), err, TAG, "Get RGB buffers failed");
266+
}
263267
#endif
264268

265269
trans_sem = xSemaphoreCreateCounting(1, 0);
@@ -378,7 +382,7 @@ static bool lvgl_port_flush_io_ready_callback(esp_lcd_panel_io_handle_t panel_io
378382
return false;
379383
}
380384

381-
#if (CONFIG_IDF_TARGET_ESP32P4 && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 3, 0))
385+
#if (CONFIG_SOC_MIPI_DSI_SUPPORTED && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 3, 0))
382386
static bool lvgl_port_flush_dpi_panel_ready_callback(esp_lcd_panel_handle_t panel_io, esp_lcd_dpi_panel_event_data_t *edata, void *user_ctx)
383387
{
384388
BaseType_t taskAwake = pdFALSE;
@@ -413,7 +417,7 @@ static bool lvgl_port_flush_dpi_vsync_ready_callback(esp_lcd_panel_handle_t pane
413417
}
414418
#endif
415419

416-
#if (CONFIG_IDF_TARGET_ESP32S3 && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0))
420+
#if (CONFIG_SOC_LCDCAM_RGB_LCD_SUPPORTED && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0))
417421
static bool lvgl_port_flush_rgb_vsync_ready_callback(esp_lcd_panel_handle_t panel_io, const esp_lcd_rgb_panel_event_data_t *edata, void *user_ctx)
418422
{
419423
BaseType_t need_yield = pdFALSE;

0 commit comments

Comments
 (0)