1 /*
2  * cistpl.h 1.34 2000/06/19 23:18:12
3  *
4  * The contents of this file are subject to the Mozilla Public License
5  * Version 1.1 (the "License"); you may not use this file except in
6  * compliance with the License. You may obtain a copy of the License
7  * at http://www.mozilla.org/MPL/
8  *
9  * Software distributed under the License is distributed on an "AS IS"
10  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
11  * the License for the specific language governing rights and
12  * limitations under the License.
13  *
14  * The initial developer of the original code is David A. Hinds
15  * <dahinds@users.sourceforge.net>.  Portions created by David A. Hinds
16  * are Copyright (C) 1999 David A. Hinds.  All Rights Reserved.
17  *
18  * Alternatively, the contents of this file may be used under the
19  * terms of the GNU General Public License version 2 (the "GPL"), in which
20  * case the provisions of the GPL are applicable instead of the
21  * above.  If you wish to allow the use of your version of this file
22  * only under the terms of the GPL and not to allow others to use
23  * your version of this file under the MPL, indicate your decision by
24  * deleting the provisions above and replace them with the notice and
25  * other provisions required by the GPL.  If you do not delete the
26  * provisions above, a recipient may use your version of this file
27  * under either the MPL or the GPL.
28  */
29 
30 #ifndef _LINUX_CISTPL_H
31 #define _LINUX_CISTPL_H
32 
33 #define CISTPL_NULL		0x00
34 #define CISTPL_DEVICE		0x01
35 #define CISTPL_LONGLINK_CB	0x02
36 #define CISTPL_INDIRECT		0x03
37 #define CISTPL_CONFIG_CB	0x04
38 #define CISTPL_CFTABLE_ENTRY_CB	0x05
39 #define CISTPL_LONGLINK_MFC	0x06
40 #define CISTPL_BAR		0x07
41 #define CISTPL_PWR_MGMNT	0x08
42 #define CISTPL_EXTDEVICE	0x09
43 #define CISTPL_CHECKSUM		0x10
44 #define CISTPL_LONGLINK_A	0x11
45 #define CISTPL_LONGLINK_C	0x12
46 #define CISTPL_LINKTARGET	0x13
47 #define CISTPL_NO_LINK		0x14
48 #define CISTPL_VERS_1		0x15
49 #define CISTPL_ALTSTR		0x16
50 #define CISTPL_DEVICE_A		0x17
51 #define CISTPL_JEDEC_C		0x18
52 #define CISTPL_JEDEC_A		0x19
53 #define CISTPL_CONFIG		0x1a
54 #define CISTPL_CFTABLE_ENTRY	0x1b
55 #define CISTPL_DEVICE_OC	0x1c
56 #define CISTPL_DEVICE_OA	0x1d
57 #define CISTPL_DEVICE_GEO	0x1e
58 #define CISTPL_DEVICE_GEO_A	0x1f
59 #define CISTPL_MANFID		0x20
60 #define CISTPL_FUNCID		0x21
61 #define CISTPL_FUNCE		0x22
62 #define CISTPL_SWIL		0x23
63 #define CISTPL_END		0xff
64 /* Layer 2 tuples */
65 #define CISTPL_VERS_2		0x40
66 #define CISTPL_FORMAT		0x41
67 #define CISTPL_GEOMETRY		0x42
68 #define CISTPL_BYTEORDER	0x43
69 #define CISTPL_DATE		0x44
70 #define CISTPL_BATTERY		0x45
71 #define CISTPL_FORMAT_A		0x47
72 /* Layer 3 tuples */
73 #define CISTPL_ORG		0x46
74 #define CISTPL_SPCL		0x90
75 
76 typedef struct cistpl_longlink_t {
77     u_int	addr;
78 } cistpl_longlink_t;
79 
80 typedef struct cistpl_checksum_t {
81     u_short	addr;
82     u_short	len;
83     u_char	sum;
84 } cistpl_checksum_t;
85 
86 #define CISTPL_MAX_FUNCTIONS	8
87 #define CISTPL_MFC_ATTR		0x00
88 #define CISTPL_MFC_COMMON	0x01
89 
90 typedef struct cistpl_longlink_mfc_t {
91     u_char	nfn;
92     struct {
93 	u_char	space;
94 	u_int	addr;
95     } fn[CISTPL_MAX_FUNCTIONS];
96 } cistpl_longlink_mfc_t;
97 
98 #define CISTPL_MAX_ALTSTR_STRINGS	4
99 
100 typedef struct cistpl_altstr_t {
101     u_char	ns;
102     u_char	ofs[CISTPL_MAX_ALTSTR_STRINGS];
103     char	str[254];
104 } cistpl_altstr_t;
105 
106 #define CISTPL_DTYPE_NULL	0x00
107 #define CISTPL_DTYPE_ROM	0x01
108 #define CISTPL_DTYPE_OTPROM	0x02
109 #define CISTPL_DTYPE_EPROM	0x03
110 #define CISTPL_DTYPE_EEPROM	0x04
111 #define CISTPL_DTYPE_FLASH	0x05
112 #define CISTPL_DTYPE_SRAM	0x06
113 #define CISTPL_DTYPE_DRAM	0x07
114 #define CISTPL_DTYPE_FUNCSPEC	0x0d
115 #define CISTPL_DTYPE_EXTEND	0x0e
116 
117 #define CISTPL_MAX_DEVICES	4
118 
119 typedef struct cistpl_device_t {
120     u_char	ndev;
121     struct {
122 	u_char 	type;
123 	u_char	wp;
124 	u_int	speed;
125 	u_int	size;
126     } dev[CISTPL_MAX_DEVICES];
127 } cistpl_device_t;
128 
129 #define CISTPL_DEVICE_MWAIT	0x01
130 #define CISTPL_DEVICE_3VCC	0x02
131 
132 typedef struct cistpl_device_o_t {
133     u_char		flags;
134     cistpl_device_t	device;
135 } cistpl_device_o_t;
136 
137 #define CISTPL_VERS_1_MAX_PROD_STRINGS	4
138 
139 typedef struct cistpl_vers_1_t {
140     u_char	major;
141     u_char	minor;
142     u_char	ns;
143     u_char	ofs[CISTPL_VERS_1_MAX_PROD_STRINGS];
144     char	str[254];
145 } cistpl_vers_1_t;
146 
147 typedef struct cistpl_jedec_t {
148     u_char	nid;
149     struct {
150 	u_char	mfr;
151 	u_char	info;
152     } id[CISTPL_MAX_DEVICES];
153 } cistpl_jedec_t;
154 
155 typedef struct cistpl_manfid_t {
156     u_short	manf;
157     u_short	card;
158 } cistpl_manfid_t;
159 
160 #define CISTPL_FUNCID_MULTI	0x00
161 #define CISTPL_FUNCID_MEMORY	0x01
162 #define CISTPL_FUNCID_SERIAL	0x02
163 #define CISTPL_FUNCID_PARALLEL	0x03
164 #define CISTPL_FUNCID_FIXED	0x04
165 #define CISTPL_FUNCID_VIDEO	0x05
166 #define CISTPL_FUNCID_NETWORK	0x06
167 #define CISTPL_FUNCID_AIMS	0x07
168 #define CISTPL_FUNCID_SCSI	0x08
169 
170 #define CISTPL_SYSINIT_POST	0x01
171 #define CISTPL_SYSINIT_ROM	0x02
172 
173 typedef struct cistpl_funcid_t {
174     u_char	func;
175     u_char	sysinit;
176 } cistpl_funcid_t;
177 
178 typedef struct cistpl_funce_t {
179     u_char	type;
180     u_char	data[0];
181 } cistpl_funce_t;
182 
183 /*======================================================================
184 
185     Modem Function Extension Tuples
186 
187 ======================================================================*/
188 
189 #define CISTPL_FUNCE_SERIAL_IF		0x00
190 #define CISTPL_FUNCE_SERIAL_CAP		0x01
191 #define CISTPL_FUNCE_SERIAL_SERV_DATA	0x02
192 #define CISTPL_FUNCE_SERIAL_SERV_FAX	0x03
193 #define CISTPL_FUNCE_SERIAL_SERV_VOICE	0x04
194 #define CISTPL_FUNCE_SERIAL_CAP_DATA	0x05
195 #define CISTPL_FUNCE_SERIAL_CAP_FAX	0x06
196 #define CISTPL_FUNCE_SERIAL_CAP_VOICE	0x07
197 #define CISTPL_FUNCE_SERIAL_IF_DATA	0x08
198 #define CISTPL_FUNCE_SERIAL_IF_FAX	0x09
199 #define CISTPL_FUNCE_SERIAL_IF_VOICE	0x0a
200 
201 /* UART identification */
202 #define CISTPL_SERIAL_UART_8250		0x00
203 #define CISTPL_SERIAL_UART_16450	0x01
204 #define CISTPL_SERIAL_UART_16550	0x02
205 #define CISTPL_SERIAL_UART_8251		0x03
206 #define CISTPL_SERIAL_UART_8530		0x04
207 #define CISTPL_SERIAL_UART_85230	0x05
208 
209 /* UART capabilities */
210 #define CISTPL_SERIAL_UART_SPACE	0x01
211 #define CISTPL_SERIAL_UART_MARK		0x02
212 #define CISTPL_SERIAL_UART_ODD		0x04
213 #define CISTPL_SERIAL_UART_EVEN		0x08
214 #define CISTPL_SERIAL_UART_5BIT		0x01
215 #define CISTPL_SERIAL_UART_6BIT		0x02
216 #define CISTPL_SERIAL_UART_7BIT		0x04
217 #define CISTPL_SERIAL_UART_8BIT		0x08
218 #define CISTPL_SERIAL_UART_1STOP	0x10
219 #define CISTPL_SERIAL_UART_MSTOP	0x20
220 #define CISTPL_SERIAL_UART_2STOP	0x40
221 
222 typedef struct cistpl_serial_t {
223     u_char	uart_type;
224     u_char	uart_cap_0;
225     u_char	uart_cap_1;
226 } cistpl_serial_t;
227 
228 typedef struct cistpl_modem_cap_t {
229     u_char	flow;
230     u_char	cmd_buf;
231     u_char	rcv_buf_0, rcv_buf_1, rcv_buf_2;
232     u_char	xmit_buf_0, xmit_buf_1, xmit_buf_2;
233 } cistpl_modem_cap_t;
234 
235 #define CISTPL_SERIAL_MOD_103		0x01
236 #define CISTPL_SERIAL_MOD_V21		0x02
237 #define CISTPL_SERIAL_MOD_V23		0x04
238 #define CISTPL_SERIAL_MOD_V22		0x08
239 #define CISTPL_SERIAL_MOD_212A		0x10
240 #define CISTPL_SERIAL_MOD_V22BIS	0x20
241 #define CISTPL_SERIAL_MOD_V26		0x40
242 #define CISTPL_SERIAL_MOD_V26BIS	0x80
243 #define CISTPL_SERIAL_MOD_V27BIS	0x01
244 #define CISTPL_SERIAL_MOD_V29		0x02
245 #define CISTPL_SERIAL_MOD_V32		0x04
246 #define CISTPL_SERIAL_MOD_V32BIS	0x08
247 #define CISTPL_SERIAL_MOD_V34		0x10
248 
249 #define CISTPL_SERIAL_ERR_MNP2_4	0x01
250 #define CISTPL_SERIAL_ERR_V42_LAPM	0x02
251 
252 #define CISTPL_SERIAL_CMPR_V42BIS	0x01
253 #define CISTPL_SERIAL_CMPR_MNP5		0x02
254 
255 #define CISTPL_SERIAL_CMD_AT1		0x01
256 #define CISTPL_SERIAL_CMD_AT2		0x02
257 #define CISTPL_SERIAL_CMD_AT3		0x04
258 #define CISTPL_SERIAL_CMD_MNP_AT	0x08
259 #define CISTPL_SERIAL_CMD_V25BIS	0x10
260 #define CISTPL_SERIAL_CMD_V25A		0x20
261 #define CISTPL_SERIAL_CMD_DMCL		0x40
262 
263 typedef struct cistpl_data_serv_t {
264     u_char	max_data_0;
265     u_char	max_data_1;
266     u_char	modulation_0;
267     u_char	modulation_1;
268     u_char	error_control;
269     u_char	compression;
270     u_char	cmd_protocol;
271     u_char	escape;
272     u_char	encrypt;
273     u_char	misc_features;
274     u_char	ccitt_code[0];
275 } cistpl_data_serv_t;
276 
277 typedef struct cistpl_fax_serv_t {
278     u_char	max_data_0;
279     u_char	max_data_1;
280     u_char	modulation;
281     u_char	encrypt;
282     u_char	features_0;
283     u_char	features_1;
284     u_char	ccitt_code[0];
285 } cistpl_fax_serv_t;
286 
287 typedef struct cistpl_voice_serv_t {
288     u_char	max_data_0;
289     u_char	max_data_1;
290 } cistpl_voice_serv_t;
291 
292 /*======================================================================
293 
294     LAN Function Extension Tuples
295 
296 ======================================================================*/
297 
298 #define CISTPL_FUNCE_LAN_TECH		0x01
299 #define CISTPL_FUNCE_LAN_SPEED		0x02
300 #define CISTPL_FUNCE_LAN_MEDIA		0x03
301 #define CISTPL_FUNCE_LAN_NODE_ID	0x04
302 #define CISTPL_FUNCE_LAN_CONNECTOR	0x05
303 
304 /* LAN technologies */
305 #define CISTPL_LAN_TECH_ARCNET		0x01
306 #define CISTPL_LAN_TECH_ETHERNET	0x02
307 #define CISTPL_LAN_TECH_TOKENRING	0x03
308 #define CISTPL_LAN_TECH_LOCALTALK	0x04
309 #define CISTPL_LAN_TECH_FDDI		0x05
310 #define CISTPL_LAN_TECH_ATM		0x06
311 #define CISTPL_LAN_TECH_WIRELESS	0x07
312 
313 typedef struct cistpl_lan_tech_t {
314     u_char	tech;
315 } cistpl_lan_tech_t;
316 
317 typedef struct cistpl_lan_speed_t {
318     u_int	speed;
319 } cistpl_lan_speed_t;
320 
321 /* LAN media definitions */
322 #define CISTPL_LAN_MEDIA_UTP		0x01
323 #define CISTPL_LAN_MEDIA_STP		0x02
324 #define CISTPL_LAN_MEDIA_THIN_COAX	0x03
325 #define CISTPL_LAN_MEDIA_THICK_COAX	0x04
326 #define CISTPL_LAN_MEDIA_FIBER		0x05
327 #define CISTPL_LAN_MEDIA_900MHZ		0x06
328 #define CISTPL_LAN_MEDIA_2GHZ		0x07
329 #define CISTPL_LAN_MEDIA_5GHZ		0x08
330 #define CISTPL_LAN_MEDIA_DIFF_IR	0x09
331 #define CISTPL_LAN_MEDIA_PTP_IR		0x0a
332 
333 typedef struct cistpl_lan_media_t {
334     u_char	media;
335 } cistpl_lan_media_t;
336 
337 typedef struct cistpl_lan_node_id_t {
338     u_char	nb;
339     u_char	id[16];
340 } cistpl_lan_node_id_t;
341 
342 typedef struct cistpl_lan_connector_t {
343     u_char	code;
344 } cistpl_lan_connector_t;
345 
346 /*======================================================================
347 
348     IDE Function Extension Tuples
349 
350 ======================================================================*/
351 
352 #define CISTPL_IDE_INTERFACE		0x01
353 
354 typedef struct cistpl_ide_interface_t {
355     u_char	interface;
356 } cistpl_ide_interface_t;
357 
358 /* First feature byte */
359 #define CISTPL_IDE_SILICON		0x04
360 #define CISTPL_IDE_UNIQUE		0x08
361 #define CISTPL_IDE_DUAL			0x10
362 
363 /* Second feature byte */
364 #define CISTPL_IDE_HAS_SLEEP		0x01
365 #define CISTPL_IDE_HAS_STANDBY		0x02
366 #define CISTPL_IDE_HAS_IDLE		0x04
367 #define CISTPL_IDE_LOW_POWER		0x08
368 #define CISTPL_IDE_REG_INHIBIT		0x10
369 #define CISTPL_IDE_HAS_INDEX		0x20
370 #define CISTPL_IDE_IOIS16		0x40
371 
372 typedef struct cistpl_ide_feature_t {
373     u_char	feature1;
374     u_char	feature2;
375 } cistpl_ide_feature_t;
376 
377 #define CISTPL_FUNCE_IDE_IFACE		0x01
378 #define CISTPL_FUNCE_IDE_MASTER		0x02
379 #define CISTPL_FUNCE_IDE_SLAVE		0x03
380 
381 /*======================================================================
382 
383     Configuration Table Entries
384 
385 ======================================================================*/
386 
387 #define CISTPL_BAR_SPACE	0x07
388 #define CISTPL_BAR_SPACE_IO	0x10
389 #define CISTPL_BAR_PREFETCH	0x20
390 #define CISTPL_BAR_CACHEABLE	0x40
391 #define CISTPL_BAR_1MEG_MAP	0x80
392 
393 typedef struct cistpl_bar_t {
394     u_char	attr;
395     u_int	size;
396 } cistpl_bar_t;
397 
398 typedef struct cistpl_config_t {
399     u_char	last_idx;
400     u_int	base;
401     u_int	rmask[4];
402     u_char	subtuples;
403 } cistpl_config_t;
404 
405 /* These are bits in the 'present' field, and indices in 'param' */
406 #define CISTPL_POWER_VNOM	0
407 #define CISTPL_POWER_VMIN	1
408 #define CISTPL_POWER_VMAX	2
409 #define CISTPL_POWER_ISTATIC	3
410 #define CISTPL_POWER_IAVG	4
411 #define CISTPL_POWER_IPEAK	5
412 #define CISTPL_POWER_IDOWN	6
413 
414 #define CISTPL_POWER_HIGHZ_OK	0x01
415 #define CISTPL_POWER_HIGHZ_REQ	0x02
416 
417 typedef struct cistpl_power_t {
418     u_char	present;
419     u_char	flags;
420     u_int	param[7];
421 } cistpl_power_t;
422 
423 typedef struct cistpl_timing_t {
424     u_int	wait, waitscale;
425     u_int	ready, rdyscale;
426     u_int	reserved, rsvscale;
427 } cistpl_timing_t;
428 
429 #define CISTPL_IO_LINES_MASK	0x1f
430 #define CISTPL_IO_8BIT		0x20
431 #define CISTPL_IO_16BIT		0x40
432 #define CISTPL_IO_RANGE		0x80
433 
434 #define CISTPL_IO_MAX_WIN	16
435 
436 typedef struct cistpl_io_t {
437     u_char	flags;
438     u_char	nwin;
439     struct {
440 	u_int	base;
441 	u_int	len;
442     } win[CISTPL_IO_MAX_WIN];
443 } cistpl_io_t;
444 
445 typedef struct cistpl_irq_t {
446     u_int	IRQInfo1;
447     u_int	IRQInfo2;
448 } cistpl_irq_t;
449 
450 #define CISTPL_MEM_MAX_WIN	8
451 
452 typedef struct cistpl_mem_t {
453     u_char	flags;
454     u_char	nwin;
455     struct {
456 	u_int	len;
457 	u_int	card_addr;
458 	u_int	host_addr;
459     } win[CISTPL_MEM_MAX_WIN];
460 } cistpl_mem_t;
461 
462 #define CISTPL_CFTABLE_DEFAULT		0x0001
463 #define CISTPL_CFTABLE_BVDS		0x0002
464 #define CISTPL_CFTABLE_WP		0x0004
465 #define CISTPL_CFTABLE_RDYBSY		0x0008
466 #define CISTPL_CFTABLE_MWAIT		0x0010
467 #define CISTPL_CFTABLE_AUDIO		0x0800
468 #define CISTPL_CFTABLE_READONLY		0x1000
469 #define CISTPL_CFTABLE_PWRDOWN		0x2000
470 
471 typedef struct cistpl_cftable_entry_t {
472     u_char		index;
473     u_short		flags;
474     u_char		interface;
475     cistpl_power_t	vcc, vpp1, vpp2;
476     cistpl_timing_t	timing;
477     cistpl_io_t		io;
478     cistpl_irq_t	irq;
479     cistpl_mem_t	mem;
480     u_char		subtuples;
481 } cistpl_cftable_entry_t;
482 
483 #define CISTPL_CFTABLE_MASTER		0x000100
484 #define CISTPL_CFTABLE_INVALIDATE	0x000200
485 #define CISTPL_CFTABLE_VGA_PALETTE	0x000400
486 #define CISTPL_CFTABLE_PARITY		0x000800
487 #define CISTPL_CFTABLE_WAIT		0x001000
488 #define CISTPL_CFTABLE_SERR		0x002000
489 #define CISTPL_CFTABLE_FAST_BACK	0x004000
490 #define CISTPL_CFTABLE_BINARY_AUDIO	0x010000
491 #define CISTPL_CFTABLE_PWM_AUDIO	0x020000
492 
493 typedef struct cistpl_cftable_entry_cb_t {
494     u_char		index;
495     u_int		flags;
496     cistpl_power_t	vcc, vpp1, vpp2;
497     u_char		io;
498     cistpl_irq_t	irq;
499     u_char		mem;
500     u_char		subtuples;
501 } cistpl_cftable_entry_cb_t;
502 
503 typedef struct cistpl_device_geo_t {
504     u_char		ngeo;
505     struct {
506 	u_char		buswidth;
507 	u_int		erase_block;
508 	u_int		read_block;
509 	u_int		write_block;
510 	u_int		partition;
511 	u_int		interleave;
512     } geo[CISTPL_MAX_DEVICES];
513 } cistpl_device_geo_t;
514 
515 typedef struct cistpl_vers_2_t {
516     u_char	vers;
517     u_char	comply;
518     u_short	dindex;
519     u_char	vspec8, vspec9;
520     u_char	nhdr;
521     u_char	vendor, info;
522     char	str[244];
523 } cistpl_vers_2_t;
524 
525 typedef struct cistpl_org_t {
526     u_char	data_org;
527     char	desc[30];
528 } cistpl_org_t;
529 
530 #define CISTPL_ORG_FS		0x00
531 #define CISTPL_ORG_APPSPEC	0x01
532 #define CISTPL_ORG_XIP		0x02
533 
534 typedef struct cistpl_format_t {
535     u_char	type;
536     u_char	edc;
537     u_int	offset;
538     u_int	length;
539 } cistpl_format_t;
540 
541 #define CISTPL_FORMAT_DISK	0x00
542 #define CISTPL_FORMAT_MEM	0x01
543 
544 #define CISTPL_EDC_NONE		0x00
545 #define CISTPL_EDC_CKSUM	0x01
546 #define CISTPL_EDC_CRC		0x02
547 #define CISTPL_EDC_PCC		0x03
548 
549 typedef union cisparse_t {
550     cistpl_device_t		device;
551     cistpl_checksum_t		checksum;
552     cistpl_longlink_t		longlink;
553     cistpl_longlink_mfc_t	longlink_mfc;
554     cistpl_vers_1_t		version_1;
555     cistpl_altstr_t		altstr;
556     cistpl_jedec_t		jedec;
557     cistpl_manfid_t		manfid;
558     cistpl_funcid_t		funcid;
559     cistpl_funce_t		funce;
560     cistpl_bar_t		bar;
561     cistpl_config_t		config;
562     cistpl_cftable_entry_t	cftable_entry;
563     cistpl_cftable_entry_cb_t	cftable_entry_cb;
564     cistpl_device_geo_t		device_geo;
565     cistpl_vers_2_t		vers_2;
566     cistpl_org_t		org;
567     cistpl_format_t		format;
568 } cisparse_t;
569 
570 typedef struct tuple_t {
571     u_int	Attributes;
572     cisdata_t 	DesiredTuple;
573     u_int	Flags;		/* internal use */
574     u_int	LinkOffset;	/* internal use */
575     u_int	CISOffset;	/* internal use */
576     cisdata_t	TupleCode;
577     cisdata_t	TupleLink;
578     cisdata_t	TupleOffset;
579     cisdata_t	TupleDataMax;
580     cisdata_t	TupleDataLen;
581     cisdata_t	*TupleData;
582 } tuple_t;
583 
584 /* Special cisdata_t value */
585 #define RETURN_FIRST_TUPLE	0xff
586 
587 /* Attributes for tuple calls */
588 #define TUPLE_RETURN_LINK	0x01
589 #define TUPLE_RETURN_COMMON	0x02
590 
591 /* For ValidateCIS */
592 typedef struct cisinfo_t {
593     u_int	Chains;
594 } cisinfo_t;
595 
596 #define CISTPL_MAX_CIS_SIZE	0x200
597 
598 /* For ReplaceCIS */
599 typedef struct cisdump_t {
600     u_int	Length;
601     cisdata_t	Data[CISTPL_MAX_CIS_SIZE];
602 } cisdump_t;
603 
604 int pcmcia_get_first_tuple(client_handle_t handle, tuple_t *tuple);
605 int pcmcia_get_next_tuple(client_handle_t handle, tuple_t *tuple);
606 int pcmcia_get_tuple_data(client_handle_t handle, tuple_t *tuple);
607 int pcmcia_parse_tuple(client_handle_t handle, tuple_t *tuple, cisparse_t *parse);
608 
609 int pcmcia_validate_cis(client_handle_t handle, cisinfo_t *info);
610 int pcmcia_replace_cis(client_handle_t handle, cisdump_t *cis);
611 
612 #endif /* LINUX_CISTPL_H */
613