From dfe86726bf823c0611afd71ecf0b9ff7e98d0121 Mon Sep 17 00:00:00 2001 From: Song Ruo Jing Date: Tue, 21 Apr 2026 11:59:13 +0800 Subject: [PATCH] fix(isp): disable gamma xcoord error check --- .../test_apps/isp/main/test_isp_driver.c | 38 +++++++++++++++++++ .../esp_hal_cam/esp32p4/include/hal/isp_ll.h | 2 +- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/components/esp_driver_isp/test_apps/isp/main/test_isp_driver.c b/components/esp_driver_isp/test_apps/isp/main/test_isp_driver.c index 39d0b121f3..cf30bfde45 100644 --- a/components/esp_driver_isp/test_apps/isp/main/test_isp_driver.c +++ b/components/esp_driver_isp/test_apps/isp/main/test_isp_driver.c @@ -197,6 +197,10 @@ TEST_CASE("ISP AWB driver oneshot vs continuous test", "[isp]") TEST_ESP_OK(esp_isp_del_processor(isp_proc)); } +/*--------------------------------------------------------------- + CCM +---------------------------------------------------------------*/ + TEST_CASE("ISP CCM basic function", "[isp]") { esp_isp_processor_cfg_t isp_config = { @@ -237,6 +241,40 @@ TEST_CASE("ISP CCM basic function", "[isp]") TEST_ESP_OK(esp_isp_del_processor(isp_proc)); } +/*--------------------------------------------------------------- + Gamma +---------------------------------------------------------------*/ +static uint32_t test_isp_gamma_basic_curve(uint32_t x) +{ + return x / 2; +} + +TEST_CASE("ISP gamma basic function", "[isp]") +{ + esp_isp_processor_cfg_t isp_config = { + .clk_hz = 80 * 1000 * 1000, + .input_data_source = ISP_INPUT_DATA_SOURCE_CSI, + .input_data_color_type = ISP_COLOR_RAW8, + .output_data_color_type = ISP_COLOR_RGB565, + }; + isp_proc_handle_t isp_proc = NULL; + TEST_ESP_OK(esp_isp_new_processor(&isp_config, &isp_proc)); + TEST_ESP_OK(esp_isp_enable(isp_proc)); + + isp_gamma_curve_points_t gamma_pts = {}; + TEST_ESP_OK(esp_isp_gamma_fill_curve_points(test_isp_gamma_basic_curve, &gamma_pts)); + TEST_ESP_OK(esp_isp_gamma_configure(isp_proc, COLOR_COMPONENT_R, &gamma_pts)); + TEST_ESP_OK(esp_isp_gamma_configure(isp_proc, COLOR_COMPONENT_G, NULL)); + + TEST_ESP_OK(esp_isp_gamma_enable(isp_proc)); + // Allow to be called after enabled + TEST_ESP_OK(esp_isp_gamma_configure(isp_proc, COLOR_COMPONENT_B, &gamma_pts)); + TEST_ESP_OK(esp_isp_gamma_disable(isp_proc)); + + TEST_ESP_OK(esp_isp_disable(isp_proc)); + TEST_ESP_OK(esp_isp_del_processor(isp_proc)); +} + /*--------------------------------------------------------------- AE ---------------------------------------------------------------*/ diff --git a/components/esp_hal_cam/esp32p4/include/hal/isp_ll.h b/components/esp_hal_cam/esp32p4/include/hal/isp_ll.h index 226b67e50a..5da2c95b73 100644 --- a/components/esp_hal_cam/esp32p4/include/hal/isp_ll.h +++ b/components/esp_hal_cam/esp32p4/include/hal/isp_ll.h @@ -94,7 +94,7 @@ extern "C" { #define ISP_LL_EVENT_SHARP_MASK (ISP_LL_EVENT_SHARP_FRAME) #define ISP_LL_EVENT_HIST_MASK (ISP_LL_EVENT_HIST_FDONE) #define ISP_LL_EVENT_COLOR_MASK (ISP_LL_EVENT_COLOR_FRAME) -#define ISP_LL_EVENT_ERROR_MASK (ISP_LL_EVENT_DATA_TYPE_ERR | ISP_LL_EVENT_ASYNC_FIFO_OVF | ISP_LL_EVENT_BUF_FULL | ISP_LL_EVENT_HVNUM_SETTING_ERR | ISP_LL_EVENT_DATA_TYPE_SETTING_ERR | ISP_LL_EVENT_MIPI_HNUM_UNMATCH | ISP_LL_EVENT_GAMMA_XCOORD_ERR | ISP_LL_EVENT_CROP_ERR) +#define ISP_LL_EVENT_ERROR_MASK (ISP_LL_EVENT_DATA_TYPE_ERR | ISP_LL_EVENT_ASYNC_FIFO_OVF | ISP_LL_EVENT_BUF_FULL | ISP_LL_EVENT_HVNUM_SETTING_ERR | ISP_LL_EVENT_DATA_TYPE_SETTING_ERR | ISP_LL_EVENT_MIPI_HNUM_UNMATCH | ISP_LL_EVENT_CROP_ERR) // Due to a hardware issue (DIG-820), ISP_LL_EVENT_GAMMA_XCOORD_ERR will always get triggered when a gamma update is set on P4, so we will not use it /*--------------------------------------------------------------- AF