Updated all common buses to new API.
[people/xl0/gpxe.git] / src / include / isa.h
1 #ifndef ISA_H
2 #define ISA_H
3
4 #include "stdint.h"
5 #include "isa_ids.h"
6 #include "nic.h"
7
8 /*
9  * A location on an ISA bus
10  *
11  */
12 struct isa_loc {
13         unsigned int probe_idx;
14 };
15 #define ISA_MAX_PROBE_IDX       255 /* Unlikely to ever be more than ~20 */
16
17 /*
18  * A physical ISA device
19  *
20  */
21 struct isa_device {
22         const char *name;
23         unsigned int driver_probe_idx;
24         uint16_t ioaddr;
25         uint16_t mfg_id;
26         uint16_t prod_id;
27 };
28
29 /*
30  * An individual ISA device, identified by probe address
31  *
32  */
33 typedef uint16_t isa_probe_addr_t;
34
35 /*
36  * An ISA driver, with a probe address list and a probe_addr method.
37  * probe_addr() should return 1 if a card is physically present,
38  * leaving the other operations (read MAC address etc.) down to the
39  * main probe() routine.
40  *
41  */
42 struct isa_driver {
43         const char *name;
44         isa_probe_addr_t *probe_addrs;
45         unsigned int addr_count;
46         int ( * probe_addr ) ( isa_probe_addr_t addr );
47         uint16_t mfg_id;
48         uint16_t prod_id;
49 };
50
51 /*
52  * Define an ISA driver
53  *
54  */
55 #define ISA_DRIVER( _probe_addrs, _probe_addr, _mfg_id, _prod_id ) {        \
56         .probe_addrs = _probe_addrs,                                        \
57         .addr_count = sizeof ( _probe_addrs ) / sizeof ( _probe_addrs[0] ), \
58         .probe_addr = _probe_addr,                                          \
59         .mfg_id = _mfg_id,                                                  \
60         .prod_id = _prod_id,                                                \
61 }
62
63 /*
64  * ISA_ROM is parsed by parserom.pl to generate Makefile rules and
65  * files for rom-o-matic.
66  *
67  */
68 #define ISA_ROM( IMAGE, DESCRIPTION )
69
70 /*
71  * Functions in isa.c
72  *
73  */
74 extern void fill_isa_nic ( struct nic *nic, struct isa_device *isa );
75
76 /*
77  * ISA bus global definition
78  *
79  */
80 extern struct bus_driver isa_driver;
81
82 #endif /* ISA_H */
83