1*53ee8cc1Swenshuai.xi #ifndef _DRV_HWI2C_V2_H_ 2*53ee8cc1Swenshuai.xi #define _DRV_HWI2C_V2_H_ 3*53ee8cc1Swenshuai.xi 4*53ee8cc1Swenshuai.xi #ifdef __cplusplus 5*53ee8cc1Swenshuai.xi extern "C" 6*53ee8cc1Swenshuai.xi { 7*53ee8cc1Swenshuai.xi #endif 8*53ee8cc1Swenshuai.xi 9*53ee8cc1Swenshuai.xi 10*53ee8cc1Swenshuai.xi //#include "drvHWI2C.h" 11*53ee8cc1Swenshuai.xi #include "UFO.h" 12*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 13*53ee8cc1Swenshuai.xi // Defines 14*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 15*53ee8cc1Swenshuai.xi // below for utopia20 structure 16*53ee8cc1Swenshuai.xi 17*53ee8cc1Swenshuai.xi typedef enum { 18*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_Init, 19*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_Start, 20*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_Stop, 21*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_GetPortIndex, 22*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_SelectPort, 23*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_SetClk, 24*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_SetReadMode, 25*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_WriteByte, 26*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_WriteBytes, 27*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_ReadByte, 28*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_ReadBytes, 29*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_SelectPort1, 30*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_SetClkP1, 31*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_SetReadModeP1, 32*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_WriteByteP1, 33*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_WriteBytesP1, 34*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_ReadByteP1, 35*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_ReadBytesP1, 36*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_SetDbgLevel, 37*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_GetLibVer, 38*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_GetStatus, 39*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_GetInfo, 40*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_ConfigDelay, 41*53ee8cc1Swenshuai.xi MDrv_CMD_HWI2C_SetPowerState 42*53ee8cc1Swenshuai.xi } eHWI2CIoctlOpt; 43*53ee8cc1Swenshuai.xi 44*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_212) || defined(UFO_PUBLIC_HEADER_300) || defined(UFO_PUBLIC_HEADER_500) || defined(UFO_PUBLIC_HEADER_500_3) 45*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_Init 46*53ee8cc1Swenshuai.xi { 47*53ee8cc1Swenshuai.xi HWI2C_UnitCfg *psCfg; 48*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_Init, *PHWI2C_PRIVATE_PARAM_Init; 49*53ee8cc1Swenshuai.xi 50*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_GetPortIndex 51*53ee8cc1Swenshuai.xi { 52*53ee8cc1Swenshuai.xi HWI2C_PORT ePort; 53*53ee8cc1Swenshuai.xi MS_U8* pu8Port; 54*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_GetPortIndex, *PHWI2C_PRIVATE_PARAM_GetPortIndex; 55*53ee8cc1Swenshuai.xi 56*53ee8cc1Swenshuai.xi typedef struct _HWI2C_PRIVATE_PARAM_SelectPort 57*53ee8cc1Swenshuai.xi { 58*53ee8cc1Swenshuai.xi HWI2C_PORT ePort; 59*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_SelectPort, *PHWI2C_PRIVATE_PARAM_SelectPort; 60*53ee8cc1Swenshuai.xi 61*53ee8cc1Swenshuai.xi typedef struct _HWI2C_PRIVATE_PARAM_SetClk 62*53ee8cc1Swenshuai.xi { 63*53ee8cc1Swenshuai.xi HWI2C_CLKSEL eClk; 64*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_SetClk, *PHWI2C_PRIVATE_PARAM_SetClk; 65*53ee8cc1Swenshuai.xi 66*53ee8cc1Swenshuai.xi typedef struct _HWI2C_PRIVATE_PARAM_SetReadMode 67*53ee8cc1Swenshuai.xi { 68*53ee8cc1Swenshuai.xi HWI2C_ReadMode eReadMode; 69*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_SetReadMode, *PHWI2C_PRIVATE_PARAM_SetReadMode; 70*53ee8cc1Swenshuai.xi 71*53ee8cc1Swenshuai.xi typedef struct _HWI2C_PRIVATE_PARAM_WriteByte 72*53ee8cc1Swenshuai.xi { 73*53ee8cc1Swenshuai.xi MS_U16 u16SlaveCfg; 74*53ee8cc1Swenshuai.xi MS_U8 u8RegAddr; 75*53ee8cc1Swenshuai.xi MS_U8 u8Data; 76*53ee8cc1Swenshuai.xi MS_BOOL bReturn; 77*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_WriteByte, *PHWI2C_PRIVATE_PARAM_WriteByte; 78*53ee8cc1Swenshuai.xi 79*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_WriteBytes 80*53ee8cc1Swenshuai.xi { 81*53ee8cc1Swenshuai.xi MS_U16 u16SlaveCfg; 82*53ee8cc1Swenshuai.xi MS_U32 uAddrCnt; 83*53ee8cc1Swenshuai.xi MS_U8 *pRegAddr; 84*53ee8cc1Swenshuai.xi MS_U32 uSize; 85*53ee8cc1Swenshuai.xi MS_U8 *pData; 86*53ee8cc1Swenshuai.xi MS_BOOL bReturn; 87*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_WriteBytes, *PHWI2C_PRIVATE_PARAM_WriteBytes; 88*53ee8cc1Swenshuai.xi 89*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_ReadByte 90*53ee8cc1Swenshuai.xi { 91*53ee8cc1Swenshuai.xi MS_U16 u16SlaveCfg; 92*53ee8cc1Swenshuai.xi MS_U8 u8RegAddr; 93*53ee8cc1Swenshuai.xi MS_U8 *pData; 94*53ee8cc1Swenshuai.xi MS_BOOL bReturn; 95*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_ReadByte, *PHWI2C_PRIVATE_PARAM_ReadByte; 96*53ee8cc1Swenshuai.xi 97*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_ReadBytes 98*53ee8cc1Swenshuai.xi { 99*53ee8cc1Swenshuai.xi MS_U16 u16SlaveCfg; 100*53ee8cc1Swenshuai.xi MS_U32 uAddrCnt; 101*53ee8cc1Swenshuai.xi MS_U8 *pRegAddr; 102*53ee8cc1Swenshuai.xi MS_U32 uSize; 103*53ee8cc1Swenshuai.xi MS_U8 *pData; 104*53ee8cc1Swenshuai.xi MS_BOOL bReturn; 105*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_ReadBytes, *PHWI2C_PRIVATE_PARAM_ReadBytes; 106*53ee8cc1Swenshuai.xi 107*53ee8cc1Swenshuai.xi typedef struct _HWI2C_PRIVATE_PARAM_SelectPort1 108*53ee8cc1Swenshuai.xi { 109*53ee8cc1Swenshuai.xi HWI2C_PORT ePort; 110*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_SelectPort1, *PHWI2C_PRIVATE_PARAM_SelectPort1; 111*53ee8cc1Swenshuai.xi 112*53ee8cc1Swenshuai.xi typedef struct _HWI2C_PRIVATE_PARAM_SetClkP1 113*53ee8cc1Swenshuai.xi { 114*53ee8cc1Swenshuai.xi HWI2C_CLKSEL eClk; 115*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_SetClkP1, *PHWI2C_PRIVATE_PARAM_SetClkP1; 116*53ee8cc1Swenshuai.xi 117*53ee8cc1Swenshuai.xi typedef struct _HWI2C_PRIVATE_PARAM_SetReadModeP1 118*53ee8cc1Swenshuai.xi { 119*53ee8cc1Swenshuai.xi HWI2C_ReadMode eReadMode; 120*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_SetReadModeP1, *PHWI2C_PRIVATE_PARAM_SetReadModeP1; 121*53ee8cc1Swenshuai.xi 122*53ee8cc1Swenshuai.xi typedef struct _HWI2C_PRIVATE_PARAM_WriteByteP1 123*53ee8cc1Swenshuai.xi { 124*53ee8cc1Swenshuai.xi MS_U16 u16SlaveCfg; 125*53ee8cc1Swenshuai.xi MS_U8 u8RegAddr; 126*53ee8cc1Swenshuai.xi MS_U8 u8Data; 127*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_WriteByteP1, *PHWI2C_PRIVATE_PARAM_WriteByteP1; 128*53ee8cc1Swenshuai.xi 129*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_WriteBytesP1 130*53ee8cc1Swenshuai.xi { 131*53ee8cc1Swenshuai.xi MS_U16 u16SlaveCfg; 132*53ee8cc1Swenshuai.xi MS_U32 uAddrCnt; 133*53ee8cc1Swenshuai.xi MS_U8 *pRegAddr; 134*53ee8cc1Swenshuai.xi MS_U32 uSize; 135*53ee8cc1Swenshuai.xi MS_U8 *pData; 136*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_WriteBytesP1, *PHWI2C_PRIVATE_PARAM_WriteBytesP1; 137*53ee8cc1Swenshuai.xi 138*53ee8cc1Swenshuai.xi 139*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_ReadByteP1 140*53ee8cc1Swenshuai.xi { 141*53ee8cc1Swenshuai.xi MS_U16 u16SlaveCfg; 142*53ee8cc1Swenshuai.xi MS_U8 u8RegAddr; 143*53ee8cc1Swenshuai.xi MS_U8 *pData; 144*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_ReadByteP1, *PHWI2C_PRIVATE_PARAM_ReadByteP1; 145*53ee8cc1Swenshuai.xi 146*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_ReadBytesP1 147*53ee8cc1Swenshuai.xi { 148*53ee8cc1Swenshuai.xi MS_U16 u16SlaveCfg; 149*53ee8cc1Swenshuai.xi MS_U32 uAddrCnt; 150*53ee8cc1Swenshuai.xi MS_U8 *pRegAddr; 151*53ee8cc1Swenshuai.xi MS_U32 uSize; 152*53ee8cc1Swenshuai.xi MS_U8 *pData; 153*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_ReadBytesP1, *PHWI2C_PRIVATE_PARAM_ReadBytesP1; 154*53ee8cc1Swenshuai.xi 155*53ee8cc1Swenshuai.xi typedef struct _HWI2C_PRIVATE_PARAM_SetDbgLevel 156*53ee8cc1Swenshuai.xi { 157*53ee8cc1Swenshuai.xi HWI2C_DbgLv eLevel; 158*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_SetDbgLevel, *PHWI2C_PRIVATE_PARAM_SetDbgLevel; 159*53ee8cc1Swenshuai.xi 160*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_GetLibVer 161*53ee8cc1Swenshuai.xi { 162*53ee8cc1Swenshuai.xi const MSIF_Version **ppVersion; 163*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_GetLibVer, *PHWI2C_PRIVATE_PARAM_GetLibVer; 164*53ee8cc1Swenshuai.xi 165*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_GetStatus 166*53ee8cc1Swenshuai.xi { 167*53ee8cc1Swenshuai.xi HWI2C_Status *pStatus; 168*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_GetStatus, *PHWI2C_PRIVATE_PARAM_GetStatus; 169*53ee8cc1Swenshuai.xi 170*53ee8cc1Swenshuai.xi #if 0 171*53ee8cc1Swenshuai.xi typedef struct _HWI2C_PRIVATE_PARAM_SetPowerState 172*53ee8cc1Swenshuai.xi { 173*53ee8cc1Swenshuai.xi EN_POWER_MODE u16PowerState; 174*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM_SetPowerState; 175*53ee8cc1Swenshuai.xi #endif 176*53ee8cc1Swenshuai.xi #if 1 177*53ee8cc1Swenshuai.xi typedef union _HWI2C_PRIVATE_PARAM 178*53ee8cc1Swenshuai.xi { 179*53ee8cc1Swenshuai.xi HWI2C_PRIVATE_PARAM_Init privateInit; 180*53ee8cc1Swenshuai.xi HWI2C_PRIVATE_PARAM_GetPortIndex privateGetPortIndex; 181*53ee8cc1Swenshuai.xi HWI2C_PRIVATE_PARAM_SelectPort privateSelectPort; 182*53ee8cc1Swenshuai.xi HWI2C_PRIVATE_PARAM_SetClk privateSetClk; 183*53ee8cc1Swenshuai.xi HWI2C_PRIVATE_PARAM_SetReadMode privateSetReadMode; 184*53ee8cc1Swenshuai.xi HWI2C_PRIVATE_PARAM_WriteByte privateWriteByte; 185*53ee8cc1Swenshuai.xi HWI2C_PRIVATE_PARAM_WriteBytes privateWriteBytes; 186*53ee8cc1Swenshuai.xi HWI2C_PRIVATE_PARAM_ReadByte privateReadByte; 187*53ee8cc1Swenshuai.xi HWI2C_PRIVATE_PARAM_ReadBytes privateReadBytes; 188*53ee8cc1Swenshuai.xi HWI2C_PRIVATE_PARAM_SetReadModeP1 privateSetReadModeP1; 189*53ee8cc1Swenshuai.xi HWI2C_PRIVATE_PARAM_WriteByteP1 privateWriteByteP1; 190*53ee8cc1Swenshuai.xi HWI2C_PRIVATE_PARAM_WriteBytesP1 privateWriteBytesP1; 191*53ee8cc1Swenshuai.xi HWI2C_PRIVATE_PARAM_ReadByteP1 privateReadByteP1; 192*53ee8cc1Swenshuai.xi HWI2C_PRIVATE_PARAM_ReadBytesP1 privateReadBytesP1; 193*53ee8cc1Swenshuai.xi HWI2C_PRIVATE_PARAM_SetDbgLevel privateSetDbgLevel; 194*53ee8cc1Swenshuai.xi HWI2C_PRIVATE_PARAM_GetStatus privateGetStatus; 195*53ee8cc1Swenshuai.xi //HWI2C_PRIVATE_PARAM_SetPowerState privateSetPowerState; 196*53ee8cc1Swenshuai.xi } HWI2C_PRIVATE_PARAM; 197*53ee8cc1Swenshuai.xi #endif 198*53ee8cc1Swenshuai.xi 199*53ee8cc1Swenshuai.xi #endif 200*53ee8cc1Swenshuai.xi 201*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 202*53ee8cc1Swenshuai.xi // Extern Functions 203*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 204*53ee8cc1Swenshuai.xi 205*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////// 206*53ee8cc1Swenshuai.xi 207*53ee8cc1Swenshuai.xi #ifdef __cplusplus 208*53ee8cc1Swenshuai.xi } 209*53ee8cc1Swenshuai.xi #endif 210*53ee8cc1Swenshuai.xi 211*53ee8cc1Swenshuai.xi #endif // _DRV_HWI2C_V2_H_ 212*53ee8cc1Swenshuai.xi 213*53ee8cc1Swenshuai.xi 214