Annotation of Gnu-Mach/linux/dev/drivers/net/Space.c, revision 1.1

1.1     ! root        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.8   07/31/96
        !            17:  *
        !            18:  * Authors:    Ross Biro, <[email protected]>
        !            19:  *             Fred N. van Kempen, <[email protected]>
        !            20:  *             Donald J. Becker, <[email protected]>
        !            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 ultra32_probe(struct device *dev);
        !            45: extern int wd_probe(struct device *dev);
        !            46: extern int el2_probe(struct device *dev);
        !            47: extern int ne_probe(struct device *dev);
        !            48: extern int ne2k_pci_probe(struct device *dev);
        !            49: extern int hp_probe(struct device *dev);
        !            50: extern int hp_plus_probe(struct device *dev);
        !            51: extern int znet_probe(struct device *);
        !            52: extern int express_probe(struct device *);
        !            53: extern int eepro_probe(struct device *);
        !            54: extern int el3_probe(struct device *);
        !            55: extern int at1500_probe(struct device *);
        !            56: extern int at1700_probe(struct device *);
        !            57: extern int fmv18x_probe(struct device *);
        !            58: extern int eth16i_probe(struct device *);
        !            59: extern int depca_probe(struct device *);
        !            60: extern int apricot_probe(struct device *);
        !            61: extern int ewrk3_probe(struct device *);
        !            62: extern int de4x5_probe(struct device *);
        !            63: extern int el1_probe(struct device *);
        !            64: extern int via_rhine_probe(struct device *);
        !            65: #if    defined(CONFIG_WAVELAN)
        !            66: extern int wavelan_probe(struct device *);
        !            67: #endif /* defined(CONFIG_WAVELAN) */
        !            68: extern int el16_probe(struct device *);
        !            69: extern int elplus_probe(struct device *);
        !            70: extern int ac3200_probe(struct device *);
        !            71: extern int e2100_probe(struct device *);
        !            72: extern int ni52_probe(struct device *);
        !            73: extern int ni65_probe(struct device *);
        !            74: extern int SK_init(struct device *);
        !            75: extern int seeq8005_probe(struct device *);
        !            76: extern int tc59x_probe(struct device *);
        !            77: extern int dgrs_probe(struct device *);
        !            78: extern int smc_init( struct device * );
        !            79: extern int sparc_lance_probe(struct device *);
        !            80: extern int atarilance_probe(struct device *);
        !            81: extern int a2065_probe(struct device *);
        !            82: extern int ariadne_probe(struct device *);
        !            83: extern int hydra_probe(struct device *);
        !            84: extern int yellowfin_probe(struct device *);
        !            85: extern int eepro100_probe(struct device *);
        !            86: extern int epic100_probe(struct device *);
        !            87: extern int rtl8139_probe(struct device *);
        !            88: extern int tlan_probe(struct device *);
        !            89: extern int isa515_probe(struct device *);
        !            90: extern int pcnet32_probe(struct device *);
        !            91: extern int lance_probe(struct device *);
        !            92: /* Detachable devices ("pocket adaptors") */
        !            93: extern int atp_init(struct device *);
        !            94: extern int de600_probe(struct device *);
        !            95: extern int de620_probe(struct device *);
        !            96: 
        !            97: static int
        !            98: ethif_probe(struct device *dev)
        !            99: {
        !           100:     u_long base_addr = dev->base_addr;
        !           101: 
        !           102:     if ((base_addr == 0xffe0)  ||  (base_addr == 1))
        !           103:        return 1;               /* ENXIO */
        !           104: 
        !           105:     if (1
        !           106:        /* All PCI probes are safe, and thus should be first. */
        !           107: #ifdef CONFIG_DE4X5             /* DEC DE425, DE434, DE435 adapters */
        !           108:        && de4x5_probe(dev)
        !           109: #endif
        !           110: #ifdef CONFIG_DGRS
        !           111:        && dgrs_probe(dev)
        !           112: #endif
        !           113: #ifdef CONFIG_EEXPRESS_PRO100B /* Intel EtherExpress Pro100B */
        !           114:        && eepro100_probe(dev)
        !           115: #endif
        !           116: #ifdef CONFIG_EPIC
        !           117:        && epic100_probe(dev)
        !           118: #endif
        !           119: #if defined(CONFIG_HP100)
        !           120:        && hp100_probe(dev)
        !           121: #endif 
        !           122: #if defined(CONFIG_NE2K_PCI)
        !           123:        && ne2k_pci_probe(dev)
        !           124: #endif
        !           125: #ifdef CONFIG_PCNET32
        !           126:        && pcnet32_probe(dev)
        !           127: #endif
        !           128: #ifdef CONFIG_RTL8139
        !           129:        && rtl8139_probe(dev)
        !           130: #endif
        !           131: #ifdef CONFIG_VIA_RHINE
        !           132:        && via_rhine_probe(dev)
        !           133: #endif
        !           134: #if defined(CONFIG_DEC_ELCP)
        !           135:        && tulip_probe(dev)
        !           136: #endif
        !           137: #ifdef CONFIG_YELLOWFIN
        !           138:        && yellowfin_probe(dev)
        !           139: #endif
        !           140:        /* Next mostly-safe EISA-only drivers. */
        !           141: #ifdef CONFIG_AC3200           /* Ansel Communications EISA 3200. */
        !           142:        && ac3200_probe(dev)
        !           143: #endif
        !           144: #if defined(CONFIG_ULTRA32)
        !           145:        && ultra32_probe(dev)
        !           146: #endif
        !           147:        /* Third, sensitive ISA boards. */
        !           148: #ifdef CONFIG_AT1700
        !           149:        && at1700_probe(dev)
        !           150: #endif
        !           151: #if defined(CONFIG_ULTRA)
        !           152:        && ultra_probe(dev)
        !           153: #endif
        !           154: #if defined(CONFIG_SMC9194)
        !           155:        && smc_init(dev)
        !           156: #endif
        !           157: #if defined(CONFIG_WD80x3)
        !           158:        && wd_probe(dev)
        !           159: #endif
        !           160: #if defined(CONFIG_EL2)                /* 3c503 */
        !           161:        && el2_probe(dev)
        !           162: #endif
        !           163: #if defined(CONFIG_HPLAN)
        !           164:        && hp_probe(dev)
        !           165: #endif
        !           166: #if defined(CONFIG_HPLAN_PLUS)
        !           167:        && hp_plus_probe(dev)
        !           168: #endif
        !           169: #if defined(CONFIG_SEEQ8005)
        !           170:        && seeq8005_probe(dev)
        !           171: #endif
        !           172: #ifdef CONFIG_E2100            /* Cabletron E21xx series. */
        !           173:        && e2100_probe(dev)
        !           174: #endif
        !           175: #if defined(CONFIG_NE2000)
        !           176:        && ne_probe(dev)
        !           177: #endif
        !           178: #ifdef CONFIG_AT1500
        !           179:        && at1500_probe(dev)
        !           180: #endif
        !           181: #ifdef CONFIG_FMV18X           /* Fujitsu FMV-181/182 */
        !           182:        && fmv18x_probe(dev)
        !           183: #endif
        !           184: #ifdef CONFIG_ETH16I
        !           185:        && eth16i_probe(dev)    /* ICL EtherTeam 16i/32 */
        !           186: #endif
        !           187: #ifdef CONFIG_EL3              /* 3c509 */
        !           188:        && el3_probe(dev)
        !           189: #endif
        !           190: #if defined(CONFIG_VORTEX)
        !           191:        && tc59x_probe(dev)
        !           192: #endif
        !           193: #ifdef CONFIG_3C515            /* 3c515 */
        !           194:        && tc515_probe(dev)
        !           195: #endif
        !           196: #ifdef CONFIG_ZNET             /* Zenith Z-Note and some IBM Thinkpads. */
        !           197:        && znet_probe(dev)
        !           198: #endif
        !           199: #ifdef CONFIG_EEXPRESS         /* Intel EtherExpress */
        !           200:        && express_probe(dev)
        !           201: #endif
        !           202: #ifdef CONFIG_EEXPRESS_PRO     /* Intel EtherExpress Pro/10 */
        !           203:        && eepro_probe(dev)
        !           204: #endif
        !           205: #ifdef CONFIG_DEPCA            /* DEC DEPCA */
        !           206:        && depca_probe(dev)
        !           207: #endif
        !           208: #ifdef CONFIG_EWRK3             /* DEC EtherWORKS 3 */
        !           209:         && ewrk3_probe(dev)
        !           210: #endif
        !           211: #ifdef CONFIG_APRICOT          /* Apricot I82596 */
        !           212:        && apricot_probe(dev)
        !           213: #endif
        !           214: #ifdef CONFIG_EL1              /* 3c501 */
        !           215:        && el1_probe(dev)
        !           216: #endif
        !           217: #if    defined(CONFIG_WAVELAN) /* WaveLAN */
        !           218:        && wavelan_probe(dev)
        !           219: #endif /* defined(CONFIG_WAVELAN) */
        !           220: #ifdef CONFIG_EL16             /* 3c507 */
        !           221:        && el16_probe(dev)
        !           222: #endif
        !           223: #ifdef CONFIG_ELPLUS           /* 3c505 */
        !           224:        && elplus_probe(dev)
        !           225: #endif
        !           226: #ifdef CONFIG_DE600            /* D-Link DE-600 adapter */
        !           227:        && de600_probe(dev)
        !           228: #endif
        !           229: #ifdef CONFIG_DE620            /* D-Link DE-620 adapter */
        !           230:        && de620_probe(dev)
        !           231: #endif
        !           232: #if defined(CONFIG_SK_G16)
        !           233:        && SK_init(dev)
        !           234: #endif
        !           235: #ifdef CONFIG_NI52
        !           236:        && ni52_probe(dev)
        !           237: #endif
        !           238: #ifdef CONFIG_NI65
        !           239:        && ni65_probe(dev)
        !           240: #endif
        !           241: #ifdef CONFIG_LANCE    /* ISA LANCE boards */
        !           242:        && lance_probe(dev)
        !           243: #endif
        !           244: #ifdef CONFIG_ATARILANCE       /* Lance-based Atari ethernet boards */
        !           245:        && atarilance_probe(dev)
        !           246: #endif
        !           247: #ifdef CONFIG_A2065            /* Commodore/Ameristar A2065 Ethernet Board */
        !           248:        && a2065_probe(dev)
        !           249: #endif
        !           250: #ifdef CONFIG_ARIADNE          /* Village Tronic Ariadne Ethernet Board */
        !           251:        && ariadne_probe(dev)
        !           252: #endif
        !           253: #ifdef CONFIG_HYDRA            /* Hydra Systems Amiganet Ethernet board */
        !           254:        && hydra_probe(dev)
        !           255: #endif
        !           256: #ifdef CONFIG_SUNLANCE
        !           257:        && sparc_lance_probe(dev)
        !           258: #endif
        !           259: #ifdef CONFIG_TLAN
        !           260:        && tlan_probe(dev)
        !           261: #endif
        !           262: #ifdef CONFIG_LANCE
        !           263:        && lance_probe(dev)
        !           264: #endif
        !           265:        && 1 ) {
        !           266:        return 1;       /* -ENODEV or -EAGAIN would be more accurate. */
        !           267:     }
        !           268:     return 0;
        !           269: }
        !           270: 
        !           271: #ifdef CONFIG_SDLA
        !           272:     extern int sdla_init(struct device *);
        !           273:     static struct device sdla0_dev = { "sdla0", 0, 0, 0, 0, 0, 0, 0, 0, 0, NEXT_DEV, sdla_init, };
        !           274: 
        !           275: #   undef NEXT_DEV
        !           276: #   define NEXT_DEV    (&sdla0_dev)
        !           277: #endif
        !           278: 
        !           279: #ifdef CONFIG_NETROM
        !           280:        extern int nr_init(struct device *);
        !           281:        
        !           282:        static struct device nr3_dev = { "nr3", 0, 0, 0, 0, 0, 0, 0, 0, 0, NEXT_DEV, nr_init, };
        !           283:        static struct device nr2_dev = { "nr2", 0, 0, 0, 0, 0, 0, 0, 0, 0, &nr3_dev, nr_init, };
        !           284:        static struct device nr1_dev = { "nr1", 0, 0, 0, 0, 0, 0, 0, 0, 0, &nr2_dev, nr_init, };
        !           285:        static struct device nr0_dev = { "nr0", 0, 0, 0, 0, 0, 0, 0, 0, 0, &nr1_dev, nr_init, };
        !           286: 
        !           287: #   undef NEXT_DEV
        !           288: #   define     NEXT_DEV        (&nr0_dev)
        !           289: #endif
        !           290: 
        !           291: /* Run-time ATtachable (Pocket) devices have a different (not "eth#") name. */
        !           292: #ifdef CONFIG_ATP              /* AT-LAN-TEC (RealTek) pocket adaptor. */
        !           293: static struct device atp_dev = {
        !           294:     "atp0", 0, 0, 0, 0, 0, 0, 0, 0, 0, NEXT_DEV, atp_init, /* ... */ };
        !           295: #   undef NEXT_DEV
        !           296: #   define NEXT_DEV    (&atp_dev)
        !           297: #endif
        !           298: 
        !           299: #ifdef CONFIG_ARCNET
        !           300:     extern int arcnet_probe(struct device *dev);
        !           301:     static struct device arcnet_dev = {
        !           302:        "arc0", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, arcnet_probe, };
        !           303: #   undef      NEXT_DEV
        !           304: #   define     NEXT_DEV        (&arcnet_dev)
        !           305: #endif
        !           306: 
        !           307: /* In Mach, by default allow at least 2 interfaces.  */
        !           308: #ifdef MACH
        !           309: #ifndef ETH1_ADDR
        !           310: # define ETH1_ADDR 0
        !           311: #endif
        !           312: #ifndef ETH1_IRQ
        !           313: # define ETH1_IRQ 0
        !           314: #endif
        !           315: #endif
        !           316: 
        !           317: /* The first device defaults to I/O base '0', which means autoprobe. */
        !           318: #ifndef ETH0_ADDR
        !           319: # define ETH0_ADDR 0
        !           320: #endif
        !           321: #ifndef ETH0_IRQ
        !           322: # define ETH0_IRQ 0
        !           323: #endif
        !           324: /* "eth0" defaults to autoprobe (== 0), other use a base of 0xffe0 (== -0x20),
        !           325:    which means "don't probe".  These entries exist to only to provide empty
        !           326:    slots which may be enabled at boot-time. */
        !           327: 
        !           328: static struct device eth7_dev = {
        !           329:     "eth7", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, NEXT_DEV, ethif_probe };
        !           330: static struct device eth6_dev = {
        !           331:     "eth6", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, &eth7_dev, ethif_probe };
        !           332: static struct device eth5_dev = {
        !           333:     "eth5", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, &eth6_dev, ethif_probe };
        !           334: static struct device eth4_dev = {
        !           335:     "eth4", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, &eth5_dev, ethif_probe };
        !           336: static struct device eth3_dev = {
        !           337:     "eth3", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, &eth4_dev, ethif_probe };
        !           338: static struct device eth2_dev = {
        !           339:     "eth2", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, &eth3_dev, ethif_probe };
        !           340: 
        !           341: #ifdef MACH
        !           342: static struct device eth1_dev = {
        !           343:     "eth1", 0, 0, 0, 0, ETH1_ADDR, ETH1_IRQ, 0, 0, 0, &eth2_dev, ethif_probe };
        !           344: #else
        !           345: static struct device eth1_dev = {
        !           346:     "eth1", 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, &eth2_dev, ethif_probe };
        !           347: #endif
        !           348: 
        !           349: static struct device eth0_dev = {
        !           350:     "eth0", 0, 0, 0, 0, ETH0_ADDR, ETH0_IRQ, 0, 0, 0, &eth1_dev, ethif_probe };
        !           351: 
        !           352: #   undef NEXT_DEV
        !           353: #   define NEXT_DEV    (&eth0_dev)
        !           354: 
        !           355: #if defined(PLIP) || defined(CONFIG_PLIP)
        !           356:     extern int plip_init(struct device *);
        !           357:     static struct device plip2_dev = {
        !           358:        "plip2", 0, 0, 0, 0, 0x278, 2, 0, 0, 0, NEXT_DEV, plip_init, };
        !           359:     static struct device plip1_dev = {
        !           360:        "plip1", 0, 0, 0, 0, 0x378, 7, 0, 0, 0, &plip2_dev, plip_init, };
        !           361:     static struct device plip0_dev = {
        !           362:        "plip0", 0, 0, 0, 0, 0x3BC, 5, 0, 0, 0, &plip1_dev, plip_init, };
        !           363: #   undef NEXT_DEV
        !           364: #   define NEXT_DEV    (&plip0_dev)
        !           365: #endif  /* PLIP */
        !           366: 
        !           367: #if defined(SLIP) || defined(CONFIG_SLIP)
        !           368:        /* To be exact, this node just hooks the initialization
        !           369:           routines to the device structures.                   */
        !           370: extern int slip_init_ctrl_dev(struct device *);
        !           371: static struct device slip_bootstrap = {
        !           372:   "slip_proto", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, slip_init_ctrl_dev, };
        !           373: #undef NEXT_DEV
        !           374: #define NEXT_DEV (&slip_bootstrap)
        !           375: #endif /* SLIP */
        !           376:   
        !           377: #if defined(CONFIG_STRIP)
        !           378: extern int strip_init_ctrl_dev(struct device *);
        !           379: static struct device strip_bootstrap = {
        !           380:     "strip_proto", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, strip_init_ctrl_dev, };
        !           381: #undef NEXT_DEV
        !           382: #define NEXT_DEV (&strip_bootstrap)
        !           383: #endif   /* STRIP */
        !           384: 
        !           385: #if defined(CONFIG_PPP)
        !           386: extern int ppp_init(struct device *);
        !           387: static struct device ppp_bootstrap = {
        !           388:     "ppp_proto", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, ppp_init, };
        !           389: #undef NEXT_DEV
        !           390: #define NEXT_DEV (&ppp_bootstrap)
        !           391: #endif   /* PPP */
        !           392: 
        !           393: #ifdef CONFIG_DUMMY
        !           394:     extern int dummy_init(struct device *dev);
        !           395:     static struct device dummy_dev = {
        !           396:        "dummy", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, dummy_init, };
        !           397: #   undef      NEXT_DEV
        !           398: #   define     NEXT_DEV        (&dummy_dev)
        !           399: #endif
        !           400: 
        !           401: #ifdef CONFIG_EQUALIZER
        !           402: extern int eql_init(struct device *dev);
        !           403: struct device eql_dev = {
        !           404:   "eql",                       /* Master device for IP traffic load 
        !           405:                                   balancing */
        !           406:   0x0, 0x0, 0x0, 0x0,          /* recv end/start; mem end/start */
        !           407:   0,                           /* base I/O address */
        !           408:   0,                           /* IRQ */
        !           409:   0, 0, 0,                     /* flags */
        !           410:   NEXT_DEV,                    /* next device */
        !           411:   eql_init                     /* set up the rest */
        !           412: };
        !           413: #   undef       NEXT_DEV
        !           414: #   define      NEXT_DEV        (&eql_dev)
        !           415: #endif
        !           416: 
        !           417: #ifdef CONFIG_IBMTR 
        !           418: 
        !           419:     extern int tok_probe(struct device *dev);
        !           420:     static struct device ibmtr_dev1 = {
        !           421:        "tr1",                  /* IBM Token Ring (Non-DMA) Interface */
        !           422:        0x0,                    /* recv memory end                      */
        !           423:        0x0,                    /* recv memory start                    */
        !           424:        0x0,                    /* memory end                           */
        !           425:        0x0,                    /* memory start                         */
        !           426:        0xa24,                  /* base I/O address                     */
        !           427:        0,                      /* IRQ                                  */
        !           428:        0, 0, 0,                /* flags                                */
        !           429:        NEXT_DEV,               /* next device                          */
        !           430:        tok_probe               /* ??? Token_init should set up the rest        */
        !           431:     };
        !           432: #   undef      NEXT_DEV
        !           433: #   define     NEXT_DEV        (&ibmtr_dev1)
        !           434: 
        !           435: 
        !           436:     static struct device ibmtr_dev0 = {
        !           437:        "tr0",                  /* IBM Token Ring (Non-DMA) Interface */
        !           438:        0x0,                    /* recv memory end                      */
        !           439:        0x0,                    /* recv memory start                    */
        !           440:        0x0,                    /* memory end                           */
        !           441:        0x0,                    /* memory start                         */
        !           442:        0xa20,                  /* base I/O address                     */
        !           443:        0,                      /* IRQ                                  */
        !           444:        0, 0, 0,                /* flags                                */
        !           445:        NEXT_DEV,               /* next device                          */
        !           446:        tok_probe               /* ??? Token_init should set up the rest        */
        !           447:     };
        !           448: #   undef      NEXT_DEV
        !           449: #   define     NEXT_DEV        (&ibmtr_dev0)
        !           450: 
        !           451: #endif 
        !           452: 
        !           453: #ifdef CONFIG_DEFXX
        !           454:        extern int dfx_probe(struct device *dev);
        !           455:        static struct device fddi7_dev =
        !           456:                {"fddi7", 0, 0, 0, 0, 0, 0, 0, 0, 0, NEXT_DEV, dfx_probe};
        !           457:        static struct device fddi6_dev =
        !           458:                {"fddi6", 0, 0, 0, 0, 0, 0, 0, 0, 0, &fddi7_dev, dfx_probe};
        !           459:        static struct device fddi5_dev =
        !           460:                {"fddi5", 0, 0, 0, 0, 0, 0, 0, 0, 0, &fddi6_dev, dfx_probe};
        !           461:        static struct device fddi4_dev =
        !           462:                {"fddi4", 0, 0, 0, 0, 0, 0, 0, 0, 0, &fddi5_dev, dfx_probe};
        !           463:        static struct device fddi3_dev =
        !           464:                {"fddi3", 0, 0, 0, 0, 0, 0, 0, 0, 0, &fddi4_dev, dfx_probe};
        !           465:        static struct device fddi2_dev =
        !           466:                {"fddi2", 0, 0, 0, 0, 0, 0, 0, 0, 0, &fddi3_dev, dfx_probe};
        !           467:        static struct device fddi1_dev =
        !           468:                {"fddi1", 0, 0, 0, 0, 0, 0, 0, 0, 0, &fddi2_dev, dfx_probe};
        !           469:        static struct device fddi0_dev =
        !           470:                {"fddi0", 0, 0, 0, 0, 0, 0, 0, 0, 0, &fddi1_dev, dfx_probe};
        !           471: 
        !           472: #undef NEXT_DEV
        !           473: #define        NEXT_DEV        (&fddi0_dev)
        !           474: #endif 
        !           475: 
        !           476: #ifdef CONFIG_NET_IPIP
        !           477:        extern int tunnel_init(struct device *);
        !           478:        
        !           479:        static struct device tunnel_dev1 = 
        !           480:        {
        !           481:                "tunl1",                /* IPIP tunnel                          */
        !           482:                0x0,                    /* recv memory end                      */
        !           483:                0x0,                    /* recv memory start                    */
        !           484:                0x0,                    /* memory end                           */
        !           485:                0x0,                    /* memory start                         */
        !           486:                0x0,                    /* base I/O address                     */
        !           487:                0,                      /* IRQ                                  */
        !           488:                0, 0, 0,                /* flags                                */
        !           489:                NEXT_DEV,               /* next device                          */
        !           490:                tunnel_init             /* Fill in the details                  */
        !           491:        };
        !           492: 
        !           493:        static struct device tunnel_dev0 = 
        !           494:        {
        !           495:                "tunl0",                /* IPIP tunnel                          */
        !           496:                0x0,                    /* recv memory end                      */
        !           497:                0x0,                    /* recv memory start                    */
        !           498:                0x0,                    /* memory end                           */
        !           499:                0x0,                    /* memory start                         */
        !           500:                0x0,                    /* base I/O address                     */
        !           501:                0,                      /* IRQ                                  */
        !           502:                0, 0, 0,                /* flags                                */
        !           503:                &tunnel_dev1,           /* next device                          */
        !           504:                tunnel_init             /* Fill in the details                  */
        !           505:     };
        !           506: #   undef      NEXT_DEV
        !           507: #   define     NEXT_DEV        (&tunnel_dev0)
        !           508: 
        !           509: #endif
        !           510: 
        !           511: #ifdef CONFIG_APFDDI
        !           512:     extern int apfddi_init(struct device *dev);
        !           513:     static struct device fddi_dev = {
        !           514:        "fddi", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, apfddi_init };
        !           515: #   undef       NEXT_DEV
        !           516: #   define      NEXT_DEV        (&fddi_dev)
        !           517: #endif
        !           518: 
        !           519: #ifdef CONFIG_APBIF
        !           520:     extern int bif_init(struct device *dev);
        !           521:     static struct device bif_dev = {
        !           522:         "bif", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, bif_init };
        !           523: #   undef       NEXT_DEV
        !           524: #   define      NEXT_DEV        (&bif_dev)
        !           525: #endif
        !           526: 
        !           527: #ifdef MACH
        !           528: struct device *dev_base = &eth0_dev;
        !           529: #else
        !           530: extern int loopback_init(struct device *dev);
        !           531: struct device loopback_dev = {
        !           532:        "lo",                   /* Software Loopback interface          */
        !           533:        0x0,                    /* recv memory end                      */
        !           534:        0x0,                    /* recv memory start                    */
        !           535:        0x0,                    /* memory end                           */
        !           536:        0x0,                    /* memory start                         */
        !           537:        0,                      /* base I/O address                     */
        !           538:        0,                      /* IRQ                                  */
        !           539:        0, 0, 0,                /* flags                                */
        !           540:        NEXT_DEV,               /* next device                          */
        !           541:        loopback_init           /* loopback_init should set up the rest */
        !           542: };
        !           543: 
        !           544: struct device *dev_base = &loopback_dev;
        !           545: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.