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