summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/include')
-rw-r--r--src/include/dev.h2
-rw-r--r--src/include/eisa.h9
-rw-r--r--src/include/isa.h9
-rw-r--r--src/include/isapnp.h9
-rw-r--r--src/include/mca.h9
-rw-r--r--src/include/pci.h3
6 files changed, 24 insertions, 17 deletions
diff --git a/src/include/dev.h b/src/include/dev.h
index 5f1d32e1e..94833495c 100644
--- a/src/include/dev.h
+++ b/src/include/dev.h
@@ -28,7 +28,7 @@ struct device_driver;
* A physical device location on a bus.
*
*/
-#define BUS_LOC_SIZE 4
+#define BUS_LOC_SIZE 8
struct bus_loc {
char bytes[BUS_LOC_SIZE];
};
diff --git a/src/include/eisa.h b/src/include/eisa.h
index ad716c28b..403a133f4 100644
--- a/src/include/eisa.h
+++ b/src/include/eisa.h
@@ -66,10 +66,11 @@ struct eisa_driver {
* Define an EISA driver
*
*/
-#define EISA_DRIVER( _ids ) { \
- .ids = _ids, \
- .id_count = sizeof ( _ids ) / sizeof ( _ids[0] ), \
-}
+#define EISA_DRIVER( _name, _ids ) \
+ static struct eisa_driver _name = { \
+ .ids = _ids, \
+ .id_count = sizeof ( _ids ) / sizeof ( _ids[0] ), \
+ }
/*
* Functions in eisa.c
diff --git a/src/include/isa.h b/src/include/isa.h
index 97f5f7e1f..1a4c87057 100644
--- a/src/include/isa.h
+++ b/src/include/isa.h
@@ -9,10 +9,11 @@
* A location on an ISA bus
*
*/
+struct isa_driver;
struct isa_loc {
+ unsigned int driver;
unsigned int probe_idx;
};
-#define ISA_MAX_PROBE_IDX 255 /* Unlikely to ever be more than ~20 */
/*
* A physical ISA device
@@ -20,7 +21,7 @@ struct isa_loc {
*/
struct isa_device {
const char *name;
- unsigned int driver_probe_idx;
+ struct isa_driver *driver;
uint16_t ioaddr;
uint16_t mfg_id;
uint16_t prod_id;
@@ -47,12 +48,14 @@ struct isa_driver {
uint16_t mfg_id;
uint16_t prod_id;
};
+#define __isa_driver __attribute__ (( section ( ".drivers.isa" ) ))
/*
* Define an ISA driver
*
*/
-#define ISA_DRIVER( _probe_addrs, _probe_addr, _mfg_id, _prod_id ) { \
+#define ISA_DRIVER( _name, _probe_addrs, _probe_addr, _mfg_id, _prod_id ) \
+static struct isa_driver _name __isa_driver = { \
.probe_addrs = _probe_addrs, \
.addr_count = sizeof ( _probe_addrs ) / sizeof ( _probe_addrs[0] ), \
.probe_addr = _probe_addr, \
diff --git a/src/include/isapnp.h b/src/include/isapnp.h
index ec0b8fc9b..476b26f82 100644
--- a/src/include/isapnp.h
+++ b/src/include/isapnp.h
@@ -200,10 +200,11 @@ struct isapnp_driver {
* Define an ISAPnP driver
*
*/
-#define ISAPNP_DRIVER( _ids ) { \
- .ids = _ids, \
- .id_count = sizeof ( _ids ) / sizeof ( _ids[0] ), \
-}
+#define ISAPNP_DRIVER( _name, _ids ) \
+ static struct isapnp_driver _name = { \
+ .ids = _ids, \
+ .id_count = sizeof ( _ids ) / sizeof ( _ids[0] ), \
+ }
/*
* Functions in isapnp.c
diff --git a/src/include/mca.h b/src/include/mca.h
index aff8073f4..31285580b 100644
--- a/src/include/mca.h
+++ b/src/include/mca.h
@@ -67,10 +67,11 @@ struct mca_driver {
* Define an MCA driver
*
*/
-#define MCA_DRIVER( _ids ) { \
- .ids = _ids, \
- .id_count = sizeof ( _ids ) / sizeof ( _ids[0] ), \
-}
+#define MCA_DRIVER( _name, _ids ) \
+ static struct mca_driver _name = { \
+ .ids = _ids, \
+ .id_count = sizeof ( _ids ) / sizeof ( _ids[0] ), \
+ }
/*
* Functions in mca.c
diff --git a/src/include/pci.h b/src/include/pci.h
index 677e09a64..c50b79a8f 100644
--- a/src/include/pci.h
+++ b/src/include/pci.h
@@ -307,7 +307,8 @@ struct pci_driver {
* Define a PCI driver.
*
*/
-#define PCI_DRIVER( _ids, _class ) { \
+#define PCI_DRIVER( _name, _ids, _class ) \
+ static struct pci_driver _name = { \
.ids = _ids, \
.id_count = sizeof ( _ids ) / sizeof ( _ids[0] ), \
.class = _class, \