Merge branch 'feat/mipi_dsi_vsync_event' into 'master'

feat(dsi): add vsync interrupt handling

Closes IDF-13503

See merge request espressif/esp-idf!42163
This commit is contained in:
morris
2025-09-29 10:54:58 +08:00
11 changed files with 103 additions and 45 deletions
@@ -37,3 +37,6 @@
/*--------------------------- ETM (Event Task Matrix) ----------------------------*/
#define _SOC_CAPS_ETM_INST_NUM 1 // Number of ETM instances
#define _SOC_CAPS_ETM_CHANS_PER_INST 50 // Number of channels in each ETM instance
/*--------------------------- MIPI DSI -------------------------------------------*/
#define _SOC_CAPS_MIPI_DSI_INST_NUM 1 // Number of MIPI DSI instances
@@ -24,6 +24,7 @@ PROVIDE ( AXI_ICM_QOS = 0x500A4400 );
PROVIDE ( HP_PERI_PMS = 0x500A5000 );
PROVIDE ( LP2HP_PERI_PMS = 0x500A5800 );
PROVIDE ( DMA_PMS = 0x500A6000 );
PROVIDE ( AXI_PERF_MON = 0x500A8000 );
PROVIDE ( LEDC = 0x500D3000 );
PROVIDE ( LEDC_GAMMA_RAM = 0x500D3400 );
PROVIDE ( TIMERG0 = 0x500C2000 );
+8 -1
View File
@@ -1,10 +1,11 @@
/*
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "soc/mipi_dsi_periph.h"
#include "soc/interrupts.h"
const soc_mipi_dsi_phy_pll_freq_range_t soc_mipi_dsi_phy_pll_ranges[] = {
{80, 89, 0x00}, // [80,90) Mbps
@@ -49,3 +50,9 @@ const soc_mipi_dsi_phy_pll_freq_range_t soc_mipi_dsi_phy_pll_ranges[] = {
};
const size_t num_of_soc_mipi_dsi_phy_pll_ranges = sizeof(soc_mipi_dsi_phy_pll_ranges) / sizeof(soc_mipi_dsi_phy_pll_freq_range_t);
const soc_mipi_dsi_signal_desc_t soc_mipi_dsi_signals[1] = {
[0] = {
.brg_irq_id = ETS_DSI_BRIDGE_INTR_SOURCE,
}
};
@@ -144,12 +144,12 @@ typedef struct {
volatile icm_axi_hw_cfg_reg_reg_t hw_cfg_reg;
volatile icm_axi_cmd_reg_t cmd;
volatile icm_axi_data_reg_t data;
} icm_axi_dev_t;
} axi_icm_qos_dev_t;
extern icm_axi_dev_t ICM_SYS;
extern axi_icm_qos_dev_t AXI_ICM_QOS;
#ifndef __cplusplus
_Static_assert(sizeof(icm_axi_dev_t) == 0x10, "Invalid size of icm_axi_dev_t structure");
_Static_assert(sizeof(axi_icm_qos_dev_t) == 0x10, "Invalid size of axi_icm_qos_dev_t structure");
#endif
#ifdef __cplusplus
@@ -508,12 +508,12 @@ typedef struct {
volatile icm_rdn_eco_cs_reg_t rdn_eco_cs;
volatile icm_rdn_eco_low_reg_t rdn_eco_low;
volatile icm_rdn_eco_high_reg_t rdn_eco_high;
} icm_dev_t;
} axi_icm_dev_t;
extern icm_dev_t ICM_SYS;
extern axi_icm_dev_t AXI_ICM;
#ifndef __cplusplus
_Static_assert(sizeof(icm_dev_t) == 0x5c, "Invalid size of icm_dev_t structure");
_Static_assert(sizeof(axi_icm_dev_t) == 0x5c, "Invalid size of axi_icm_dev_t structure");
#endif
#ifdef __cplusplus
+15 -1
View File
@@ -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
*/
@@ -8,11 +8,17 @@
#include <stdint.h>
#include <stddef.h>
#include "soc/soc_caps_full.h"
// helper macros to access module attributes
#define SOC_MIPI_DSI_ATTR(_attr) SOC_MODULE_ATTR(MIPI_DSI, _attr)
#ifdef __cplusplus
extern "C" {
#endif
#if SOC_HAS(MIPI_DSI)
/**
* @brief MIPI DSI PHY PLL frequency range
*/
@@ -25,6 +31,14 @@ typedef struct {
extern const soc_mipi_dsi_phy_pll_freq_range_t soc_mipi_dsi_phy_pll_ranges[];
extern const size_t num_of_soc_mipi_dsi_phy_pll_ranges;
typedef struct {
const int brg_irq_id; // interrupt source ID for MIPI DSI Bridge
} soc_mipi_dsi_signal_desc_t;
extern const soc_mipi_dsi_signal_desc_t soc_mipi_dsi_signals[SOC_MIPI_DSI_ATTR(INST_NUM)];
#endif // SOC_HAS(MIPI_DSI)
#ifdef __cplusplus
}
#endif