From 7e02f87bc916c6c36727256e0b0277e18933025a Mon Sep 17 00:00:00 2001 From: Armando Date: Wed, 16 Oct 2024 15:05:01 +0800 Subject: [PATCH] change(isp): added eco2 check --- components/esp_driver_isp/include/driver/isp_lsc.h | 1 + components/esp_driver_isp/src/isp_lsc.c | 9 +++++++++ .../peripherals/isp/multi_pipelines/main/isp_dsi_main.c | 2 ++ 3 files changed, 12 insertions(+) diff --git a/components/esp_driver_isp/include/driver/isp_lsc.h b/components/esp_driver_isp/include/driver/isp_lsc.h index d4f7e6e30b..db32c74ff1 100644 --- a/components/esp_driver_isp/include/driver/isp_lsc.h +++ b/components/esp_driver_isp/include/driver/isp_lsc.h @@ -58,6 +58,7 @@ esp_err_t esp_isp_lsc_allocate_gain_array(isp_proc_handle_t isp_proc, esp_isp_ls * - ESP_OK On success * - ESP_ERR_INVALID_STATE Not allowed to be called under current state * - ESP_ERR_INVALID_ARG If the combination of arguments is invalid + * - ESP_ERR_NOT_SUPPORTED Not supported */ esp_err_t esp_isp_lsc_configure(isp_proc_handle_t isp_proc, const esp_isp_lsc_config_t *config); diff --git a/components/esp_driver_isp/src/isp_lsc.c b/components/esp_driver_isp/src/isp_lsc.c index 97f7c576c9..d8996e2905 100644 --- a/components/esp_driver_isp/src/isp_lsc.c +++ b/components/esp_driver_isp/src/isp_lsc.c @@ -15,6 +15,8 @@ #include "driver/isp_bf.h" #include "driver/isp_lsc.h" #include "esp_private/isp_private.h" +#include "hal/efuse_hal.h" +#include "soc/chip_revision.h" /*--------------------------------------------------------------- LSC @@ -51,6 +53,13 @@ esp_err_t esp_isp_lsc_allocate_gain_array(isp_proc_handle_t isp_proc, esp_isp_ls esp_err_t esp_isp_lsc_configure(isp_proc_handle_t isp_proc, const esp_isp_lsc_config_t *config) { +#if CONFIG_IDF_TARGET_ESP32P4 + unsigned chip_version = efuse_hal_chip_revision(); + if (!ESP_CHIP_REV_ABOVE(chip_version, 100)) { + ESP_RETURN_ON_FALSE(false, ESP_ERR_NOT_SUPPORTED, TAG, "LSC is not supported on ESP32P4 chips prior than ECO2"); + } +#endif + ESP_RETURN_ON_FALSE(isp_proc, ESP_ERR_INVALID_ARG, TAG, "invalid argument: null pointer"); int num_grids_x_max = ISP_LSC_GET_GRIDS(ISP_LL_HSIZE_MAX); diff --git a/examples/peripherals/isp/multi_pipelines/main/isp_dsi_main.c b/examples/peripherals/isp/multi_pipelines/main/isp_dsi_main.c index 00e2dab0c8..3f2db636db 100644 --- a/examples/peripherals/isp/multi_pipelines/main/isp_dsi_main.c +++ b/examples/peripherals/isp/multi_pipelines/main/isp_dsi_main.c @@ -347,6 +347,7 @@ void app_main(void) ESP_ERROR_CHECK(esp_isp_color_configure(isp_proc, &color_config)); ESP_ERROR_CHECK(esp_isp_color_enable(isp_proc)); +#if CONFIG_ESP32P4_REV_MIN_FULL >= 100 esp_isp_lsc_gain_array_t gain_array = {}; esp_isp_lsc_config_t lsc_config = { .gain_array = &gain_array, @@ -366,6 +367,7 @@ void app_main(void) } ESP_ERROR_CHECK(esp_isp_lsc_configure(isp_proc, &lsc_config)); ESP_ERROR_CHECK(esp_isp_lsc_enable(isp_proc)); +#endif typedef struct af_task_param_t { isp_proc_handle_t isp_proc;