root/drivers/net/Space.c

/* [previous][next][first][last][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. ethif_probe

   1 /*
   2  * INET         An implementation of the TCP/IP protocol suite for the LINUX
   3  *              operating system.  INET is implemented using the  BSD Socket
   4  *              interface as the means of communication with the user level.
   5  *
   6  *              Holds initial configuration information for devices.
   7  *
   8  * NOTE:        This file is a nice idea, but its current format does not work
   9  *              well for drivers that support multiple units, like the SLIP
  10  *              driver.  We should actually have only one pointer to a driver
  11  *              here, with the driver knowing how many units it supports.
  12  *              Currently, the SLIP driver abuses the "base_addr" integer
  13  *              field of the 'device' structure to store the unit number...
  14  *              -FvK
  15  *
  16  * Version:     @(#)Space.c     1.0.7   08/12/93
  17  *
  18  * Authors:     Ross Biro, <bir7@leland.Stanford.Edu>
  19  *              Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
  20  *              Donald J. Becker, <becker@super.org>
  21  *
  22  *      FIXME:
  23  *              Sort the device chain fastest first.
  24  *
  25  *              This program is free software; you can redistribute it and/or
  26  *              modify it under the terms of the GNU General Public License
  27  *              as published by the Free Software Foundation; either version
  28  *              2 of the License, or (at your option) any later version.
  29  */
  30 #include <linux/config.h>
  31 #include <linux/netdevice.h>
  32 #include <linux/errno.h>
  33 
  34 #define NEXT_DEV        NULL
  35 
  36 
  37 /* A unified ethernet device probe.  This is the easiest way to have every
  38    ethernet adaptor have the name "eth[0123...]".
  39    */
  40 
  41 extern int tulip_probe(struct device *dev);
  42 extern int hp100_probe(struct device *dev);
  43 extern int ultra_probe(struct device *dev);
  44 extern int wd_probe(struct device *dev);
  45 extern int el2_probe(struct device *dev);
  46 extern int ne_probe(struct device *dev);
  47 extern int hp_probe(struct device *dev);
  48 extern int hp_plus_probe(struct device *dev);
  49 extern int znet_probe(struct device *);
  50 extern int express_probe(struct device *);
  51 extern int eepro_probe(struct device *);
  52 extern int el3_probe(struct device *);
  53 extern int at1500_probe(struct device *);
  54 extern int at1700_probe(struct device *);
  55 extern int fmv18x_probe(struct device *);
  56 extern int eth16i_probe(struct device *);
  57 extern int depca_probe(struct device *);
  58 extern int apricot_probe(struct device *);
  59 extern int ewrk3_probe(struct device *);
  60 extern int de4x5_probe(struct device *);
  61 extern int el1_probe(struct device *);
  62 #if     defined(CONFIG_WAVELAN)
  63 extern int wavelan_probe(struct device *);
  64 #endif  /* defined(CONFIG_WAVELAN) */
  65 extern int el16_probe(struct device *);
  66 extern int elplus_probe(struct device *);
  67 extern int ac3200_probe(struct device *);
  68 extern int e2100_probe(struct device *);
  69 extern int ni52_probe(struct device *);
  70 extern int ni65_probe(struct device *);
  71 extern int SK_init(struct device *);
  72 extern int seeq8005_probe(struct device *);
  73 extern int tc59x_probe(struct device *);
  74 extern int dgrs_probe(struct device *);
  75 extern int smc_init( struct device * );
  76 extern int sparc_lance_probe(struct device *);
  77 extern int atarilance_probe(struct device *);
  78 extern int a2065_probe(struct device *);
  79 extern int ariadne_probe(struct device *);
  80 extern int hydra_probe(struct device *);
  81 
  82 /* Detachable devices ("pocket adaptors") */
  83 extern int atp_init(struct device *);
  84 extern int de600_probe(struct device *);
  85 extern int de620_probe(struct device *);
  86 
  87 static int
  88 ethif_probe(struct device *dev)
     /* [previous][next][first][last][top][bottom][index][help] */
  89 {
  90     u_long base_addr = dev->base_addr;
  91 
  92     if ((base_addr == 0xffe0)  ||  (base_addr == 1))
  93         return 1;               /* ENXIO */
  94 
  95     if (1
  96 #ifdef CONFIG_DGRS
  97         && dgrs_probe(dev)
  98 #endif
  99 #if defined(CONFIG_VORTEX)
 100         && tc59x_probe(dev)
 101 #endif
 102 #if defined(CONFIG_SEEQ8005)
 103         && seeq8005_probe(dev)
 104 #endif
 105 #if defined(CONFIG_DEC_ELCP)
 106         && tulip_probe(dev)
 107 #endif
 108 #if defined(CONFIG_HP100)
 109         && hp100_probe(dev)
 110 #endif  
 111 #if defined(CONFIG_ULTRA)
 112         && ultra_probe(dev)
 113 #endif
 114 #if defined(CONFIG_SMC9194)
 115         && smc_init(dev)
 116 #endif
 117 #if defined(CONFIG_WD80x3) || defined(WD80x3)
 118         && wd_probe(dev)
 119 #endif
 120 #if defined(CONFIG_EL2) || defined(EL2) /* 3c503 */
 121         && el2_probe(dev)
 122 #endif
 123 #if defined(CONFIG_HPLAN) || defined(HPLAN)
 124         && hp_probe(dev)
 125 #endif
 126 #if defined(CONFIG_HPLAN_PLUS)
 127         && hp_plus_probe(dev)
 128 #endif
 129 #ifdef CONFIG_AC3200            /* Ansel Communications EISA 3200. */
 130         && ac3200_probe(dev)
 131 #endif
 132 #ifdef CONFIG_E2100             /* Cabletron E21xx series. */
 133         && e2100_probe(dev)
 134 #endif
 135 #if defined(CONFIG_NE2000) || defined(NE2000)
 136         && ne_probe(dev)
 137 #endif
 138 #ifdef CONFIG_AT1500
 139         && at1500_probe(dev)
 140 #endif
 141 #ifdef CONFIG_AT1700
 142         && at1700_probe(dev)
 143 #endif
 144 #ifdef CONFIG_FMV18X            /* Fujitsu FMV-181/182 */
 145         && fmv18x_probe(dev)
 146 #endif
 147 #ifdef CONFIG_ETH16I
 148         && eth16i_probe(dev)    /* ICL EtherTeam 16i/32 */
 149 #endif
 150 #ifdef CONFIG_EL3               /* 3c509 */
 151         && el3_probe(dev)
 152 #endif
 153 #ifdef CONFIG_ZNET              /* Zenith Z-Note and some IBM Thinkpads. */
 154         && znet_probe(dev)
 155 #endif
 156 #ifdef CONFIG_EEXPRESS          /* Intel EtherExpress */
 157         && express_probe(dev)
 158 #endif
 159 #ifdef CONFIG_EEXPRESS_PRO      /* Intel EtherExpress Pro/10 */
 160         && eepro_probe(dev)
 161 #endif
 162 #ifdef CONFIG_DEPCA             /* DEC DEPCA */
 163         && depca_probe(dev)
 164 #endif
 165 #ifdef CONFIG_EWRK3             /* DEC EtherWORKS 3 */
 166         && ewrk3_probe(dev)
 167 #endif
 168 #ifdef CONFIG_DE4X5             /* DEC DE425, DE434, DE435 adapters */
 169         && de4x5_probe(dev)
 170 #endif
 171 #ifdef CONFIG_APRICOT           /* Apricot I82596 */
 172         && apricot_probe(dev)
 173 #endif
 174 #ifdef CONFIG_EL1               /* 3c501 */
 175         && el1_probe(dev)
 176 #endif
 177 #if     defined(CONFIG_WAVELAN) /* WaveLAN */
 178         && wavelan_probe(dev)
 179 #endif  /* defined(CONFIG_WAVELAN) */
 180 #ifdef CONFIG_EL16              /* 3c507 */
 181         && el16_probe(dev)
 182 #endif
 183 #ifdef CONFIG_ELPLUS            /* 3c505 */
 184         && elplus_probe(dev)
 185 #endif
 186 #ifdef CONFIG_DE600             /* D-Link DE-600 adapter */
 187         && de600_probe(dev)
 188 #endif
 189 #ifdef CONFIG_DE620             /* D-Link DE-620 adapter */
 190         && de620_probe(dev)
 191 #endif
 192 #if defined(CONFIG_SK_G16)
 193         && SK_init(dev)
 194 #endif
 195 #ifdef CONFIG_NI52
 196         && ni52_probe(dev)
 197 #endif
 198 #ifdef CONFIG_ATARILANCE        /* Lance-based Atari ethernet boards */
 199         && atarilance_probe(dev)
 200 #endif
 201 #ifdef CONFIG_A2065             /* Commodore/Ameristar A2065 Ethernet Board */
 202         && a2065_probe(dev)
 203 #endif
 204 #ifdef CONFIG_ARIADNE           /* Village Tronic Ariadne Ethernet Board */
 205         && ariadne_probe(dev)
 206 #endif
 207 #ifdef CONFIG_HYDRA             /* Hydra Systems Amiganet Ethernet board */
 208         && hydra_probe(dev)
 209 #endif
 210 #ifdef CONFIG_SUNLANCE
 211         && sparc_lance_probe(dev)
 212 #endif
 213         && 1 ) {
 214         return 1;       /* -ENODEV or -EAGAIN would be more accurate. */
 215     }
 216     return 0;
 217 }
 218 
 219 #ifdef CONFIG_SDLA
 220     extern int sdla_init(struct device *);
 221     static struct device sdla0_dev = { "sdla0", 0, 0, 0, 0, 0, 0, 0, 0, 0, NEXT_DEV, sdla_init, };
 222 
 223 #   undef NEXT_DEV
 224 #   define NEXT_DEV     (&sdla0_dev)
 225 #endif
 226 
 227 /* This must be AFTER the various FRADs so it initializes FIRST! */
 228 
 229 #ifdef CONFIG_DLCI
 230     extern int dlci_init(struct device *);
 231     static struct device dlci_dev = { "dlci", 0, 0, 0, 0, 0, 0, 0, 0, 0, NEXT_DEV, dlci_init, };
 232 #   undef NEXT_DEV
 233 #   define NEXT_DEV     (&dlci_dev)
 234 #endif
 235 
 236 #ifdef CONFIG_NETROM
 237         extern int nr_init(struct device *);
 238         
 239         static struct device nr3_dev = { "nr3", 0, 0, 0, 0, 0, 0, 0, 0, 0, NEXT_DEV, nr_init, };
 240         static struct device nr2_dev = { "nr2", 0, 0, 0, 0, 0, 0, 0, 0, 0, &nr3_dev, nr_init, };
 241         static struct device nr1_dev = { "nr1", 0, 0, 0, 0, 0, 0, 0, 0, 0, &nr2_dev, nr_init, };
 242         static struct device nr0_dev = { "nr0", 0, 0, 0, 0, 0, 0, 0, 0, 0, &nr1_dev, nr_init, };
 243 
 244 #   undef NEXT_DEV
 245 #   define      NEXT_DEV        (&nr0_dev)
 246 #endif
 247 
 248 /* Run-time ATtachable (Pocket) devices have a different (not "eth#") name. */
 249 #ifdef CONFIG_ATP               /* AT-LAN-TEC (RealTek) pocket adaptor. */
 250 static struct device atp_dev = {
 251     "atp0", 0, 0, 0, 0, 0, 0, 0, 0, 0, NEXT_DEV, atp_init, /* ... */ };
 252 #   undef NEXT_DEV
 253 #   define NEXT_DEV     (&atp_dev)
 254 #endif
 255 
 256 #ifdef CONFIG_ARCNET
 257     extern int arcnet_probe(struct device *dev);
 258     static struct device arcnet_dev = {
 259         "arc0", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, arcnet_probe, };
 260 #   undef       NEXT_DEV
 261 #   define      NEXT_DEV        (&arcnet_dev)
 262 #endif
 263 
 264 /* The first device defaults to I/O base '0', which means autoprobe. */
 265 #ifndef ETH0_ADDR
 266 # define ETH0_ADDR 0
 267 #endif
 268 #ifndef ETH0_IRQ
 269 # define ETH0_IRQ 0
 270 #endif
 271 /* "eth0" defaults to autoprobe (== 0), other use a base of 0xffe0 (== -0x20),
 272    which means "don't probe".  These entries exist to only to provide empty
 273    slots which may be enabled at boot-time. */
 274 
 275 static struct device eth3_dev = {
 276     "eth3", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, NEXT_DEV, ethif_probe };
 277 static struct device eth2_dev = {
 278     "eth2", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, &eth3_dev, ethif_probe };
 279 static struct device eth1_dev = {
 280     "eth1", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, &eth2_dev, ethif_probe };
 281 
 282 static struct device eth0_dev = {
 283     "eth0", 0, 0, 0, 0, ETH0_ADDR, ETH0_IRQ, 0, 0, 0, &eth1_dev, ethif_probe };
 284 
 285 #   undef NEXT_DEV
 286 #   define NEXT_DEV     (&eth0_dev)
 287 
 288 #if defined(PLIP) || defined(CONFIG_PLIP)
 289     extern int plip_init(struct device *);
 290     static struct device plip2_dev = {
 291         "plip2", 0, 0, 0, 0, 0x278, 2, 0, 0, 0, NEXT_DEV, plip_init, };
 292     static struct device plip1_dev = {
 293         "plip1", 0, 0, 0, 0, 0x378, 7, 0, 0, 0, &plip2_dev, plip_init, };
 294     static struct device plip0_dev = {
 295         "plip0", 0, 0, 0, 0, 0x3BC, 5, 0, 0, 0, &plip1_dev, plip_init, };
 296 #   undef NEXT_DEV
 297 #   define NEXT_DEV     (&plip0_dev)
 298 #endif  /* PLIP */
 299 
 300 #if defined(SLIP) || defined(CONFIG_SLIP)
 301         /* To be exact, this node just hooks the initialization
 302            routines to the device structures.                   */
 303 extern int slip_init_ctrl_dev(struct device *);
 304 static struct device slip_bootstrap = {
 305   "slip_proto", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, slip_init_ctrl_dev, };
 306 #undef NEXT_DEV
 307 #define NEXT_DEV (&slip_bootstrap)
 308 #endif  /* SLIP */
 309   
 310 #if defined(CONFIG_STRIP)
 311 extern int strip_init_ctrl_dev(struct device *);
 312 static struct device strip_bootstrap = {
 313     "strip_proto", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, strip_init_ctrl_dev, };
 314 #undef NEXT_DEV
 315 #define NEXT_DEV (&strip_bootstrap)
 316 #endif   /* STRIP */
 317 
 318 #if defined(CONFIG_PPP)
 319 extern int ppp_init(struct device *);
 320 static struct device ppp_bootstrap = {
 321     "ppp_proto", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, ppp_init, };
 322 #undef NEXT_DEV
 323 #define NEXT_DEV (&ppp_bootstrap)
 324 #endif   /* PPP */
 325 
 326 #ifdef CONFIG_DUMMY
 327     extern int dummy_init(struct device *dev);
 328     static struct device dummy_dev = {
 329         "dummy", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, dummy_init, };
 330 #   undef       NEXT_DEV
 331 #   define      NEXT_DEV        (&dummy_dev)
 332 #endif
 333 
 334 #ifdef CONFIG_EQUALIZER
 335 extern int eql_init(struct device *dev);
 336 struct device eql_dev = {
 337   "eql",                        /* Master device for IP traffic load 
 338                                    balancing */
 339   0x0, 0x0, 0x0, 0x0,           /* recv end/start; mem end/start */
 340   0,                            /* base I/O address */
 341   0,                            /* IRQ */
 342   0, 0, 0,                      /* flags */
 343   NEXT_DEV,                     /* next device */
 344   eql_init                      /* set up the rest */
 345 };
 346 #   undef       NEXT_DEV
 347 #   define      NEXT_DEV        (&eql_dev)
 348 #endif
 349 
 350 #ifdef CONFIG_IBMTR 
 351 
 352     extern int tok_probe(struct device *dev);
 353     static struct device ibmtr_dev1 = {
 354         "tr1",                  /* IBM Token Ring (Non-DMA) Interface */
 355         0x0,                    /* recv memory end                      */
 356         0x0,                    /* recv memory start                    */
 357         0x0,                    /* memory end                           */
 358         0x0,                    /* memory start                         */
 359         0xa24,                  /* base I/O address                     */
 360         0,                      /* IRQ                                  */
 361         0, 0, 0,                /* flags                                */
 362         NEXT_DEV,               /* next device                          */
 363         tok_probe               /* ??? Token_init should set up the rest        */
 364     };
 365 #   undef       NEXT_DEV
 366 #   define      NEXT_DEV        (&ibmtr_dev1)
 367 
 368 
 369     static struct device ibmtr_dev0 = {
 370         "tr0",                  /* IBM Token Ring (Non-DMA) Interface */
 371         0x0,                    /* recv memory end                      */
 372         0x0,                    /* recv memory start                    */
 373         0x0,                    /* memory end                           */
 374         0x0,                    /* memory start                         */
 375         0xa20,                  /* base I/O address                     */
 376         0,                      /* IRQ                                  */
 377         0, 0, 0,                /* flags                                */
 378         NEXT_DEV,               /* next device                          */
 379         tok_probe               /* ??? Token_init should set up the rest        */
 380     };
 381 #   undef       NEXT_DEV
 382 #   define      NEXT_DEV        (&ibmtr_dev0)
 383 
 384 #endif 
 385 #ifdef CONFIG_NET_IPIP
 386 #ifdef CONFIG_IP_FORWARD
 387         extern int tunnel_init(struct device *);
 388         
 389         static struct device tunnel_dev1 = 
 390         {
 391                 "tunl1",                /* IPIP tunnel                          */
 392                 0x0,                    /* recv memory end                      */
 393                 0x0,                    /* recv memory start                    */
 394                 0x0,                    /* memory end                           */
 395                 0x0,                    /* memory start                         */
 396                 0x0,                    /* base I/O address                     */
 397                 0,                      /* IRQ                                  */
 398                 0, 0, 0,                /* flags                                */
 399                 NEXT_DEV,               /* next device                          */
 400                 tunnel_init             /* Fill in the details                  */
 401         };
 402 
 403         static struct device tunnel_dev0 = 
 404         {
 405                 "tunl0",                /* IPIP tunnel                          */
 406                 0x0,                    /* recv memory end                      */
 407                 0x0,                    /* recv memory start                    */
 408                 0x0,                    /* memory end                           */
 409                 0x0,                    /* memory start                         */
 410                 0x0,                    /* base I/O address                     */
 411                 0,                      /* IRQ                                  */
 412                 0, 0, 0,                /* flags                                */
 413                 &tunnel_dev1,           /* next device                          */
 414                 tunnel_init             /* Fill in the details                  */
 415     };
 416 #   undef       NEXT_DEV
 417 #   define      NEXT_DEV        (&tunnel_dev0)
 418 
 419 #endif 
 420 #endif
 421 
 422 #ifdef CONFIG_AP1000
 423     extern int apfddi_init(struct device *dev);
 424     static struct device fddi_dev = {
 425         "fddi", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, apfddi_init };
 426 #   undef       NEXT_DEV
 427 #   define      NEXT_DEV        (&fddi_dev)
 428 
 429     extern int bif_init(struct device *dev);
 430     static struct device bif_dev = {
 431         "bif", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, bif_init };
 432 #   undef       NEXT_DEV
 433 #   define      NEXT_DEV        (&bif_dev)
 434 
 435 #endif
 436         
 437 extern int loopback_init(struct device *dev);
 438 struct device loopback_dev = {
 439         "lo",                   /* Software Loopback interface          */
 440         0x0,                    /* recv memory end                      */
 441         0x0,                    /* recv memory start                    */
 442         0x0,                    /* memory end                           */
 443         0x0,                    /* memory start                         */
 444         0,                      /* base I/O address                     */
 445         0,                      /* IRQ                                  */
 446         0, 0, 0,                /* flags                                */
 447         NEXT_DEV,               /* next device                          */
 448         loopback_init           /* loopback_init should set up the rest */
 449 };
 450 
 451 struct device *dev_base = &loopback_dev;

/* [previous][next][first][last][top][bottom][index][help] */