dsynth - Make dummy /usr/packages directory for pkg compatibility
[dragonfly.git] / sys / dev / netif / sln / if_slnreg.h
blob94adb5ee4278924b8e66dfe09df9d158a983e395
1 /*
2 * Copyright (c) 2008 The DragonFly Project. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in
12 * the documentation and/or other materials provided with the
13 * distribution.
14 * 3. Neither the name of The DragonFly Project nor the names of its
15 * contributors may be used to endorse or promote products derived
16 * from this software without specific, prior written permission.
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22 * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
23 * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
24 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
26 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
28 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
31 * $DragonFly: src/sys/dev/netif/sln/if_slnreg.h,v 1.1 2008/02/28 18:39:20 swildner Exp $
34 #ifndef _IF_SLREG_H_
35 #define _IF_SLREG_H_
38 * Silan netcard register offsets
41 #define SL_CFG0 0x00 /* software reset */
42 #define SL_CFG1 0x04 /* select RX buffer size */
43 #define SL_RBW_PTR 0x08 /* RX buffer write pointer */
44 #define SL_INT_STATUS 0x0C /* interrupt status register */
45 #define SL_INT_MASK 0x10 /* interrupt mask register */
46 #define SL_RBSA 0x14 /* RX buffer start address */
47 #define SL_RBR_PTR 0x18 /* RX buffer read pointer */
48 #define SL_TSALD0 0x1C /* TX status of all descriptors */
49 #define SL_TSD0 0x20 /* TX status of descriptor 0 */
50 #define SL_TSD1 0x24 /* TX status of descriptor 1 */
51 #define SL_TSD2 0x28 /* TX status of descriptor 2 */
52 #define SL_TSD3 0x2C /* TX status of descriptor 3 */
53 #define SL_TSAD0 0x30 /* TX start address of descriptor 0 */
54 #define SL_TSAD1 0x34 /* TX start address of descriptor 1 */
55 #define SL_TSAD2 0x38 /* TX start address of descriptor 2 */
56 #define SL_TSAD3 0x3C /* TX start address of descriptor 3 */
57 #define SL_RX_CONFIG 0x40 /* RX configuration register */
58 #define SL_MAC_ADDR0 0x44 /* MAC address register 0 [47-16] */
59 #define SL_MAC_ADDR1 0x48 /* MAC address register 1 [15-0] */
60 #define SL_MULTI_GROUP0 0x4C /* multicast address config regiser 0 [63-32] */
61 #define SL_MULTI_GROUP1 0x50 /* multicast address config regiser 1 [31-0] */
62 #define SL_RX_STATUS0 0x54 /* RX status register 0 */
63 /* 0x58 reserved */
64 #define SL_TX_CONFIG 0x5C /* TX configuration register */
65 #define SL_PHY_CTRL 0x60 /* Physical control */
66 #define SL_FLOW_CTRL 0x64 /* flow control register */
67 #define SL_MII_CMD0 0x68 /* MII command register 0 */
68 #define SL_MII_CMD1 0x6C /* MII command register 1 */
69 #define SL_MII_STATUS 0x70 /* MII status register */
70 #define SL_TIMER_CNT 0x74 /* Timer counter register */
71 #define SL_TIMER_INTR 0x78 /* TImer interrupt register */
72 #define SL_PM_CFG 0x7C /* power managerment configuration register */
74 /* config register 0 */
75 #define SL_SOFT_RESET 0x80000000
76 #define SL_ANAOFF 0x40000000
77 #define SL_LDPS 0x20000000
79 /* config register 1 */
80 #define SL_EARLY_RX 0x80000000
81 #define SL_EARLY_TX 0x40000000
83 #define SL_RXFIFO_16BYTES 0x00000000
84 #define SL_RXFIFO_32BYTES 0x00200000
85 #define SL_RXFIFO_64BYTES 0x00400000
86 #define SL_RXFIFO_128BYTES 0x00600000
87 #define SL_RXFIFO_256BYTES 0x00800000
88 #define SL_RXFIFO_512BYTES 0x00A00000
89 #define SL_RXFIFO_1024BYTES 0x00C00000
90 #define SL_RXFIFO_NOTHRESH 0x00E00000
92 #define SL_RXBUF_8 0x00000000
93 #define SL_RXBUF_16 0x00000001
94 #define SL_RXBUF_32 0x00000003
95 #define SL_RXBUF_64 0x00000007
96 #define SL_RXBUF_128 0x0000000F
98 /* interrupt status register bits */
99 #define SL_INT_LINKFAIL 0x80000000
100 #define SL_INT_LINKOK 0x40000000
101 #define SL_INT_TIMEOUT 0x20000000
102 #define SL_INT_DMARD_ST 0x00080000
103 #define SL_INT_DMARD_FIN 0x00040000
104 #define SL_INT_STB_Pl 0x00020000
105 #define SL_INT_TXFIN_P 0x00010000
106 #define SL_INT_RXFIN_P 0x00008000
107 #define SL_INT_DMAWR_ST 0x00004000
108 #define SL_INT_DMAWR_FIN 0x00002000
109 #define SL_INT_RBO 0x00000040
110 #define SL_INT_ROK 0x00000020
111 #define SL_INT_TOK 0x00000001
113 #define SL_INRTS (SL_INT_LINKFAIL | SL_INT_LINKOK | SL_INT_TIMEOUT | SL_INT_RBO | SL_INT_ROK | SL_INT_TOK)
115 /* TX status of silan descriptors */
116 #define SL_TXSAD_TOK3 0x00008000
117 #define SL_TXSAD_TOK2 0x00004000
118 #define SL_TXSAD_TOK1 0x00002000
119 #define SL_TXSAD_TOK0 0x00001000
120 #define SL_TXSAD_TUN3 0x00000800
121 #define SL_TXSAD_TUN2 0x00000400
122 #define SL_TXSAD_TUN1 0x00000200
123 #define SL_TXSAD_TUN0 0x00000100
124 #define SL_TXSAD_TABT3 0x00000080
125 #define SL_TXSAD_TABT2 0x00000040
126 #define SL_TXSAD_TABT1 0x00000020
127 #define SL_TXSAD_TABT0 0x00000010
128 #define SL_TXSAD_OWN3 0x00000008
129 #define SL_TXSAD_OWN2 0x00000004
130 #define SL_TXSAD_OWN1 0x00000002
131 #define SL_TXSAD_OWN0 0x00000001
133 /* Transmit descriptor status register bits */
134 #define SL_TXSD_CRS 0x20000000
135 #define SL_TXSD_TABT 0x10000000
136 #define SL_TXSD_OWC 0x08000000
137 #define SL_TXSD_NCC 0x03C00000
138 #define SL_TXSD_EARLY_THRESH 0x003F0000
139 #define SL_TXSD_TOK 0x00008000
140 #define SL_TXSD_TUN 0x00004000
141 #define SL_TXSD_OWN 0x00002000
142 #define SL_TXSD_LENMASK 0x00001FFF
144 /* bits in TX configuration register */
145 #define SL_TXCFG_FULLDX 0x80000000
146 #define SL_TXCFG_EN 0x40000000
147 #define SL_TXCFG_PAD 0x20000000
148 #define SL_TXCFG_HUGE 0x10000000
149 #define SL_TXCFG_FCS 0x08000000
150 #define SL_TXCFG_NOBACKOFF 0x04000000
151 #define SL_TXCFG_PREMBLE 0x02000000
152 #define SL_TXCFG_LOSTCRS 0x01000000
153 #define SL_TXCFG_EXDCOLLNUM 0x00F00000
154 #define SL_TXCFG_DATARATE 0x00080000
156 /* bits in RX configuration register */
157 #define SL_RXCFG_FULLDX 0x80000000
158 #define SL_RXCFG_EN 0x40000000
159 #define SL_RXCFG_RCV_SMALL 0x20000000
160 #define SL_RXCFG_RCV_HUGE 0x10000000
161 #define SL_RXCFG_RCV_ERR 0x08000000
162 #define SL_RXCFG_RCV_ALL 0x04000000
163 #define SL_RXCFG_RCV_MULTI 0x02000000
164 #define SL_RXCFG_RCV_BROAD 0x01000000
165 #define SL_RXCFG_LP_BCK 0x00C00000
166 #define SL_RXCFG_LOW_THRESHOLD 0x00040000
167 #define SL_RXCFG_HIGH_THRESHOLD 0x00000700
169 /* Bits in RX status header (in RX'ed packet) */
170 #define SL_RXSTAT_LENMASK 0xFFF00000
171 #define SL_RXSTAT_RXOK 0x00080000
172 #define SL_RXSTAT_ALIGNERR 0x00040000
173 #define SL_RXSTAT_HUGEFRM 0x00020000
174 #define SL_RXSTAT_SMALLFRM 0x00010000
175 #define SL_RXSTAT_CRCOK 0x00008000
176 #define SL_RXSTAT_CRLFRM 0x00004000
177 #define SL_RXSTAT_BROAD 0x00002000
178 #define SL_RXSTAT_MULTI 0x00001000
179 #define SL_RXSTAT_MATCH 0x00000800
180 #define SL_RXSTAT_MIIERR 0x00000400
182 /* Physical Control configuration register */
183 #define SL_PHYCTL_ANE 0x80000000
184 #define SL_PHYCTL_SPD100 0x40000000
185 #define SL_PHYCTL_SPD10 0x20000000
186 #define SL_PHYCTL_BASEADD 0x1F000000
187 #define SL_PHYCTL_DUX 0x00800000
188 #define SL_PHYCTL_RESET 0x00400000
190 /* Flow Control configuration register */
191 #define SL_FLOWCTL_FULLDX 0x80000000
192 #define SL_FLOWCTL_EN 0x40000000
193 #define SL_FLOWCTL_PASSALL 0x20000000
194 #define SL_FLOWCTL_ENPAUSE 0x10000000
195 #define SL_FLOWCTL_PAUSEF 0x08000000
196 #define SL_FLOWCTL_PAUSE0 0x04000000
198 /* MII command register 0 */
199 #define SL_MII0_DIVEDER 0x20000000
200 #define SL_MII0_NOPRE 0x00800000
201 #define SL_MII0_WRITE 0x00400000
202 #define SL_MII0_READ 0x00200000
203 #define SL_MII0_SCAN 0x00100000
204 #define SL_MII0_TXMODE 0x00080000
205 #define SL_MII0_DRVMOD 0x00040000
206 #define SL_MII0_MDC 0x00020000
207 #define SL_MII0_MDOEN 0x00010000
208 #define SL_MII0_MDO 0x00008000
209 #define SL_MII0_MDI 0x00004000
211 /* MII status register */
212 #define SL_MIISTAT_BUSY 0x80000000
214 /* register in 80225 */
215 #define SL_MII_CTRL 0
216 #define SL_MII_STAT 1
217 #define SL_MII_ADV 4
218 #define SL_MII_JAB 16
219 #define SL_MII_STAT_OUTPUT 24
221 /* bit value for 80225 */
222 #define SL_MIICTRL_ANEGEN 0x1000
223 #define SL_MIICTRL_SPEEDSEL 0x2000
224 #define SL_MIICTRL_DUPSEL 0x0100
225 #define SL_MIICTRL_ANEGRSTR 0x0200
226 #define SL_MIISTAT_LINK 0x0004
227 #define SL_MIISTAT_ANEGACK 0x0020
228 #define SL_PHY_16_JAB_ENB 0x1000
229 #define SL_PHY_16_PORT_ENB 0x1
232 * PCI low memory base and low I/O base register, and other PCI registers.
234 #define SL_PCI_VENDORID 0x00
235 #define SL_PCI_DEVICEID 0x02
236 #define SL_PCI_COMMAND 0x04
237 #define SL_PCI_STATUS 0x06
238 #define SL_PCI_REVISIONID 0x08
239 #define SL_PCI_MEMAD 0x10
240 #define SL_PCI_IOAD 0x14
241 #define SL_PCI_SUBVENDORID 0x2C
242 #define SL_PCI_SUBDEVICEID 0x2E
243 #define RL_PCI_INTLINE 0x3C
245 #define SL_CMD_IO 0x0001
246 #define SL_CMD_MEMORY 0x0002
247 #define SL_CMD_BUSMASTER 0x0004
249 #define SL_TXD_CNT 4
250 #define SL_RX_BUF_SZ SL_RXBUF_64
251 #define SL_RX_BUFLEN (1 << (SL_RX_BUF_SZ + 9))
252 #define TX_CFG_DEFAULT 0x48800000
254 /* register space access macros */
255 #define SLN_WRITE_4(adapter, reg, val) bus_space_write_4(adapter->sln_bustag, adapter->sln_bushandle, reg, val)
256 #define SLN_WRITE_2(adapter, reg, val) bus_space_write_2(adapter->sln_bustag, adapter->sln_bushandle, reg, val)
257 #define SLN_WRITE_1(adapter, reg, val) bus_space_write_1(adapter->sln_bustag, adapter->sln_bushandle, reg, val)
259 #define SLN_READ_4(adapter, reg) bus_space_read_4(adapter->sln_bustag, adapter->sln_bushandle, reg)
260 #define SLN_READ_2(adapter, reg) bus_space_read_2(adapter->sln_bustag, adapter->sln_bushandle, reg)
261 #define SLN_READ_1(adapter, reg) bus_space_read_1(adapter->sln_bustag, adapter->sln_bushandle, reg)
263 #define SL_DIRTY_TXBUF(x) x->sln_bufdata.sln_tx_buf[x->sln_bufdata.dirty_tx]
264 #define SL_CUR_TXBUF(x) x->sln_bufdata.sln_tx_buf[x->sln_bufdata.cur_tx]
266 #endif /* !_IF_SLREG_H_ */