#ifndef _CEC_INTERFACE_H_ #define _CEC_INTERFACE_H_ #include "drv_types.h" #include #define FRAMEMAX 40 typedef enum { CEC_STATUS_TXSENDING = 0, CEC_STATUS_TXEOMDONE, CEC_STATUS_TXNOARBIT, CEC_STATUS_TXNOACK, CEC_STATUS_TXERROR, CEC_STATUS_TXBUSY, CEC_STATUS_TXINVALIDMSG } CEC_STATUS_t; typedef struct _FRAME_t { UINT8 block_num; UINT8 status; union { UINT8 block[17]; struct { UINT8 dst: 4; UINT8 src: 4; UINT8 opcode; UINT8 param[15]; }; }; } FRAME_t, *pFRAME_t; typedef struct _CEC_MSG_t { BOOL bHotPlugChange; // Hot Plug in/off BOOL bMessageDone; // Message had done FRAME_t txMsg; UINT8 rxBlock_ptr; UINT8 rxFifo_cnt; BOOL bMsg; BOOL bOverwrite; UINT8 Rp; UINT8 Wp; FRAME_t rxMsg[FRAMEMAX]; }CEC_MSG_t,*pCEC_MSG_t; #define FC_SIG 36 #define CEC_SIG 37 #define CEC_MAGIC 'k' #define CEC_REGISTER _IOWR(CEC_MAGIC,0,INT32) #define CEC_DEBUGLOG _IOWR(CEC_MAGIC,1,BOOL) #define CEC_SENDMSG _IO(CEC_MAGIC,2) #define CEC_DEBUG _IO(CEC_MAGIC,3) #define CEC_ReportARCInitiation _IOWR(CEC_MAGIC,4,UINT32) #define CEC_ReportARCTermination _IOWR(CEC_MAGIC,5,UINT32) #define CEC_CECEnable _IOWR(CEC_MAGIC,6,UINT32) #define CEC_ARC_PORT_HPD_TOGGLE _IOWR(CEC_MAGIC,7,UINT32) #endif