From ce22a85cebba7d2550802cf7a6a78b9abad342b6 Mon Sep 17 00:00:00 2001 From: Song Ruo Jing Date: Tue, 10 Dec 2024 14:39:47 +0800 Subject: [PATCH] fix(isp): isp_dvp raw->rgb needs a workaround --- components/esp_driver_isp/src/isp_core.c | 4 ++++ components/hal/esp32p4/include/hal/isp_ll.h | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/components/esp_driver_isp/src/isp_core.c b/components/esp_driver_isp/src/isp_core.c index 8fbf9e5f66..b69419f26d 100644 --- a/components/esp_driver_isp/src/isp_core.c +++ b/components/esp_driver_isp/src/isp_core.c @@ -135,6 +135,10 @@ esp_err_t esp_isp_new_processor(const esp_isp_processor_cfg_t *proc_config, isp_ isp_ll_set_intput_data_h_pixel_num(proc->hal.hw, proc_config->h_res); isp_ll_set_intput_data_v_row_num(proc->hal.hw, proc_config->v_res); + if (out_color_format.color_space == COLOR_SPACE_RGB && proc_config->input_data_source == ISP_INPUT_DATA_SOURCE_DVP) { + isp_ll_color_enable(proc->hal.hw, true); // workaround for DIG-474 + } + proc->in_color_format = in_color_format; proc->out_color_format = out_color_format; proc->h_res = proc_config->h_res; diff --git a/components/hal/esp32p4/include/hal/isp_ll.h b/components/hal/esp32p4/include/hal/isp_ll.h index 29a722612d..8792659fcb 100644 --- a/components/hal/esp32p4/include/hal/isp_ll.h +++ b/components/hal/esp32p4/include/hal/isp_ll.h @@ -361,15 +361,15 @@ static inline bool isp_ll_set_output_data_color_format(isp_dev_t *hw, color_spac case COLOR_PIXEL_RGB888: hw->cntl.isp_out_type = 2; hw->cntl.demosaic_en = 1; - hw->cntl.rgb2yuv_en = 0; - hw->cntl.yuv2rgb_en = 0; + hw->cntl.rgb2yuv_en = 1; + hw->cntl.yuv2rgb_en = 1; valid = true; break; case COLOR_PIXEL_RGB565: hw->cntl.isp_out_type = 4; hw->cntl.demosaic_en = 1; - hw->cntl.rgb2yuv_en = 0; - hw->cntl.yuv2rgb_en = 0; + hw->cntl.rgb2yuv_en = 1; + hw->cntl.yuv2rgb_en = 1; valid = true; break; default: