xref: /onnv-gate/usr/src/grub/grub-0.97/netboot/dev.h (revision 8044:b3af80bbf173)
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