cistpl.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:16k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

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