diff --git a/components/esp_driver_isp/src/isp_core.c b/components/esp_driver_isp/src/isp_core.c index 8acb298b666..641ae2f3294 100644 --- a/components/esp_driver_isp/src/isp_core.c +++ b/components/esp_driver_isp/src/isp_core.c @@ -188,7 +188,12 @@ esp_err_t esp_isp_new_processor(const esp_isp_processor_cfg_t *proc_config, isp_ if ((out_color_format == ISP_COLOR_RGB888 || out_color_format == ISP_COLOR_RGB565) && (proc_config->input_data_source == ISP_INPUT_DATA_SOURCE_DVP || proc_config->input_data_source == ISP_INPUT_DATA_SOURCE_DWGDMA)) { - isp_ll_color_enable(proc->hal.hw, true); // workaround for DIG-474 + // DIG-474 workaround: Color must be enabled for RGB output, so configure its neutral defaults before enabling + // Disable shadow registers temporarily to apply the defaults directly, without leaving a pending Color update. + isp_ll_shadow_set_mode(proc->hal.hw, ISP_SHADOW_MODE_DISABLE); + isp_hal_color_config(&proc->hal, NULL); + isp_ll_color_set_clk_ctrl_mode(proc->hal.hw, ISP_LL_PIPELINE_CLK_CTRL_AUTO); + isp_ll_color_enable(proc->hal.hw, true); } if (proc_config->flags.byte_swap_en) { isp_ll_set_byte_swap(proc->hal.hw, true);