From dfe4a6e5f78e56702089e2ff317be59f49ee6de8 Mon Sep 17 00:00:00 2001 From: armando Date: Fri, 7 Nov 2025 14:18:09 +0800 Subject: [PATCH] feat(hal):graudate the camera hal driver into a new component --- components/esp_driver_cam/CMakeLists.txt | 2 +- .../dvp/include/esp_cam_ctlr_dvp.h | 14 +-- .../dvp/src/esp_cam_ctlr_dvp_cam.c | 10 +- components/esp_hal_cam/CMakeLists.txt | 27 ++++++ components/esp_hal_cam/README.md | 9 ++ components/{hal => esp_hal_cam}/cam_hal.c | 4 +- .../{soc => esp_hal_cam}/esp32p4/cam_periph.c | 2 +- .../esp32p4/include/hal/cam_ll.h | 2 + .../esp32p4/include/hal/mipi_csi_brg_ll.h | 0 .../esp32p4/include/hal/mipi_csi_host_ll.h | 0 .../esp32p4/include/hal/mipi_csi_ll.h | 0 .../esp32p4/include/hal/mipi_csi_phy_ll.h | 0 .../esp32p4/mipi_csi_periph.c | 2 +- .../{soc => esp_hal_cam}/esp32s3/cam_periph.c | 2 +- .../esp32s3/include/hal/cam_ll.h | 32 ++++--- .../include/hal/cam_ctlr_types.h | 0 .../include/hal/cam_hal.h | 2 +- .../include/hal}/cam_periph.h | 9 +- .../include/hal/cam_types.h | 10 +- .../include/hal/mipi_csi_hal.h | 0 .../include/hal}/mipi_csi_periph.h | 0 .../include/hal/mipi_csi_types.h | 0 .../{hal => esp_hal_cam}/mipi_csi_hal.c | 2 +- components/esp_hw_support/CMakeLists.txt | 5 + components/esp_system/CMakeLists.txt | 1 + components/hal/CMakeLists.txt | 8 -- components/soc/CMakeLists.txt | 8 -- .../esp32p4/include/soc/Kconfig.soc_caps.in | 8 -- components/soc/esp32p4/include/soc/soc_caps.h | 2 - .../esp32s3/include/soc/Kconfig.soc_caps.in | 8 -- components/soc/esp32s3/include/soc/soc_caps.h | 2 - docs/doxygen/Doxyfile_esp32p4 | 93 ++++++++++--------- .../include/example_sensor_init_config.h | 2 +- .../camera/dvp_isp_dsi/main/CMakeLists.txt | 2 +- 34 files changed, 142 insertions(+), 126 deletions(-) create mode 100644 components/esp_hal_cam/CMakeLists.txt create mode 100644 components/esp_hal_cam/README.md rename components/{hal => esp_hal_cam}/cam_hal.c (98%) rename components/{soc => esp_hal_cam}/esp32p4/cam_periph.c (97%) rename components/{hal => esp_hal_cam}/esp32p4/include/hal/cam_ll.h (99%) rename components/{hal => esp_hal_cam}/esp32p4/include/hal/mipi_csi_brg_ll.h (100%) rename components/{hal => esp_hal_cam}/esp32p4/include/hal/mipi_csi_host_ll.h (100%) rename components/{hal => esp_hal_cam}/esp32p4/include/hal/mipi_csi_ll.h (100%) rename components/{hal => esp_hal_cam}/esp32p4/include/hal/mipi_csi_phy_ll.h (100%) rename components/{soc => esp_hal_cam}/esp32p4/mipi_csi_periph.c (98%) rename components/{soc => esp_hal_cam}/esp32s3/cam_periph.c (97%) rename components/{hal => esp_hal_cam}/esp32s3/include/hal/cam_ll.h (97%) rename components/{hal => esp_hal_cam}/include/hal/cam_ctlr_types.h (100%) rename components/{hal => esp_hal_cam}/include/hal/cam_hal.h (96%) rename components/{soc/include/soc => esp_hal_cam/include/hal}/cam_periph.h (72%) rename components/{hal => esp_hal_cam}/include/hal/cam_types.h (51%) rename components/{hal => esp_hal_cam}/include/hal/mipi_csi_hal.h (100%) rename components/{soc/include/soc => esp_hal_cam/include/hal}/mipi_csi_periph.h (100%) rename components/{hal => esp_hal_cam}/include/hal/mipi_csi_types.h (100%) rename components/{hal => esp_hal_cam}/mipi_csi_hal.c (99%) diff --git a/components/esp_driver_cam/CMakeLists.txt b/components/esp_driver_cam/CMakeLists.txt index cd6f3371dfc..f5e7a22d10d 100644 --- a/components/esp_driver_cam/CMakeLists.txt +++ b/components/esp_driver_cam/CMakeLists.txt @@ -4,7 +4,7 @@ set(srcs "esp_cam_ctlr.c" "dvp_share_ctrl.c") set(includes "include" "interface") -set(requires "esp_driver_isp") +set(requires "esp_driver_isp" "esp_hal_cam") set(priv_requires "esp_driver_gpio") diff --git a/components/esp_driver_cam/dvp/include/esp_cam_ctlr_dvp.h b/components/esp_driver_cam/dvp/include/esp_cam_ctlr_dvp.h index 53cb812846e..54cf67de2c9 100644 --- a/components/esp_driver_cam/dvp/include/esp_cam_ctlr_dvp.h +++ b/components/esp_driver_cam/dvp/include/esp_cam_ctlr_dvp.h @@ -17,16 +17,18 @@ extern "C" { #endif +#define ESP_CAM_CTLR_DVP_DATA_SIG_NUM 16 + /** * @brief ESP CAM DVP pins configuration */ typedef struct esp_cam_ctlr_dvp_pin_config { - cam_ctlr_data_width_t data_width; /*!< Number of data lines */ - gpio_num_t data_io[CAM_DVP_DATA_SIG_NUM]; /*!< DVP data pin number */ - gpio_num_t vsync_io; /*!< DVP V-Sync pin number */ - gpio_num_t de_io; /*!< DVP DE pin number */ - gpio_num_t pclk_io; /*!< DVP PCLK input pin number, clock is from camera sensor */ - gpio_num_t xclk_io; /*!< DVP output clock pin number, if using external XTAL, set xclk_io = GPIO_NUM_NC */ + cam_ctlr_data_width_t data_width; /*!< Number of data lines */ + gpio_num_t data_io[ESP_CAM_CTLR_DVP_DATA_SIG_NUM]; /*!< DVP data pin number */ + gpio_num_t vsync_io; /*!< DVP V-Sync pin number */ + gpio_num_t de_io; /*!< DVP DE pin number */ + gpio_num_t pclk_io; /*!< DVP PCLK input pin number, clock is from camera sensor */ + gpio_num_t xclk_io; /*!< DVP output clock pin number, if using external XTAL, set xclk_io = GPIO_NUM_NC */ } esp_cam_ctlr_dvp_pin_config_t; /** diff --git a/components/esp_driver_cam/dvp/src/esp_cam_ctlr_dvp_cam.c b/components/esp_driver_cam/dvp/src/esp_cam_ctlr_dvp_cam.c index 0a2096701a7..4e7dfe1aa26 100644 --- a/components/esp_driver_cam/dvp/src/esp_cam_ctlr_dvp_cam.c +++ b/components/esp_driver_cam/dvp/src/esp_cam_ctlr_dvp_cam.c @@ -18,7 +18,7 @@ #include "esp_log.h" #include "esp_check.h" #include "esp_clk_tree.h" -#include "soc/cam_periph.h" +#include "hal/cam_periph.h" #include "soc/soc_caps.h" #include "esp_cam_ctlr_dvp_cam.h" #include "esp_private/esp_cam_dvp.h" @@ -43,6 +43,14 @@ #define DVP_CAM_CLK_ATOMIC() #endif +#if CAM_LL_DATA_WIDTH_MAX +#define CAP_DVP_PERIPH_NUM CAM_LL_PERIPH_NUM /*!< DVP port number */ +#define CAM_DVP_DATA_SIG_NUM CAM_LL_DATA_WIDTH_MAX /*!< DVP data bus width of CAM */ +#else +#define CAP_DVP_PERIPH_NUM 0 /*!< Default value */ +#define CAM_DVP_DATA_SIG_NUM 0 /*!< Default value */ +#endif + #define ALIGN_UP_BY(num, align) ((align) == 0 ? (num) : (((num) + ((align) - 1)) & ~((align) - 1))) #define DVP_CAM_CONFIG_INPUT_PIN(pin, sig, inv) \ diff --git a/components/esp_hal_cam/CMakeLists.txt b/components/esp_hal_cam/CMakeLists.txt new file mode 100644 index 00000000000..f6114de4ba1 --- /dev/null +++ b/components/esp_hal_cam/CMakeLists.txt @@ -0,0 +1,27 @@ +idf_build_get_property(target IDF_TARGET) +if(${target} STREQUAL "linux") + return() # This component is not supported by the POSIX/Linux simulator +endif() + +set(srcs) +set(public_include "include") + +if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/${target}/include") + list(APPEND public_include "${target}/include") +endif() + +# CAM related source files +if(CONFIG_SOC_LCDCAM_CAM_SUPPORTED) + list(APPEND srcs "cam_hal.c") + list(APPEND srcs "${target}/cam_periph.c") +endif() + +# CSI related source files +if(CONFIG_SOC_MIPI_CSI_SUPPORTED) + list(APPEND srcs "mipi_csi_hal.c") + list(APPEND srcs "${target}/mipi_csi_periph.c") +endif() + +idf_component_register(SRCS ${srcs} + INCLUDE_DIRS ${public_include} + REQUIRES soc hal) diff --git a/components/esp_hal_cam/README.md b/components/esp_hal_cam/README.md new file mode 100644 index 00000000000..453965ccb43 --- /dev/null +++ b/components/esp_hal_cam/README.md @@ -0,0 +1,9 @@ +# `esp_hal_cam` + +⚠️ This HAL component is still under heavy development at the moment, so we don't guarantee the stability and backward-compatibility among versions. + +The `esp_hal_cam` component provides a **Hardware Abstraction Layer** of Camera Controller for all targets supported by ESP-IDF. + +In a broad sense, the HAL layer consists of two sub-layers: HAL (upper) and Low-Level(bottom). The HAL layer defines the steps and data that is required to operate a peripheral (e.g. initialization, parameter settings). The low-level is a translation layer above the register files under the `soc` component, it only covers general conceptions to register configurations. + +The functions in this file mainly provide hardware abstraction for IDF peripheral drivers. For advanced developers, the HAL layer functions can also be directly used to assist in implementing their own drivers. However, it needs to be mentioned again that the interfaces here do not guarantee stability. diff --git a/components/hal/cam_hal.c b/components/esp_hal_cam/cam_hal.c similarity index 98% rename from components/hal/cam_hal.c rename to components/esp_hal_cam/cam_hal.c index f4f8ee8577f..fc70f89171e 100644 --- a/components/hal/cam_hal.c +++ b/components/esp_hal_cam/cam_hal.c @@ -8,7 +8,7 @@ #include "hal/cam_hal.h" #include "hal/color_types.h" #include "soc/soc_caps.h" -#include "soc/cam_periph.h" +#include "hal/cam_periph.h" /** * @brief Default format conversion configuration @@ -147,7 +147,7 @@ void cam_hal_stop_streaming(cam_hal_context_t *hal) * @param config Color conversion configuration. If NULL, default config is used. */ void cam_hal_color_format_convert(cam_hal_context_t *hal, - const cam_ctlr_format_conv_config_t *config) + const cam_ctlr_format_conv_config_t *config) { // Use provided config or default const cam_ctlr_format_conv_config_t *cfg = config; diff --git a/components/soc/esp32p4/cam_periph.c b/components/esp_hal_cam/esp32p4/cam_periph.c similarity index 97% rename from components/soc/esp32p4/cam_periph.c rename to components/esp_hal_cam/esp32p4/cam_periph.c index acecf882726..5ff83dfa4b1 100644 --- a/components/soc/esp32p4/cam_periph.c +++ b/components/esp_hal_cam/esp32p4/cam_periph.c @@ -5,7 +5,7 @@ */ #include "soc/gpio_sig_map.h" -#include "soc/cam_periph.h" +#include "hal/cam_periph.h" const cam_signal_conn_t cam_periph_signals = { .buses = { diff --git a/components/hal/esp32p4/include/hal/cam_ll.h b/components/esp_hal_cam/esp32p4/include/hal/cam_ll.h similarity index 99% rename from components/hal/esp32p4/include/hal/cam_ll.h rename to components/esp_hal_cam/esp32p4/include/hal/cam_ll.h index 9fee8b23086..826977bcbbc 100644 --- a/components/hal/esp32p4/include/hal/cam_ll.h +++ b/components/esp_hal_cam/esp32p4/include/hal/cam_ll.h @@ -20,6 +20,8 @@ extern "C" { #define CAM_LL_CLK_FRAC_DIV_N_MAX 256 // CAM_CLK = CAM_CLK_S / (N + b/a), the N register is 8 bit-width #define CAM_LL_CLK_FRAC_DIV_AB_MAX 64 // CAM_CLK = CAM_CLK_S / (N + b/a), the a/b register is 6 bit-width +#define CAM_LL_PERIPH_NUM (1U) +#define CAM_LL_DATA_WIDTH_MAX (16U) /** * @brief Enable the bus clock for CAM module diff --git a/components/hal/esp32p4/include/hal/mipi_csi_brg_ll.h b/components/esp_hal_cam/esp32p4/include/hal/mipi_csi_brg_ll.h similarity index 100% rename from components/hal/esp32p4/include/hal/mipi_csi_brg_ll.h rename to components/esp_hal_cam/esp32p4/include/hal/mipi_csi_brg_ll.h diff --git a/components/hal/esp32p4/include/hal/mipi_csi_host_ll.h b/components/esp_hal_cam/esp32p4/include/hal/mipi_csi_host_ll.h similarity index 100% rename from components/hal/esp32p4/include/hal/mipi_csi_host_ll.h rename to components/esp_hal_cam/esp32p4/include/hal/mipi_csi_host_ll.h diff --git a/components/hal/esp32p4/include/hal/mipi_csi_ll.h b/components/esp_hal_cam/esp32p4/include/hal/mipi_csi_ll.h similarity index 100% rename from components/hal/esp32p4/include/hal/mipi_csi_ll.h rename to components/esp_hal_cam/esp32p4/include/hal/mipi_csi_ll.h diff --git a/components/hal/esp32p4/include/hal/mipi_csi_phy_ll.h b/components/esp_hal_cam/esp32p4/include/hal/mipi_csi_phy_ll.h similarity index 100% rename from components/hal/esp32p4/include/hal/mipi_csi_phy_ll.h rename to components/esp_hal_cam/esp32p4/include/hal/mipi_csi_phy_ll.h diff --git a/components/soc/esp32p4/mipi_csi_periph.c b/components/esp_hal_cam/esp32p4/mipi_csi_periph.c similarity index 98% rename from components/soc/esp32p4/mipi_csi_periph.c rename to components/esp_hal_cam/esp32p4/mipi_csi_periph.c index 4f4ae4d0ee2..ab5cd2d4c77 100644 --- a/components/soc/esp32p4/mipi_csi_periph.c +++ b/components/esp_hal_cam/esp32p4/mipi_csi_periph.c @@ -4,7 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -#include "soc/mipi_csi_periph.h" +#include "hal/mipi_csi_periph.h" const soc_mipi_csi_phy_pll_freq_range_t soc_mipi_csi_phy_pll_ranges[] = { {90, 99, 0x00}, // [90,100) Mbps diff --git a/components/soc/esp32s3/cam_periph.c b/components/esp_hal_cam/esp32s3/cam_periph.c similarity index 97% rename from components/soc/esp32s3/cam_periph.c rename to components/esp_hal_cam/esp32s3/cam_periph.c index 36799a40754..71393bfae32 100644 --- a/components/soc/esp32s3/cam_periph.c +++ b/components/esp_hal_cam/esp32s3/cam_periph.c @@ -5,7 +5,7 @@ */ #include "soc/gpio_sig_map.h" -#include "soc/cam_periph.h" +#include "hal/cam_periph.h" const cam_signal_conn_t cam_periph_signals = { .buses = { diff --git a/components/hal/esp32s3/include/hal/cam_ll.h b/components/esp_hal_cam/esp32s3/include/hal/cam_ll.h similarity index 97% rename from components/hal/esp32s3/include/hal/cam_ll.h rename to components/esp_hal_cam/esp32s3/include/hal/cam_ll.h index 28b151fa92d..b52b34eab08 100644 --- a/components/hal/esp32s3/include/hal/cam_ll.h +++ b/components/esp_hal_cam/esp32s3/include/hal/cam_ll.h @@ -20,6 +20,8 @@ extern "C" { #define CAM_LL_CLK_FRAC_DIV_N_MAX 256 // CAM_CLK = CAM_CLK_S / (N + b/a), the N register is 8 bit-width #define CAM_LL_CLK_FRAC_DIV_AB_MAX 64 // CAM_CLK = CAM_CLK_S / (N + b/a), the a/b register is 6 bit-width +#define CAM_LL_PERIPH_NUM (1U) +#define CAM_LL_DATA_WIDTH_MAX (16U) /** * @brief Enable the bus clock for CAM module @@ -80,21 +82,21 @@ static inline void cam_ll_enable_clk(int group_id, bool en) static inline void cam_ll_select_clk_src(int group_id, cam_clock_source_t src) { switch (src) { - case CAM_CLK_SRC_XTAL: - LCD_CAM.cam_ctrl.cam_clk_sel = 1; - break; - case CAM_CLK_SRC_PLL240M: - LCD_CAM.cam_ctrl.cam_clk_sel = 2; - break; - case CAM_CLK_SRC_PLL160M: - LCD_CAM.cam_ctrl.cam_clk_sel = 3; - break; - default: - // disable LCD clock source - LCD_CAM.cam_ctrl.cam_clk_sel = 0; - HAL_ASSERT(false); - break; - } + case CAM_CLK_SRC_XTAL: + LCD_CAM.cam_ctrl.cam_clk_sel = 1; + break; + case CAM_CLK_SRC_PLL240M: + LCD_CAM.cam_ctrl.cam_clk_sel = 2; + break; + case CAM_CLK_SRC_PLL160M: + LCD_CAM.cam_ctrl.cam_clk_sel = 3; + break; + default: + // disable LCD clock source + LCD_CAM.cam_ctrl.cam_clk_sel = 0; + HAL_ASSERT(false); + break; + } } /** diff --git a/components/hal/include/hal/cam_ctlr_types.h b/components/esp_hal_cam/include/hal/cam_ctlr_types.h similarity index 100% rename from components/hal/include/hal/cam_ctlr_types.h rename to components/esp_hal_cam/include/hal/cam_ctlr_types.h diff --git a/components/hal/include/hal/cam_hal.h b/components/esp_hal_cam/include/hal/cam_hal.h similarity index 96% rename from components/hal/include/hal/cam_hal.h rename to components/esp_hal_cam/include/hal/cam_hal.h index 79901c3ee64..8b21d0027c9 100644 --- a/components/hal/include/hal/cam_hal.h +++ b/components/esp_hal_cam/include/hal/cam_hal.h @@ -86,7 +86,7 @@ void cam_hal_stop_streaming(cam_hal_context_t *hal); * @param config Color conversion configuration. If NULL, default config is used. */ void cam_hal_color_format_convert(cam_hal_context_t *hal, - const cam_ctlr_format_conv_config_t *config); + const cam_ctlr_format_conv_config_t *config); #ifdef __cplusplus } diff --git a/components/soc/include/soc/cam_periph.h b/components/esp_hal_cam/include/hal/cam_periph.h similarity index 72% rename from components/soc/include/soc/cam_periph.h rename to components/esp_hal_cam/include/hal/cam_periph.h index 9845e8927be..365cfd747fa 100644 --- a/components/soc/include/soc/cam_periph.h +++ b/components/esp_hal_cam/include/hal/cam_periph.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -8,6 +8,9 @@ #include "soc/soc_caps.h" #include "soc/periph_defs.h" +#if SOC_HAS(LCDCAM_CAM) +#include "hal/cam_ll.h" +#endif #ifdef __cplusplus extern "C" { @@ -18,13 +21,13 @@ typedef struct { struct { const shared_periph_module_t module; const int irq_id; - const int data_sigs[SOC_LCDCAM_CAM_DATA_WIDTH_MAX]; + const int data_sigs[CAM_LL_DATA_WIDTH_MAX]; const int hsync_sig; const int vsync_sig; const int pclk_sig; const int de_sig; const int clk_sig; - } buses[SOC_LCDCAM_CAM_PERIPH_NUM]; + } buses[CAM_LL_PERIPH_NUM]; } cam_signal_conn_t; extern const cam_signal_conn_t cam_periph_signals; diff --git a/components/hal/include/hal/cam_types.h b/components/esp_hal_cam/include/hal/cam_types.h similarity index 51% rename from components/hal/include/hal/cam_types.h rename to components/esp_hal_cam/include/hal/cam_types.h index 32e22f22a69..668fa867b68 100644 --- a/components/hal/include/hal/cam_types.h +++ b/components/esp_hal_cam/include/hal/cam_types.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -15,14 +15,6 @@ extern "C" { #endif -#if SOC_LCDCAM_CAM_DATA_WIDTH_MAX -#define CAP_DVP_PERIPH_NUM SOC_LCDCAM_CAM_PERIPH_NUM /*!< DVP port number */ -#define CAM_DVP_DATA_SIG_NUM SOC_LCDCAM_CAM_DATA_WIDTH_MAX /*!< DVP data bus width of CAM */ -#else -#define CAP_DVP_PERIPH_NUM 0 /*!< Default value */ -#define CAM_DVP_DATA_SIG_NUM 0 /*!< Default value */ -#endif - #if SOC_LCDCAM_CAM_SUPPORTED typedef soc_periph_cam_clk_src_t cam_clock_source_t; /*!< Clock source type of CAM */ #else diff --git a/components/hal/include/hal/mipi_csi_hal.h b/components/esp_hal_cam/include/hal/mipi_csi_hal.h similarity index 100% rename from components/hal/include/hal/mipi_csi_hal.h rename to components/esp_hal_cam/include/hal/mipi_csi_hal.h diff --git a/components/soc/include/soc/mipi_csi_periph.h b/components/esp_hal_cam/include/hal/mipi_csi_periph.h similarity index 100% rename from components/soc/include/soc/mipi_csi_periph.h rename to components/esp_hal_cam/include/hal/mipi_csi_periph.h diff --git a/components/hal/include/hal/mipi_csi_types.h b/components/esp_hal_cam/include/hal/mipi_csi_types.h similarity index 100% rename from components/hal/include/hal/mipi_csi_types.h rename to components/esp_hal_cam/include/hal/mipi_csi_types.h diff --git a/components/hal/mipi_csi_hal.c b/components/esp_hal_cam/mipi_csi_hal.c similarity index 99% rename from components/hal/mipi_csi_hal.c rename to components/esp_hal_cam/mipi_csi_hal.c index 07e8e203c19..3f8aaba0338 100644 --- a/components/hal/mipi_csi_hal.c +++ b/components/esp_hal_cam/mipi_csi_hal.c @@ -7,7 +7,7 @@ #include "hal/log.h" #include "hal/mipi_csi_hal.h" #include "hal/mipi_csi_ll.h" -#include "soc/mipi_csi_periph.h" +#include "hal/mipi_csi_periph.h" #define MHZ (1000 * 1000) diff --git a/components/esp_hw_support/CMakeLists.txt b/components/esp_hw_support/CMakeLists.txt index a084e3498f8..d22a53ee142 100644 --- a/components/esp_hw_support/CMakeLists.txt +++ b/components/esp_hw_support/CMakeLists.txt @@ -234,3 +234,8 @@ if(NOT non_os_build) idf_component_optional_requires(PRIVATE esp_psram) endif() endif() + +if(${target} STREQUAL "esp32p4") + # for mipi_csi_share_hw_ctrl.c + idf_component_optional_requires(PRIVATE esp_hal_cam) +endif() diff --git a/components/esp_system/CMakeLists.txt b/components/esp_system/CMakeLists.txt index 040785f81cb..b7b8f7d1279 100644 --- a/components/esp_system/CMakeLists.txt +++ b/components/esp_system/CMakeLists.txt @@ -83,6 +83,7 @@ else() esp_hal_lcd esp_hal_mcpwm esp_hal_pcnt + esp_hal_cam LDFRAGMENTS "linker.lf" "app.lf") add_subdirectory(port) diff --git a/components/hal/CMakeLists.txt b/components/hal/CMakeLists.txt index 7e817235012..704b6f36ae2 100644 --- a/components/hal/CMakeLists.txt +++ b/components/hal/CMakeLists.txt @@ -155,10 +155,6 @@ elseif(NOT BOOTLOADER_BUILD) endif() endif() - if(CONFIG_SOC_MIPI_CSI_SUPPORTED) - list(APPEND srcs "mipi_csi_hal.c") - endif() - if(CONFIG_SOC_ECC_SUPPORTED) list(APPEND srcs "ecc_hal.c") endif() @@ -238,10 +234,6 @@ elseif(NOT BOOTLOADER_BUILD) list(APPEND srcs "ds_hal.c") endif() - if(CONFIG_SOC_LCDCAM_CAM_SUPPORTED) - list(APPEND srcs "cam_hal.c") - endif() - if(CONFIG_SOC_USB_SERIAL_JTAG_SUPPORTED) list(APPEND srcs "usb_serial_jtag_hal.c") endif() diff --git a/components/soc/CMakeLists.txt b/components/soc/CMakeLists.txt index 65e882d88ce..eb6dbe337d3 100644 --- a/components/soc/CMakeLists.txt +++ b/components/soc/CMakeLists.txt @@ -116,10 +116,6 @@ if(CONFIG_SOC_TEMP_SENSOR_SUPPORTED) list(APPEND srcs "${target_folder}/temperature_sensor_periph.c") endif() -if(CONFIG_SOC_MIPI_CSI_SUPPORTED) - list(APPEND srcs "${target_folder}/mipi_csi_periph.c") -endif() - if(CONFIG_SOC_PARLIO_SUPPORTED) list(APPEND srcs "${target_folder}/parlio_periph.c") endif() @@ -162,10 +158,6 @@ if(CONFIG_SOC_PAU_SUPPORTED AND CONFIG_SOC_LIGHT_SLEEP_SUPPORTED AND CONFIG_SOC_ list(APPEND srcs "${target_folder}/system_retention_periph.c") endif() -if(CONFIG_SOC_LCDCAM_CAM_SUPPORTED) - list(APPEND srcs "${target_folder}/cam_periph.c") -endif() - if(CONFIG_SOC_BOD_SUPPORTED) list(APPEND srcs "${target_folder}/power_supply_periph.c") endif() diff --git a/components/soc/esp32p4/include/soc/Kconfig.soc_caps.in b/components/soc/esp32p4/include/soc/Kconfig.soc_caps.in index 0209ee593cd..7e65ff668e0 100644 --- a/components/soc/esp32p4/include/soc/Kconfig.soc_caps.in +++ b/components/soc/esp32p4/include/soc/Kconfig.soc_caps.in @@ -2047,14 +2047,6 @@ config SOC_LCDCAM_CAM_SUPPORT_RGB_YUV_CONV bool default y -config SOC_LCDCAM_CAM_PERIPH_NUM - int - default 1 - -config SOC_LCDCAM_CAM_DATA_WIDTH_MAX - int - default 16 - config SOC_I3C_MASTER_PERIPH_NUM bool default y diff --git a/components/soc/esp32p4/include/soc/soc_caps.h b/components/soc/esp32p4/include/soc/soc_caps.h index e9bd1dd7b5a..b0460294702 100644 --- a/components/soc/esp32p4/include/soc/soc_caps.h +++ b/components/soc/esp32p4/include/soc/soc_caps.h @@ -776,8 +776,6 @@ /*--------------------------- CAM ---------------------------------*/ #define SOC_LCDCAM_CAM_SUPPORT_RGB_YUV_CONV (1) -#define SOC_LCDCAM_CAM_PERIPH_NUM (1U) -#define SOC_LCDCAM_CAM_DATA_WIDTH_MAX (16U) /*--------------------------- I3C ---------------------------------*/ #define SOC_I3C_MASTER_PERIPH_NUM (1) diff --git a/components/soc/esp32s3/include/soc/Kconfig.soc_caps.in b/components/soc/esp32s3/include/soc/Kconfig.soc_caps.in index f8f6ba67590..555d6c254e4 100644 --- a/components/soc/esp32s3/include/soc/Kconfig.soc_caps.in +++ b/components/soc/esp32s3/include/soc/Kconfig.soc_caps.in @@ -1374,11 +1374,3 @@ config SOC_PHY_COMBO_MODULE config SOC_LCDCAM_CAM_SUPPORT_RGB_YUV_CONV bool default y - -config SOC_LCDCAM_CAM_PERIPH_NUM - int - default 1 - -config SOC_LCDCAM_CAM_DATA_WIDTH_MAX - int - default 16 diff --git a/components/soc/esp32s3/include/soc/soc_caps.h b/components/soc/esp32s3/include/soc/soc_caps.h index f0799846739..8ef2d11bb9b 100644 --- a/components/soc/esp32s3/include/soc/soc_caps.h +++ b/components/soc/esp32s3/include/soc/soc_caps.h @@ -559,5 +559,3 @@ /*--------------------------- CAM ---------------------------------*/ #define SOC_LCDCAM_CAM_SUPPORT_RGB_YUV_CONV (1) -#define SOC_LCDCAM_CAM_PERIPH_NUM (1U) -#define SOC_LCDCAM_CAM_DATA_WIDTH_MAX (16U) diff --git a/docs/doxygen/Doxyfile_esp32p4 b/docs/doxygen/Doxyfile_esp32p4 index e72e5c587dd..767014ee92b 100644 --- a/docs/doxygen/Doxyfile_esp32p4 +++ b/docs/doxygen/Doxyfile_esp32p4 @@ -1,58 +1,59 @@ INPUT += \ - $(PROJECT_PATH)/components/ulp/lp_core/include/lp_core_i2c.h \ - $(PROJECT_PATH)/components/ulp/lp_core/include/lp_core_uart.h \ - $(PROJECT_PATH)/components/ulp/lp_core/include/lp_core_spi.h \ - $(PROJECT_PATH)/components/ulp/lp_core/include/lp_core_etm.h \ - $(PROJECT_PATH)/components/ulp/lp_core/include/ulp_lp_core.h \ - $(PROJECT_PATH)/components/ulp/lp_core/lp_core/include/ulp_lp_core_gpio.h \ - $(PROJECT_PATH)/components/ulp/lp_core/lp_core/include/ulp_lp_core_i2c.h \ - $(PROJECT_PATH)/components/ulp/lp_core/lp_core/include/ulp_lp_core_print.h \ - $(PROJECT_PATH)/components/ulp/lp_core/lp_core/include/ulp_lp_core_uart.h \ - $(PROJECT_PATH)/components/ulp/lp_core/lp_core/include/ulp_lp_core_utils.h \ - $(PROJECT_PATH)/components/ulp/lp_core/lp_core/include/ulp_lp_core_interrupts.h \ - $(PROJECT_PATH)/components/ulp/lp_core/lp_core/include/ulp_lp_core_mailbox.h \ - $(PROJECT_PATH)/components/ulp/lp_core/lp_core/include/ulp_lp_core_spi.h \ - $(PROJECT_PATH)/components/ulp/lp_core/shared/include/ulp_lp_core_lp_vad_shared.h \ - $(PROJECT_PATH)/components/ulp/ulp_common/include/ulp_common.h \ $(PROJECT_PATH)/components/esp_driver_bitscrambler/include/driver/bitscrambler.h \ $(PROJECT_PATH)/components/esp_driver_bitscrambler/include/driver/bitscrambler_loopback.h \ + $(PROJECT_PATH)/components/esp_driver_cam/csi/include/esp_cam_ctlr_csi.h \ $(PROJECT_PATH)/components/esp_driver_cam/include/esp_cam_ctlr.h \ $(PROJECT_PATH)/components/esp_driver_cam/include/esp_cam_ctlr_types.h \ - $(PROJECT_PATH)/components/esp_driver_cam/csi/include/esp_cam_ctlr_csi.h \ $(PROJECT_PATH)/components/esp_driver_cam/isp_dvp/include/esp_cam_ctlr_isp_dvp.h \ + $(PROJECT_PATH)/components/esp_driver_i2s/include/driver/lp_i2s.h \ + $(PROJECT_PATH)/components/esp_driver_i2s/include/driver/lp_i2s_pdm.h \ + $(PROJECT_PATH)/components/esp_driver_i2s/include/driver/lp_i2s_std.h \ + $(PROJECT_PATH)/components/esp_driver_i2s/include/driver/lp_i2s_vad.h \ + $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp.h \ + $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_ae.h \ + $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_af.h \ + $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_awb.h \ + $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_bf.h \ + $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_blc.h \ + $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_ccm.h \ + $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_color.h \ + $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_core.h \ + $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_crop.h \ + $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_demosaic.h \ + $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_gamma.h \ + $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_hist.h \ + $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_lsc.h \ + $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_sharpen.h \ + $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_types.h \ + $(PROJECT_PATH)/components/esp_driver_jpeg/include/driver/jpeg_decode.h \ + $(PROJECT_PATH)/components/esp_driver_jpeg/include/driver/jpeg_encode.h \ + $(PROJECT_PATH)/components/esp_driver_jpeg/include/driver/jpeg_types.h \ + $(PROJECT_PATH)/components/esp_driver_ppa/include/driver/ppa.h \ + $(PROJECT_PATH)/components/esp_driver_touch_sens/hw_ver3/include/driver/touch_version_types.h \ + $(PROJECT_PATH)/components/esp_driver_touch_sens/include/driver/touch_sens.h \ + $(PROJECT_PATH)/components/esp_driver_touch_sens/include/driver/touch_sens_types.h \ + $(PROJECT_PATH)/components/esp_hal_cam/include/hal/cam_ctlr_types.h \ + $(PROJECT_PATH)/components/esp_lcd/dsi/include/esp_lcd_mipi_dsi.h \ + $(PROJECT_PATH)/components/esp_lcd/rgb/include/esp_lcd_panel_rgb.h \ $(PROJECT_PATH)/components/hal/include/hal/isp_types.h \ $(PROJECT_PATH)/components/hal/include/hal/jpeg_types.h \ $(PROJECT_PATH)/components/hal/include/hal/ppa_types.h \ - $(PROJECT_PATH)/components/esp_driver_touch_sens/include/driver/touch_sens.h \ - $(PROJECT_PATH)/components/esp_driver_touch_sens/include/driver/touch_sens_types.h \ - $(PROJECT_PATH)/components/esp_driver_touch_sens/hw_ver3/include/driver/touch_version_types.h \ - $(PROJECT_PATH)/components/esp_driver_jpeg/include/driver/jpeg_types.h \ - $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp.h \ - $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_types.h \ - $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_af.h \ - $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_ae.h \ - $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_awb.h \ - $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_ccm.h \ - $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_bf.h \ - $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_blc.h \ - $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_lsc.h \ - $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_crop.h \ - $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_demosaic.h \ - $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_sharpen.h \ - $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_core.h \ - $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_gamma.h \ - $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_hist.h \ - $(PROJECT_PATH)/components/esp_driver_isp/include/driver/isp_color.h \ - $(PROJECT_PATH)/components/esp_driver_i2s/include/driver/lp_i2s.h \ - $(PROJECT_PATH)/components/esp_driver_i2s/include/driver/lp_i2s_std.h \ - $(PROJECT_PATH)/components/esp_driver_i2s/include/driver/lp_i2s_pdm.h \ - $(PROJECT_PATH)/components/esp_driver_i2s/include/driver/lp_i2s_vad.h \ - $(PROJECT_PATH)/components/esp_driver_jpeg/include/driver/jpeg_decode.h \ - $(PROJECT_PATH)/components/esp_driver_jpeg/include/driver/jpeg_encode.h \ - $(PROJECT_PATH)/components/esp_driver_ppa/include/driver/ppa.h \ - $(PROJECT_PATH)/components/esp_lcd/dsi/include/esp_lcd_mipi_dsi.h \ - $(PROJECT_PATH)/components/esp_lcd/rgb/include/esp_lcd_panel_rgb.h \ - $(PROJECT_PATH)/components/soc/$(IDF_TARGET)/include/soc/bitscrambler_peri_select.h \ $(PROJECT_PATH)/components/sdmmc/include/sd_pwr_ctrl.h \ $(PROJECT_PATH)/components/sdmmc/include/sd_pwr_ctrl_by_on_chip_ldo.h \ + $(PROJECT_PATH)/components/soc/$(IDF_TARGET)/include/soc/bitscrambler_peri_select.h \ + $(PROJECT_PATH)/components/ulp/lp_core/include/lp_core_etm.h \ + $(PROJECT_PATH)/components/ulp/lp_core/include/lp_core_i2c.h \ + $(PROJECT_PATH)/components/ulp/lp_core/include/lp_core_spi.h \ + $(PROJECT_PATH)/components/ulp/lp_core/include/lp_core_uart.h \ + $(PROJECT_PATH)/components/ulp/lp_core/include/ulp_lp_core.h \ + $(PROJECT_PATH)/components/ulp/lp_core/lp_core/include/ulp_lp_core_gpio.h \ + $(PROJECT_PATH)/components/ulp/lp_core/lp_core/include/ulp_lp_core_i2c.h \ + $(PROJECT_PATH)/components/ulp/lp_core/lp_core/include/ulp_lp_core_interrupts.h \ + $(PROJECT_PATH)/components/ulp/lp_core/lp_core/include/ulp_lp_core_mailbox.h \ + $(PROJECT_PATH)/components/ulp/lp_core/lp_core/include/ulp_lp_core_print.h \ + $(PROJECT_PATH)/components/ulp/lp_core/lp_core/include/ulp_lp_core_spi.h \ + $(PROJECT_PATH)/components/ulp/lp_core/lp_core/include/ulp_lp_core_uart.h \ + $(PROJECT_PATH)/components/ulp/lp_core/lp_core/include/ulp_lp_core_utils.h \ $(PROJECT_PATH)/components/ulp/lp_core/shared/include/ulp_lp_core_lp_uart_shared.h \ + $(PROJECT_PATH)/components/ulp/lp_core/shared/include/ulp_lp_core_lp_vad_shared.h \ + $(PROJECT_PATH)/components/ulp/ulp_common/include/ulp_common.h diff --git a/examples/peripherals/camera/common_components/sensor_init/include/example_sensor_init_config.h b/examples/peripherals/camera/common_components/sensor_init/include/example_sensor_init_config.h index 1aa6a81dc05..f3962024cc4 100644 --- a/examples/peripherals/camera/common_components/sensor_init/include/example_sensor_init_config.h +++ b/examples/peripherals/camera/common_components/sensor_init/include/example_sensor_init_config.h @@ -10,7 +10,7 @@ extern "C" { #endif -#define EXAMPLE_CAM_SCCB_FREQ (10 * 1000) +#define EXAMPLE_CAM_SCCB_FREQ (100 * 1000) #ifdef __cplusplus } diff --git a/examples/peripherals/camera/dvp_isp_dsi/main/CMakeLists.txt b/examples/peripherals/camera/dvp_isp_dsi/main/CMakeLists.txt index fa1f8c83b65..0dc6a4b109d 100644 --- a/examples/peripherals/camera/dvp_isp_dsi/main/CMakeLists.txt +++ b/examples/peripherals/camera/dvp_isp_dsi/main/CMakeLists.txt @@ -1,4 +1,4 @@ idf_component_register(SRCS "dvp_isp_dsi_main.c" INCLUDE_DIRS "." - REQUIRES esp_mm esp_driver_isp esp_driver_cam esp_driver_i2c dsi_init sensor_init + REQUIRES esp_mm esp_driver_isp esp_driver_cam esp_driver_i2c dsi_init sensor_init esp_pm )