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

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

unix.superglobalmegacorp.com

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