1*1b8adde7SWilliam Kucharski #ifndef _DEV_H 2*1b8adde7SWilliam Kucharski #define _DEV_H 3*1b8adde7SWilliam Kucharski 4*1b8adde7SWilliam Kucharski #include "isa.h" 5*1b8adde7SWilliam Kucharski #include "pci.h" 6*1b8adde7SWilliam Kucharski 7*1b8adde7SWilliam Kucharski /* Need to check the packing of this struct if Etherboot is ported */ 8*1b8adde7SWilliam Kucharski struct dev_id 9*1b8adde7SWilliam Kucharski { 10*1b8adde7SWilliam Kucharski unsigned short vendor_id; 11*1b8adde7SWilliam Kucharski unsigned short device_id; 12*1b8adde7SWilliam Kucharski unsigned char bus_type; 13*1b8adde7SWilliam Kucharski #define PCI_BUS_TYPE 1 14*1b8adde7SWilliam Kucharski #define ISA_BUS_TYPE 2 15*1b8adde7SWilliam Kucharski }; 16*1b8adde7SWilliam Kucharski 17*1b8adde7SWilliam Kucharski /* Dont use sizeof, that will include the padding */ 18*1b8adde7SWilliam Kucharski #define DEV_ID_SIZE 8 19*1b8adde7SWilliam Kucharski 20*1b8adde7SWilliam Kucharski 21*1b8adde7SWilliam Kucharski struct pci_probe_state 22*1b8adde7SWilliam Kucharski { 23*1b8adde7SWilliam Kucharski #ifdef CONFIG_PCI 24*1b8adde7SWilliam Kucharski struct pci_device dev; 25*1b8adde7SWilliam Kucharski int advance; 26*1b8adde7SWilliam Kucharski #else 27*1b8adde7SWilliam Kucharski int dummy; 28*1b8adde7SWilliam Kucharski #endif 29*1b8adde7SWilliam Kucharski }; 30*1b8adde7SWilliam Kucharski struct isa_probe_state 31*1b8adde7SWilliam Kucharski { 32*1b8adde7SWilliam Kucharski #ifdef CONFIG_ISA 33*1b8adde7SWilliam Kucharski const struct isa_driver *driver; 34*1b8adde7SWilliam Kucharski int advance; 35*1b8adde7SWilliam Kucharski #else 36*1b8adde7SWilliam Kucharski int dummy; 37*1b8adde7SWilliam Kucharski #endif 38*1b8adde7SWilliam Kucharski }; 39*1b8adde7SWilliam Kucharski 40*1b8adde7SWilliam Kucharski union probe_state 41*1b8adde7SWilliam Kucharski { 42*1b8adde7SWilliam Kucharski struct pci_probe_state pci; 43*1b8adde7SWilliam Kucharski struct isa_probe_state isa; 44*1b8adde7SWilliam Kucharski }; 45*1b8adde7SWilliam Kucharski 46*1b8adde7SWilliam Kucharski struct dev 47*1b8adde7SWilliam Kucharski { 48*1b8adde7SWilliam Kucharski void (*disable)P((struct dev *)); 49*1b8adde7SWilliam Kucharski struct dev_id devid; /* device ID string (sent to DHCP server) */ 50*1b8adde7SWilliam Kucharski int index; /* Index of next device on this controller to probe */ 51*1b8adde7SWilliam Kucharski int type; /* Type of device I am probing for */ 52*1b8adde7SWilliam Kucharski int how_probe; /* First, next or awake */ 53*1b8adde7SWilliam Kucharski int to_probe; /* Flavor of device I am probing */ 54*1b8adde7SWilliam Kucharski int failsafe; /* Failsafe probe requested */ 55*1b8adde7SWilliam Kucharski int type_index; /* Index of this device (within type) */ 56*1b8adde7SWilliam Kucharski #define PROBE_NONE 0 57*1b8adde7SWilliam Kucharski #define PROBE_PCI 1 58*1b8adde7SWilliam Kucharski #define PROBE_ISA 2 59*1b8adde7SWilliam Kucharski union probe_state state; 60*1b8adde7SWilliam Kucharski }; 61*1b8adde7SWilliam Kucharski 62*1b8adde7SWilliam Kucharski 63*1b8adde7SWilliam Kucharski #define NIC_DRIVER 0 64*1b8adde7SWilliam Kucharski #define DISK_DRIVER 1 65*1b8adde7SWilliam Kucharski #define FLOPPY_DRIVER 2 66*1b8adde7SWilliam Kucharski 67*1b8adde7SWilliam Kucharski #define BRIDGE_DRIVER 1000 68*1b8adde7SWilliam Kucharski 69*1b8adde7SWilliam Kucharski #define PROBE_FIRST (-1) 70*1b8adde7SWilliam Kucharski #define PROBE_NEXT 0 71*1b8adde7SWilliam Kucharski #define PROBE_AWAKE 1 /* After calling disable bring up the same device */ 72*1b8adde7SWilliam Kucharski 73*1b8adde7SWilliam Kucharski /* The probe result codes are selected 74*1b8adde7SWilliam Kucharski * to allow them to be fed back into the probe 75*1b8adde7SWilliam Kucharski * routine and get a successful probe. 76*1b8adde7SWilliam Kucharski */ 77*1b8adde7SWilliam Kucharski #define PROBE_FAILED PROBE_FIRST 78*1b8adde7SWilliam Kucharski #define PROBE_WORKED PROBE_NEXT 79*1b8adde7SWilliam Kucharski 80*1b8adde7SWilliam Kucharski extern int probe(struct dev *dev); 81*1b8adde7SWilliam Kucharski extern void disable(struct dev *dev); 82*1b8adde7SWilliam Kucharski 83*1b8adde7SWilliam Kucharski #endif /* _DEV_H */ 84