1 | #ifndef DEV_H
|
---|
2 | #define DEV_H
|
---|
3 |
|
---|
4 | #include "isa.h"
|
---|
5 | #include "pci.h"
|
---|
6 |
|
---|
7 | /* Need to check the packing of this struct if Etherboot is ported */
|
---|
8 | struct dev_id
|
---|
9 | {
|
---|
10 | unsigned short vendor_id;
|
---|
11 | unsigned short device_id;
|
---|
12 | unsigned char bus_type;
|
---|
13 | #define PCI_BUS_TYPE 1
|
---|
14 | #define ISA_BUS_TYPE 2
|
---|
15 | };
|
---|
16 |
|
---|
17 | /* Dont use sizeof, that will include the padding */
|
---|
18 | #define DEV_ID_SIZE 8
|
---|
19 |
|
---|
20 |
|
---|
21 | struct pci_probe_state
|
---|
22 | {
|
---|
23 | #ifdef CONFIG_PCI
|
---|
24 | struct pci_device dev;
|
---|
25 | int advance;
|
---|
26 | #else
|
---|
27 | int dummy;
|
---|
28 | #endif
|
---|
29 | };
|
---|
30 | struct isa_probe_state
|
---|
31 | {
|
---|
32 | #ifdef CONFIG_ISA
|
---|
33 | const struct isa_driver *driver;
|
---|
34 | int advance;
|
---|
35 | #else
|
---|
36 | int dummy;
|
---|
37 | #endif
|
---|
38 | };
|
---|
39 |
|
---|
40 | union probe_state
|
---|
41 | {
|
---|
42 | struct pci_probe_state pci;
|
---|
43 | struct isa_probe_state isa;
|
---|
44 | };
|
---|
45 |
|
---|
46 | struct dev
|
---|
47 | {
|
---|
48 | void (*disable)P((struct dev *));
|
---|
49 | struct dev_id devid; /* device ID string (sent to DHCP server) */
|
---|
50 | int index; /* Index of next device on this controller to probe */
|
---|
51 | int type; /* Type of device I am probing for */
|
---|
52 | int how_probe; /* First, next or awake */
|
---|
53 | int to_probe; /* Flavor of device I am probing */
|
---|
54 | int failsafe; /* Failsafe probe requested */
|
---|
55 | int type_index; /* Index of this device (within type) */
|
---|
56 | #define PROBE_NONE 0
|
---|
57 | #define PROBE_PCI 1
|
---|
58 | #define PROBE_ISA 2
|
---|
59 | union probe_state state;
|
---|
60 | };
|
---|
61 |
|
---|
62 |
|
---|
63 | #define NIC_DRIVER 0
|
---|
64 | #define DISK_DRIVER 1
|
---|
65 | #define FLOPPY_DRIVER 2
|
---|
66 |
|
---|
67 | #define BRIDGE_DRIVER 1000
|
---|
68 |
|
---|
69 | #define PROBE_FIRST (-1)
|
---|
70 | #define PROBE_NEXT 0
|
---|
71 | #define PROBE_AWAKE 1 /* After calling disable bring up the same device */
|
---|
72 |
|
---|
73 | /* The probe result codes are selected
|
---|
74 | * to allow them to be fed back into the probe
|
---|
75 | * routine and get a successful probe.
|
---|
76 | */
|
---|
77 | #define PROBE_FAILED PROBE_FIRST
|
---|
78 | #define PROBE_WORKED PROBE_NEXT
|
---|
79 |
|
---|
80 | extern int probe(struct dev *dev);
|
---|
81 | extern void disable(struct dev *dev);
|
---|
82 |
|
---|
83 | /* Boot option values
|
---|
84 | * option & BOOT_TYPE_MASK should equal a driver for probing
|
---|
85 | */
|
---|
86 |
|
---|
87 | #define BOOT_NIC 0x0 /* Boot from a nic */
|
---|
88 | #define BOOT_DISK 0x1 /* Boot from disk */
|
---|
89 | #define BOOT_FLOPPY 0x2 /* Boot from a floppy */
|
---|
90 |
|
---|
91 | #define BOOT_NOTHING 0x3 /* Last valid boot choice */
|
---|
92 |
|
---|
93 | /* Do magic failsafe boot processing */
|
---|
94 | #define BOOT_FAILSAFE 0x8
|
---|
95 |
|
---|
96 | #define BOOT_BITS 4
|
---|
97 | #define BOOT_MASK ((1 << (BOOT_BITS)) - 1)
|
---|
98 | #define BOOT_TYPE_MASK ((1 << (BOOT_BITS - 1)) - 1)
|
---|
99 |
|
---|
100 | #define MAX_BOOT_ENTRIES 3
|
---|
101 |
|
---|
102 | #define BOOT_ALL_VALUE (1<<BOOT_FIRST|1<<BOOT_SECOND|1<<BOOT_THIRD)
|
---|
103 |
|
---|
104 | /* These could be customised for different languages perhaps */
|
---|
105 | #if BOOT_ALL_VALUE&(1<<BOOT_DISK)
|
---|
106 | #define BOOT_DISK_PROMPT "(D)isk "
|
---|
107 | #else
|
---|
108 | #define BOOT_DISK_PROMPT
|
---|
109 | #endif
|
---|
110 |
|
---|
111 | #if BOOT_ALL_VALUE&(1<<BOOT_FLOPPY)
|
---|
112 | #define BOOT_FLOPPY_PROMPT "(F)loppy "
|
---|
113 | #else
|
---|
114 | #define BOOT_FLOPPY_PROMPT
|
---|
115 | #endif
|
---|
116 |
|
---|
117 | #define ASK_PROMPT \
|
---|
118 | "Boot from (N)etwork " BOOT_DISK_PROMPT BOOT_FLOPPY_PROMPT "or (Q)uit? "
|
---|
119 |
|
---|
120 | #define ANS_NETWORK 'N'
|
---|
121 | #define ANS_DISK 'D'
|
---|
122 | #define ANS_FLOPPY 'F'
|
---|
123 | #define ANS_QUIT 'Q'
|
---|
124 | #define ANS_DEFAULT '\n'
|
---|
125 |
|
---|
126 | #endif /* DEV_H */
|
---|