Browse Source

Updated to new API.

tags/v0.9.3
Michael Brown 20 years ago
parent
commit
329ccfdc21
1 changed files with 68 additions and 56 deletions
  1. 68
    56
      src/drivers/net/skel.c

+ 68
- 56
src/drivers/net/skel.c View File

104
 	 */
104
 	 */
105
 }
105
 }
106
 
106
 
107
-/**************************************************************************
108
- * DISABLE - Turn off ethernet interface
109
- **************************************************************************
110
- */
111
-static void skel_disable ( struct nic *nic __unused ) {
112
-	/* put the card in its initial state */
113
-	/* This function serves 3 purposes.
114
-	 * This disables DMA and interrupts so we don't receive
115
-	 *  unexpected packets or interrupts from the card after
116
-	 *  etherboot has finished. 
117
-	 * This frees resources so etherboot may use
118
-	 *  this driver on another interface
119
-	 * This allows etherboot to reinitialize the interface
120
-	 *  if something is something goes wrong.
121
-	 */
122
-}
123
-
124
 /**************************************************************************
107
 /**************************************************************************
125
  * IRQ - handle interrupts
108
  * IRQ - handle interrupts
126
  **************************************************************************
109
  **************************************************************************
163
 	.poll		= skel_poll,
146
 	.poll		= skel_poll,
164
 	.transmit	= skel_transmit,
147
 	.transmit	= skel_transmit,
165
 	.irq		= skel_irq,
148
 	.irq		= skel_irq,
166
-
167
 };
149
 };
168
 
150
 
169
 /**************************************************************************
151
 /**************************************************************************
170
  * PROBE - Look for an adapter
152
  * PROBE - Look for an adapter
171
  *
153
  *
172
- * You need to define a probe routine for each bus type that your
173
- * driver supports, together with tables that enable Etherboot to
174
- * identify that your driver should be used for a particular device.
154
+ * You need to define a probe routine and a disable routine for each
155
+ * bus type that your driver supports, together with tables that
156
+ * enable Etherboot to identify that your driver should be used for a
157
+ * particular device.
175
  *
158
  *
176
  * Delete whichever of the following sections you don't need.  For
159
  * Delete whichever of the following sections you don't need.  For
177
  * example, most PCI devices will only need the PCI probing section;
160
  * example, most PCI devices will only need the PCI probing section;
186
  */
169
  */
187
 
170
 
188
 /**************************************************************************
171
 /**************************************************************************
189
- * PCI PROBE - Look for an adapter
172
+ * PCI PROBE and DISABLE
190
  **************************************************************************
173
  **************************************************************************
191
  */
174
  */
192
 static int skel_pci_probe ( struct nic *nic, struct pci_device *pci ) {
175
 static int skel_pci_probe ( struct nic *nic, struct pci_device *pci ) {
193
 
176
 
194
-
195
 	pci_fill_nic ( nic, pci );
177
 	pci_fill_nic ( nic, pci );
196
 
178
 
197
-
198
-	nic->ioaddr = pci->ioaddr;
199
-	nic->irqno = pci->irq;
200
-
201
 	/* Test for physical presence of NIC */
179
 	/* Test for physical presence of NIC */
202
 	/*
180
 	/*
203
 	   if ( ! my_tests ) {
181
 	   if ( ! my_tests ) {
211
 	return 1;
189
 	return 1;
212
 }
190
 }
213
 
191
 
192
+static void skel_pci_disable ( struct nic *nic __unused,
193
+			       struct pci_device *pci __unused ) {
194
+	/* Reset the card to its initial state, disable DMA and
195
+	 * interrupts
196
+	 */
197
+}
198
+
214
 static struct pci_id skel_pci_nics[] = {
199
 static struct pci_id skel_pci_nics[] = {
215
 PCI_ROM ( 0x0000, 0x0000, "skel-pci", "Skeleton PCI Adapter" ),
200
 PCI_ROM ( 0x0000, 0x0000, "skel-pci", "Skeleton PCI Adapter" ),
216
 };
201
 };
219
 	PCI_DRIVER ( skel_pci_nics, PCI_NO_CLASS );
204
 	PCI_DRIVER ( skel_pci_nics, PCI_NO_CLASS );
220
 
205
 
221
 DRIVER ( "SKEL/PCI", nic_driver, pci_driver, skel_pci_driver,
206
 DRIVER ( "SKEL/PCI", nic_driver, pci_driver, skel_pci_driver,
222
-	 skel_pci_probe, skel_disable );
207
+	 skel_pci_probe, skel_pci_disable );
223
 
208
 
224
 /**************************************************************************
209
 /**************************************************************************
225
- * EISA PROBE - Look for an adapter
210
+ * EISA PROBE and DISABLE
226
  **************************************************************************
211
  **************************************************************************
227
  */
212
  */
228
 static int skel_eisa_probe ( struct nic *nic, struct eisa_device *eisa ) {
213
 static int skel_eisa_probe ( struct nic *nic, struct eisa_device *eisa ) {
229
-	struct nic *nic = nic_device ( dev );
230
 
214
 
215
+	eisa_fill_nic ( nic, eisa );
231
 	enable_eisa_device ( eisa );
216
 	enable_eisa_device ( eisa );
232
-	nic->ioaddr = eisa->ioaddr;
233
-	nic->irqno = 0;
217
+	nic->irqno = 0; /* No standard way to get irq from EISA cards */
234
 
218
 
235
 	/* Test for physical presence of NIC */
219
 	/* Test for physical presence of NIC */
236
 	/*
220
 	/*
245
 	return 1;
229
 	return 1;
246
 }
230
 }
247
 
231
 
232
+static void skel_eisa_disable ( struct nic *nic __unused,
233
+				struct eisa_device *eisa ) {
234
+	/* Reset the card to its initial state, disable DMA and
235
+	 * interrupts
236
+	 */
237
+	disable_eisa_device ( eisa );
238
+}
239
+
248
 static struct eisa_id skel_eisa_nics[] = {
240
 static struct eisa_id skel_eisa_nics[] = {
249
 	{ "Skeleton EISA Adapter", EISA_VENDOR('S','K','L'), 0x0000 },
241
 	{ "Skeleton EISA Adapter", EISA_VENDOR('S','K','L'), 0x0000 },
250
 };
242
 };
251
 
243
 
252
 static struct eisa_driver skel_eisa_driver =
244
 static struct eisa_driver skel_eisa_driver =
253
-	EISA_DRIVER ( "SKEL/EISA", skel_eisa_nics );
245
+	EISA_DRIVER ( skel_eisa_nics );
254
 
246
 
255
-BOOT_DRIVER ( "SKEL/EISA", find_eisa_boot_device,
256
-	      skel_eisa_driver, skel_eisa_probe );
247
+DRIVER ( "SKEL/EISA", nic_driver, eisa_driver, skel_eisa_driver,
248
+	 skel_eisa_probe, skel_eisa_disable );
257
 
249
 
258
 ISA_ROM ( "skel-eisa", "Skeleton EISA Adapter" );
250
 ISA_ROM ( "skel-eisa", "Skeleton EISA Adapter" );
259
 
251
 
260
 /**************************************************************************
252
 /**************************************************************************
261
- * ISAPnP PROBE - Look for an adapter
253
+ * ISAPnP PROBE and DISABLE
262
  **************************************************************************
254
  **************************************************************************
263
  */
255
  */
264
 static int skel_isapnp_probe ( struct nic *nic,
256
 static int skel_isapnp_probe ( struct nic *nic,
265
 			       struct isapnp_device *isapnp ) {
257
 			       struct isapnp_device *isapnp ) {
266
-	struct nic *nic = nic_device ( dev );
267
 
258
 
268
-	nic->ioaddr = isapnp->ioaddr;
269
-	nic->irqno = isapnp->irqno;
270
-	activate_isapnp_device ( isapnp, 1 );
259
+	isapnp_fill_nic ( nic, isapnp );
260
+	activate_isapnp_device ( isapnp );
271
 
261
 
272
 	/* Test for physical presence of NIC */
262
 	/* Test for physical presence of NIC */
273
 	/*
263
 	/*
282
 	return 1;
272
 	return 1;
283
 }
273
 }
284
 
274
 
275
+static void skel_isapnp_disable ( struct nic *nic __unused,
276
+				  struct isapnp_device *isapnp ) {
277
+	/* Reset the card to its initial state, disable DMA and
278
+	 * interrupts
279
+	 */
280
+	deactivate_isapnp_device ( isapnp );
281
+}
282
+
285
 static struct isapnp_id skel_isapnp_nics[] = {
283
 static struct isapnp_id skel_isapnp_nics[] = {
286
 	{ "Skeleton ISAPnP Adapter", ISAPNP_VENDOR('S','K','L'), 0x0000 },
284
 	{ "Skeleton ISAPnP Adapter", ISAPNP_VENDOR('S','K','L'), 0x0000 },
287
 };
285
 };
288
 
286
 
289
 static struct isapnp_driver skel_isapnp_driver =
287
 static struct isapnp_driver skel_isapnp_driver =
290
-	ISAPNP_DRIVER ( "SKEL/ISAPnP", skel_isapnp_nics );
288
+	ISAPNP_DRIVER ( skel_isapnp_nics );
291
 
289
 
292
-BOOT_DRIVER ( "SKEL/ISAPnP", find_isapnp_boot_device,
293
-	      skel_isapnp_driver, skel_isapnp_probe );
290
+DRIVER ( "SKEL/ISAPnP", nic_driver, isapnp_driver, skel_isapnp_driver,
291
+	 skel_isapnp_probe, skel_isapnp_disable );
294
 
292
 
295
 ISA_ROM ( "skel-isapnp", "Skeleton ISAPnP Adapter" );
293
 ISA_ROM ( "skel-isapnp", "Skeleton ISAPnP Adapter" );
296
 
294
 
297
 /**************************************************************************
295
 /**************************************************************************
298
- * MCA PROBE - Look for an adapter
296
+ * MCA PROBE and DISABLE
299
  **************************************************************************
297
  **************************************************************************
300
  */
298
  */
301
 static int skel_mca_probe ( struct nic *nic,
299
 static int skel_mca_probe ( struct nic *nic,
302
-			    struct mca_device *mca __unused ) {
303
-	struct nic *nic = nic_device ( dev );
300
+			    struct mca_device *mca ) {
301
+
302
+	mca_fill_nic ( nic, mca );
304
 
303
 
305
 	/* MCA parameters are available in the mca->pos[] array */
304
 	/* MCA parameters are available in the mca->pos[] array */
306
 	/*
305
 	/*
321
 	return 1;
320
 	return 1;
322
 }
321
 }
323
 
322
 
323
+static void skel_mca_disable ( struct nic *nic __unused,
324
+			       struct mca_device *mca __unused ) {
325
+	/* Reset the card to its initial state, disable DMA and
326
+	 * interrupts
327
+	 */
328
+}
329
+
324
 static struct mca_id skel_mca_nics[] = {
330
 static struct mca_id skel_mca_nics[] = {
325
 	{ "Skeleton MCA Adapter", 0x0000 },
331
 	{ "Skeleton MCA Adapter", 0x0000 },
326
 };
332
 };
327
 
333
 
328
 static struct mca_driver skel_mca_driver =
334
 static struct mca_driver skel_mca_driver =
329
-	MCA_DRIVER ( "SKEL/MCA", skel_mca_nics );
335
+	MCA_DRIVER ( skel_mca_nics );
330
 
336
 
331
-BOOT_DRIVER ( "SKEL/MCA", find_mca_boot_device,
332
-	      skel_mca_driver, skel_mca_probe );
337
+DRIVER ( "SKEL/MCA", nic_driver, mca_driver, skel_mca_driver,
338
+	 skel_mca_probe, skel_mca_disable );
333
 
339
 
334
 ISA_ROM ( "skel-mca", "Skeleton MCA Adapter" );
340
 ISA_ROM ( "skel-mca", "Skeleton MCA Adapter" );
335
 
341
 
336
 /**************************************************************************
342
 /**************************************************************************
337
- * ISA PROBE - Look for an adapter
343
+ * ISA PROBE and DISABLE
338
  *
344
  *
339
  * The "classical" ISA probe is split into two stages: trying a list
345
  * The "classical" ISA probe is split into two stages: trying a list
340
  * of I/O addresses to see if there's anything listening, and then
346
  * of I/O addresses to see if there's anything listening, and then
358
 }
364
 }
359
 
365
 
360
 static int skel_isa_probe ( struct nic *nic, struct isa_device *isa ) {
366
 static int skel_isa_probe ( struct nic *nic, struct isa_device *isa ) {
361
-	struct nic *nic = nic_device ( dev );
362
 
367
 
363
-	nic->ioaddr = isa->ioaddr;
364
-	nic->irqno = 0;
368
+	isa_fill_nic ( nic, isa );
369
+	nic->irqno = 0; /* No standard way to get IRQ for ISA */
365
 
370
 
366
 	/* Test for physical presence of NIC */
371
 	/* Test for physical presence of NIC */
367
 	/*
372
 	/*
376
 	return 1;
381
 	return 1;
377
 }
382
 }
378
 
383
 
384
+static void skel_isa_disable ( struct nic *nic __unused,
385
+			      struct isa_device *isa __unused ) {
386
+	/* Reset the card to its initial state, disable DMA and
387
+	 * interrupts
388
+	 */
389
+}
390
+
379
 static isa_probe_addr_t skel_isa_probe_addrs[] = {
391
 static isa_probe_addr_t skel_isa_probe_addrs[] = {
380
 	/*
392
 	/*
381
 	   0x200, 0x240,
393
 	   0x200, 0x240,
383
 };
395
 };
384
 
396
 
385
 static struct isa_driver skel_isa_driver =
397
 static struct isa_driver skel_isa_driver =
386
-	ISA_DRIVER ( "SKEL/ISA", skel_isa_probe_addrs, skel_isa_probe_addr,
398
+	ISA_DRIVER ( skel_isa_probe_addrs, skel_isa_probe_addr,
387
 		     ISA_VENDOR('S','K','L'), 0x0000 );
399
 		     ISA_VENDOR('S','K','L'), 0x0000 );
388
 
400
 
389
-BOOT_DRIVER ( "SKEL/ISA", find_isa_boot_device,
390
-	      skel_isa_driver, skel_isa_probe );
401
+DRIVER ( "SKEL/ISA", nic_driver, isa_driver, skel_isa_driver,
402
+	 skel_isa_probe, skel_isa_disable );
391
 
403
 
392
 ISA_ROM ( "skel-isa", "Skeleton ISA Adapter" );
404
 ISA_ROM ( "skel-isa", "Skeleton ISA Adapter" );
393
 
405
 

Loading…
Cancel
Save