1 /*-
2 * Copyright (c) 2015-2016 Kevin Lo <kevlo@FreeBSD.org>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
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 the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 * $FreeBSD$
27 */
28
29 #ifndef _IF_UREREG_H_
30 #define _IF_UREREG_H_
31
32 #define URE_CONFIG_IDX 0 /* config number 1 */
33 #define URE_IFACE_IDX 0
34
35 #define URE_CTL_READ 0x01
36 #define URE_CTL_WRITE 0x02
37
38 #define URE_TIMEOUT 1000
39 #define URE_PHY_TIMEOUT 2000
40
41 #define URE_BYTE_EN_DWORD 0xff
42 #define URE_BYTE_EN_WORD 0x33
43 #define URE_BYTE_EN_BYTE 0x11
44 #define URE_BYTE_EN_SIX_BYTES 0x3f
45
46 #define URE_FRAMELEN(mtu) ((mtu) + ETHER_HDR_LEN + ETHER_CRC_LEN + ETHER_VLAN_ENCAP_LEN)
47 #define URE_MAX_FRAMELEN (ETHER_MAX_LEN + ETHER_VLAN_ENCAP_LEN)
48 #define URE_JUMBO_FRAMELEN (9*1024)
49 #define URE_JUMBO_MTU (URE_JUMBO_FRAMELEN - ETHER_HDR_LEN - ETHER_CRC_LEN - ETHER_VLAN_ENCAP_LEN)
50
51 #define URE_PLA_IDR 0xc000
52 #define URE_PLA_RCR 0xc010
53 #define URE_PLA_RMS 0xc016
54 #define URE_PLA_RXFIFO_CTRL0 0xc0a0
55 #define URE_PLA_RXFIFO_CTRL1 0xc0a4
56 #define URE_PLA_RXFIFO_CTRL2 0xc0a8
57 #define URE_PLA_DMY_REG0 0xc0b0
58 #define URE_PLA_FMC 0xc0b4
59 #define URE_PLA_CFG_WOL 0xc0b6
60 #define URE_PLA_TEREDO_CFG 0xc0bc
61 #define URE_PLA_MAR0 0xcd00
62 #define URE_PLA_MAR4 0xcd04
63 #define URE_PLA_BACKUP 0xd000
64 #define URE_PAL_BDC_CR 0xd1a0
65 #define URE_PLA_TEREDO_TIMER 0xd2cc
66 #define URE_PLA_REALWOW_TIMER 0xd2e8
67 #define URE_PLA_SUSPEND_FLAG 0xd38a
68 #define URE_PLA_INDICATE_FALG 0xd38c
69 #define URE_PLA_EXTRA_STATUS 0xd398
70 #define URE_PLA_LEDSEL 0xdd90
71 #define URE_PLA_LED_FEATURE 0xdd92
72 #define URE_PLA_PHYAR 0xde00
73 #define URE_PLA_BOOT_CTRL 0xe004
74 #define URE_PLA_GPHY_INTR_IMR 0xe022
75 #define URE_PLA_EEE_CR 0xe040
76 #define URE_PLA_EEEP_CR 0xe080
77 #define URE_PLA_MAC_PWR_CTRL 0xe0c0
78 #define URE_PLA_MAC_PWR_CTRL2 0xe0ca
79 #define URE_PLA_MAC_PWR_CTRL3 0xe0cc
80 #define URE_PLA_MAC_PWR_CTRL4 0xe0ce
81 #define URE_PLA_WDT6_CTRL 0xe428
82 #define URE_PLA_TCR0 0xe610
83 #define URE_PLA_TCR1 0xe612
84 #define URE_PLA_MTPS 0xe615
85 #define URE_PLA_TXFIFO_CTRL 0xe618
86 #define URE_PLA_RSTTALLY 0xe800
87 #define URE_PLA_CR 0xe813
88 #define URE_PLA_CRWECR 0xe81c
89 #define URE_PLA_CONFIG34 0xe820
90 #define URE_PLA_CONFIG5 0xe822
91 #define URE_PLA_PHY_PWR 0xe84c
92 #define URE_PLA_OOB_CTRL 0xe84f
93 #define URE_PLA_CPCR 0xe854
94 #define URE_PLA_MISC_0 0xe858
95 #define URE_PLA_MISC_1 0xe85a
96 #define URE_PLA_OCP_GPHY_BASE 0xe86c
97 #define URE_PLA_TELLYCNT 0xe890
98 #define URE_PLA_SFF_STS_7 0xe8de
99 #define URE_PLA_PHYSTATUS 0xe908
100 #define URE_GMEDIASTAT 0xe908
101 #define URE_PLA_BP_BA 0xfc26
102 #define URE_PLA_BP_0 0xfc28
103 #define URE_PLA_BP_1 0xfc2a
104 #define URE_PLA_BP_2 0xfc2c
105 #define URE_PLA_BP_3 0xfc2e
106 #define URE_PLA_BP_4 0xfc30
107 #define URE_PLA_BP_5 0xfc32
108 #define URE_PLA_BP_6 0xfc34
109 #define URE_PLA_BP_7 0xfc36
110 #define URE_PLA_BP_EN 0xfc38
111
112 #define URE_USB_USB2PHY 0xb41e
113 #define URE_USB_SSPHYLINK2 0xb428
114 #define URE_USB_U2P3_CTRL 0xb460
115 #define URE_USB_CSR_DUMMY1 0xb464
116 #define URE_USB_CSR_DUMMY2 0xb466
117 #define URE_USB_DEV_STAT 0xb808
118 #define URE_USB_CONNECT_TIMER 0xcbf8
119 #define URE_USB_MSC_TIMER 0xcbfc
120 #define URE_USB_BURST_SIZE 0xcfc0
121 #define URE_USB_LPM_CONFIG 0xcfd8
122 #define URE_USB_FW_CTRL 0xd334 /* RTL8153B */
123 #define URE_USB_USB_CTRL 0xd406
124 #define URE_USB_PHY_CTRL 0xd408
125 #define URE_USB_TX_AGG 0xd40a
126 #define URE_USB_RX_BUF_TH 0xd40c
127 #define URE_USB_FW_TASK 0xd4e8 /* RTL8153B */
128 #define URE_USB_USB_TIMER 0xd428
129 #define URE_USB_RX_EARLY_AGG 0xd42c
130 #define URE_USB_RX_EARLY_SIZE 0xd42e
131 #define URE_USB_PM_CTRL_STATUS 0xd432 /* RTL8153A */
132 #define URE_USB_RX_EXTRA_AGG_TMR 0xd432 /* RTL8153B */
133 #define URE_USB_TX_DMA 0xd434
134 #define URE_USB_UPT_RXDMA_OWN 0xd437
135 #define URE_USB_FC_TIMER 0xd340
136 #define URE_USB_TOLERANCE 0xd490
137 #define URE_USB_LPM_CTRL 0xd41a
138 #define URE_USB_BMU_RESET 0xd4b0
139 #define URE_USB_U1U2_TIMER 0xd4da
140 #define URE_USB_UPS_CTRL 0xd800
141 #define URE_USB_POWER_CUT 0xd80a
142 #define URE_USB_MISC_0 0xd81a
143 #define URE_USB_AFE_CTRL2 0xd824
144 #define URE_USB_WDT11_CTRL 0xe43c
145 #define URE_USB_BP_BA URE_PLA_BP_BA
146 #define URE_USB_BP_0 URE_PLA_BP_0
147 #define URE_USB_BP_1 URE_PLA_BP_1
148 #define URE_USB_BP_2 URE_PLA_BP_2
149 #define URE_USB_BP_3 URE_PLA_BP_3
150 #define URE_USB_BP_4 URE_PLA_BP_4
151 #define URE_USB_BP_5 URE_PLA_BP_5
152 #define URE_USB_BP_6 URE_PLA_BP_6
153 #define URE_USB_BP_7 URE_PLA_BP_7
154 #define URE_USB_BP_EN URE_PLA_BP_EN /* RTL8153A */
155 #define URE_USB_BP_8 0xfc38 /* RTL8153B */
156 #define URE_USB_BP_9 0xfc3a
157 #define URE_USB_BP_10 0xfc3c
158 #define URE_USB_BP_11 0xfc3e
159 #define URE_USB_BP_12 0xfc40
160 #define URE_USB_BP_13 0xfc42
161 #define URE_USB_BP_14 0xfc44
162 #define URE_USB_BP_15 0xfc46
163 #define URE_USB_BP2_EN 0xfc48
164
165
166 /* OCP Registers. */
167 #define URE_OCP_ALDPS_CONFIG 0x2010
168 #define URE_OCP_EEE_CONFIG1 0x2080
169 #define URE_OCP_EEE_CONFIG2 0x2092
170 #define URE_OCP_EEE_CONFIG3 0x2094
171 #define URE_OCP_BASE_MII 0xa400
172 #define URE_OCP_EEE_AR 0xa41a
173 #define URE_OCP_EEE_DATA 0xa41c
174 #define URE_OCP_PHY_STATUS 0xa420
175 #define URE_OCP_POWER_CFG 0xa430
176 #define URE_OCP_EEE_CFG 0xa432
177 #define URE_OCP_SRAM_ADDR 0xa436
178 #define URE_OCP_SRAM_DATA 0xa438
179 #define URE_OCP_DOWN_SPEED 0xa442
180 #define URE_OCP_EEE_ABLE 0xa5c4
181 #define URE_OCP_EEE_ADV 0xa5d0
182 #define URE_OCP_EEE_LPABLE 0xa5d2
183 #define URE_OCP_PHY_STATE 0xa708
184 #define URE_OCP_PHY_PATCH_STAT 0xb800
185 #define URE_OCP_PHY_PATCH_CMD 0xb820
186 #define URE_OCP_PHY_LOCK 0xb82e
187 #define URE_OCP_ADC_CFG 0xbc06
188
189 /* SRAM Register. */
190 #define URE_SRAM_GREEN_CFG 0x8011
191 #define URE_SRAM_LPF_CFG 0x8012
192 #define URE_SRAM_GPHY_FW_VER 0x801e
193 #define URE_SRAM_10M_AMP1 0x8080
194 #define URE_SRAM_10M_AMP2 0x8082
195 #define URE_SRAM_IMPEDANCE 0x8084
196 #define URE_SRAM_PHY_LOCK 0xb82e
197
198 /* PLA_RCR */
199 #define URE_RCR_AAP 0x00000001
200 #define URE_RCR_APM 0x00000002
201 #define URE_RCR_AM 0x00000004
202 #define URE_RCR_AB 0x00000008
203 #define URE_RCR_AR 0x00000010 /* runt */
204 #define URE_RCR_AER 0x00000020 /* error pkts */
205 #define URE_RCR_ACPTFLOW 0x00000080
206 #define URE_RCR_RXEMPTY 0x00020000
207 #define URE_RCR_ACPT_ALL \
208 (URE_RCR_AAP | URE_RCR_APM | URE_RCR_AM | URE_RCR_AB)
209
210 /* PLA_RXFIFO_CTRL0 */
211 #define URE_RXFIFO_THR1_NORMAL 0x00080002
212 #define URE_RXFIFO_THR1_OOB 0x01800003
213
214 /* PLA_RXFIFO_CTRL1 */
215 #define URE_RXFIFO_THR2_FULL 0x00000060
216 #define URE_RXFIFO_THR2_HIGH 0x00000038
217 #define URE_RXFIFO_THR2_OOB 0x0000004a
218 #define URE_RXFIFO_THR2_NORMAL 0x00a0
219
220 /* PLA_RXFIFO_CTRL2 */
221 #define URE_RXFIFO_THR3_FULL 0x00000078
222 #define URE_RXFIFO_THR3_HIGH 0x00000048
223 #define URE_RXFIFO_THR3_OOB 0x0000005a
224 #define URE_RXFIFO_THR3_NORMAL 0x0110
225
226 /* PLA_TXFIFO_CTRL */
227 #define URE_TXFIFO_THR_NORMAL 0x00400008
228 #define URE_TXFIFO_THR_NORMAL2 0x01000008
229
230 /* PLA_DMY_REG0 */
231 #define URE_ECM_ALDPS 0x0002
232
233 /* PLA_FMC */
234 #define URE_FMC_FCR_MCU_EN 0x0001
235
236 /* PLA_EEEP_CR */
237 #define URE_EEEP_CR_EEEP_TX 0x0002
238
239 /* PLA_WDT6_CTRL */
240 #define URE_WDT6_SET_MODE 0x0010
241
242 /* PLA_TCR0 */
243 #define URE_TCR0_TX_EMPTY 0x0800
244 #define URE_TCR0_AUTO_FIFO 0x0080
245
246 /* PLA_TCR1 */
247 #define URE_VERSION_MASK 0x7cf0
248
249 /* PLA_MTPS */
250 #define URE_MTPS_DEFAULT 96
251 #define URE_MTPS_JUMBO 192
252
253 /* PLA_RSTTALLY */
254 #define URE_TALLY_RESET 0x0001
255
256 /* PLA_CR */
257 #define URE_CR_RST 0x10
258 #define URE_CR_RE 0x08
259 #define URE_CR_TE 0x04
260
261 /* PLA_CRWECR */
262 #define URE_CRWECR_NORAML 0x00
263 #define URE_CRWECR_CONFIG 0xc0
264
265 /* PLA_OOB_CTRL */
266 #define URE_NOW_IS_OOB 0x80
267 #define URE_TXFIFO_EMPTY 0x20
268 #define URE_RXFIFO_EMPTY 0x10
269 #define URE_LINK_LIST_READY 0x02
270 #define URE_DIS_MCU_CLROOB 0x01
271 #define URE_FIFO_EMPTY (URE_TXFIFO_EMPTY | URE_RXFIFO_EMPTY)
272
273 /* PLA_MISC_1 */
274 #define URE_RXDY_GATED_EN 0x0008
275
276 /* PLA_SFF_STS_7 */
277 #define URE_RE_INIT_LL 0x8000
278 #define URE_MCU_BORW_EN 0x4000
279
280 /* PLA_CPCR */
281 #define URE_CPCR_RX_VLAN 0x0040
282
283 /* PLA_TEREDO_CFG */
284 #define URE_TEREDO_SEL 0x8000
285 #define URE_TEREDO_WAKE_MASK 0x7f00
286 #define URE_TEREDO_RS_EVENT_MASK 0x00fe
287 #define URE_OOB_TEREDO_EN 0x0001
288
289 /* PAL_BDC_CR */
290 #define URE_ALDPS_PROXY_MODE 0x0001
291
292 /* URE_PLA_CONFIG34 */
293 #define URE_LINK_OFF_WAKE_EN 0x0008
294 #define URE_LINK_ON_WAKE_EN 0x0010
295
296 /* PLA_CONFIG5 */
297 #define URE_LAN_WAKE_EN 0x0002
298
299 /* PLA_LED_FEATURE */
300 #define URE_LED_MODE_MASK 0x0700
301
302 /* PLA_PHY_PWR */
303 #define URE_TX_10M_IDLE_EN 0x0080
304 #define URE_PFM_PWM_SWITCH 0x0040
305
306 /* PLA_MAC_PWR_CTRL */
307 #define URE_D3_CLK_GATED_EN 0x00004000
308 #define URE_MCU_CLK_RATIO 0x07010f07
309 #define URE_MCU_CLK_RATIO_MASK 0x0f0f0f0f
310 #define URE_ALDPS_SPDWN_RATIO 0x0f87
311
312 /* PLA_MAC_PWR_CTRL2 */
313 #define URE_MAC_CLK_SPDWN_EN 0x8000
314 #define URE_EEE_SPDWN_RATIO 0x8007
315
316 /* PLA_MAC_PWR_CTRL3 */
317 #define URE_PLA_MCU_SPDWN_EN 0x4000
318 #define URE_PKT_AVAIL_SPDWN_EN 0x0100
319 #define URE_SUSPEND_SPDWN_EN 0x0004
320 #define URE_U1U2_SPDWN_EN 0x0002
321 #define URE_L1_SPDWN_EN 0x0001
322
323 /* PLA_MAC_PWR_CTRL4 */
324 #define URE_PWRSAVE_SPDWN_EN 0x1000
325 #define URE_RXDV_SPDWN_EN 0x0800
326 #define URE_TX10MIDLE_EN 0x0100
327 #define URE_TP100_SPDWN_EN 0x0020
328 #define URE_TP500_SPDWN_EN 0x0010
329 #define URE_TP1000_SPDWN_EN 0x0008
330 #define URE_EEE_SPDWN_EN 0x0001
331
332 /* PLA_GPHY_INTR_IMR */
333 #define URE_GPHY_STS_MSK 0x0001
334 #define URE_SPEED_DOWN_MSK 0x0002
335 #define URE_SPDWN_RXDV_MSK 0x0004
336 #define URE_SPDWN_LINKCHG_MSK 0x0008
337
338 /* PLA_PHYAR */
339 #define URE_PHYAR_PHYDATA 0x0000ffff
340 #define URE_PHYAR_BUSY 0x80000000
341
342 /* PLA_EEE_CR */
343 #define URE_EEE_RX_EN 0x0001
344 #define URE_EEE_TX_EN 0x0002
345
346 /* PLA_BOOT_CTRL */
347 #define URE_AUTOLOAD_DONE 0x0002
348
349 /* PLA_SUSPEND_FLAG */
350 #define URE_LINK_CHG_EVENT 0x01
351
352 /* PLA_INDICATE_FALG */
353 #define URE_UPCOMING_RUNTIME_D3 0x01
354
355 /* PLA_EXTRA_STATUS */
356 #define URE_POLL_LINK_CHG 0x0001
357 #define URE_LINK_CHANGE_FLAG 0x0100
358 #define URE_CUR_LINK_OK 0x8000
359
360 /* URE_PLA_PHYSTATUS */
361 #define URE_PHYSTATUS_FDX 0x0001
362 #define URE_PHYSTATUS_LINK 0x0002
363 #define URE_PHYSTATUS_10MBPS 0x0004
364 #define URE_PHYSTATUS_100MBPS 0x0008
365 #define URE_PHYSTATUS_1000MBPS 0x0010
366 #define URE_PHYSTATUS_500MBPS 0x0100
367 #define URE_PHYSTATUS_1250MBPS 0x0200
368 #define URE_PHYSTATUS_2500MBPS 0x0400
369
370 /* USB_USB2PHY */
371 #define URE_USB2PHY_SUSPEND 0x0001
372 #define URE_USB2PHY_L1 0x0002
373
374 /* USB_SSPHYLINK2 */
375 #define URE_PWD_DN_SCALE_MASK 0x3ffe
376 #define URE_PWD_DN_SCALE(x) ((x) << 1)
377
378 /* USB_CSR_DUMMY1 */
379 #define URE_DYNAMIC_BURST 0x0001
380
381 /* USB_CSR_DUMMY2 */
382 #define URE_EP4_FULL_FC 0x0001
383
384 /* USB_DEV_STAT */
385 #define URE_STAT_SPEED_MASK 0x0006
386 #define URE_STAT_SPEED_HIGH 0x0000
387 #define URE_STAT_SPEED_FULL 0x0001
388
389 /* URE_USB_LPM_CONFIG */
390 #define URE_LPM_U1U2_EN 0x0001
391
392 /* USB_TX_AGG */
393 #define URE_TX_AGG_MAX_THRESHOLD 0x03
394
395 /* USB_RX_BUF_TH */
396 #define URE_RX_THR_SUPER 0x0c350180
397 #define URE_RX_THR_HIGH 0x7a120180
398 #define URE_RX_THR_SLOW 0xffff0180
399 #define URE_RX_THR_B 0x00010001
400
401 /* USB_TX_DMA */
402 #define URE_TEST_MODE_DISABLE 0x00000001
403 #define URE_TX_SIZE_ADJUST1 0x00000100
404
405 /* USB_BMU_RESET */
406 #define URE_BMU_RESET_EP_IN 0x01
407 #define URE_BMU_RESET_EP_OUT 0x02
408
409 /* USB_UPT_RXDMA_OWN */
410 #define URE_OWN_UPDATE 0x01
411 #define URE_OWN_CLEAR 0x02
412
413 /* USB_FW_TASK */
414 #define URE_FC_PATCH_TASK 0x0001
415
416 /* USB_UPS_CTRL */
417 #define URE_POWER_CUT 0x0100
418
419 /* USB_PM_CTRL_STATUS */
420 #define URE_RESUME_INDICATE 0x0001
421
422 /* USB_FW_CTRL */
423 #define URE_FLOW_CTRL_PATCH_OPT 0x01
424
425 /* USB_FC_TIMER */
426 #define URE_CTRL_TIMER_EN 0x8000
427
428 /* USB_USB_CTRL */
429 #define URE_RX_AGG_DISABLE 0x0010
430 #define URE_RX_ZERO_EN 0x0080
431
432 /* USB_U2P3_CTRL */
433 #define URE_U2P3_ENABLE 0x0001
434
435 /* USB_POWER_CUT */
436 #define URE_PWR_EN 0x0001
437 #define URE_PHASE2_EN 0x0008
438 #define URE_UPS_EN 0x0010
439 #define URE_USP_PREWAKE 0x0020
440
441 /* USB_MISC_0 */
442 #define URE_PCUT_STATUS 0x0001
443
444 /* USB_RX_EARLY_TIMEOUT */
445 #define URE_COALESCE_SUPER 85000U
446 #define URE_COALESCE_HIGH 250000U
447 #define URE_COALESCE_SLOW 524280U
448
449 /* USB_WDT11_CTRL */
450 #define URE_TIMER11_EN 0x0001
451
452 /* USB_LPM_CTRL */
453 #define URE_FIFO_EMPTY_1FB 0x30
454 #define URE_LPM_TIMER_MASK 0x0c
455 #define URE_LPM_TIMER_500MS 0x04
456 #define URE_LPM_TIMER_500US 0x0c
457 #define URE_ROK_EXIT_LPM 0x02
458
459 /* USB_AFE_CTRL2 */
460 #define URE_SEN_VAL_MASK 0xf800
461 #define URE_SEN_VAL_NORMAL 0xa000
462 #define URE_SEL_RXIDLE 0x0100
463
464 /* OCP_ALDPS_CONFIG */
465 #define URE_ENPWRSAVE 0x8000
466 #define URE_ENPDNPS 0x0200
467 #define URE_LINKENA 0x0100
468 #define URE_DIS_SDSAVE 0x0010
469
470 /* OCP_PHY_STATUS */
471 #define URE_PHY_STAT_MASK 0x0007
472 #define URE_PHY_STAT_EXT_INIT 2
473 #define URE_PHY_STAT_LAN_ON 3
474 #define URE_PHY_STAT_PWRDN 5
475
476 /* OCP_POWER_CFG */
477 #define URE_EEE_CLKDIV_EN 0x8000
478 #define URE_EN_ALDPS 0x0004
479 #define URE_EN_10M_PLLOFF 0x0001
480
481 /* OCP_EEE_CFG */
482 #define URE_CTAP_SHORT_EN 0x0040
483 #define URE_EEE10_EN 0x0010
484
485 /* OCP_DOWN_SPEED */
486 #define URE_EN_10M_BGOFF 0x0080
487 #define URE_EN_10M_CLKDIV 0x0800
488 #define URE_EN_EEE_100 0x1000
489 #define URE_EN_EEE_1000 0x2000
490 #define URE_EN_EEE_CMODE 0x4000
491
492 /* OCP_PHY_STATE */
493 #define URE_TXDIS_STATE 0x01
494 #define URE_ABD_STATE 0x02
495
496 /* OCP_PHY_PATCH_STAT */
497 #define URE_PATCH_READY 0x40
498
499 /* OCP_PHY_PATCH_CMD */
500 #define URE_PATCH_REQUEST 0x10
501
502 /* OCP_PHY_LOCK */
503 #define URE_PATCH_LOCK 0x01
504
505 /* OCP_ADC_CFG */
506 #define URE_CKADSEL_L 0x0100
507 #define URE_ADC_EN 0x0080
508 #define URE_EN_EMI_L 0x0040
509
510 /* SRAM_GREEN_CFG */
511 #define URE_GREEN_ETH_EN 0x8000
512
513 /* SRAM_PHY_LOCK */
514 #define URE_PHY_PATCH_LOCK 0x0001
515
516 #define URE_ADV_2500TFDX 0x0080
517
518 #define URE_MCU_TYPE_PLA 0x0100
519 #define URE_MCU_TYPE_USB 0x0000
520
521 #define GET_MII(sc) uether_getmii(&(sc)->sc_ue)
522
523 struct ure_intrpkt {
524 uint8_t ure_tsr;
525 uint8_t ure_rsr;
526 uint8_t ure_gep_msr;
527 uint8_t ure_waksr;
528 uint8_t ure_txok_cnt;
529 uint8_t ure_rxlost_cnt;
530 uint8_t ure_crcerr_cnt;
531 uint8_t ure_col_cnt;
532 } __packed;
533
534 #define URE_RXPKT_ALIGN 8
535 struct ure_rxpkt {
536 uint32_t ure_pktlen;
537 #define URE_RXPKT_LEN_MASK 0x7fff
538 uint32_t ure_csum;
539 /* Linux driver has this in ure_misc, but my device has it in ure_csum */
540 #define URE_RXPKT_VLAN_MASK 0xffff
541 #define URE_RXPKT_RX_VLAN_TAG (1 << 16)
542 #define URE_RXPKT_IPV4_CS (1 << 19)
543 #define URE_RXPKT_IPV6_CS (1 << 20)
544 #define URE_RXPKT_TCP_CS (1 << 22)
545 #define URE_RXPKT_UDP_CS (1 << 23)
546 uint32_t ure_misc;
547 #define URE_RXPKT_TCP_F (1 << 21)
548 #define URE_RXPKT_UDP_F (1 << 22)
549 #define URE_RXPKT_IP_F (1 << 23)
550 uint32_t ure_rsvd2;
551 uint32_t ure_rsvd3;
552 uint32_t ure_rsvd4;
553 } __packed;
554
555 #define URE_TXPKT_ALIGN 4
556 struct ure_txpkt {
557 uint32_t ure_pktlen;
558 #define URE_TKPKT_TX_FS (1 << 31)
559 #define URE_TKPKT_TX_LS (1 << 30)
560 #define URE_TXPKT_LEN_MASK 0xffff
561 uint32_t ure_csum;
562 #define URE_L4_OFFSET_MAX 0x7ff
563 #define URE_L4_OFFSET_SHIFT 17
564 #define URE_TXPKT_VLAN_MASK 0xffff
565 #define URE_TXPKT_VLAN (1 << 16)
566 #define URE_TXPKT_IPV6_CS (1 << 28)
567 #define URE_TXPKT_IPV4_CS (1 << 29)
568 #define URE_TXPKT_TCP_CS (1 << 30)
569 #define URE_TXPKT_UDP_CS (1 << 31)
570 /* Lower 12 bits are the VLAN tag */
571 } __packed;
572
573 #define URE_MAX_TX 4
574 #define URE_MAX_RX 4
575
576 #define URE_TX_BUFSZ 16384
577 #define URE_8152_RX_BUFSZ (16 * 1024)
578 #define URE_8153_RX_BUFSZ (32 * 1024)
579 #define URE_8156_RX_BUFSZ (48 * 1024)
580
581
582 struct ure_softc {
583 struct usb_ether sc_ue;
584 struct ifmedia sc_ifmedia;
585 struct mtx sc_mtx;
586 struct usb_xfer *sc_rx_xfer[URE_MAX_RX];
587 struct usb_xfer *sc_tx_xfer[URE_MAX_TX];
588
589 int sc_rxbufsz;
590 int sc_rxstarted;
591
592 int sc_phyno;
593
594 u_int sc_flags;
595 #define URE_FLAG_LINK 0x0001
596 #define URE_FLAG_8152 0x0100 /* RTL8152 */
597 #define URE_FLAG_8153 0x0200 /* RTL8153 */
598 #define URE_FLAG_8153B 0x0400 /* RTL8153B */
599 #define URE_FLAG_8156 0x0800 /* RTL8156 */
600 #define URE_FLAG_8156B 0x1000 /* RTL8156B */
601
602 u_int sc_chip;
603 u_int sc_ver;
604 #define URE_CHIP_VER_4C00 0x0001
605 #define URE_CHIP_VER_4C10 0x0002
606 #define URE_CHIP_VER_5C00 0x0004
607 #define URE_CHIP_VER_5C10 0x0008
608 #define URE_CHIP_VER_5C20 0x0010
609 #define URE_CHIP_VER_5C30 0x0020
610 #define URE_CHIP_VER_6000 0x0040
611 #define URE_CHIP_VER_6010 0x0080
612 #define URE_CHIP_VER_7020 0x0100
613 #define URE_CHIP_VER_7030 0x0200
614 #define URE_CHIP_VER_7400 0x0400
615 #define URE_CHIP_VER_7410 0x0800
616 };
617
618 #define URE_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx)
619 #define URE_UNLOCK(_sc) mtx_unlock(&(_sc)->sc_mtx)
620 #define URE_LOCK_ASSERT(_sc, t) mtx_assert(&(_sc)->sc_mtx, t)
621
622 #endif /* _IF_UREREG_H_ */
Cache object: c52629e5ba54264df4f292b12d70e874
|