aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/ced1401/use14_ioc.h
blob: 42d2e4e6e9a9cee1ccde234b44922eebeeb04a00 (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
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
/* use14_ioc.h
** definitions of use1401 module stuff that is shared between use1401 and the driver.
** Copyright (C) Cambridge Electronic Design Limited 2010
** Author Greg P Smith
************************************************************************************/
#ifndef __USE14_IOC_H__
#define __USE14_IOC_H__

#define  MAX_TRANSAREAS   8   /* The number of transfer areas supported by driver */

#define i386
#include "winioctl.h"                   /* needed so we can access driver   */

/*
** Defines for IOCTL functions to ask driver to perform. These must be matched
** in both use1401 and in the driver. The IOCTL code contains a command
** identifier, plus other information about the device, the type of access
** with which the file must have been opened, and the type of buffering.
** The IOCTL function codes from 0x80 to 0xFF are for developer use.
*/
#define  FILE_DEVICE_CED1401    0x8001
						FNNUMBASE              0x800

#define  U14_OPEN1401            CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE,               \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_CLOSE1401           CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+1,             \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_SENDSTRING          CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+2,             \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_RESET1401           CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+3,             \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_GETCHAR             CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+4,             \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_SENDCHAR            CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+5,             \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_STAT1401            CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+6,             \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_LINECOUNT           CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+7,             \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_GETSTRING           CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+8,             \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_REGCALLBACK         CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+9,             \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_GETMONITORBUF       CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+10,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_SETTRANSFER         CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+11,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_UNSETTRANSFER       CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+12,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_SETTRANSEVENT       CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+13,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_GETOUTBUFSPACE      CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+14,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_GETBASEADDRESS      CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+15,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_GETDRIVERREVISION   CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+16,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_GETTRANSFER         CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+17,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_KILLIO1401          CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+18,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_BLKTRANSSTATE       CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+19,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_BYTECOUNT           CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+20,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_ZEROBLOCKCOUNT      CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+21,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_STOPCIRCULAR        CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+22,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_STATEOF1401         CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+23,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_REGISTERS1401       CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+24,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_GRAB1401            CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+25,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_FREE1401            CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+26,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_STEP1401            CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+27,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_SET1401REGISTERS    CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+28,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_STEPTILL1401        CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+29,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_SETORIN             CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+30,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_STARTSELFTEST       CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+31,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_CHECKSELFTEST       CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+32,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_TYPEOF1401          CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+33,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_TRANSFERFLAGS       CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+34,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_DBGPEEK             CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+35,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_DBGPOKE             CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+36,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_DBGRAMPDATA         CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+37,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_DBGRAMPADDR         CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+38,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_DBGGETDATA          CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+39,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_DBGSTOPLOOP         CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+40,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_FULLRESET           CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+41,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_SETCIRCULAR         CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+42,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_GETCIRCBLK          CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+43,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

#define  U14_FREECIRCBLK         CTL_CODE(FILE_DEVICE_CED1401,     \
						FNNUMBASE+44,            \
						METHOD_BUFFERED,         \
						FILE_ANY_ACCESS)

/*--------------- Structures that are shared with the driver ------------- */
#pragma pack(1)

typedef struct                  /* used for get/set standard 1401 registers */
{
	short   sPC;
	char    A;
	char    X;
	char    Y;
	char    stat;
	char    rubbish;
} T1401REGISTERS;

typedef union     /* to communicate with 1401 driver status & control funcs */
{
	char           chrs[22];
	short          ints[11];
	long           longs[5];
	T1401REGISTERS registers;
} TCSBLOCK;

typedef TCSBLOCK*  LPTCSBLOCK;

typedef struct paramBlk {
	 short       sState;
	 TCSBLOCK    csBlock;
} PARAMBLK;

typedef PARAMBLK*   PPARAMBLK;

struct transfer_area_desc          /* Structure and type for SetTransArea */
{
	unsigned short        wArea;            /* number of transfer area to set up       */
	void FAR *lpvBuff;          /* address of transfer area                */
	unsigned int       dwLength;         /* length of area to set up                */
	short       eSize;            /* size to move (for swapping on MAC)      */
};


/* This is the structure used to set up a transfer area */
typedef struct VXTransferDesc    /* use1401.c and use1432x.x use only       */
{
	unsigned short        wArea;            /* number of transfer area to set up       */
	unsigned short        wAddrSel;         /* 16 bit selector for area                */
	unsigned int       dwAddrOfs;        /* 32 bit offset for area start            */
	unsigned int       dwLength;         /* length of area to set up                */
} VXTRANSFERDESC;

#pragma pack()

#endif