diff options
Diffstat (limited to 'usr.sbin/pccard/pccardd/readcis.h')
-rw-r--r-- | usr.sbin/pccard/pccardd/readcis.h | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/usr.sbin/pccard/pccardd/readcis.h b/usr.sbin/pccard/pccardd/readcis.h new file mode 100644 index 0000000..379435b --- /dev/null +++ b/usr.sbin/pccard/pccardd/readcis.h @@ -0,0 +1,116 @@ + +#define MAXSTR 20 +/* + * Storage of one tuple. + */ +struct tuple + { + struct tuple *next; + unsigned char code; + int length; + unsigned char *data; + }; + +struct tuple_list + { + struct tuple_list *next; + struct tuple *tuples; + off_t offs; + int flags; + }; + +struct tuple_info + { + char *name; + unsigned char code; + unsigned char length; /* 255 means variable length */ + }; +/* + * Memory device descriptor. + */ +struct dev_mem + { + unsigned char valid; + unsigned char type; + unsigned char speed; + unsigned char wps; + unsigned char addr; + unsigned char units; + }; +/* + * One I/O structure describing a possible I/O map + * of the card. + */ +struct cis_ioblk + { + struct cis_ioblk *next; + unsigned int addr; + unsigned int size; + }; +/* + * A structure storing a memory map for the card. + */ +struct cis_memblk + { + struct cis_memblk *next; + unsigned int address; + unsigned int length; + unsigned int host_address; + }; +/* + * One configuration entry for the card. + */ +struct cis_config + { + struct cis_config *next; + unsigned int pwr:1; /* Which values are defined. */ + unsigned int timing:1; + unsigned int iospace:1; + unsigned int irq:1; + unsigned int memspace:1; + unsigned int misc_valid:1; + unsigned char id; + unsigned char io_blks; + unsigned char io_addr; + unsigned char io_bus; + struct cis_ioblk *io; + unsigned char irqlevel; + unsigned char irq_flags; + unsigned irq_mask; + unsigned char memwins; + struct cis_memblk *mem; + unsigned char misc; + }; +/* + * Structure holding all data retrieved from the + * CIS block on the card. + * The default configuration contains interface defaults + * not listed in each separate configuration. + */ +struct cis + { + struct tuple_list *tlist; + char manuf[MAXSTR]; + char vers[MAXSTR]; + char add_info1[MAXSTR]; + char add_info2[MAXSTR]; + unsigned char maj_v, min_v; + unsigned char last_config; + unsigned char ccrs; + unsigned long reg_addr; + struct dev_mem attr_mem; + struct dev_mem common_mem; + struct cis_config *def_config; + struct cis_config *conf; + }; + +void *xmalloc(int); +struct cis *readcis(int); +void dumpcis(struct cis *); +void freecis(struct cis *); +struct tuple_list *read_tuples(int); +struct tuple *find_tuple(struct cis *, unsigned char); +struct tuple *find_tuple_in_list(struct tuple_list *, unsigned char); + +struct tuple_info *get_tuple_info(unsigned char); +char *tuple_name(unsigned char); |