#ifndef _DEV_H #define _DEV_H #include "isa.h" #include "pci.h" /* Need to check the packing of this struct if Etherboot is ported */ struct dev_id { unsigned short vendor_id; unsigned short device_id; unsigned char bus_type; #define PCI_BUS_TYPE 1 #define ISA_BUS_TYPE 2 }; /* Dont use sizeof, that will include the padding */ #define DEV_ID_SIZE 8 struct pci_probe_state { #ifdef CONFIG_PCI struct pci_device dev; int advance; #else int dummy; #endif }; struct isa_probe_state { #ifdef CONFIG_ISA const struct isa_driver *driver; int advance; #else int dummy; #endif }; union probe_state { struct pci_probe_state pci; struct isa_probe_state isa; }; struct dev { void (*disable)P((struct dev *)); struct dev_id devid; /* device ID string (sent to DHCP server) */ int index; /* Index of next device on this controller to probe */ int type; /* Type of device I am probing for */ int how_probe; /* First, next or awake */ int to_probe; /* Flavor of device I am probing */ int failsafe; /* Failsafe probe requested */ int type_index; /* Index of this device (within type) */ #define PROBE_NONE 0 #define PROBE_PCI 1 #define PROBE_ISA 2 union probe_state state; }; #define NIC_DRIVER 0 #define DISK_DRIVER 1 #define FLOPPY_DRIVER 2 #define BRIDGE_DRIVER 1000 #define PROBE_FIRST (-1) #define PROBE_NEXT 0 #define PROBE_AWAKE 1 /* After calling disable bring up the same device */ /* The probe result codes are selected * to allow them to be fed back into the probe * routine and get a successful probe. */ #define PROBE_FAILED PROBE_FIRST #define PROBE_WORKED PROBE_NEXT extern int probe(struct dev *dev); extern void disable(struct dev *dev); #endif /* _DEV_H */