|
|
1.1 root 1: /*
2: * cistpl.h 1.35 2001/08/24 12:16: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: * <[email protected]>. 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
20: * which 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: #endif /* LINUX_CISTPL_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.