1 /* 2 * Copyright 2018-2020 NXP 3 * All rights reserved. 4 * 5 * SPDX-License-Identifier: BSD-3-Clause 6 */ 7 8 #ifndef _FSL_LDB_H_ 9 #define _FSL_LDB_H_ 10 11 #include "fsl_common.h" 12 13 /*! 14 * @addtogroup ldb 15 * @{ 16 */ 17 18 /*! @file */ 19 20 /****************************************************************************** 21 * Definitions 22 *****************************************************************************/ 23 24 /*! @name Driver version */ 25 /*@{*/ 26 /*! @brief LDB driver version. */ 27 #define FSL_LDB_DRIVER_VERSION (MAKE_VERSION(2, 0, 2)) 28 /*@}*/ 29 30 /*! @brief LDB output bus format. */ 31 typedef enum _ldb_output_bus 32 { 33 kLDB_OutputRGB666_7Bit_SPWG = 0U, 34 #if (defined(FSL_FEATURE_LDB_COMBO_PHY) && FSL_FEATURE_LDB_COMBO_PHY) 35 kLDB_OutputRGB888_7Bit_SPWG = LDB_PM_CTRL_REG_CH0_DATA_WIDTH_MASK, 36 kLDB_OutputRGB888_7Bit_JEIDA = LDB_PM_CTRL_REG_CH0_DATA_WIDTH_MASK | LDB_PM_CTRL_REG_CH0_BIT_MAPPING_MASK, 37 #else 38 kLDB_OutputRGB888_7Bit_SPWG = LDB_PM_CTRL_REG_CH0_DATA_WIDTH_MASK | LDB_PM_CTRL_REG_DI0_DATA_WIDTH(1), 39 kLDB_OutputRGB888_7Bit_JEIDA = 40 LDB_PM_CTRL_REG_CH0_DATA_WIDTH_MASK | LDB_PM_CTRL_REG_DI0_DATA_WIDTH(1) | LDB_PM_CTRL_REG_CH0_BIT_MAPPING_MASK, 41 kLDB_OutputRGB101010_10Bit_SPWG = LDB_PM_CTRL_REG_CH0_10B_EN_MASK | LDB_PM_CTRL_REG_DI0_DATA_WIDTH(2), 42 kLDB_OutputRGB101010_10Bit_JEIDA = 43 LDB_PM_CTRL_REG_CH0_10B_EN_MASK | LDB_PM_CTRL_REG_DI0_DATA_WIDTH(2) | LDB_PM_CTRL_REG_CH0_BIT_MAPPING_MASK, 44 #endif /* FSL_FEATURE_LDB_COMBO_PHY */ 45 } ldb_output_bus_t; 46 47 /*! @brief LDB input signal priority. */ 48 enum _ldb_input_flag 49 { 50 kLDB_InputVsyncActiveLow = 0U, /*!< VSYNC active low. */ 51 kLDB_InputVsyncActiveHigh = 1U << 0U, /*!< VSYNC active high. */ 52 kLDB_InputHsyncActiveLow = 0U, /*!< HSYNC active low. */ 53 kLDB_InputHsyncActiveHigh = 1U << 1U, /*!< HSYNC active high. */ 54 kLDB_InputDataLatchOnFallingEdge = 0U, /*!< Latch data on falling clock edge. */ 55 kLDB_InputDataLatchOnRisingEdge = 1U << 2U, /*!< Latch data on rising clock edge. */ 56 }; 57 58 /*! @brief LDB channel configuration. */ 59 typedef struct _ldb_channel_config 60 { 61 ldb_output_bus_t outputBus; /*!< Output bus format. */ 62 uint32_t inputFlag; /*!< Input flag, OR'ed value of _ldb_input_flag. */ 63 uint32_t pixelClock_Hz; /*!< Pixel clock in HZ. */ 64 } ldb_channel_config_t; 65 66 /******************************************************************************* 67 * API 68 ******************************************************************************/ 69 70 #ifdef __cplusplus 71 extern "C" { 72 #endif 73 74 /*! 75 * @brief Initializes the LDB module. 76 * 77 * @param base LDB peripheral base address. 78 */ 79 void LDB_Init(LDB_Type *base); 80 81 /*! 82 * @brief De-initializes the LDB module. 83 * 84 * @param base LDB peripheral base address. 85 */ 86 void LDB_Deinit(LDB_Type *base); 87 88 /*! 89 * @brief Initializes the LDB channel. 90 * 91 * @param base LDB peripheral base address. 92 * @param channel Channel index. 93 * @param config Pointer to the configuration. 94 * @return Return kStatus_Success if success. 95 */ 96 status_t LDB_InitChannel(LDB_Type *base, uint8_t channel, const ldb_channel_config_t *config); 97 98 /*! 99 * @brief De-initializes the LDB channel. 100 * 101 * @param base LDB peripheral base address. 102 * @param channel Channel index. 103 */ 104 void LDB_DeinitChannel(LDB_Type *base, uint8_t channel); 105 106 #if defined(__cplusplus) 107 } 108 #endif /*_cplusplus*/ 109 /*@}*/ 110 111 #endif /* _FSL_LDB_H_ */ 112