xref: /utopia/UTPA2-700.0.x/modules/hwi2c/drv/hwi2c/drvHWI2C_private.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
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