mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-10-31 04:59:55 +00:00 
			
		
		
		
	feat(mipi_dsi): update low level functions to include underrun interrupt
This commit is contained in:
		| @@ -14,6 +14,7 @@ | ||||
| #include "hal/lcd_types.h" | ||||
|  | ||||
| #define MIPI_DSI_LL_GET_BRG(bus_id) (bus_id == 0 ? &MIPI_DSI_BRIDGE : NULL) | ||||
| #define MIPI_DSI_LL_EVENT_UNDERRUN  (1 << 0) | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| @@ -35,6 +36,46 @@ static inline void mipi_dsi_brg_ll_enable(dsi_brg_dev_t *dev, bool en) | ||||
|     dev->en.dsi_en = en; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * @brief Enable DSI bridge interrupt for specific event mask | ||||
|  * | ||||
|  * @param dev Pointer to the DSI bridge controller register base address | ||||
|  * @param mask Event mask | ||||
|  * @param enable True to enable, False to disable | ||||
|  */ | ||||
| static inline void mipi_dsi_brg_ll_enable_interrupt(dsi_brg_dev_t *dev, uint32_t mask, bool enable) | ||||
| { | ||||
|     if (enable) { | ||||
|         dev->int_ena.val |= mask; | ||||
|     } else { | ||||
|         dev->int_ena.val &= ~mask; | ||||
|     } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * @brief Clear DSI bridge interrupt for specific event mask | ||||
|  * | ||||
|  * @param dev Pointer to the DSI bridge controller register base address | ||||
|  * @param mask Event mask | ||||
|  */ | ||||
| __attribute__((always_inline)) | ||||
| static inline void mipi_dsi_brg_ll_clear_interrupt_status(dsi_brg_dev_t *dev, uint32_t mask) | ||||
| { | ||||
|     dev->int_clr.val = mask; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * @brief Get interrupt status for DSI bridge | ||||
|  * | ||||
|  * @param dev Pointer to the DSI bridge controller register base address | ||||
|  * @return Interrupt status | ||||
|  */ | ||||
| __attribute__((always_inline)) | ||||
| static inline uint32_t mipi_dsi_brg_ll_get_interrupt_status(dsi_brg_dev_t *dev) | ||||
| { | ||||
|     return dev->int_st.val; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * @brief Set the number of 64-bit words in one dma burst transfer | ||||
|  * | ||||
| @@ -242,7 +283,7 @@ static inline void mipi_dsi_brg_ll_enable_ref_clock(dsi_brg_dev_t *dev, bool en) | ||||
|  * @param dev Pointer to the DSI bridge controller register base address | ||||
|  * @param controller Flow controller | ||||
|  */ | ||||
| static inline void mipi_dsi_brg_ll_set_flow_controller(dsi_brg_dev_t* dev, mipi_dsi_ll_flow_controller_t controller) | ||||
| static inline void mipi_dsi_brg_ll_set_flow_controller(dsi_brg_dev_t *dev, mipi_dsi_ll_flow_controller_t controller) | ||||
| { | ||||
|     dev->dma_flow_ctrl.dsi_dma_flow_controller = controller; | ||||
| } | ||||
| @@ -255,9 +296,21 @@ static inline void mipi_dsi_brg_ll_set_flow_controller(dsi_brg_dev_t* dev, mipi_ | ||||
|  * @param dev Pointer to the DSI bridge controller register base address | ||||
|  * @param number Number of blocks | ||||
|  */ | ||||
| static inline void mipi_dsi_brg_ll_set_multi_block_number(dsi_brg_dev_t* dev, uint32_t number) | ||||
| static inline void mipi_dsi_brg_ll_set_multi_block_number(dsi_brg_dev_t *dev, uint32_t number) | ||||
| { | ||||
|     dev->dma_flow_ctrl.dma_flow_multiblk_num = number; | ||||
|     dev->dma_frame_interval.dma_multiblk_en = number > 1; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * @brief Get the FIFO depth of the DSI bridge | ||||
|  * | ||||
|  * @param dev Pointer to the DSI bridge controller register base address | ||||
|  * @return FIFO depth | ||||
|  */ | ||||
| static inline uint32_t mipi_dsi_brg_ll_get_fifo_depth(dsi_brg_dev_t *dev) | ||||
| { | ||||
|     return dev->fifo_flow_status.raw_buf_depth; | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -266,7 +319,7 @@ static inline void mipi_dsi_brg_ll_set_multi_block_number(dsi_brg_dev_t* dev, ui | ||||
|  * @param dev Pointer to the DSI bridge controller register base address | ||||
|  * @param std YUV-RGB conversion standard | ||||
|  */ | ||||
| static inline void mipi_dsi_brg_ll_set_yuv_convert_std(dsi_brg_dev_t* dev, lcd_yuv_conv_std_t std) | ||||
| static inline void mipi_dsi_brg_ll_set_yuv_convert_std(dsi_brg_dev_t *dev, lcd_yuv_conv_std_t std) | ||||
| { | ||||
|     switch (std) { | ||||
|     case LCD_YUV_CONV_STD_BT601: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 morris
					morris