Annotation of xinu/sys/ethstrt.c, revision 1.1

1.1     ! root        1: /* ethstrt.c - ethstrt.c */
        !             2: 
        !             3: #include <conf.h>
        !             4: #include <kernel.h>
        !             5: #include <network.h>
        !             6: 
        !             7: /*------------------------------------------------------------------------
        !             8:  *  ethstrt  -  reset DEQNA Ethernet hardware and leave it operating
        !             9:  *------------------------------------------------------------------------
        !            10:  */
        !            11: ethstrt(etptr, setup)
        !            12: struct etblk   *etptr;
        !            13: struct dqsetup *setup;
        !            14: {
        !            15:        struct  dqregs  *dqptr;
        !            16:        struct  dcmd    *dcmptr;
        !            17:        int     i, j;
        !            18: 
        !            19:        dqptr = etptr->eioaddr;
        !            20: 
        !            21:        /* initialize device */
        !            22: 
        !            23:        dqptr->d_csr |=  DQ_REST;
        !            24:        dqptr->d_csr &= ~DQ_REST;
        !            25:        dqptr->d_vect = (short) ( (etptr->etdev)->dvivec - 0x200 );
        !            26: 
        !            27:        /* build setup packet */
        !            28: 
        !            29:        for (i=0 ; i < (DQ_ROWS>>1) ; i++) {
        !            30:                setup->dq_set[i+DQ_SETD][0] = setup->dq_set[i][0] = 0;
        !            31:                setup->dq_set[i+DQ_SETD][1] = setup->dq_set[i][1] =
        !            32:                        i<EPADLEN ? DQ_BCST : 0;
        !            33:                for (j=2 ; j<DQ_COLS ; j++)
        !            34:                        setup->dq_set[i+DQ_SETD][j] = setup->dq_set[i][j]=
        !            35:                                i<EPADLEN ? etptr->etpaddr[i] : 0;
        !            36:        }
        !            37:        ethrstrt(etptr, setup->dq_echo,
        !            38:                sizeof(setup->dq_echo) + sizeof(setup->dq_crc) );
        !            39:        ethwstrt(etptr, setup->dq_set, sizeof(setup->dq_set), DC_SETUP);
        !            40: 
        !            41:        /* poll device until setup processed */
        !            42: 
        !            43:        for (dcmptr=etptr->ercmd ; dcmptr->dc_st1 == DC_INIT ; )
        !            44:                ;
        !            45: 
        !            46:        /* reset device, leaving it online */
        !            47: 
        !            48:        dqptr->d_csr |=  DQ_REST;
        !            49:        dqptr->d_csr &= ~DQ_REST;
        !            50:        dqptr->d_csr &= ~DQ_ELOP;
        !            51:        dqptr->d_csr |= (DQ_ENBL| DQ_IEN | DQ_ILOP);
        !            52:        return(OK);
        !            53: }

unix.superglobalmegacorp.com

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