1 /*
2  *	3COM "EtherLink MC/32" Descriptions
3  */
4 
5 /*
6  *	Registers
7  */
8 
9 #define HOST_CMD		0
10 #define         HOST_CMD_START_RX   (1<<3)
11 #define         HOST_CMD_SUSPND_RX  (3<<3)
12 #define         HOST_CMD_RESTRT_RX  (5<<3)
13 
14 #define         HOST_CMD_SUSPND_TX  3
15 #define         HOST_CMD_RESTRT_TX  5
16 
17 
18 #define HOST_STATUS		2
19 #define		HOST_STATUS_CRR	(1<<6)
20 #define		HOST_STATUS_CWR	(1<<5)
21 
22 
23 #define HOST_CTRL		6
24 #define		HOST_CTRL_ATTN	(1<<7)
25 #define 	HOST_CTRL_RESET	(1<<6)
26 #define 	HOST_CTRL_INTE	(1<<2)
27 
28 #define HOST_RAMPAGE		8
29 
30 #define RX_HALTED (1<<0)
31 #define TX_HALTED (1<<1)
32 #define HALTED (RX_HALTED | TX_HALTED)
33 #define RUNNING 0
34 
35 struct mc32_mailbox
36 {
37 	u16	mbox __attribute((packed));
38 	u16	data[1] __attribute((packed));
39 };
40 
41 struct skb_header
42 {
43 	u8	status __attribute((packed));
44 	u8	control __attribute((packed));
45 	u16	next __attribute((packed));	/* Do not change! */
46 	u16	length __attribute((packed));
47 	u32	data __attribute((packed));
48 };
49 
50 struct mc32_stats
51 {
52 	/* RX Errors */
53 	u32     rx_crc_errors       __attribute((packed));
54 	u32     rx_alignment_errors  __attribute((packed));
55 	u32     rx_overrun_errors    __attribute((packed));
56 	u32     rx_tooshort_errors  __attribute((packed));
57 	u32     rx_toolong_errors   __attribute((packed));
58 	u32     rx_outofresource_errors  __attribute((packed));
59 
60 	u32     rx_discarded   __attribute((packed));  /* via card pattern match filter */
61 
62 	/* TX Errors */
63 	u32     tx_max_collisions __attribute((packed));
64 	u32     tx_carrier_errors __attribute((packed));
65 	u32     tx_underrun_errors __attribute((packed));
66 	u32     tx_cts_errors     __attribute((packed));
67 	u32     tx_timeout_errors __attribute((packed)) ;
68 
69 	/* various cruft */
70 	u32     dataA[6] __attribute((packed));
71         u16	dataB[5] __attribute((packed));
72   	u32     dataC[14] __attribute((packed));
73 };
74 
75 #define STATUS_MASK	0x0F
76 #define COMPLETED	(1<<7)
77 #define COMPLETED_OK	(1<<6)
78 #define BUFFER_BUSY	(1<<5)
79 
80 #define CONTROL_EOP	(1<<7)	/* End Of Packet */
81 #define CONTROL_EOL	(1<<6)	/* End of List */
82 
83 #define MCA_MC32_ID	0x0041	/* Our MCA ident */
84