538 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			538 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /**
 | |
|     MIPI-DSI Controller global header
 | |
| 
 | |
|     MIPI-DSI Controller global header
 | |
| 
 | |
|     @file       dsi.h
 | |
|     @ingroup    mIDrvDisp_DSI
 | |
|     @note       Nothing
 | |
| 
 | |
|     Copyright   Novatek Microelectronics Corp. 2011.  All rights reserved.
 | |
| */
 | |
| #ifndef __DSI_H__
 | |
| #define __DSI_H__
 | |
| 
 | |
| #ifdef __KERNEL__
 | |
| #include "kwrap/type.h"
 | |
| #endif
 | |
| 
 | |
| #if defined(_NVT_FPGA_)
 | |
| //#define _TC680_	1
 | |
| #define _TC18039_	1
 | |
| #endif
 | |
| 
 | |
| #define EFUS_DSI_SUPPORT	1
 | |
| 
 | |
| /**
 | |
|     @addtogroup mIDrvDisp_DSI
 | |
| */
 | |
| //@{
 | |
| 
 | |
| /**
 | |
|     @name   Host to peripheral packet data types
 | |
| 
 | |
| */
 | |
| //@{
 | |
| #define DATA_TYPE_SHORT_READ_NO_PARAM           0x06    ///< packet size short, no parameter.
 | |
| #define DATA_TYPE_GENERIC_SHORT_READ_2_PARAM    0x24    ///< By manufacturer.
 | |
| #define DATA_TYPE_SHORT_WRITE_NO_PARAM          0x05    ///< Short packet write packet size short, no parameter.
 | |
| #define DATA_TYPE_SHORT_WRITE_1_PARAM           0x15    ///< Short packet write packet size short, 1 parameter.
 | |
| #define DATA_TYPE_SET_MAX_RT_PKT_SIZE           0x37    ///< Set Max. return packet size.
 | |
| #define DATA_TYPE_LONG_WRITE                    0x39    ///< Long packet write.
 | |
| #define DATA_TYPE_PACKET_STREAM_RGB_565_PACKED  0x0E    ///< Packet stream RGB 565 packed.
 | |
| #define DATA_TYPE_PACKET_STREAM_RGB_666_PACKED  0x1E    ///< Packet stream RGB 666 packed.
 | |
| #define DATA_TYPE_PACKET_STREAM_RGB_666_LOOSELY 0x2E    ///< Packet stream RGB 666 loosely.
 | |
| #define DATA_TYPE_PACKET_STREAM_RGB_888_PACKED  0x3E    ///< Packet stream RGB 888 packed.
 | |
| //@}
 | |
| 
 | |
| /**
 | |
|     @name   Ultra low power state entry command pattern
 | |
| 
 | |
|     @note for dsi_set_escape_entry()
 | |
| */
 | |
| //@{
 | |
| #define ULPS_ENTRY_CMD_LPDT                     0x87    ///< Low power data transmission
 | |
| #define ULPS_ENTRY_CMD_ULPS                     0x78    ///< Enter ultra Low power state
 | |
| #define ULPS_ENTRY_CMD_RESET                    0x46    ///< reset trigger
 | |
| #define ULPS_ENTRY_CMD_TE                       0xBA    ///< Tearing effect
 | |
| #define ULPS_ENTRY_CMD_ACK                      0x12    ///< Ack
 | |
| //@}
 | |
| 
 | |
| /**
 | |
|     @name   Display command Set (DCS)
 | |
| 
 | |
| */
 | |
| //@{
 | |
| #define DCS_CMD_SW_RESET                        0x01    ///< Power for the display panel is on.
 | |
| #define DCS_CMD_EXIT_SLEEP_MODE                 0x11    ///< Power for the display panel is on.
 | |
| #define DCS_CMD_SET_DISPLAY_ON                  0x29    ///< Show the image on the display device.
 | |
| #define DCS_CMD_SET_ALL_PIX_ON                  0x23    ///< Set all pixel on.
 | |
| #define DCS_CMD_SET_ALL_PIX_OFF                 0x22    ///< Set all pixel off.
 | |
| #define DCS_CMD_MEMORY_ACCESS_CTRL              0x36    ///< Show the image on the display device.
 | |
| #define DCS_CMD_MEMORY_WRITE                    0x2C    ///< memory write.
 | |
| #define DCS_CMD_MEMORY_WRITE_CONT               0x3C    ///< memory write continue.
 | |
| #define DCS_CMD_COLUMN_ADDR_SET                 0x2A    ///< set column address
 | |
| #define DCS_CMD_GAMMA_SET                       0x26    ///< set gamma
 | |
| #define DCS_CMD_NULL_PKT                        0x09    ///< set null packet
 | |
| #define DCS_CMD_READ_ID0                        0x04    ///< read id0
 | |
| #define DCS_CMD_READ_PWR_MODE                   0x0A    ///< read power mode
 | |
| #define DCS_CMD_READ_ID1                        0xDA    ///< read id1
 | |
| #define DCS_CMD_READ_ID2                        0xDB    ///< read id2
 | |
| #define DCS_CMD_READ_ID3                        0xDC    ///< read id3
 | |
| #define DCS_CMD_READ_STATUS                     0xF2    ///< read status
 | |
| #define DCS_CMD_SET_TE_OFF                      0x34    ///< set TE off
 | |
| #define DCS_CMD_SET_TE_ON                       0x35    ///< set TE on
 | |
| //@}
 | |
| 
 | |
| /**
 | |
|     DSI mode select
 | |
| 
 | |
|     @note for dsi_set_config()
 | |
| */
 | |
| typedef enum {
 | |
| 	DSI_MODE_MANUAL_MODE = 0,   ///< Manual Commands Only: Send CMD(s) and auto clear DSI_TX_EN
 | |
| 	DSI_MODE_AUTO_MODE1,        ///< Send single frame only and auto clear DSI_TX_EN at frame end (No commands)
 | |
| 	DSI_MODE_AUTO_MODE2,        ///< Auto Mode 2: FRM1 + FRM2 + ...
 | |
| 	DSI_MODE_AUTO_MODE3,        ///< Auto Mode 3: CMD(s) + FRM1 + CMD(s) + FRM2 + ...
 | |
| 
 | |
| 	DSI_MODE_CNT,
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(DSI_MODESEL)
 | |
| } DSI_MODESEL;
 | |
| 
 | |
| /**
 | |
|     DSI pixel format select
 | |
| 
 | |
|     @note for dsi_set_config()
 | |
| */
 | |
| typedef enum {
 | |
| 	DSI_PIXEL_RGB_565 = 0,      ///< 16 bits / pixel
 | |
| 	DSI_PIXEL_RGB_666_PACKETED, ///< 18 bits / pixel, size should multiple of 9 bytes
 | |
| 	DSI_PIXEL_RGB_666_LOOSELY,  ///< 18 bits / pixel, size should multiple of 3 bytes
 | |
| 	DSI_PIXEL_RGB_888,          ///< 24 bits / pixel
 | |
| 
 | |
| 	DSI_PIXEL_FMT_CNT,
 | |
| 	ENUM_DUMMY4WORD(DSI_PIXEL_FORMATSEL)
 | |
| } DSI_PIXEL_FORMATSEL;
 | |
| 
 | |
| 
 | |
| /**
 | |
|     DSI pixel packet mode select
 | |
| 
 | |
|     @note for dsi_set_config()
 | |
| */
 | |
| typedef enum {
 | |
| 	DSI_PIXMODE_VIDEO_MODE = 0, ///< video   mode (without framebuffer)
 | |
| 	DSI_PIXMODE_COMMAND_MODE,   ///< command mode (with framebuffer)
 | |
| 
 | |
| 	DSI_PIXMODE_CNT,
 | |
| 	ENUM_DUMMY4WORD(DSI_PIXPKT_MODESEL)
 | |
| } DSI_PIXPKT_MODESEL;
 | |
| 
 | |
| 
 | |
| /**
 | |
|     DSI video packet type select
 | |
| 
 | |
|     @note for dsi_set_config()
 | |
| */
 | |
| typedef enum {
 | |
| 	DSI_VIDEOPKT_TYPE_SYNC_PULSE = 0,   ///< Sync pulse
 | |
| 	DSI_VIDEOPKT_TYPE_SYNC_EVENT,       ///< Sync evnet, Burst mode
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(DSI_VIDEOPKT_TYPESEL)
 | |
| } DSI_VIDEOPKT_TYPESEL;
 | |
| 
 | |
| /**
 | |
|     DSI Lane select
 | |
| 
 | |
|     @note for dsi_set_config()
 | |
| */
 | |
| typedef enum {
 | |
| 	DSI_DATA_LANE_0 = 0,        ///< Data lane 0
 | |
| 	DSI_DATA_LANE_1,            ///< Data lane 1
 | |
| 	DSI_DATA_LANE_2,            ///< Data lane 2
 | |
| 	DSI_DATA_LANE_3,            ///< Data lane 3
 | |
| 
 | |
| 	DSI_DATA_LANE_CNT,
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(DSI_LANESEL)
 | |
| } DSI_LANESEL;
 | |
| 
 | |
| 
 | |
| /**
 | |
|     DSI CLK ULP select
 | |
| 
 | |
|     @note for dsi_set_config()
 | |
| */
 | |
| typedef enum {
 | |
| 	DSI_ULP_EXIT = 0,           ///< Clock lane exit ULPS
 | |
| 	DSI_ULP_ENTER = 1,          ///< Clock lane enter ULPS
 | |
| 	DSI_ULP_SEL_CNT,
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(DSI_ULP_SEL)
 | |
| } DSI_ULP_SEL;
 | |
| 
 | |
| 
 | |
| /**
 | |
|     DSI escape control operation select
 | |
| 
 | |
|     @note for dsi_set_config()
 | |
| */
 | |
| typedef enum {
 | |
| 	DSI_ESCAPE_TRIGGER = 0,      ///< Escape command trigger
 | |
| 	DSI_ESCAPE_START,            ///< Escape command start procedure
 | |
| 	DSI_ESCAPE_STOP,             ///< Escape command stop procedure
 | |
| 	ENUM_DUMMY4WORD(DSI_ESC_OP)
 | |
| } DSI_ESC_OP;
 | |
| 
 | |
| 
 | |
| /**
 | |
|     DSI escape control operation stop action selection
 | |
| 
 | |
|     @note for dsi_set_config()
 | |
| */
 | |
| typedef enum {
 | |
| 	DSI_SET_ESC_NOT_STOP = 0x0,         ///< Escape command not stop
 | |
| 	DSI_SET_ESC_STOP_WITH_ESC_CMD,      ///< Escape command stop but not send exit cmd
 | |
| 	DSI_SET_ESC_STOP_WITHOUT_ESC_CMD,   ///< Escape command stopp and send exit cmd
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(DSI_CFG_ESCAPE_CMD_STOP_TYPE)
 | |
| } DSI_CFG_ESCAPE_CMD_STOP_TYPE;
 | |
| 
 | |
| /**
 | |
|     DSI  input source
 | |
| 
 | |
|     DSI  input source, used for dsi_set_config(DSI_CONFIG_ID_SRC, SRC_IDE).
 | |
| */
 | |
| typedef enum {
 | |
| 	DSI_SRC_IDE = 0x0,  ///< From IDE
 | |
| 	DSI_SRC_IDE2,       ///< From IDE2
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(DSI_SRC)
 | |
| } DSI_SRC;
 | |
| 
 | |
| 
 | |
| /**
 | |
|     DSI chip version
 | |
| 
 | |
|     @note for dsi_get_config()
 | |
| */
 | |
| #define DSI_DRV_CHIPVER_A           0x0
 | |
| #define DSI_DRV_CHIPVER_B           0x1
 | |
| #define DSI_DRV_CHIPVER_C           0x2
 | |
| 
 | |
| /**
 | |
|     DSI Command control
 | |
| 
 | |
|     Set DSI Command control
 | |
| */
 | |
| typedef struct {
 | |
| 	UINT32  ui_data_type;                  ///< data type
 | |
| 	UINT32  ui_virtual_channel;            ///< virtual channel id
 | |
| 
 | |
| 	UINT32  ui_packet_type;                ///< packet type
 | |
| 	UINT32  ui_dcs_cmd;                    ///< dcs commnd
 | |
| 	UINT8   *ui_param;                     ///< point to parameter
 | |
| 	UINT32  ui_param_cnt;                  ///< parmeter count
 | |
| } DSI_CMD_CTRL_PARAM, *PDSI_CMD_CTRL_PARAM;
 | |
| 
 | |
| /**
 | |
|     DSI Command R/W control
 | |
| 
 | |
|     Set DSI Command R/W control
 | |
| */
 | |
| typedef struct {
 | |
| 	UINT32                  ui_cmd_no;     ///< commnad number
 | |
| 	BOOL                    b_bta_en;      ///< BTA enable/disable
 | |
| 	BOOL                    b_bta_only;    ///< issue BTA only
 | |
| 	UINT32                  ui_sram_ofs;   ///< set the sram offset
 | |
| 	BOOL                    b_eot_en;      ///< set the EOT enable or not
 | |
| 	PDSI_CMD_CTRL_PARAM     p_dsi_cmd_ctx; ///< set commnd control
 | |
| } DSI_CMD_RW_CTRL_PARAM, *PDSI_CMD_RW_CTRL_PARAM;
 | |
| 
 | |
| /**
 | |
|     DSI Functional Configuration Selection
 | |
| 
 | |
|     This definition is used in dsi_set_config()/dsi_get_config() specify which of the dsi function is selected
 | |
|     to assign new configurations.
 | |
| */
 | |
| typedef enum {
 | |
| 	DSI_CONFIG_ID_MODE,         ///< Configure DSI mode
 | |
| 	///< @note for DSI_CFG_MODE_SEL
 | |
| 	///< Context can be any of:
 | |
| 	///< - @b DSI_MODE_MANUAL_MODE  : Manual Commands Only: Send CMD(s) and auto clear DSI_TX_EN
 | |
| 	///< - @b DSI_MODE_AUTO_MODE1   : Send single frame only and auto clear DSI_TX_EN at frame end (No commands)
 | |
| 	///< - @b DSI_MODE_AUTO_MODE2   : Auto Mode 2: FRM1 + FRM2 + ...
 | |
| 	///< - @b DSI_MODE_AUTO_MODE3   : Auto Mode 3: CMD(s) + FRM1 + CMD(s) + FRM2 + ...
 | |
| 
 | |
| 	DSI_CONFIG_ID_PIXEL_FMT,    ///< Configure DSI pinxel format. Use DSI_PIXEL_RGB_888/DSI_PIXEL_RGB_565/DSI_PIXEL_RGB_666_PACKETED/DSI_PIXEL_RGB_666_LOOSELY
 | |
| 	DSI_CONFIG_ID_PIXPKT_MODE,  ///< Configure DSI pinxel mode.
 | |
| 	DSI_CONFIG_ID_VDOPKT_TYPE,  ///< Configure DSI video packet type.
 | |
| 	DSI_CONFIG_ID_ECC_CHK_EN,   ///< Configure DSI Ecc check enable/disable.
 | |
| 	DSI_CONFIG_ID_FRMEND_BTA_EN,  ///< Configure DSI frameend BTA enable/disable.
 | |
| 	DSI_CONFIG_ID_EOT_PKT_EN,   ///< Configure DSI EOT packet enable/disable
 | |
| 	DSI_CONFIG_ID_BLANK_CTRL,   ///< Configure DSI  blank control
 | |
| 	DSI_CONFIG_ID_INTER_PKT_LP, ///< Configure DSI inter-packet enter LP or not.
 | |
| 	DSI_CONFIG_ID_CLK_LP_CTRL,  ///< Configure DSI clock enter LP or not.
 | |
| 	DSI_CONFIG_ID_SYNC_EN,      ///< Configure DSI sync enable/disable.
 | |
| 	DSI_CONFIG_ID_SYNC_SRC,     ///< Configure DSI sync source.
 | |
| 	DSI_CONFIG_ID_SYNC_WITH_SETTEON,  ///< Configure DSI sync with set te on.
 | |
| 	DSI_CONFIG_ID_SYNC_WITH_SETTEON_RTY, ///< Configure DSI sync with set te on retry.
 | |
| 	DSI_CONFIG_ID_RGB_SWAP,     ///< Configure DSI RGB swap
 | |
| 	DSI_CONFIG_ID_RGB_BITFLIP,  ///< Configure DSI  RGB bit swap
 | |
| 	DSI_CONFIG_ID_SYNC_WITH_SETTEON_RTY_TWICEBTA,  ///< Configure DSI sync with set te on retry and BTA twice.
 | |
| 	DSI_CONFIG_ID_DATALANE_NO,  ///< Configure DSI  data lane number.
 | |
| 	DSI_CONFIG_ID_SRC,          ///< Configure DSI souce from IDE or IDE2
 | |
| 
 | |
| 	DSI_CONFIG_ID_PIXPKT_PH_DT, ///< Configure DSI pixel Packet header DataType.
 | |
| 	DSI_CONFIG_ID_PIXPKT_PH_VC, ///< Configure DSI pixel Packet header VirtualChannel.
 | |
| 	DSI_CONFIG_ID_DCS_CT0,      ///< Configure DSI DSC command, this field would be inserted in front of the first pixel packet.
 | |
| 	DSI_CONFIG_ID_DCS_CT1,      ///< Configure DSI DSC command,  this field would be inserted in front of the pixel packet except the first pixel packet.
 | |
| 
 | |
| 	DSI_CONFIG_ID_SYNCEVT_SLICE_NO, ///< Configure DSI sync event slice number.
 | |
| 	DSI_CONFIG_ID_SYNCEVT_NULL_LEN, ///< Configure DSI sync even null length. (Byte count)
 | |
| 
 | |
| 	DSI_CONFIG_ID_VSA,          ///< Configure DSI vertical sync active timing.
 | |
| 	DSI_CONFIG_ID_VTOTAL,       ///< Configure DSI vertical total timing.
 | |
| 
 | |
| 	DSI_CONFIG_ID_VVALID_START, ///< Configure DSI vertical valid start timing.
 | |
| 	DSI_CONFIG_ID_VVALID_END,   ///< Configure DSI vertical valid end timing.
 | |
| 
 | |
| 	DSI_CONFIG_ID_HSA,          ///< Configure DSI horizontal sync active timing.
 | |
| 	DSI_CONFIG_ID_BLLP,         ///< Configure DSI BLLP period, this period can trasmit HS packets or entering LP11.
 | |
| 
 | |
| 	DSI_CONFIG_ID_HBP,          ///< Configure DSI horizontal back porch period.
 | |
| 	DSI_CONFIG_ID_HFP,          ///< Configure DSI horizontal front  porch period.
 | |
| 
 | |
| 	DSI_CONFIG_ID_HACT,         ///< Configure DSI horizontal active period.
 | |
| 
 | |
| 	DSI_CONFIG_ID_TLPX,         ///< Configure DSI LTPX timing.
 | |
| 	DSI_CONFIG_ID_BTA_TA_GO,    ///< Configure DSI TA_GO timing.
 | |
| 	DSI_CONFIG_ID_BTA_TA_SURE,  ///< Configure DSI TA_SURE timing.
 | |
| 	DSI_CONFIG_ID_BTA_TA_GET,   ///< Configure DSI TA_GET timing.
 | |
| 	DSI_CONFIG_ID_THS_PREPARE,  ///< Configure DSI THS_PREPARE timing.
 | |
| 	DSI_CONFIG_ID_THS_ZERO,     ///< Configure DSI THS_ZERO timing.
 | |
| 	DSI_CONFIG_ID_THS_TRAIL,    ///< Configure DSI THS_TRAIL timing.
 | |
| 	DSI_CONFIG_ID_THS_EXIT,     ///< Configure DSI THS_EXIT timing.
 | |
| 	DSI_CONFIG_ID_TWAKEUP,      ///< Configure DSI wakeup timing.
 | |
| 	DSI_CONFIG_ID_TCLK_PREPARE, ///< Configure DSI TCLK_PREPARE timing.
 | |
| 	DSI_CONFIG_ID_TCLK_ZERO,    ///< Configure DSI TCLK_ZERO timing.
 | |
| 	DSI_CONFIG_ID_TCLK_POST,    ///< Configure DSI TCLK_POST timing.
 | |
| 	DSI_CONFIG_ID_TCLK_PRE,     ///< Configure DSI TCLK_PRE timing.
 | |
| 	DSI_CONFIG_ID_TCLK_TRAIL,   ///< Configure DSI TCLK_TRAIL timing.
 | |
| 
 | |
| 	DSI_CONFIG_ID_BTA_TMOUT_VAL,      ///< Configure DSI BTA timeout.
 | |
| 	DSI_CONFIG_ID_BTA_HANDSK_TMOUT_VAL,  ///< Configure DSI BTA handshake timeout.
 | |
| 
 | |
| 	DSI_CONFIG_ID_SYNC_POL,     ///< Configure DSI SYNC polarity.
 | |
| 	DSI_CONFIG_ID_SYNC_SEL,     ///< Configure DSI SYNC faster or slower than peripheral selection.
 | |
| 	DSI_CONFIG_ID_SYNC_DLY_CNT, ///< Configure DSI SYNC delay count.
 | |
| 	DSI_CONFIG_ID_TE_BTA_INTERVAL, ///< Configure DSI TE BAT issue interval.
 | |
| 
 | |
| 	DSI_CONFIG_ID_PHY_DRVING,   ///< Configure DSI PHY driving
 | |
| 
 | |
| 	DSI_CONFIG_ID_CLK_PHASE_OFS,   ///< Configure DSI PHY clock phase offset.
 | |
| 	DSI_CONFIG_ID_DAT0_PHASE_OFS,  ///< Configure DSI PHY data0 phase offset.
 | |
| 	DSI_CONFIG_ID_DAT1_PHASE_OFS,  ///< Configure DSI PHY data1 phase offset.
 | |
| 	DSI_CONFIG_ID_DAT2_PHASE_OFS,  ///< Configure DSI PHY data2 phase offset.
 | |
| 	DSI_CONFIG_ID_DAT3_PHASE_OFS,  ///< Configure DSI PHY data3 phase offset.
 | |
| 	DSI_CONFIG_ID_PHASE_DELAY_ENABLE_OFS, ///< Configure DSI PHY phase delay enable.
 | |
| 
 | |
| 	//DSI_CFG_ID_FREQ
 | |
| 	DSI_CONFIG_ID_FREQ,         ///< DSI module target clock (Unit: Hz)
 | |
| 	DSI_CONFIG_ID_LPFREQ,       ///< DSI module LP clock (Unit: Hz)
 | |
| 	DSI_CONFIG_ID_IDEHVALID,    ///< DSI module of IDE HVALID setting
 | |
| 
 | |
| 	DSI_CONFIG_ID_LANSEL_D0,    ///< Configure DSI DAT0 Lane mapping
 | |
| 	DSI_CONFIG_ID_LANSEL_D1,    ///< Configure DSI DAT1 Lane mapping
 | |
| 	DSI_CONFIG_ID_LANSEL_D2,    ///< Configure DSI DAT2 Lane mapping
 | |
| 	DSI_CONFIG_ID_LANSEL_D3,    ///< Configure DSI DAT3 Lane mapping
 | |
| 
 | |
| 	DSI_CONFIG_ID_PHY_LP_RX_DAT0,///< Configure DSI LP RX DAT0 enable/disable
 | |
| 	DSI_CONFIG_ID_BTA_VALUE,	///< Read back SRAM value
 | |
| 	DSI_CONFIG_ID_CHIP_VER,     ///< Get DSI chip version
 | |
| 	ENUM_DUMMY4WORD(DSI_CONFIG_ID)
 | |
| } DSI_CONFIG_ID;
 | |
| 
 | |
| 
 | |
| #if 0
 | |
| typedef enum {
 | |
| 	DSI_CFG_MODE_CMD_ONLY,
 | |
| 	DSI_CFG_MODE_SINGLE_FRM,
 | |
| 	DSI_CFG_MODE_MULTI_FRM,
 | |
| 	DSI_CFG_MODE_MULTI_CMD_FRM,
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(DSI_CFG_MODE_SEL)
 | |
| } DSI_CFG_MODE_SEL;
 | |
| 
 | |
| 
 | |
| typedef enum {
 | |
| 	DSI_CFG_PIXEL_FMT_RGB565,
 | |
| 	DSI_CFG_PIXEL_FMT_RGB666_PACKED,
 | |
| 	DSI_CFG_PIXEL_FMT_RGB666_LOOSELY,
 | |
| 	DSI_CFG_PIXEL_FMT_RGB888,
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(DSI_CFG_PIXEL_FMT_SEL)
 | |
| } DSI_CFG_PIXEL_FMT_SEL;
 | |
| 
 | |
| 
 | |
| typedef enum {
 | |
| 	DSI_CFG_PIXPKT_VIDEO_MODE,
 | |
| 	DSI_CFG_PIXPKT_COMMAND_MODE,
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(DSI_CFG_PIXPKT_MODE_SEL)
 | |
| } DSI_CFG_PIXPKT_MODE_SEL;
 | |
| 
 | |
| 
 | |
| typedef enum {
 | |
| 	DSI_CFG_VDOPKT_SYNCPULSE_TYPE,
 | |
| 	DSI_CFG_VDOPKT_SYNCEVENT_TYPE,
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(DSI_CFG_VDOPKT_TYPE_SEL)
 | |
| } DSI_CFG_VDOPKT_TYPE_SEL;
 | |
| #endif
 | |
| 
 | |
| // -----------------------------------------------------------------------------
 | |
| // DSI Command RW control (0x2C)
 | |
| // -----------------------------------------------------------------------------
 | |
| /**
 | |
|     DSI command RW control configuration
 | |
| 
 | |
|     @note for dsi_set_cmd_rw_ctrl()
 | |
| */
 | |
| typedef enum {
 | |
| 	DSI_SET_CMD_NUMBER = 0x0,           ///< The number of (DSI_CMD_NUMBER+1) commands would be sent in DSI_MODE= 0/3/4.
 | |
| 	///< Context is
 | |
| 	///< - @b UINT32 : 1 - 8
 | |
| 	DSI_SET_BTA_EN,                     ///< Enable the Bus Turn Around (BTA) process
 | |
| 	///< after the final commands are sent.
 | |
| 	///< The READ command should put at the final commands,
 | |
| 	///< and the data would be read back after BTA.
 | |
| 	///< This field is valid for DSI_MODE = 0/3/4.
 | |
| 	///< Context is
 | |
| 	///< - @b UINT32 : 1 : Enable
 | |
| 	///< - @b UINT32 : 0 : Disable
 | |
| 	DSI_SET_BTA_ONLY,                   ///< Context is
 | |
| 	///< - @b UINT32 : 1 : Issue BTA only
 | |
| 	///< - @b UINT32 : 0 : Disable
 | |
| 	DSI_SET_SRAM_READ_OFS,              ///< Context is
 | |
| 	///< - @b UINT32 : Sram offset 0~255 (256 bytes total)
 | |
| 	DSI_GET_SRAM_READ_CNT,              ///< Context is
 | |
| 	///< - @b UINT32*: Sram offset 0~256
 | |
| 
 | |
| 
 | |
| 	DSI_RW_CMD_CTRL_CNT,
 | |
| 	ENUM_DUMMY4WORD(DSI_CFG_CMD_RW_CTRL)
 | |
| } DSI_CFG_CMD_RW_CTRL;
 | |
| 
 | |
| 
 | |
| // -----------------------------------------------------------------------------
 | |
| // DSI Command Register 0,1 (0x30,0x34)
 | |
| // -----------------------------------------------------------------------------
 | |
| /**
 | |
|     DSI packet type
 | |
| 
 | |
|     @note for dsi_set_cmd_register()
 | |
| */
 | |
| //@{
 | |
| typedef enum {
 | |
| 	DSI_SHORT_PACKET = 0x0,             ///< This DSI short packet
 | |
| 	DSI_LONG_PACKET,                    ///< This DSI long packet
 | |
| 
 | |
| 	DSI_PT_CNT,
 | |
| 	ENUM_DUMMY4WORD(DSI_PACKET_TYPE)
 | |
| } DSI_PACKET_TYPE;
 | |
| //@}
 | |
| 
 | |
| /**
 | |
|     DSI command register set
 | |
| 
 | |
|     @note for dsi_set_cmd_register()
 | |
| */
 | |
| typedef enum {
 | |
| 	DSI_CMD_REG0 = 0x0,                 ///< Command register 0
 | |
| 	DSI_CMD_REG1,                       ///< Command register 1
 | |
| 	DSI_CMD_REG2,                       ///< Command register 2
 | |
| 	DSI_CMD_REG3,                       ///< Command register 3
 | |
| 	DSI_CMD_REG4,                       ///< Command register 4
 | |
| 	DSI_CMD_REG5,                       ///< Command register 5
 | |
| 	DSI_CMD_REG6,                       ///< Command register 6
 | |
| 	DSI_CMD_REG7,                       ///< Command register 7
 | |
| 
 | |
| 	DSI_CMD_SET_CNT,
 | |
| 	ENUM_DUMMY4WORD(DSI_CMD_REG_NUM)
 | |
| } DSI_CMD_REG_NUM;
 | |
| 
 | |
| 
 | |
| /**
 | |
|     DSI command register configuration
 | |
| 
 | |
|     @note for dsi_set_cmd_register()
 | |
| */
 | |
| typedef enum {
 | |
| 	DSI_SET_CMD_DT = 0x0,                   // The command n Data Type in the Data Identification (DI) field of the DSI packet header.
 | |
| 	DSI_SET_CMD_VC,                         // The virtual channel ID for the command n
 | |
| 	DSI_SET_CMD_WC,                         // If the command n is the Short Packet, this field is the command data for this short packet command.
 | |
| 	// If the command n is the Long Packet, this field is the length for this long packet command.
 | |
| 	// The long packet command data is stored in the SRAM in serially by commands. The command data n is from the SRAM address offset 0.
 | |
| 
 | |
| 	DSI_SET_CMD_DATA = DSI_SET_CMD_WC,
 | |
| 	DSI_SET_CMD_PT,                         // The Packet Type of the command n.
 | |
| 	// 0: Short Packet
 | |
| 	// 1: Long Packet
 | |
| 	ENUM_DUMMY4WORD(DSI_CFG_CMD_REG)
 | |
| } DSI_CFG_CMD_REG;
 | |
| 
 | |
| #ifdef __KERNEL__
 | |
| extern void 	dsi_create_resource(void);
 | |
| extern void 	dsi_release_resource(void);
 | |
| extern void 	dsi_set_base_addr(UINT32 addr);
 | |
| extern void		dsi_isr(void);
 | |
| #endif
 | |
| extern ER       dsi_open(void);
 | |
| extern ER       dsi_close(void);
 | |
| extern ER       dsi_reset(void);
 | |
| extern BOOL     dsi_is_opened(void);
 | |
| extern ER       dsi_set_tx_en(BOOL b_en, BOOL b_wait);
 | |
| extern ER       dsi_wait_tx_done(void);
 | |
| extern ER       dsi_wait_tx_done_polling_mode(void);
 | |
| extern ER       dsi_wait_frame_end(void);
 | |
| extern ER       dsi_issue_bta(void);
 | |
| extern ER       dsi_ulps_trigger(void);
 | |
| extern UINT32   dsi_get_error_report(void);
 | |
| extern ER       dsi_set_lps_clock_sel(DSI_ULP_SEL ulp_sel);
 | |
| 
 | |
| 
 | |
| extern ER       dsi_set_hs_dcs_command(PDSI_CMD_RW_CTRL_PARAM p_dcs_ctx);
 | |
| extern ER 		dsi_set_hs_dcs_command_BTA(PDSI_CMD_RW_CTRL_PARAM pDcsCtx);
 | |
| extern ER       dsi_set_config(DSI_CONFIG_ID cfg_id, UINT32 config_value);
 | |
| extern ER       dsi_set_cmd_rw_ctrl(DSI_CFG_CMD_RW_CTRL cmd, UINT32 param);
 | |
| extern ER       dsi_set_lp_dcs_command(DSI_LANESEL data_lane, UINT32 lp_cmd);
 | |
| extern ER       dsi_set_escape_entry(DSI_LANESEL data_lane, UINT32 entry_cmd, BOOL b_stop);
 | |
| extern ER       dsi_set_escape_control(DSI_LANESEL data_lane, DSI_ESC_OP esc_op, BOOL b_en);
 | |
| extern ER       dsi_set_cmd_register(DSI_CMD_REG_NUM cmd_reg_no, DSI_CFG_CMD_REG cmd_reg, UINT32 param);
 | |
| extern ER       dsi_set_escape_transmission(DSI_LANESEL data_lane, UINT32 cmd, DSI_CFG_ESCAPE_CMD_STOP_TYPE exit);
 | |
| extern BOOL     dsi_get_phase_delay_info(UINT32 *p_clk_phase, UINT32 *p_d0_phase, UINT32 *p_d1_phase);
 | |
| 
 | |
| extern UINT32   dsi_get_config(DSI_CONFIG_ID cfg_id);
 | |
| 
 | |
| extern void     dsi_dump_info(void);
 | |
| /* dsi int*/
 | |
| #if defined(__FREERTOS)
 | |
| #if defined(_TC680_) && defined(_NVT_FPGA_)
 | |
| extern void dsi_tc680_init(void);
 | |
| extern ER dsi_tc680_writereg(UINT32 ui_offset, UINT32 ui_value);
 | |
| extern ER dsi_tc680_readreg(UINT32 ui_offset, UINT32 *pui_value);
 | |
| #endif
 | |
| #if defined(_TC18039_) && defined(_NVT_FPGA_)
 | |
| extern void dsi_tc18039_init(void);
 | |
| #endif
 | |
| extern ER dsi_write_phy_reg(UINT32 uiOffset, UINT32 uiValue);
 | |
| extern ER dsi_read_phy_reg(UINT32 uiOffset, UINT32 *puiValue);
 | |
| #endif
 | |
| 
 | |
| 
 | |
| //@}
 | |
| 
 | |
| #endif
 | 
