From 1aee4e80011e9c75eb18b9e1c694d209899f2084 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Wed, 13 Apr 2005 02:59:13 +0000 Subject: Extracted from 3c509.c --- src/include/mca.h | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/include/mca.h (limited to 'src/include') diff --git a/src/include/mca.h b/src/include/mca.h new file mode 100644 index 000000000..f6d37ba79 --- /dev/null +++ b/src/include/mca.h @@ -0,0 +1,75 @@ +/* + * MCA bus driver code + * + * Abstracted from 3c509.c. + * + */ + +#ifndef MCA_H +#define MCA_H + +/* + * MCA constants + * + */ + +#define MCA_MOTHERBOARD_SETUP_REG 0x94 +#define MCA_ADAPTER_SETUP_REG 0x96 +#define MCA_MAX_SLOT_NR 8 +#define MCA_POS_REG(n) (0x100+(n)) + +/* Is there a standard that would define this? */ +#include "isa.h" +#define GENERIC_MCA_VENDOR ISAPNP_VENDOR ( 'M', 'C', 'A' ) + +/* + * A physical MCA device + * + */ +struct dev; +struct mca_device { + struct dev *dev; + unsigned int slot; + unsigned char pos[8]; + int already_tried; +}; +#define MCA_ID(mca) ( ( (mca)->pos[1] << 8 ) + (mca)->pos[0] ) + +/* + * An individual MCA device identified by ID + * + */ +struct mca_id { + const char *name; + int id; +}; + +/* + * An MCA driver, with a device ID (struct mca_id) table. + * + */ +struct mca_driver { + const char *name; + struct mca_id *ids; + unsigned int id_count; +}; + +/* + * Define an MCA driver + * + */ +#define MCA_DRIVER( driver_name, mca_ids ) { \ + .name = driver_name, \ + .ids = mca_ids, \ + .id_count = sizeof ( mca_ids ) / sizeof ( mca_ids[0] ), \ +} + +/* + * Functions in mca.c + * + */ +extern struct mca_device * mca_device ( struct dev *dev ); +extern int find_mca_device ( struct mca_device *mca, + struct mca_driver *driver ); + +#endif -- cgit v1.2.3-55-g7522