|
@@ -62,8 +62,8 @@ union u_PXENV_ANY {
|
62
|
62
|
|
63
|
63
|
typedef union u_PXENV_ANY PXENV_ANY_t;
|
64
|
64
|
|
65
|
|
-/** An UNDI expansion ROM */
|
66
|
|
-struct undi_rom {
|
|
65
|
+/** An UNDI expansion ROM header */
|
|
66
|
+struct undi_rom_header {
|
67
|
67
|
/** Signature
|
68
|
68
|
*
|
69
|
69
|
* Must be equal to @c ROM_SIGNATURE
|
|
@@ -134,94 +134,6 @@ struct pcir_header {
|
134
|
134
|
#define PCIR_SIGNATURE \
|
135
|
135
|
( ( 'P' << 0 ) + ( 'C' << 8 ) + ( 'I' << 16 ) + ( 'R' << 24 ) )
|
136
|
136
|
|
137
|
|
-/** A PXE PCI device ID */
|
138
|
|
-struct pxe_pci_device_id {
|
139
|
|
- /** PCI vendor ID */
|
140
|
|
- unsigned int vendor_id;
|
141
|
|
- /** PCI device ID */
|
142
|
|
- unsigned int device_id;
|
143
|
|
-};
|
144
|
|
-
|
145
|
|
-/** A PXE device ID */
|
146
|
|
-union pxe_device_id {
|
147
|
|
- /** PCI device ID */
|
148
|
|
- struct pxe_pci_device_id pci;
|
149
|
|
-};
|
150
|
|
-
|
151
|
|
-/** A PXE driver */
|
152
|
|
-struct pxe_driver {
|
153
|
|
- /** List of PXE drivers */
|
154
|
|
- struct list_head list;
|
155
|
|
- /** ROM segment address */
|
156
|
|
- unsigned int rom_segment;
|
157
|
|
- /** UNDI loader entry point */
|
158
|
|
- SEGOFF16_t loader_entry;
|
159
|
|
- /** Code segment size */
|
160
|
|
- size_t code_size;
|
161
|
|
- /** Data segment size */
|
162
|
|
- size_t data_size;
|
163
|
|
- /** Bus type
|
164
|
|
- *
|
165
|
|
- * Values are as used by @c PXENV_UNDI_GET_NIC_TYPE
|
166
|
|
- */
|
167
|
|
- unsigned int bus_type;
|
168
|
|
- /** Device ID */
|
169
|
|
- union pxe_device_id bus_id;
|
170
|
|
-};
|
171
|
|
-
|
172
|
|
-/** A PXE device */
|
173
|
|
-struct pxe_device {
|
174
|
|
- /** Generic device */
|
175
|
|
- struct device dev;
|
176
|
|
- /** Driver-private data
|
177
|
|
- *
|
178
|
|
- * Use pxe_set_drvdata() and pxe_get_drvdata() to access this
|
179
|
|
- * field.
|
180
|
|
- */
|
181
|
|
- void *priv;
|
182
|
|
-
|
183
|
|
- /** PXENV+ structure address */
|
184
|
|
- SEGOFF16_t pxenv;
|
185
|
|
- /** !PXE structure address */
|
186
|
|
- SEGOFF16_t ppxe;
|
187
|
|
- /** Entry point */
|
188
|
|
- SEGOFF16_t entry;
|
189
|
|
- /** MAC address */
|
190
|
|
- MAC_ADDR_t hwaddr;
|
191
|
|
- /** Assigned IRQ number */
|
192
|
|
- UINT16_t irq;
|
193
|
|
- /** ROM segment address */
|
194
|
|
- SEGSEL_t rom_segment;
|
195
|
|
-};
|
196
|
|
-
|
197
|
|
-/**
|
198
|
|
- * Set PXE driver-private data
|
199
|
|
- *
|
200
|
|
- * @v pxe PXE device
|
201
|
|
- * @v priv Private data
|
202
|
|
- */
|
203
|
|
-static inline void pxe_set_drvdata ( struct pxe_device *pxe, void *priv ) {
|
204
|
|
- pxe->priv = priv;
|
205
|
|
-}
|
206
|
|
-
|
207
|
|
-/**
|
208
|
|
- * Get PXE driver-private data
|
209
|
|
- *
|
210
|
|
- * @v pxe PXE device
|
211
|
|
- * @ret priv Private data
|
212
|
|
- */
|
213
|
|
-static inline void * pxe_get_drvdata ( struct pxe_device *pxe ) {
|
214
|
|
- return pxe->priv;
|
215
|
|
-}
|
216
|
|
-
|
217
|
|
-extern int pxe_call ( struct pxe_device *pxe, unsigned int function,
|
218
|
|
- void *params, size_t params_len );
|
219
|
|
-extern int undi_probe ( struct pxe_device *pxe );
|
220
|
|
-extern void undi_remove ( struct pxe_device *pxe );
|
221
|
|
-
|
222
|
|
-extern struct pxe_driver * pxedrv_find_pci_driver ( unsigned int vendor_id,
|
223
|
|
- unsigned int device_id,
|
224
|
|
- unsigned int rombase );
|
225
|
137
|
|
226
|
138
|
extern struct net_device *pxe_netdev;
|
227
|
139
|
|