1
2 #define DMA_BUFF_SIZE 2200
3
4 /* Network statistics, with the same names as 'struct enet_statistics'. */
5 #define netstats enet_statistics
6
7 #define ON 1
8 #define OFF 0
9
10
11 /* Register offset info, specific to the PI
12 * E.g., to read the data port on channel A, use
13 * inportb(pichan[dev].base + CHANA + DATA)
14 */
15 #define CHANB 0 /* Base of channel B regs */
16 #define CHANA 2 /* Base of channel A regs */
17
18 /* 8530 ports on each channel */
19 #define CTL 0
20 #define DATA 1
21
22 #define DMAEN 0x4 /* Offset off DMA Enable register */
23
24 /* Timer chip offsets */
25 #define TMR0 0x8 /* Offset of timer 0 register */
26 #define TMR1 0x9 /* Offset of timer 1 register */
27 #define TMR2 0xA /* Offset of timer 2 register */
28 #define TMRCMD 0xB /* Offset of timer command register */
29
30 /* Timer chip equates */
31 #define SC0 0x00 /* Select counter 0 */
32 #define SC1 0x40 /* Select counter 1 */
33 #define SC2 0x80 /* Select counter 2 */
34 #define CLATCH 0x00 /* Counter latching operation */
35 #define MSB 0x20 /* Read/load MSB only */
36 #define LSB 0x10 /* Read/load LSB only */
37 #define LSB_MSB 0x30 /* Read/load LSB, then MSB */
38 #define MODE0 0x00 /* Interrupt on terminal count */
39 #define MODE1 0x02 /* Programmable one shot */
40 #define MODE2 0x04 /* Rate generator */
41 #define MODE3 0x06 /* Square wave rate generator */
42 #define MODE4 0x08 /* Software triggered strobe */
43 #define MODE5 0x0a /* Hardware triggered strobe */
44 #define BCD 0x01 /* BCD counter */
45
46 /* DMA controller registers */
47 #define DMA_STAT 8 /* DMA controller status register */
48 #define DMA_CMD 8 /* DMA controller command register */
49 #define DMA_MASK 10 /* DMA controller mask register */
50 #define DMA_MODE 11 /* DMA controller mode register */
51 #define DMA_RESETFF 12 /* DMA controller first/last flip flop */
52 /* DMA data */
53 #define DMA_DISABLE (0x04) /* Disable channel n */
54 #define DMA_ENABLE (0x00) /* Enable channel n */
55 /* Single transfers, incr. address, auto init, writes, ch. n */
56 #define DMA_RX_MODE (0x54)
57 /* Single transfers, incr. address, no auto init, reads, ch. n */
58 #define DMA_TX_MODE (0x48)
59
60 #define SINGLE 3686400
61 #define DOUBLE 7372800
62
63 #define SIOCGPIPARAM 0x5000 /* get PI parameters */
64 #define SIOCSPIPARAM 0x5001 /* set */
65 #define SIOCGPIBAUD 0x5002 /* get only baud rate */
66 #define SIOCSPIBAUD 0x5003
67 #define SIOCGPIDMA 0x5004 /* get only DMA */
68 #define SIOCSPIDMA 0x5005
69 #define SIOCGPIIRQ 0x5006 /* get only IRQ */
70 #define SIOCSPIIRQ 0x5007
71
72 struct pi_req {
73 int cmd;
74 int speed;
75 int clockmode;
76 int txdelay;
77 unsigned char persist;
78 int slotime;
79 int squeldelay;
80 int dmachan;
81 int irq;
82 };
83
84 #ifdef __KERNEL__
85
86 /* Information that needs to be kept for each channel. */
87 struct pi_local {
88 struct netstats stats; /* %%%dp*/
89 long open_time; /* Useless example local info. */
90 unsigned long xtal;
91
92 struct mbuf *rcvbuf;/* Buffer for current rx packet */
93 struct mbuf *rxdmabuf1; /* DMA rx buffer */
94 struct mbuf *rxdmabuf2; /* DMA rx buffer */
95
96 int bufsiz; /* Size of rcvbuf */
97 char *rcp; /* Pointer into rcvbuf */
98
99 struct sk_buff_head sndq; /* Packets awaiting transmission */
100 int sndcnt; /* Number of packets on sndq */
101 struct sk_buff *sndbuf; /* Current buffer being transmitted */
102 char *txdmabuf; /* Transmit DMA buffer */
103 char *txptr; /* Used by B port tx */
104 int txcnt;
105 char tstate; /* Transmitter state */
106 #define IDLE 0 /* Transmitter off, no data pending */
107 #define ACTIVE 1 /* Transmitter on, sending data */
108 #define UNDERRUN 2 /* Transmitter on, flushing CRC */
109 #define FLAGOUT 3 /* CRC sent - attempt to start next frame */
110 #define DEFER 4 /* Receive Active - DEFER Transmit */
111 #define ST_TXDELAY 5 /* Sending leading flags */
112 #define CRCOUT 6
113 char rstate; /* Set when !DCD goes to 0 (TRUE) */
114 /* Normal state is ACTIVE if Receive enabled */
115 #define RXERROR 2 /* Error -- Aborting current Frame */
116 #define RXABORT 3 /* ABORT sequence detected */
117 #define TOOBIG 4 /* too large a frame to store */
118 int dev; /* Device number */
119 int base; /* Base of I/O registers */
120 int cardbase; /* Base address of card */
121 int stata; /* address of Channel A status regs */
122 int statb; /* address of Channel B status regs */
123 int speed; /* Line speed, bps */
124 int clockmode; /* tapr 9600 modem clocking option */
125 int txdelay; /* Transmit Delay 10 ms/cnt */
126 unsigned char persist; /* Persistence (0-255) as a % */
127 int slotime; /* Delay to wait on persistence hit */
128 int squeldelay; /* Delay after XMTR OFF for squelch tail */
129 struct iface *iface; /* Associated interface */
130 int dmachan; /* DMA channel for this port */
131 };
132
133 #endif