|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.