summaryrefslogtreecommitdiffstats
path: root/drivers/net/ni65.h
blob: 6208f8a3fcd8e9c09c208ff7b02dbcfc6c77f020 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/* am7990 (lance) definitions
 * 
 * This is an extension to the Linux operating system, and is covered by
 * same GNU General Public License that covers that work.
 * 
 * Michael Hipp
 * email: mhipp@student.uni-tuebingen.de
 *
 * sources: (mail me or ask archie if you need them) 
 *    crynwr-packet-driver
 */

/*
 * 	Control and Status Register 0 (CSR0) bit definitions
 * (R=Readable) (W=Writeable) (S=Set on write) (C-Clear on write)
 *
 */

#define CSR0_ERR	0x8000	/* Error summary (R) */
#define CSR0_BABL	0x4000	/* Babble transmitter timeout error (RC) */
#define CSR0_CERR	0x2000	/* Collision Error (RC) */
#define CSR0_MISS	0x1000	/* Missed packet (RC) */
#define CSR0_MERR	0x0800	/* Memory Error (RC) */ 
#define CSR0_RINT	0x0400	/* Receiver Interrupt (RC) */
#define CSR0_TINT       0x0200	/* Transmit Interrupt (RC) */ 
#define CSR0_IDON	0x0100	/* Initialization Done (RC) */
#define CSR0_INTR	0x0080	/* Interrupt Flag (R) */
#define CSR0_INEA	0x0040	/* Interrupt Enable (RW) */
#define CSR0_RXON	0x0020	/* Receiver on (R) */
#define CSR0_TXON	0x0010  /* Transmitter on (R) */
#define CSR0_TDMD	0x0008	/* Transmit Demand (RS) */
#define CSR0_STOP	0x0004 	/* Stop (RS) */
#define CSR0_STRT	0x0002	/* Start (RS) */
#define CSR0_INIT	0x0001	/* Initialize (RS) */

#define CSR0_CLRALL    0x7f00  /* mask for all clearable bits */
/*
 *	Initialization Block  Mode operation Bit Definitions.
 */

#define M_PROM		0x8000	/* Promiscuous Mode */
#define M_INTL		0x0040  /* Internal Loopback */
#define M_DRTY		0x0020  /* Disable Retry */ 
#define M_COLL		0x0010	/* Force Collision */
#define M_DTCR		0x0008	/* Disable Transmit CRC) */
#define M_LOOP		0x0004	/* Loopback */
#define M_DTX		0x0002	/* Disable the Transmitter */ 
#define M_DRX		0x0001  /* Disable the Receiver */


/*
 * 	Receive message descriptor bit definitions.
 */

#define RCV_OWN		0x80	/* owner bit 0 = host, 1 = lance */
#define RCV_ERR		0x40	/* Error Summary */
#define RCV_FRAM	0x20	/* Framing Error */
#define RCV_OFLO	0x10	/* Overflow Error */
#define RCV_CRC		0x08	/* CRC Error */ 
#define RCV_BUF_ERR	0x04	/* Buffer Error */
#define RCV_START	0x02	/* Start of Packet */
#define RCV_END		0x01	/* End of Packet */


/*
 *	Transmit  message descriptor bit definitions.
 */

#define XMIT_OWN	0x80	/* owner bit 0 = host, 1 = lance */
#define XMIT_ERR	0x40    /* Error Summary */
#define XMIT_RETRY	0x10	/* more the 1 retry needed to Xmit */
#define XMIT_1_RETRY	0x08	/* one retry needed to Xmit */
#define XMIT_DEF	0x04	/* Deferred */
#define XMIT_START	0x02	/* Start of Packet */
#define XMIT_END	0x01	/* End of Packet */

/*
 * transmit status (2) (valid if XMIT_ERR == 1)
 */

#define XMIT_TDRMASK    0x03ff  /* time-domain-reflectometer-value */
#define XMIT_RTRY 	0x0400  /* Failed after 16 retransmissions  */
#define XMIT_LCAR 	0x0800  /* Loss of Carrier */
#define XMIT_LCOL 	0x1000  /* Late collision */
#define XMIT_RESERV 	0x2000  /* Reserved */
#define XMIT_UFLO 	0x4000  /* Underflow (late memory) */
#define XMIT_BUFF 	0x8000  /* Buffering error (no ENP) */

struct init_block 
{
  unsigned short mode;
  unsigned char eaddr[6];
  unsigned char filter[8];
  /* bit 29-31: number of rmd's (power of 2) */
  u32 rrp;   /* receive ring pointer (align 8) */
  /* bit 29-31: number of tmd's (power of 2) */
  u32 trp;   /* transmit ring pointer (align 8) */
};

struct rmd /* Receive Message Descriptor */
{ 
  union
  {
    volatile u32 buffer;
    struct 
    {
      volatile unsigned char dummy[3];
      volatile unsigned char status; 
    } s;
  } u;
  volatile short blen;
  volatile unsigned short mlen;
};

struct tmd
{
  union 
  {
    volatile u32 buffer;
    struct 
    {
      volatile unsigned char dummy[3];
      volatile unsigned char status;
    } s;
  } u;
  volatile unsigned short blen;
  volatile unsigned short status2;
};