diff options
| author | Michael Brown | 2005-04-13 14:45:38 +0200 |
|---|---|---|
| committer | Michael Brown | 2005-04-13 14:45:38 +0200 |
| commit | 200b39a645d7cda6533ae486fc190839c517094a (patch) | |
| tree | 76c43dbec15c789438743ee442cc3f6181011e39 /src/include | |
| parent | Add EISA as a bus type. (diff) | |
| download | ipxe-200b39a645d7cda6533ae486fc190839c517094a.tar.gz ipxe-200b39a645d7cda6533ae486fc190839c517094a.tar.xz ipxe-200b39a645d7cda6533ae486fc190839c517094a.zip | |
Extraced from 3c509.c
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/eisa.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/include/eisa.h b/src/include/eisa.h new file mode 100644 index 000000000..4fe14fc69 --- /dev/null +++ b/src/include/eisa.h @@ -0,0 +1,76 @@ +#ifndef EISA_H +#define EISA_H + +#include "isa_ids.h" + +/* + * EISA constants + * + */ + +#define EISA_MIN_SLOT (0x1) +#define EISA_MAX_SLOT (0xf) +#define EISA_SLOT_BASE( n ) ( 0x1000 * (n) ) + +#define EISA_MFG_ID_HI ( 0xc80 ) +#define EISA_MFG_ID_LO ( 0xc81 ) +#define EISA_PROD_ID_HI ( 0xc82 ) +#define EISA_PROD_ID_LO ( 0xc83 ) +#define EISA_GLOBAL_CONFIG ( 0xc84 ) + +#define EISA_CMD_RESET ( 1 << 2 ) +#define EISA_CMD_ENABLE ( 1 << 0 ) + +/* + * A physical EISA device + * + */ +struct dev; +struct eisa_device { + struct dev *dev; + unsigned int slot; + uint16_t ioaddr; + uint16_t mfg_id; + uint16_t prod_id; + int already_tried; +}; + +/* + * An individual EISA device identified by ID + * + */ +struct eisa_id { + const char *name; + uint16_t mfg_id, prod_id; +}; + +/* + * An EISA driver, with a device ID (struct eisa_id) table. + * + */ +struct eisa_driver { + const char *name; + struct eisa_id *ids; + unsigned int id_count; +}; + +/* + * Define an EISA driver + * + */ +#define EISA_DRIVER( driver_name, eisa_ids ) { \ + .name = driver_name, \ + .ids = eisa_ids, \ + .id_count = sizeof ( eisa_ids ) / sizeof ( eisa_ids[0] ), \ +} + +/* + * Functions in eisa.c + * + */ +extern struct eisa_device * eisa_device ( struct dev *dev ); +extern int find_eisa_device ( struct eisa_device *eisa, + struct eisa_driver *driver ); +extern void enable_eisa_device ( struct eisa_device *eisa ); + +#endif /* EISA_H */ |
