aboutsummaryrefslogtreecommitdiff
path: root/drivers/input/touchscreen/mediatek/synaptics_3528/ImportedFunctions.h
blob: 5996fd0e851ebafc8cebb3b50ddbac004fdb8681 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
// ImportedFunctions.h
//
// $Id: ImportedFunctions.h,v 1.24 2012/05/11 07:12:22 ltu Exp $

#ifdef IMPORTEDFUNCTIONS_C
  #define EXTERN
#else
  #define EXTERN extern
#endif

#ifdef _cplusplus
extern "c" {
#endif
#ifndef IMPORTEDFUNCTIONS_H
#define IMPORTEDFUNCTIONS_H
//error codes returned by the API functions
//#include <windows.h>
#include "cdci/CdciErrors.h"
#include "cdci/CrocodileTypes.h"
#include "cdci/CdciInterfaces.h"
#include "cdci/DllVersion.h"

EXTERN bool ControlBridgeRMI(bool bLoadCdciApi);
EXTERN void UnloadLibrary();

typedef void CCdciApi;

/* 
    Line Callback procedure type for receving state changes for an IO line
    \params
        context [in] - a pointer to a context that the user wants to receive back 
                        when the callback procedure gets invoked                    
        sName[out] - a pointer to string name of the IO line
        bState[out] - state of the IO line
    Note: a callback procedure of this type with get invoked from a different thread
          than your main thread. Do not do anything blocking in this callback procedure.
*/
typedef void ( __cdecl   * LineCallback_T)(void         * context,
                                           const char   * sName,
                                           bool           bState,
                                           EError         error,
                                           const char   * pErrorMsg);

typedef void ( __stdcall * StdLineCallback_T)(void        * context,
                                              const char  * sName,
                                              bool          bState,
                                              EError        error,
                                              const char  * pErrorMsg);

typedef void ( __cdecl * PacketRxCallback_T)(void           * context,
                                             unsigned int     uCount, 
                                             unsigned char  * pData, 
                                             EError           error, 
                                             const char     * pErrorMsg);

// Added by Chenchu
typedef CCdciApi * (*InitializeFunc) ();
typedef EError (*UninitializeFunc) (CCdciApi *   ulHandle);
typedef CCdciStreamInterface * (*CdciStream_CreateByCdciTypeFunc)(int iConnectionType);
typedef EError (*CDCI_CreateByCdciTypeFunc)(int iConnectionType, CCdciApi ** ppCDCIApi);
typedef void                   (*CdciStream_DestroyFunc)(CCdciStreamInterface *pMpcUsb);
typedef CCdciApi *             (*CreateFromStreamFunc)(CCdciStreamInterface * pStream);
typedef void                   (*CDCI_DestroyFunc)(CCdciApi * pCDCIApi);

typedef EError (*ConnectFunc) (CCdciApi *   ulHandle);
typedef EError (*DisconnectFunc) (CCdciApi *   ulHandle);
typedef EError (*CreateBySerialNumberFunc) (const char * sSerialNumber, CCdciApi *&ulHandle);
typedef bool(*IsConnectedFunc)(CCdciApi * pCDCIApi);

typedef EError (*ConfigI2CRegExFunc) (CCdciApi *    ulHandle,  
                                 unsigned short   target,
                                 ERmiAddress      RmiAddressingMode,
                                 EPullups         pull_ups,  
                                 EI2CSpeed        i2cSpeed,                             
                                 EAttention       attn /* = ENone*/,
                                 unsigned long    dwTimeout /* = INFINITE*/);

typedef EError (*ConfigI2CRegFunc) (CCdciApi *    ulHandle,  
                                 unsigned short   target,
                                 bool             pull_ups,  
                                 EI2CSpeed        i2cSpeed,                             
                                 EAttention       attn /* = ENone*/,
                                 unsigned long    dwTimeout /* = INFINITE*/);

typedef EError (*ConfigSPIRegFunc) (CCdciApi *    ulHandle,
                                 unsigned short   target,  
                                 ERmiAddress      addressing_mode,
                                 EModuleMode      module_mode,
                                 EPullups         pull_ups, 
                                 ESlaveSelect     slave_select,
                                 unsigned int     byte_delay,
                                 unsigned int     bit_rate,
                                 unsigned int     spi_mode,
                                 EAttention       attn /* = ENone*/,
                                 unsigned long    dwTimeout /* = INFINITE*/);

typedef EError (*ConfigPS2Func) (CCdciApi *   ulHandle,
                              unsigned short  target, 
                              bool            resend_enable,
                              unsigned long   dwTimeout /* = INFINITE*/);

typedef EError (*PowerOnVoltageFunc) (CCdciApi *   ulHandle, 
                                   unsigned short  target, 
                                   unsigned int    vdd_millivolts,
                                   unsigned int    vdevpullup_millivolts,
                                   unsigned int    vled_millivolts,
                                   unsigned long   dwTimeout /* = INFINITE*/);

typedef EError (*PowerOffFunc) (CCdciApi *   ulHandle,
                             unsigned short  target,
                             unsigned long   dwTimeout/*= INFINITE*/);

//Write and Read via handle
typedef EError (*WriteRegister8DataFunc) (CCdciApi *    ulHandle,
                                       unsigned short   target, 
                                       unsigned short   uBusAddress,
                                       ERmiAddress      RmiAddressingMode,
                                       unsigned short   uRmiAddress, 
                                       unsigned char  * data,
                                       unsigned int     length,
                                       unsigned int     &lengthWritten,
                                       unsigned long    dwTimeout );

typedef EError (*ReadRegister8DataFunc) (CCdciApi *   ulHandle,
                                      unsigned short  target,
                                      unsigned short  uBusAddress, //i2c address
                                      ERmiAddress     RmiAddressingMode,
                                      unsigned short  uRmiAddress, //register address
                                      unsigned char * data,
                                      unsigned int    length, 
                                      unsigned int    &lengthRead,
                                      unsigned long   dwTimeout /* = INFINITE*/);

typedef EError (*PacketSetRxCallbackFunc) (CCdciApi *    ulHandle,
                                        PacketRxCallback_T,
                                        void           * context);

typedef EError (*PacketTxFunc) (CCdciApi *   ulHandle,
                             unsigned short  target,
                             unsigned char * pData,
                             unsigned int    uCount,
                             unsigned long   dwTimeout /*= INFINITE*/ );

typedef EError (*Line_SetCallbackFunc) (CCdciApi *         ulHandle, 
                                        StdLineCallback_T, 
                                        void              * context);

typedef void (*GetLastErrorMsgStringFunc)(CCdciApi * pCDCIApi, char *strValue);

typedef ICdciRmiTransaction * (*RmiTransactionNewFunc) (CCdciApi * pCDCIApi);
typedef void (*RmiTransactionDeleteFunc) (CCdciApi * pCDCIApi, ICdciRmiTransaction * pTrans);

typedef EError (*GetControllerInfoFunc)(CCdciApi * pCDCIApi, unsigned short &Id,              //! Controller ID
    unsigned int &FWVersionMajor,     //! Controller Major Version
    unsigned int &FWVersionMinor,     //! Controller Minor Version
    unsigned int &CDCIVersionMajor,  //! CDCI Major Version
    unsigned int &CDCIVersionMinor, //! CDCI Minor Version
    char *strInfo,
    unsigned int &uBoardNumber,
    unsigned int &uSerialNumber);

//! Configures a controller for Rmi over SMBus communication
typedef EError (*ConfigRmiOverSMBusFunc) (CCdciApi *    ulHandle,
                                          unsigned short  target,
                                          EPullups        Pullups,
                                          EI2CSpeed       i2cSpeed, 
                                          DWORD           dwTimeout /*= INFINITE*/);

typedef EError (*ConfigHidOverI2CFunc) (CCdciApi *      pCDCIApi,
                                        unsigned short  target,
                                        ERmiAddress     rmiAddressingMode,
                                        EPullups        pullups,
                                        EPullups        attnPullups,
                                        EI2CSpeed       i2cSpeed, 
                                        EAttention      attn/* = EAttnNone*/,
                                        DWORD           dwTimeout/* = INFINITE*/);

typedef EError (*ConfigHidOverUsbFunc) (CCdciApi * pCDCIApi,
                                        EAttention attn,
                                        DWORD dwTimeout);

typedef EError (*ConfigRmiOverSMBusAddressFunc) ( CCdciApi *    ulHandle,
                                                  unsigned short  target,
                                                  EPullups        Pullups,
                                                  EI2CSpeed       i2cSpeed, 
                                                  unsigned short  i2cHostAddress,
                                                  DWORD           dwTimeout /*= INFINITE*/);

typedef EError (*ConfigRmiNativeFunc) ( CCdciApi *      ulHandle,
                                        unsigned short  target,
                                        EAttention      attn,
                                        DWORD           dwTimeout /*= INFINITE*/);

typedef EError (*CreateByCdciTypeFunc) (int iConnectionType, CCdciApi ** ppCDCIApi);

typedef EError (*SetStreamOptionFunc) (CCdciApi *       ulHandle, 
                                       int              iOptionID, 
                                       const char *     psValue);

typedef EError (*SetTargetOptionAsUInteger32Func) ( CCdciApi * ulHandle,
                                                    unsigned short target,
                                                    int iOption,
                                                    unsigned int uValue,
                                                    DWORD dwTimeout /* = INFINITE*/);

//! constructor for CdciApi 
// By creating a Cdci object, a connection over USB to the MC02 controller is created
bool ControlBridgeRMI(bool bLoadCdciApi);
void Line_FlushAttention();
bool Line_AttentionIsAsserted();
EError Line_WaitForAttentionAsserted(DWORD dwMilliseconds);
EError Line_WaitForAttentionDeasserted(DWORD dwMilliseconds);
EError Line_WaitForAttention(DWORD dwMilliseconds);

void UnloadLibrary();
const int DefaultTimeout = 3000; // In milliseconds
const unsigned short DefaultTarget = 0;
#endif

EXTERN HMODULE g_hDll;
EXTERN HANDLE  g_hMutex;                    //FIXME //mutex for creating stream by serialnumber when multi-threads
EXTERN HANDLE  g_hLoadHandleMutex;
EXTERN HANDLE  m_hAttenEvent;
#ifndef REFLASH_DLL
  EXTERN int g_DllCount;
#endif


EXTERN CdciStream_CreateByCdciTypeFunc  g_CdciStream_CreateByCdciType;
EXTERN CDCI_CreateByCdciTypeFunc        g_CdciCreateByCdciType;
EXTERN CdciStream_DestroyFunc           g_CdciStream_Destroy;
EXTERN CreateFromStreamFunc             CreateFromStream;
EXTERN CDCI_DestroyFunc                 Destroy;
EXTERN InitializeFunc                   InitializeDevice;
EXTERN UninitializeFunc                 UninitializeDevice;
EXTERN ConnectFunc                      ConnectDevice;
EXTERN DisconnectFunc                   DisconnectDevice;
EXTERN IsConnectedFunc                  IsConnected;
EXTERN CreateBySerialNumberFunc	        CreateBySerialNumber;
EXTERN ConfigI2CRegExFunc               ConfigI2CReg;
EXTERN ConfigSPIRegFunc                 ConfigSPIReg;
EXTERN ConfigPS2Func                    ConfigPS2;
EXTERN PowerOnVoltageFunc               PowerOnDevice;
EXTERN PowerOffFunc                     PowerOffDevice;
EXTERN WriteRegister8DataFunc           WriteRegister8;
EXTERN ReadRegister8DataFunc            ReadRegister8;
EXTERN PacketSetRxCallbackFunc          PacketSetRxCallback;
EXTERN PacketTxFunc                     PacketTx;
EXTERN Line_SetCallbackFunc             Line_SetCallback;
EXTERN RmiTransactionNewFunc            RmiTransactionNew;
EXTERN RmiTransactionDeleteFunc         RmiTransactionDelete;
EXTERN GetLastErrorMsgStringFunc        GetLastErrorMsgString;
EXTERN PFNCDCI_GetDllVersion            GetCDCIApiDllVersion;
EXTERN ConfigRmiOverSMBusFunc           ConfigRmiOverSMBus;
EXTERN GetControllerInfoFunc            GetControllerInfo;
EXTERN ConfigRmiNativeFunc              ConfigRmiNative;
EXTERN CreateByCdciTypeFunc             CreateByCdciType;
EXTERN SetStreamOptionFunc              SetStreamOption;
EXTERN SetTargetOptionAsUInteger32Func  SetTargetOption;
EXTERN ConfigHidOverI2CFunc             ConfigHidOverI2C;
EXTERN ConfigHidOverUsbFunc             ConfigHidOverUsb;

#ifdef _cplusplus
}
#endif