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 hp100_probe(struct device *dev);
  42 extern int ultra_probe(struct device *dev);
  43 extern int wd_probe(struct device *dev);
  44 extern int el2_probe(struct device *dev);
  45 extern int ne_probe(struct device *dev);
  46 extern int hp_probe(struct device *dev);
  47 extern int hp_plus_probe(struct device *dev);
  48 extern int znet_probe(struct device *);
  49 extern int express_probe(struct device *);
  50 extern int eepro_probe(struct device *);
  51 extern int el3_probe(struct device *);
  52 extern int at1500_probe(struct device *);
  53 extern int at1700_probe(struct device *);
  54 extern int depca_probe(struct device *);
  55 extern int apricot_probe(struct device *);
  56 extern int ewrk3_probe(struct device *);
  57 extern int de4x5_probe(struct device *);
  58 extern int el1_probe(struct device *);
  59 #if     defined(CONFIG_WAVELAN)
  60 extern int wavelan_probe(struct device *);
  61 #endif  /* defined(CONFIG_WAVELAN) */
  62 extern int el16_probe(struct device *);
  63 extern int elplus_probe(struct device *);
  64 extern int ac3200_probe(struct device *);
  65 extern int e2100_probe(struct device *);
  66 extern int ni52_probe(struct device *);
  67 extern int ni65_probe(struct device *);
  68 extern int SK_init(struct device *);
  69 extern int seeq8005_probe(struct device *);
  70 
  71 /* Detachable devices ("pocket adaptors") */
  72 extern int atp_init(struct device *);
  73 extern int de600_probe(struct device *);
  74 extern int de620_probe(struct device *);
  75 
  76 static int
  77 ethif_probe(struct device *dev)
     /* [previous][next][first][last][top][bottom][index][help] */
  78 {
  79     u_long base_addr = dev->base_addr;
  80 
  81     if ((base_addr == 0xffe0)  ||  (base_addr == 1))
  82         return 1;               /* ENXIO */
  83 
  84     if (1
  85 #if defined(CONFIG_SEEQ8005)
  86         && seeq8005_probe(dev)
  87 #endif
  88 #if defined(CONFIG_HP100)
  89         && hp100_probe(dev)
  90 #endif  
  91 #if defined(CONFIG_ULTRA)
  92         && ultra_probe(dev)
  93 #endif
  94 #if defined(CONFIG_WD80x3) || defined(WD80x3)
  95         && wd_probe(dev)
  96 #endif
  97 #if defined(CONFIG_EL2) || defined(EL2) /* 3c503 */
  98         && el2_probe(dev)
  99 #endif
 100 #if defined(CONFIG_NE2000) || defined(NE2000)
 101         && ne_probe(dev)
 102 #endif
 103 #if defined(CONFIG_HPLAN) || defined(HPLAN)
 104         && hp_probe(dev)
 105 #endif
 106 #if defined(CONFIG_HPLAN_PLUS)
 107         && hp_plus_probe(dev)
 108 #endif
 109 #ifdef CONFIG_AT1500
 110         && at1500_probe(dev)
 111 #endif
 112 #ifdef CONFIG_AT1700
 113         && at1700_probe(dev)
 114 #endif
 115 #ifdef CONFIG_EL3               /* 3c509 */
 116         && el3_probe(dev)
 117 #endif
 118 #ifdef CONFIG_ZNET              /* Zenith Z-Note and some IBM Thinkpads. */
 119         && znet_probe(dev)
 120 #endif
 121 #ifdef CONFIG_EEXPRESS          /* Intel EtherExpress */
 122         && express_probe(dev)
 123 #endif
 124 #ifdef CONFIG_EEXPRESS_PRO      /* Intel EtherExpress Pro/10 */
 125         && eepro_probe(dev)
 126 #endif
 127 #ifdef CONFIG_DEPCA             /* DEC DEPCA */
 128         && depca_probe(dev)
 129 #endif
 130 #ifdef CONFIG_EWRK3             /* DEC EtherWORKS 3 */
 131         && ewrk3_probe(dev)
 132 #endif
 133 #ifdef CONFIG_DE4X5             /* DEC DE425, DE434, DE435 adapters */
 134         && de4x5_probe(dev)
 135 #endif
 136 #ifdef CONFIG_APRICOT           /* Apricot I82596 */
 137         && apricot_probe(dev)
 138 #endif
 139 #ifdef CONFIG_EL1               /* 3c501 */
 140         && el1_probe(dev)
 141 #endif
 142 #if     defined(CONFIG_WAVELAN) /* WaveLAN */
 143         && wavelan_probe(dev)
 144 #endif  /* defined(CONFIG_WAVELAN) */
 145 #ifdef CONFIG_EL16              /* 3c507 */
 146         && el16_probe(dev)
 147 #endif
 148 #ifdef CONFIG_ELPLUS            /* 3c505 */
 149         && elplus_probe(dev)
 150 #endif
 151 #ifdef CONFIG_AC3200            /* Ansel Communications EISA 3200. */
 152         && ac3200_probe(dev)
 153 #endif
 154 #ifdef CONFIG_E2100             /* Cabletron E21xx series. */
 155         && e2100_probe(dev)
 156 #endif
 157 #ifdef CONFIG_DE600             /* D-Link DE-600 adapter */
 158         && de600_probe(dev)
 159 #endif
 160 #ifdef CONFIG_DE620             /* D-Link DE-620 adapter */
 161         && de620_probe(dev)
 162 #endif
 163 #if defined(CONFIG_SK_G16)
 164         && SK_init(dev)
 165 #endif
 166 #ifdef CONFIG_NI52
 167         && ni52_probe(dev)
 168 #endif
 169 #ifdef CONFIG_NI65
 170         && ni65_probe(dev)
 171 #endif
 172         && 1 ) {
 173         return 1;       /* -ENODEV or -EAGAIN would be more accurate. */
 174     }
 175     return 0;
 176 }
 177 
 178 
 179 #ifdef CONFIG_NETROM
 180         extern int nr_init(struct device *);
 181         
 182         static struct device nr3_dev = { "nr3", 0, 0, 0, 0, 0, 0, 0, 0, 0, NEXT_DEV, nr_init, };
 183         static struct device nr2_dev = { "nr2", 0, 0, 0, 0, 0, 0, 0, 0, 0, &nr3_dev, nr_init, };
 184         static struct device nr1_dev = { "nr1", 0, 0, 0, 0, 0, 0, 0, 0, 0, &nr2_dev, nr_init, };
 185         static struct device nr0_dev = { "nr0", 0, 0, 0, 0, 0, 0, 0, 0, 0, &nr1_dev, nr_init, };
 186 
 187 #   undef NEXT_DEV
 188 #   define      NEXT_DEV        (&nr0_dev)
 189 #endif
 190 
 191 /* Run-time ATtachable (Pocket) devices have a different (not "eth#") name. */
 192 #ifdef CONFIG_ATP               /* AT-LAN-TEC (RealTek) pocket adaptor. */
 193 static struct device atp_dev = {
 194     "atp0", 0, 0, 0, 0, 0, 0, 0, 0, 0, NEXT_DEV, atp_init, /* ... */ };
 195 #   undef NEXT_DEV
 196 #   define NEXT_DEV     (&atp_dev)
 197 #endif
 198 
 199 #ifdef CONFIG_ARCNET
 200     extern int arcnet_probe(struct device *dev);
 201     static struct device arcnet_dev = {
 202         "arc0", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, arcnet_probe, };
 203 #   undef       NEXT_DEV
 204 #   define      NEXT_DEV        (&arcnet_dev)
 205 #endif
 206 
 207 /* The first device defaults to I/O base '0', which means autoprobe. */
 208 #ifndef ETH0_ADDR
 209 # define ETH0_ADDR 0
 210 #endif
 211 #ifndef ETH0_IRQ
 212 # define ETH0_IRQ 0
 213 #endif
 214 /* "eth0" defaults to autoprobe (== 0), other use a base of 0xffe0 (== -0x20),
 215    which means "don't probe".  These entries exist to only to provide empty
 216    slots which may be enabled at boot-time. */
 217 
 218 static struct device eth3_dev = {
 219     "eth3", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, NEXT_DEV, ethif_probe };
 220 static struct device eth2_dev = {
 221     "eth2", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, &eth3_dev, ethif_probe };
 222 static struct device eth1_dev = {
 223     "eth1", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, &eth2_dev, ethif_probe };
 224 
 225 static struct device eth0_dev = {
 226     "eth0", 0, 0, 0, 0, ETH0_ADDR, ETH0_IRQ, 0, 0, 0, &eth1_dev, ethif_probe };
 227 
 228 #   undef NEXT_DEV
 229 #   define NEXT_DEV     (&eth0_dev)
 230 
 231 #if defined(PLIP) || defined(CONFIG_PLIP)
 232     extern int plip_init(struct device *);
 233     static struct device plip2_dev = {
 234         "plip2", 0, 0, 0, 0, 0x278, 2, 0, 0, 0, NEXT_DEV, plip_init, };
 235     static struct device plip1_dev = {
 236         "plip1", 0, 0, 0, 0, 0x378, 7, 0, 0, 0, &plip2_dev, plip_init, };
 237     static struct device plip0_dev = {
 238         "plip0", 0, 0, 0, 0, 0x3BC, 5, 0, 0, 0, &plip1_dev, plip_init, };
 239 #   undef NEXT_DEV
 240 #   define NEXT_DEV     (&plip0_dev)
 241 #endif  /* PLIP */
 242 
 243 #if defined(SLIP) || defined(CONFIG_SLIP)
 244         /* To be exact, this node just hooks the initialization
 245            routines to the device structures.                   */
 246 extern int slip_init_ctrl_dev(struct device *);
 247 static struct device slip_bootstrap = {
 248   "slip_proto", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, slip_init_ctrl_dev, };
 249 #undef NEXT_DEV
 250 #define NEXT_DEV (&slip_bootstrap)
 251 #endif  /* SLIP */
 252   
 253 #if defined(CONFIG_PPP)
 254 extern int ppp_init(struct device *);
 255 static struct device ppp_bootstrap = {
 256     "ppp_proto", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, ppp_init, };
 257 #undef NEXT_DEV
 258 #define NEXT_DEV (&ppp_bootstrap)
 259 #endif   /* PPP */
 260 
 261 #ifdef CONFIG_DUMMY
 262     extern int dummy_init(struct device *dev);
 263     static struct device dummy_dev = {
 264         "dummy", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, dummy_init, };
 265 #   undef       NEXT_DEV
 266 #   define      NEXT_DEV        (&dummy_dev)
 267 #endif
 268 
 269 #ifdef CONFIG_EQUALIZER
 270 extern int eql_init(struct device *dev);
 271 struct device eql_dev = {
 272   "eql",                        /* Master device for IP traffic load 
 273                                    balancing */
 274   0x0, 0x0, 0x0, 0x0,           /* recv end/start; mem end/start */
 275   0,                            /* base I/O address */
 276   0,                            /* IRQ */
 277   0, 0, 0,                      /* flags */
 278   NEXT_DEV,                     /* next device */
 279   eql_init                      /* set up the rest */
 280 };
 281 #   undef       NEXT_DEV
 282 #   define      NEXT_DEV        (&eql_dev)
 283 #endif
 284 
 285 #ifdef CONFIG_IBMTR 
 286 
 287     extern int tok_probe(struct device *dev);
 288     static struct device ibmtr_dev1 = {
 289         "tr1",                  /* IBM Token Ring (Non-DMA) Interface */
 290         0x0,                    /* recv memory end                      */
 291         0x0,                    /* recv memory start                    */
 292         0x0,                    /* memory end                           */
 293         0x0,                    /* memory start                         */
 294         0xa24,                  /* base I/O address                     */
 295         0,                      /* IRQ                                  */
 296         0, 0, 0,                /* flags                                */
 297         NEXT_DEV,               /* next device                          */
 298         tok_probe               /* ??? Token_init should set up the rest        */
 299     };
 300 #   undef       NEXT_DEV
 301 #   define      NEXT_DEV        (&ibmtr_dev1)
 302 
 303 
 304     static struct device ibmtr_dev0 = {
 305         "tr0",                  /* IBM Token Ring (Non-DMA) Interface */
 306         0x0,                    /* recv memory end                      */
 307         0x0,                    /* recv memory start                    */
 308         0x0,                    /* memory end                           */
 309         0x0,                    /* memory start                         */
 310         0xa20,                  /* base I/O address                     */
 311         0,                      /* IRQ                                  */
 312         0, 0, 0,                /* flags                                */
 313         NEXT_DEV,               /* next device                          */
 314         tok_probe               /* ??? Token_init should set up the rest        */
 315     };
 316 #   undef       NEXT_DEV
 317 #   define      NEXT_DEV        (&ibmtr_dev0)
 318 
 319 #endif 
 320 #ifdef CONFIG_NET_IPIP
 321 #ifdef CONFIG_IP_FORWARD
 322         extern int tunnel_init(struct device *);
 323         
 324         static struct device tunnel_dev1 = 
 325         {
 326                 "tunl1",                /* IPIP tunnel                          */
 327                 0x0,                    /* recv memory end                      */
 328                 0x0,                    /* recv memory start                    */
 329                 0x0,                    /* memory end                           */
 330                 0x0,                    /* memory start                         */
 331                 0x0,                    /* base I/O address                     */
 332                 0,                      /* IRQ                                  */
 333                 0, 0, 0,                /* flags                                */
 334                 NEXT_DEV,               /* next device                          */
 335                 tunnel_init             /* Fill in the details                  */
 336         };
 337 
 338         static struct device tunnel_dev0 = 
 339         {
 340                 "tunl0",                /* IPIP tunnel                          */
 341                 0x0,                    /* recv memory end                      */
 342                 0x0,                    /* recv memory start                    */
 343                 0x0,                    /* memory end                           */
 344                 0x0,                    /* memory start                         */
 345                 0x0,                    /* base I/O address                     */
 346                 0,                      /* IRQ                                  */
 347                 0, 0, 0,                /* flags                                */
 348                 &tunnel_dev1,           /* next device                          */
 349                 tunnel_init             /* Fill in the details                  */
 350     };
 351 #   undef       NEXT_DEV
 352 #   define      NEXT_DEV        (&tunnel_dev0)
 353 
 354 #endif 
 355 #endif
 356         
 357 extern int loopback_init(struct device *dev);
 358 struct device loopback_dev = {
 359         "lo",                   /* Software Loopback interface          */
 360         0x0,                    /* recv memory end                      */
 361         0x0,                    /* recv memory start                    */
 362         0x0,                    /* memory end                           */
 363         0x0,                    /* memory start                         */
 364         0,                      /* base I/O address                     */
 365         0,                      /* IRQ                                  */
 366         0, 0, 0,                /* flags                                */
 367         NEXT_DEV,               /* next device                          */
 368         loopback_init           /* loopback_init should set up the rest */
 369 };
 370 
 371 struct device *dev_base = &loopback_dev;

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