|
|
1.1 root 1: /*
2: * defs for the uda50 driver
3: */
4:
5: /*
6: * per-controller structure
7: */
8:
9: #define MAXCMD 32 /* no more than this many command packets */
10:
11: struct ud {
12: struct udcomm *ud_comm; /* virt addr of comm area */
13: uaddr_t ud_pcomm; /* unibus addr of ring base */
14: struct udcmd *ud_cpkt; /* virt addr of command packets */
15: uaddr_t ud_pcpkt; /* unibus addr of command packets */
16: short ud_cnext; /* index of next cmd descriptor */
17: short ud_rnext; /* ditto response */
18: ubm_t ud_cmap[MAXCMD]; /* ub mapping info for transfers */
19: char ud_cbusy[MAXCMD]; /* busy flags for commands */
20: char ud_back[MAXCMD]; /* back-index from cmd ring to packets */
21: struct udrsp *ud_rpkt; /* virt addr of response packets */
22: struct buf *ud_cbuf; /* buffer for comm/cmds */
23: ubm_t ud_cbm; /* and its map info */
24: struct buf *ud_rbuf; /* buffer for responses */
25: ubm_t ud_rbm; /* and its map info */
26: int ud_bdpno; /* bdp for transfers */
27: short ud_flags; /* misc flag bits */
28: short ud_credits; /* number of flow control credits */
29: struct device *ud_addr; /* device register address */
30: };
31:
32: /*
33: * ud_flags
34: */
35:
36: #define UINIT 01 /* already did trivial init */
37: #define UIDONE 02 /* initialization all done */
38: #define UPWAIT 04 /* waiting for command packet */
39: #define UFIRST 010 /* let first packet go even if no credits */
40: #define UTIMER 020 /* timer will kick on next go */
41: #define UCWAIT 040 /* waiting for credits */
42: #define UISTART 0100 /* initialization started */
43:
44: /*
45: * ud_cbusy
46: */
47:
48: #define FREE 0
49: #define NABBED 01
50: #define SENT 02
51: #define MAPPED 04
52:
53: #define NOBACK (-1)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.