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
131
132
133
134
135
|
/* $OpenBSD: if_cnwreg.h,v 1.3 2008/06/26 05:42:17 ray Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
* by Michael Eriksson.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/* I/O area */
#define CNW_IO_SIZE 0x10
/* I/O registers */
#define CNW_REG_COR 0x0
# define CNW_COR_IENA 0x01 /* Interrupt enable */
# define CNW_COR_LVLREQ 0x40 /* Keep high */
#define CNW_REG_CCSR 0x2
#define CNW_REG_ASR 0x4
# define CNW_ASR_TXBA 0x01 /* Trasmit buffer available */
# define CNW_ASR_WOC 0x08 /* Write Operation Complete */
# define CNW_ASR_TXDN 0x20 /* Transmit done */
# define CNW_ASR_RXERR 0x40 /* Receive error */
# define CNW_ASR_RXRDY 0x80 /* Packet received */
#define CNW_REG_IOLOW 0x6
#define CNW_REG_IOHI 0x7
#define CNW_REG_IOCONTROL 0x8
#define CNW_REG_IMR 0xa
# define CNW_IMR_IENA 0x02 /* Interrupt enable */
# define CNW_IMR_RFU1 0x10 /* RFU intr mask, keep high */
#define CNW_REG_PMR 0xc
# define CNW_PMR_RESET 0x80
#define CNW_REG_DATA 0xf
/* Mapped memory */
#define CNW_MEM_ADDR 0x20000
#define CNW_MEM_SIZE 0x8000
/* Extended I/O registers (memory mapped) */
#define CNW_EREG_CB 0x100
#define CNW_EREG_ASCC 0x114
#define CNW_EREG_RSER 0x120
# define CNW_RSER_RXBIG 0x02
# define CNW_RSER_RXCRC 0x04
# define CNW_RSER_RXOVERRUN 0x08
# define CNW_RSER_RXOVERFLOW 0x10
# define CNW_RSER_RXERR 0x40
# define CNW_RSER_RXAVAIL 0x80
#define CNW_EREG_RSERW 0x124
#define CNW_EREG_TSER 0x130
# define CNW_TSER_RTRY 0x0f
# define CNW_TSER_TXERR 0x10
# define CNW_TSER_TXOK 0x20
# define CNW_TSER_TXNOAP 0x40
# define CNW_TSER_TXGU 0x80
# define CNW_TSER_ERROR (CNW_TSER_TXERR | CNW_TSER_TXNOAP | \
CNW_TSER_TXGU)
#define CNW_EREG_TSERW 0x134
#define CNW_EREG_TDP 0x140
#define CNW_EREG_LIF 0x14e
#define CNW_EREG_RDP 0x150
#define CNW_EREG_SPCQ 0x154
#define CNW_EREG_SPU 0x155
#define CNW_EREG_ISPLQ 0x156
#define CNW_EREG_HHC 0x158
#define CNW_EREG_PA 0x160
#define CNW_EREG_ARW 0x166
#define CNW_EREG_MHS 0x16b
#define CNW_EREG_NI 0x16e
#define CNW_EREG_CRBP 0x17a
#define CNW_EREG_EC 0x180
#define CNW_EREG_STAT_RXERR 0x184
#define CNW_EREG_STAT_FRAME 0x186
#define CNW_EREG_STAT_IBEAT 0x188
#define CNW_EREG_STAT_RXBUF 0x18e
#define CNW_EREG_STAT_RXMULTI 0x190
#define CNW_EREG_STAT_TXRETRY 0x192
#define CNW_EREG_STAT_TXABORT 0x194
#define CNW_EREG_STAT_OBEAT 0x198
#define CNW_EREG_STAT_TXOK 0x19a
#define CNW_EREG_STAT_TXSENT 0x19c
/*
* Commands used in the extended command buffer
* CNW_EREG_CB (0x100-0x10f)
*/
#define CNW_CMD_NOP 0x00
#define CNW_CMD_SRC 0x01
# define CNW_RXCONF_RXENA 0x80 /* Receive Enable */
# define CNW_RXCONF_MAC 0x20 /* MAC host receive mode */
# define CNW_RXCONF_PRO 0x10 /* Promiscuous */
# define CNW_RXCONF_AMP 0x08 /* Accept Multicast Packets */
# define CNW_RXCONF_BCAST 0x04 /* Accept Broadcast Packets */
#define CNW_CMD_STC 0x02
# define CNW_TXCONF_TXENA 0x80 /* Transmit Enable */
# define CNW_TXCONF_MAC 0x20 /* Host sends MAC mode */
# define CNW_TXCONF_EUD 0x10 /* Enable Uni-Data packets */
# define CNW_TXCONF_KEY 0x02 /* Scramble data packets */
# define CNW_TXCONF_LOOP 0x01 /* Loopback mode */
#define CNW_CMD_AMA 0x03
#define CNW_CMD_DMA 0x04
#define CNW_CMD_SAMA 0x05
#define CNW_CMD_ER 0x06
#define CNW_CMD_DR 0x07
#define CNW_CMD_TL 0x08
#define CNW_CMD_SRP 0x09
#define CNW_CMD_SSK 0x0a
#define CNW_CMD_SMD 0x0b
#define CNW_CMD_SAPD 0x0c
#define CNW_CMD_SSS 0x11
#define CNW_CMD_EOC 0x00 /* End-of-command marker */
|