root/drivers/net/Space.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. probe_list2
  2. ethif_probe2
  3. net_olddevs_init

   1 // SPDX-License-Identifier: GPL-2.0-or-later
   2 /*
   3  * INET         An implementation of the TCP/IP protocol suite for the LINUX
   4  *              operating system.  INET is implemented using the  BSD Socket
   5  *              interface as the means of communication with the user level.
   6  *
   7  *              Holds initial configuration information for devices.
   8  *
   9  * Version:     @(#)Space.c     1.0.7   08/12/93
  10  *
  11  * Authors:     Ross Biro
  12  *              Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
  13  *              Donald J. Becker, <becker@scyld.com>
  14  *
  15  * Changelog:
  16  *              Stephen Hemminger (09/2003)
  17  *              - get rid of pre-linked dev list, dynamic device allocation
  18  *              Paul Gortmaker (03/2002)
  19  *              - struct init cleanup, enable multiple ISA autoprobes.
  20  *              Arnaldo Carvalho de Melo <acme@conectiva.com.br> - 09/1999
  21  *              - fix sbni: s/device/net_device/
  22  *              Paul Gortmaker (06/98):
  23  *               - sort probes in a sane way, make sure all (safe) probes
  24  *                 get run once & failed autoprobes don't autoprobe again.
  25  */
  26 #include <linux/netdevice.h>
  27 #include <linux/etherdevice.h>
  28 #include <linux/errno.h>
  29 #include <linux/init.h>
  30 #include <linux/netlink.h>
  31 #include <net/Space.h>
  32 
  33 /* A unified ethernet device probe.  This is the easiest way to have every
  34  * ethernet adaptor have the name "eth[0123...]".
  35  */
  36 
  37 struct devprobe2 {
  38         struct net_device *(*probe)(int unit);
  39         int status;     /* non-zero if autoprobe has failed */
  40 };
  41 
  42 static int __init probe_list2(int unit, struct devprobe2 *p, int autoprobe)
  43 {
  44         struct net_device *dev;
  45 
  46         for (; p->probe; p++) {
  47                 if (autoprobe && p->status)
  48                         continue;
  49                 dev = p->probe(unit);
  50                 if (!IS_ERR(dev))
  51                         return 0;
  52                 if (autoprobe)
  53                         p->status = PTR_ERR(dev);
  54         }
  55         return -ENODEV;
  56 }
  57 
  58 /* ISA probes that touch addresses < 0x400 (including those that also
  59  * look for EISA/PCI cards in addition to ISA cards).
  60  */
  61 static struct devprobe2 isa_probes[] __initdata = {
  62 #if defined(CONFIG_HP100) && defined(CONFIG_ISA)        /* ISA, EISA */
  63         {hp100_probe, 0},
  64 #endif
  65 #ifdef CONFIG_3C515
  66         {tc515_probe, 0},
  67 #endif
  68 #ifdef CONFIG_ULTRA
  69         {ultra_probe, 0},
  70 #endif
  71 #ifdef CONFIG_WD80x3
  72         {wd_probe, 0},
  73 #endif
  74 #if defined(CONFIG_NE2000) /* ISA (use ne2k-pci for PCI cards) */
  75         {ne_probe, 0},
  76 #endif
  77 #ifdef CONFIG_LANCE             /* ISA/VLB (use pcnet32 for PCI cards) */
  78         {lance_probe, 0},
  79 #endif
  80 #ifdef CONFIG_SMC9194
  81         {smc_init, 0},
  82 #endif
  83 #ifdef CONFIG_CS89x0
  84 #ifndef CONFIG_CS89x0_PLATFORM
  85         {cs89x0_probe, 0},
  86 #endif
  87 #endif
  88 #if defined(CONFIG_MVME16x_NET) || defined(CONFIG_BVME6000_NET) /* Intel */
  89         {i82596_probe, 0},                                      /* I82596 */
  90 #endif
  91 #ifdef CONFIG_NI65
  92         {ni65_probe, 0},
  93 #endif
  94         {NULL, 0},
  95 };
  96 
  97 static struct devprobe2 m68k_probes[] __initdata = {
  98 #ifdef CONFIG_ATARILANCE        /* Lance-based Atari ethernet boards */
  99         {atarilance_probe, 0},
 100 #endif
 101 #ifdef CONFIG_SUN3LANCE         /* sun3 onboard Lance chip */
 102         {sun3lance_probe, 0},
 103 #endif
 104 #ifdef CONFIG_SUN3_82586        /* sun3 onboard Intel 82586 chip */
 105         {sun3_82586_probe, 0},
 106 #endif
 107 #ifdef CONFIG_APNE              /* A1200 PCMCIA NE2000 */
 108         {apne_probe, 0},
 109 #endif
 110 #ifdef CONFIG_MVME147_NET       /* MVME147 internal Ethernet */
 111         {mvme147lance_probe, 0},
 112 #endif
 113         {NULL, 0},
 114 };
 115 
 116 /* Unified ethernet device probe, segmented per architecture and
 117  * per bus interface. This drives the legacy devices only for now.
 118  */
 119 
 120 static void __init ethif_probe2(int unit)
 121 {
 122         unsigned long base_addr = netdev_boot_base("eth", unit);
 123 
 124         if (base_addr == 1)
 125                 return;
 126 
 127         (void)(probe_list2(unit, m68k_probes, base_addr == 0) &&
 128                 probe_list2(unit, isa_probes, base_addr == 0));
 129 }
 130 
 131 /*  Statically configured drivers -- order matters here. */
 132 static int __init net_olddevs_init(void)
 133 {
 134         int num;
 135 
 136 #ifdef CONFIG_SBNI
 137         for (num = 0; num < 8; ++num)
 138                 sbni_probe(num);
 139 #endif
 140         for (num = 0; num < 8; ++num)
 141                 ethif_probe2(num);
 142 
 143 #ifdef CONFIG_COPS
 144         cops_probe(0);
 145         cops_probe(1);
 146         cops_probe(2);
 147 #endif
 148 #ifdef CONFIG_LTPC
 149         ltpc_probe();
 150 #endif
 151 
 152         return 0;
 153 }
 154 
 155 device_initcall(net_olddevs_init);

/* [<][>][^][v][top][bottom][index][help] */