xref: /illumos-gate/usr/src/grub/grub-0.97/netboot/dev.h (revision 1b8adde7ba7d5e04395c141c5400dc2cffd7d809)
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