1 #ifndef _DRVBDHWI2C_PRIV_H_ 2 #define _DRVBDHWI2C_PRIV_H_ 3 4 //////////////////////////////////////////////////////////////////////////////// 5 /// @file drvHWI2C.h 6 /// @author MStar Semiconductor Inc. 7 /// @brief HWI2C control driver 8 //////////////////////////////////////////////////////////////////////////////// 9 10 //////////////////////////////////////////////////////////////////////////////// 11 // Header Files 12 //////////////////////////////////////////////////////////////////////////////// 13 #ifdef __cplusplus 14 extern "C" 15 { 16 #endif 17 18 #include "MsTypes.h" 19 #include "drvHWI2C.h" 20 21 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_Init)(HWI2C_UnitCfg *); 22 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_Start)(void); 23 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_Stop)(void); 24 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_GetPortIndex)(HWI2C_PORT , MS_U8 *); 25 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_SelectPort)(HWI2C_PORT ); 26 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_SetClk)(HWI2C_CLKSEL ); 27 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_SetReadMode)(HWI2C_ReadMode ); 28 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_WriteByte)(MS_U16 ,MS_U8 ,MS_U8 ); 29 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_WriteBytes)(MS_U16 ,MS_U32 ,MS_U8 *,MS_U32 ,MS_U8 * ); 30 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_ReadByte)(MS_U16 ,MS_U8 ,MS_U8 * ); 31 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_ReadBytes)(MS_U16 ,MS_U32 ,MS_U8 *,MS_U32 ,MS_U8 * ); 32 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_SelectPort1)(HWI2C_PORT ); 33 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_SetClkP1)(HWI2C_CLKSEL ); 34 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_SetReadModeP1)(HWI2C_ReadMode ); 35 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_WriteByteP1)(MS_U16 , MS_U8 , MS_U8 ); 36 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_WriteBytesP1)(MS_U16 , MS_U32 , MS_U8 *, MS_U32 , MS_U8 *); 37 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_ReadByteP1)(MS_U16 , MS_U8 , MS_U8 *); 38 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_ReadBytesP1)(MS_U16 , MS_U32 , MS_U8 *, MS_U32 , MS_U8 *); 39 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_SetDbgLevel)(HWI2C_DbgLv ); 40 typedef MS_BOOL (*IOCTL_MDrv_HWI2C_GetLibVer)(const MSIF_Version **); 41 typedef void (*IOCTL_MDrv_HWI2C_GetStatus)(HWI2C_Status *); 42 typedef const HWI2C_Info* (*IOCTL_MDrv_HWI2C_GetInfo)(void ); 43 //typedef MS_U16 (*IOCTL_MDrv_HWI2C_SetPowerState)(EN_POWER_MODE ); 44 45 46 typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_Init 47 { 48 HWI2C_UnitCfg *psCfg; 49 } HWI2C_PRIVATE_PARAM_Init, *PHWI2C_PRIVATE_PARAM_Init; 50 51 typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_GetPortIndex 52 { 53 HWI2C_PORT ePort; 54 MS_U8* pu8Port; 55 } HWI2C_PRIVATE_PARAM_GetPortIndex, *PHWI2C_PRIVATE_PARAM_GetPortIndex; 56 57 typedef struct _HWI2C_PRIVATE_PARAM_SelectPort 58 { 59 HWI2C_PORT ePort; 60 } HWI2C_PRIVATE_PARAM_SelectPort, *PHWI2C_PRIVATE_PARAM_SelectPort; 61 62 typedef struct _HWI2C_PRIVATE_PARAM_SetClk 63 { 64 HWI2C_CLKSEL eClk; 65 } HWI2C_PRIVATE_PARAM_SetClk, *PHWI2C_PRIVATE_PARAM_SetClk; 66 67 typedef struct _HWI2C_PRIVATE_PARAM_SetReadMode 68 { 69 HWI2C_ReadMode eReadMode; 70 } HWI2C_PRIVATE_PARAM_SetReadMode, *PHWI2C_PRIVATE_PARAM_SetReadMode; 71 72 typedef struct _HWI2C_PRIVATE_PARAM_WriteByte 73 { 74 MS_U16 u16SlaveCfg; 75 MS_U8 u8RegAddr; 76 MS_U8 u8Data; 77 MS_BOOL bReturn; 78 } HWI2C_PRIVATE_PARAM_WriteByte, *PHWI2C_PRIVATE_PARAM_WriteByte; 79 80 typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_WriteBytes 81 { 82 MS_U16 u16SlaveCfg; 83 MS_U32 uAddrCnt; 84 MS_U8 *pRegAddr; 85 MS_U32 uSize; 86 MS_U8 *pData; 87 MS_BOOL bReturn; 88 } HWI2C_PRIVATE_PARAM_WriteBytes, *PHWI2C_PRIVATE_PARAM_WriteBytes; 89 90 typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_ReadByte 91 { 92 MS_U16 u16SlaveCfg; 93 MS_U8 u8RegAddr; 94 MS_U8 *pData; 95 MS_BOOL bReturn; 96 } HWI2C_PRIVATE_PARAM_ReadByte, *PHWI2C_PRIVATE_PARAM_ReadByte; 97 98 typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_ReadBytes 99 { 100 MS_U16 u16SlaveCfg; 101 MS_U32 uAddrCnt; 102 MS_U8 *pRegAddr; 103 MS_U32 uSize; 104 MS_U8 *pData; 105 MS_BOOL bReturn; 106 } HWI2C_PRIVATE_PARAM_ReadBytes, *PHWI2C_PRIVATE_PARAM_ReadBytes; 107 108 typedef struct _HWI2C_PRIVATE_PARAM_SelectPort1 109 { 110 HWI2C_PORT ePort; 111 } HWI2C_PRIVATE_PARAM_SelectPort1, *PHWI2C_PRIVATE_PARAM_SelectPort1; 112 113 typedef struct _HWI2C_PRIVATE_PARAM_SetClkP1 114 { 115 HWI2C_CLKSEL eClk; 116 } HWI2C_PRIVATE_PARAM_SetClkP1, *PHWI2C_PRIVATE_PARAM_SetClkP1; 117 118 typedef struct _HWI2C_PRIVATE_PARAM_SetReadModeP1 119 { 120 HWI2C_ReadMode eReadMode; 121 } HWI2C_PRIVATE_PARAM_SetReadModeP1, *PHWI2C_PRIVATE_PARAM_SetReadModeP1; 122 123 typedef struct _HWI2C_PRIVATE_PARAM_WriteByteP1 124 { 125 MS_U16 u16SlaveCfg; 126 MS_U8 u8RegAddr; 127 MS_U8 u8Data; 128 } HWI2C_PRIVATE_PARAM_WriteByteP1, *PHWI2C_PRIVATE_PARAM_WriteByteP1; 129 130 typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_WriteBytesP1 131 { 132 MS_U16 u16SlaveCfg; 133 MS_U32 uAddrCnt; 134 MS_U8 *pRegAddr; 135 MS_U32 uSize; 136 MS_U8 *pData; 137 } HWI2C_PRIVATE_PARAM_WriteBytesP1, *PHWI2C_PRIVATE_PARAM_WriteBytesP1; 138 139 140 typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_ReadByteP1 141 { 142 MS_U16 u16SlaveCfg; 143 MS_U8 u8RegAddr; 144 MS_U8 *pData; 145 } HWI2C_PRIVATE_PARAM_ReadByteP1, *PHWI2C_PRIVATE_PARAM_ReadByteP1; 146 147 typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_ReadBytesP1 148 { 149 MS_U16 u16SlaveCfg; 150 MS_U32 uAddrCnt; 151 MS_U8 *pRegAddr; 152 MS_U32 uSize; 153 MS_U8 *pData; 154 } HWI2C_PRIVATE_PARAM_ReadBytesP1, *PHWI2C_PRIVATE_PARAM_ReadBytesP1; 155 156 typedef struct _HWI2C_PRIVATE_PARAM_SetDbgLevel 157 { 158 HWI2C_DbgLv eLevel; 159 } HWI2C_PRIVATE_PARAM_SetDbgLevel, *PHWI2C_PRIVATE_PARAM_SetDbgLevel; 160 161 typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_GetLibVer 162 { 163 const MSIF_Version **ppVersion; 164 } HWI2C_PRIVATE_PARAM_GetLibVer, *PHWI2C_PRIVATE_PARAM_GetLibVer; 165 166 typedef struct DLL_PACKED _HWI2C_PRIVATE_PARAM_GetStatus 167 { 168 HWI2C_Status *pStatus; 169 } HWI2C_PRIVATE_PARAM_GetStatus, *PHWI2C_PRIVATE_PARAM_GetStatus; 170 171 172 typedef struct _HWI2C_RESOURCE_PRIVATE 173 { 174 HWI2C_PRIVATE_PARAM_Init privateInit; 175 }HWI2C_RESOURCE_PRIVATE; 176 177 typedef union _HWI2C_PRIVATE_PARAM 178 { 179 HWI2C_PRIVATE_PARAM_Init privateInit; 180 HWI2C_PRIVATE_PARAM_GetPortIndex privateGetPortIndex; 181 HWI2C_PRIVATE_PARAM_SelectPort privateSelectPort; 182 HWI2C_PRIVATE_PARAM_SetClk privateSetClk; 183 HWI2C_PRIVATE_PARAM_SetReadMode privateSetReadMode; 184 HWI2C_PRIVATE_PARAM_WriteByte privateWriteByte; 185 HWI2C_PRIVATE_PARAM_WriteBytes privateWriteBytes; 186 HWI2C_PRIVATE_PARAM_ReadByte privateReadByte; 187 HWI2C_PRIVATE_PARAM_ReadBytes privateReadBytes; 188 HWI2C_PRIVATE_PARAM_SetReadModeP1 privateSetReadModeP1; 189 HWI2C_PRIVATE_PARAM_WriteByteP1 privateWriteByteP1; 190 HWI2C_PRIVATE_PARAM_WriteBytesP1 privateWriteBytesP1; 191 HWI2C_PRIVATE_PARAM_ReadByteP1 privateReadByteP1; 192 HWI2C_PRIVATE_PARAM_ReadBytesP1 privateReadBytesP1; 193 HWI2C_PRIVATE_PARAM_SetDbgLevel privateSetDbgLevel; 194 HWI2C_PRIVATE_PARAM_GetStatus privateGetStatus; 195 } HWI2C_PRIVATE_PARAM; 196 197 typedef struct _HWI2C_INSTANT_PRIVATE 198 { 199 IOCTL_MDrv_HWI2C_Init fpHWI2CInit; 200 IOCTL_MDrv_HWI2C_Start fpHWI2CStart; 201 IOCTL_MDrv_HWI2C_Stop fpHWI2CStop; 202 IOCTL_MDrv_HWI2C_GetPortIndex fpHWI2CGetPortIndex; 203 IOCTL_MDrv_HWI2C_SelectPort fpHWI2CSelectPort; 204 205 IOCTL_MDrv_HWI2C_SetClk fpHWI2CSetClk; 206 IOCTL_MDrv_HWI2C_SetReadMode fpHWI2CSetReadMode; 207 IOCTL_MDrv_HWI2C_WriteByte fpHWI2CWriteByte; 208 IOCTL_MDrv_HWI2C_WriteBytes fpHWI2CWriteBytes ; 209 IOCTL_MDrv_HWI2C_ReadByte fpHWI2CReadByte; 210 IOCTL_MDrv_HWI2C_ReadBytes fpHWI2CReadBytes; 211 IOCTL_MDrv_HWI2C_SelectPort1 fpHWI2CSelectPort1; 212 IOCTL_MDrv_HWI2C_SetClkP1 fpHWI2CSetClkP1; 213 IOCTL_MDrv_HWI2C_SetReadModeP1 fpHWI2CSetReadModeP1; 214 IOCTL_MDrv_HWI2C_WriteByteP1 fpHWI2CWriteByteP1; 215 IOCTL_MDrv_HWI2C_WriteBytesP1 fpHWI2CWriteBytesP1; 216 IOCTL_MDrv_HWI2C_ReadByteP1 fpHWI2CReadByteP1 ; 217 IOCTL_MDrv_HWI2C_ReadBytesP1 fpHWI2CReadBytesP1; 218 IOCTL_MDrv_HWI2C_SetDbgLevel fpHWI2CSetDbgLevel; 219 IOCTL_MDrv_HWI2C_GetLibVer fpHWI2CGetLibVer ; 220 IOCTL_MDrv_HWI2C_GetStatus fpHWI2CGetStatus ; 221 IOCTL_MDrv_HWI2C_GetInfo fpHWI2CGetInfo; 222 //IOCTL_MDrv_HWI2C_SetPowerState fpHWI2CSetPowerState; 223 224 }HWI2C_INSTANT_PRIVATE; 225 226 227 void HWI2CRegisterToUtopia(void); 228 MS_U32 HWI2COpen(void** ppInstance, MS_U32 u32ModuleVersion, void* pAttribute); 229 //MS_U32 HWI2COpen(void** pInstantTmp, void* pAttribute); 230 MS_U32 HWI2CClose(void* pInstantTmp); 231 MS_U32 HWI2CIoctl(void* pInstantTmp, MS_U32 u32Cmd, void* pArgs); 232 233 234 #ifdef __cplusplus 235 } 236 #endif 237 #endif // _DRVHWI2C_PRIV_H_ 238 239 240