Staging: remove me4000 driver.
[linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git] / drivers / staging / meilhaus / medriver.h
blob02e2408ce5f3f34ffe5280daa314c0c45cd8f747
1 /*
2 * Copyright (C) 2005 Meilhaus Electronic GmbH (support@meilhaus.de)
4 * Source File : medriver.h
5 * Author : GG (Guenter Gebhardt) <g.gebhardt@meilhaus.de>
6 * Author: Krzysztof Gantzke <k.gantzke@meilhaus.de>
7 */
9 #ifndef _MEDRIVER_H_
10 #define _MEDRIVER_H_
12 #include "metypes.h"
13 #include "meerror.h"
14 #include "medefines.h"
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
20 /*===========================================================================
21 Functions to access the driver system
22 =========================================================================*/
24 int meOpen(int iFlags);
25 int meClose(int iFlags);
27 int meLockDriver(int iLock, int iFlags);
28 int meLockDevice(int iDevice, int iLock, int iFlags);
29 int meLockSubdevice(int iDevice, int iSubdevice, int iLock, int iFlags);
31 /*===========================================================================
32 Error handling functions
33 =========================================================================*/
35 int meErrorGetLastMessage(char *pcErrorMsg, int iCount);
36 int meErrorGetMessage(int iErrorCode, char *pcErrorMsg, int iCount);
37 int meErrorSetDefaultProc(int iSwitch);
38 int meErrorSetUserProc(meErrorCB_t pErrorProc);
41 /*===========================================================================
42 Functions to perform I/O on a device
43 =========================================================================*/
45 int meIOIrqSetCallback(
46 int iDevice,
47 int iSubdevice,
48 meIOIrqCB_t pCallback,
49 void *pCallbackContext,
50 int iFlags);
51 int meIOIrqStart(
52 int iDevice,
53 int iSubdevice,
54 int iChannel,
55 int iIrqSource,
56 int iIrqEdge,
57 int iIrqArg,
58 int iFlags);
59 int meIOIrqStop(
60 int iDevice,
61 int iSubdevice,
62 int iChannel,
63 int iFlags);
64 int meIOIrqWait(
65 int iDevice,
66 int iSubdevice,
67 int iChannel,
68 int *piIrqCount,
69 int *piValue,
70 int iTimeOut,
71 int iFlags);
73 int meIOResetDevice(int iDevice, int iFlags);
74 int meIOResetSubdevice(int iDevice, int iSubdevice, int iFlags);
76 int meIOStreamFrequencyToTicks(
77 int iDevice,
78 int iSubdevice,
79 int iTimer,
80 double *pdFrequency,
81 int *piTicksLow,
82 int *piTicksHigh,
83 int iFlags);
85 int meIOSingleConfig(
86 int iDevice,
87 int iSubdevice,
88 int iChannel,
89 int iSingleConfig,
90 int iRef,
91 int iTrigChan,
92 int iTrigType,
93 int iTrigEdge,
94 int iFlags);
95 int meIOSingle(meIOSingle_t *pSingleList, int iCount, int iFlags);
97 int meIOStreamConfig(
98 int iDevice,
99 int iSubdevice,
100 meIOStreamConfig_t *pConfigList,
101 int iCount,
102 meIOStreamTrigger_t *pTrigger,
103 int iFifoIrqThreshold,
104 int iFlags);
105 int meIOStreamNewValues(
106 int iDevice,
107 int iSubdevice,
108 int iTimeOut,
109 int *piCount,
110 int iFlags);
111 int meIOStreamRead(
112 int iDevice,
113 int iSubdevice,
114 int iReadMode,
115 int *piValues,
116 int *piCount,
117 int iFlags);
118 int meIOStreamWrite(
119 int iDevice,
120 int iSubdevice,
121 int iWriteMode,
122 int *piValues,
123 int *piCount,
124 int iFlags);
125 int meIOStreamStart(meIOStreamStart_t *pStartList, int iCount, int iFlags);
126 int meIOStreamStop(meIOStreamStop_t *pStopList, int iCount, int iFlags);
127 int meIOStreamStatus(
128 int iDevice,
129 int iSubdevice,
130 int iWait,
131 int *piStatus,
132 int *piCount,
133 int iFlags);
134 int meIOStreamSetCallbacks(
135 int iDevice,
136 int iSubdevice,
137 meIOStreamCB_t pStartCB,
138 void *pStartCBContext,
139 meIOStreamCB_t pNewValuesCB,
140 void *pNewValuesCBContext,
141 meIOStreamCB_t pEndCB,
142 void *pEndCBContext,
143 int iFlags);
144 int meIOStreamTimeToTicks(
145 int iDevice,
146 int iSubdevice,
147 int iTimer,
148 double *pdTime,
149 int *piTicksLow,
150 int *piTicksHigh,
151 int iFlags);
154 /*===========================================================================
155 Functions to query the driver system
156 =========================================================================*/
158 int meQueryDescriptionDevice(int iDevice, char *pcDescription, int iCount);
160 int meQueryInfoDevice(
161 int iDevice,
162 int *piVendorId,
163 int *piDeviceId,
164 int *piSerialNo,
165 int *piBusType,
166 int *piBusNo,
167 int *piDevNo,
168 int *piFuncNo,
169 int *piPlugged);
171 int meQueryNameDevice(int iDevice, char *pcName, int iCount);
172 int meQueryNameDeviceDriver(int iDevice, char *pcName, int iCount);
174 int meQueryNumberDevices(int *piNumber);
175 int meQueryNumberSubdevices(int iDevice, int *piNumber);
176 int meQueryNumberChannels(int iDevice, int iSubdevice, int *piNumber);
177 int meQueryNumberRanges(
178 int iDevice,
179 int iSubdevice,
180 int iUnit,
181 int *piNumber);
183 int meQueryRangeByMinMax(
184 int iDevice,
185 int iSubdevice,
186 int iUnit,
187 double *pdMin,
188 double *pdMax,
189 int *piMaxData,
190 int *piRange);
191 int meQueryRangeInfo(
192 int iDevice,
193 int iSubdevice,
194 int iRange,
195 int *piUnit,
196 double *pdMin,
197 double *pdMax,
198 int *piMaxData);
200 int meQuerySubdeviceByType(
201 int iDevice,
202 int iStartSubdevice,
203 int iType,
204 int iSubtype,
205 int *piSubdevice);
206 int meQuerySubdeviceType(
207 int iDevice,
208 int iSubdevice,
209 int *piType,
210 int *piSubtype);
211 int meQuerySubdeviceCaps(
212 int iDevice,
213 int iSubdevice,
214 int *piCaps);
215 int meQuerySubdeviceCapsArgs(
216 int iDevice,
217 int iSubdevice,
218 int iCap,
219 int *piArgs,
220 int iCount);
222 int meQueryVersionLibrary(int *piVersion);
223 int meQueryVersionMainDriver(int *piVersion);
224 int meQueryVersionDeviceDriver(int iDevice, int *piVersion);
227 /*===========================================================================
228 Common utility functions
229 =========================================================================*/
231 int meUtilityExtractValues(
232 int iChannel,
233 int *piAIBuffer,
234 int iAIBufferCount,
235 meIOStreamConfig_t *pConfigList,
236 int iConfigListCount,
237 int *piChanBuffer,
238 int *piChanBufferCount);
239 int meUtilityDigitalToPhysical(
240 double dMin,
241 double dMax,
242 int iMaxData,
243 int iData,
244 int iModuleType,
245 double dRefValue,
246 double *pdPhysical);
247 int meUtilityDigitalToPhysicalV(
248 double dMin,
249 double dMax,
250 int iMaxData,
251 int *piDataBuffer,
252 int iCount,
253 int iModuleType,
254 double dRefValue,
255 double *pdPhysicalBuffer);
256 int meUtilityPhysicalToDigital(
257 double dMin,
258 double dMax,
259 int iMaxData,
260 double dPhysical,
261 int *piData);
262 int meUtilityPWMStart(
263 int iDevice,
264 int iSubdevice1,
265 int iSubdevice2,
266 int iSubdevice3,
267 int iRef,
268 int iPrescaler,
269 int iDutyCycle,
270 int iFlag);
271 int meUtilityPWMStop(int iDevice,
272 int iSubdevice1);
273 int meUtilityPWMRestart(
274 int iDevice,
275 int iSubdevice1,
276 int iRef,
277 int iPrescaler);
280 /*===========================================================================
281 Load configuration from file into driver system
282 =========================================================================*/
284 int meConfigLoad(char *pcConfigFile);
287 /*===========================================================================
288 Functions to query a remote driver system
289 =========================================================================*/
291 int meRQueryDescriptionDevice(
292 char *location,
293 int iDevice,
294 char *pcDescription,
295 int iCount);
297 int meRQueryInfoDevice(
298 char *location,
299 int iDevice,
300 int *piVendorId,
301 int *piDeviceId,
302 int *piSerialNo,
303 int *piBusType,
304 int *piBusNo,
305 int *piDevNo,
306 int *piFuncNo,
307 int *piPlugged);
309 int meRQueryNameDevice(
310 char *location,
311 int iDevice,
312 char *pcName,
313 int iCount);
315 int meRQueryNumberDevices(char *location, int *piNumber);
316 int meRQueryNumberSubdevices(char *location, int iDevice, int *piNumber);
317 int meRQueryNumberChannels(
318 char *location,
319 int iDevice,
320 int iSubdevice,
321 int *piNumber);
322 int meRQueryNumberRanges(
323 char *location,
324 int iDevice,
325 int iSubdevice,
326 int iUnit,
327 int *piNumber);
329 int meRQueryRangeInfo(
330 char *location,
331 int iDevice,
332 int iSubdevice,
333 int iRange,
334 int *piUnit,
335 double *pdMin,
336 double *pdMax,
337 int *piMaxData);
339 int meRQuerySubdeviceType(
340 char *location,
341 int iDevice,
342 int iSubdevice,
343 int *piType,
344 int *piSubtype);
346 #ifdef __cplusplus
348 #endif
350 #endif