Annotation of xinu/sys/ethstrt.c, revision 1.1.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.