RT-AC56 3.0.0.4.374.37 core
[tomato.git] / release / src-rt-6.x.4708 / cfe / cfe / arch / mips / board / bcm9635x / include / ethersw.h
blob9a58675a1db49bc087ec6f37a00d4903b0d77133
1 /*
2 <:copyright-broadcom
4 Copyright (c) 2002 Broadcom Corporation
5 All Rights Reserved
6 No portions of this material may be reproduced in any form without the
7 written permission of:
8 Broadcom Corporation
9 16215 Alton Parkway
10 Irvine, California 92619
11 All information contained in this document is Broadcom Corporation
12 company private, proprietary, and trade secret.
17 ** ethersw.h Register offsets, bit definitions and structures
18 ** for programming the 3-ports ethernet swith
21 ** Revision 1.0 2001/05/29 GT
22 ** add register definition for MII
24 ** $Id: ethersw.h 241205 2011-02-17 21:57:41Z $
28 #ifndef BCMTYPES_H
29 #include <bcmtypes.h> //seanl.
30 #endif
32 //*******************************************************
34 // Register/Port Definitions for ethersw
37 // Definition Legend:
38 // _dp: page address decoding
39 // _d: offset address decoding
40 // _b: bit position
41 // _a: register/port address allocation (retired for most of pages)
42 // _w: register/port width or length
43 // _s: register/port input wire instantiation
44 // _g: register/port instantiation
46 // Ways to use register/port during coding:
47 // 1) In the module that needs to use one(or multiple) reg/port, define page register(s)
48 // i/o bundle wiring(s) as input/output, be sure to use pre-defined names for bundle
49 // wirings and never miss or delete and wire bits with a bundle wiring;
50 // 2) Include this file after module port list but before any declared port;
51 // 3) After port declaration, declare any page instantiation define needed to be used in this
52 // module, using defined (page) bundle name(s) with surfix _inatance;
53 // 4) now a register with _g surfix can be used;
54 // 5) Define any bit name(s) after that if this file has pre-defined any of those, or
55 // create any other name(s) alias;
56 // 6) Synthesis tool must remove all the unused wiring bundle bits declared as ports and
57 // all unsed reg bit DFFs to reduce actual used wires and save gates.
58 // 7) Example - coding of box_id[1:0] and dev_id[1:0]; values that need to be sent to
59 // registers
62 //*******************************************************
69 // -------------------------------------------------------------
70 // the following is the definitions of registers for BCM6352
71 // -------------------------------------------------------------
73 // registers page address
74 #define CTLREG_dp 0x0000
75 #define STSREG_dp 0x0100
76 #define MNGMODE_dp 0x0200
77 #define MIBACST_dp 0x0300
78 #define ARLCTL_dp 0x0400
79 #define ARLACCS_dp 0x0500
80 #define SMPACCS_dp 0x0600
81 #define MIC5308_dp 0x0700
82 #define MEM_dp 0x0800
83 #define DIAGREG_dp 0x0900 // diagnostic regsters
84 #define CNGMREG_dp 0x0a00 // Congestion management
85 #define MIBDIAG_dp 0x0b00 // MIB diagnostic
86 #define PORT0_MII_dp 0x0c00
87 #define PORT1_MII_dp 0x0d00
88 #define PORT0_MIB_dp 0x0e00
89 #define PORT1_MIB_dp 0x0f00
91 #define SPICTL_d 0xfd // SPI Control Register
92 #define SPISTS_d 0xfe // SPI Status Register
93 // [7] (SPIF): SPI R/W Complete Flag(self-clearing? no!)
94 // [5] (RACK): SPI read data ready ack(self-clearing)
95 // [1] (TXRDY): SMP Tx Ready Flag - should check it every 8 bytes
96 // [0] (RXRDY): SMP Rx Ready Flag - should check it every 8 bytes
97 #define SPIF_b 7
98 #define RACK_b 5
99 #define TXRDY_b 1
100 #define RXRDY_b 0
101 #define PAGEREG_d 0xff
103 // Control Registers
105 #define TH_PCTL0_d 0x00
106 #define RX_DIS_b 0
107 #define TX_DIS_b 1
108 #define TH_PCTL_RSRV0_b 2
109 #define STP_STATE_b 5
110 #define TH_PCTL1_d 0x04
111 #define TH_PCTL2_d 0x08
112 #define TH_PCTL3_d 0x0c
113 #define TH_PCTL4_d 0x10
114 #define TH_PCTL5_d 0x14
115 #define TH_PCTL6_d 0x18
116 #define TH_PCTL7_d 0x1c
117 #define MII_PCTL_d 0x20
118 #define MIRX_DIS_b 0
119 #define MITX_DIS_b 1
120 #define MIRX_BC_DIS_b 2
121 #define MIRX_MC_DIS_b 3
122 #define MIRX_UC_DIS_b 4
123 #define MISTP_STATE_b 5
124 #define EXP_PCTL_d 0x24
125 #define EXP_PCTL_RSRV0_b 0
126 #define SMP_CTL_d 0x28
127 #define SMP_CTL_RSRV0_b 0
128 #define RX_MCST_DIS_b 2
129 #define RX_BCST_DIS_b 3
130 #define RX_UCST_DIS_b 4
131 #define SWMODE_d 0x2c
132 #define SW_FWDG_MODE_b 0
133 #define SW_FWDG_EN_b 1
134 #define RTRY_LMT_DIS_b 2
135 #define SWMODE_RSRV0_b 3
136 #define PAUSEQT_d 0x30
137 #define PAUSEQT_b 0
138 #define PAUSEQT_RSRV0_b 15
139 #define MII_PSTS_d 0x34
140 #define MII_LINK_b 0
141 #define MII_SPD_b 1
142 #define MII_FDX_b 2
143 #define MII_FCAP_b 3
144 #define MII_OVRD_b 7
145 #define LED_FLSH_CTL_d 0x38
146 #define LED_BLINK_b 0
147 #define LED_FLSH_CTL_RSRV0_b 8
148 #define LEDA_ST_d 0x3c
149 #define P0A_ST_b 0
150 #define P1A_ST_b 2
151 #define P2A_ST_b 4
152 #define P3A_ST_b 6
153 #define P4A_ST_b 8
154 #define P5A_ST_b 10
155 #define P6A_ST_b 12
156 #define P7A_ST_b 14
157 #define LEDB_ST_d 0x40
158 #define P0B_ST_b 0
159 #define P1B_ST_b 2
160 #define P2B_ST_b 4
161 #define P3B_ST_b 6
162 #define P4B_ST_b 8
163 #define P5B_ST_b 10
164 #define P6B_ST_b 12
165 #define P7B_ST_b 14
166 #define LEDC_ST_d 0x44
167 #define P0C_ST_b 0
168 #define P1C_ST_b 2
169 #define P2C_ST_b 4
170 #define P3C_ST_b 6
171 #define P4C_ST_b 8
172 #define P5C_ST_b 10
173 #define P6C_ST_b 12
174 #define P7C_ST_b 14
175 #define MISC_LED_ST_d 0x48
176 #define MISC_LED_RSRV0_b 0
177 #define MII_A_ST_b 8
178 #define MII_B_ST_b 10
179 #define MII_C_ST_b 12
180 #define ERROR_ST_b 14
181 #define PRI_CTL0_d 0x4c
182 #define PRI_CTL1_d 0x50
183 #define CPU_PRI_CTL_d 0x54
184 #define PRI_MAP0_d 0x58
185 #define PRI_MAP1_d 0x5c
186 #define CPU_PRI_MAP_d 0x60
188 // Status Registers
190 #define LNKSTS_d 0x00
191 #define LNKSTSCHG_d 0x04
192 #define SPDSTS_d 0x08
193 #define DUPSTS_d 0x0c
194 #define PAUSESTS_d 0x10
195 #define CNGSSTS_d 0x14
196 #define SRCADRCHG_d 0x18
197 #define LSA_PORT0_d 0x20
198 #define LSA_PORT1_d 0x28
199 #define LSA_PORT2_d 0x30
200 #define LSA_PORT3_d 0x38
201 #define LSA_PORT4_d 0x40
202 #define LSA_PORT5_d 0x48
203 #define LSA_PORT6_d 0x50
204 #define LSA_PORT7_d 0x58
205 #define LSA_MIIPORT_d 0x60
206 #define BIST_STS_d 0x68
208 // Management Mode Registers
210 #define GMNGCFG_d 0x00
211 #define RST_MIB_CNTRS_b 0
212 #define RX_BPDU_b 1
213 #define GMNGCFG_dRSRV0_b 2
214 #define MAH_CTL_b 4
215 #define MACST_EN_b 5
216 #define PHY_MNGP_b 6
217 #define CHPBOXID_d 0x04
218 #define CHPBOXID_RSRV0_b 0
219 #define CHIPID_b 4
220 #define BOXID_b 6
221 #define MNGPID_d 0x08
222 #define MNGPID_b 0
223 #define MNGCID_b 4
224 #define MNGBID_b 6
225 #define RMONSTEER_d 0x0c
226 #define OR_RMON_RCV_b 0
227 #define RMNSTR_RSRV0_b 9
228 #define SPTAGT_d 0x10
229 #define AGE_TIME_b 0
230 #define SPTAGT_RSRV0_b 20
231 #define MIRCAPCTL_d 0x14
232 #define MIR_CAP_PORT_b 0
233 #define MIRCAPCTL_RSRV0_b 11
234 #define MIR_EN_b 15
235 #define IGMIRCTL_d 0x18
236 #define IN_MIR_MSK_b 0
237 #define IGMIRCTL_RSRV0_b 11
238 #define IN_DIV_EN_b 13
239 #define IN_MIR_FLTR_b 14
240 #define IGMIRDIV_d 0x1c
241 #define IN_MIR_DIV_b 0
242 #define IGMIRDIV_RSRV0_b 10
243 #define IGMIRMAC_d 0x20
244 #define IN_MIR_MAC_b 0
245 #define EGMIRCTL_d 0x28
246 #define OUT_MIR_MSK_b 0
247 #define EGMIRCTL_RSRV0_b 11
248 #define OUT_DIV_EN_b 13
249 #define OUT_MIR_FLTR_b 14
250 #define EGMIRDIV_d 0x2c
251 #define OUT_MIR_DIV_b 0
252 #define EGMIRDIV_RSRV0_b 10
253 #define EGMIRMAC_d 0x30
254 #define OUT_MIR_MAC_b 0
256 // MIB Autocast Registers
258 #define ACSTPORT_d 0x00
259 #define MIB_AC_PORTS_b 0
260 #define ACSTPORT_RSRV0_b 11
261 #define ACSTHDPT_d 0x04
262 #define MIB_AC_HDR_b 0
263 #define ACSTHDLT_d 0x08
264 #define MIB_AC_HDR_LEN_b 0
265 #define ACSTHDLT_RSRV0_b 8
266 #define ACSTDA_d 0x10
267 #define MIB_AC_DA_b 0
268 #define ACSTSA_d 0x18
269 #define MIB_AC_SA_b 0
270 #define ACSTTYPE_d 0x20
271 #define MIB_AC_TYPE_b 0
272 #define BRCM_ET_TYPE_df 0
273 #define ACSTRATE_d 0x24
274 #define MIB_AC_RATE_b 0
275 #define MIB_AC_RATE_df 64
277 // ARL Control Registers
279 #define GARLCFG_d 0x00
280 #define HASH_DISABLE_b 0
281 #define SINGLERW_EN_b 1
282 #define GARLCFG_RSRV0_b 2
283 #define BPDU_MCADDR_d 0x08
284 #define BPDU_MC_ADDR_b 0
285 #define GRPADDR1_d 0x10
286 #define GRP_ADDR_b 0
287 #define PORTVEC1_d 0x18
288 #define PORT_VCTR_b 0
289 #define PORTVEC_RSRV0_b 11
290 #define GRPADDR2_d 0x20
291 #define PORTVEC2_d 0x28
292 #define SEC_SPMSK_d 0x2C
293 #define SEC_DPMSK_d 0x30
297 ** ARL Access registers - memory page 0x05
299 #define ARLA_RWCTL_d 0x00 /* ARL Read/Write Control register */
300 #define ARL_RW_b 0
301 #define ARLA_RWCTL_RSRV0_b 1
302 #define ARL_STRTDN_b 7
303 #define ARLA_MAC_d 0x08 /* ARL MAC Address Index register */
304 #define MAC_ADDR_INDX_b 0
305 #define ARLA_ENTRY0_d 0x10 /* ARL Entry 0 and 1 register */
306 #define ARLA_ENTRY1_d 0x20 /* ARL Entry 0 and 1 register */
307 #define ARL_MACADDR_b 0
308 #define ARL_PID_b 48
309 #define ARL_CID_b 52
310 #define ARL_BID_b 54
311 #define ARLA_ENTRY_RSRV0_b 56
312 #define ARL_AGE_b 61
313 #define ARL_STATIC_b 62
314 #define ARL_VALID_b 63
315 #define ARLA_SRCH_CTL_d 0x30 /* ARL Search Control register */
316 #define ARLA_SRCH_ADR_d 0x34 /* ARL Search Address register */
317 #define ARLA_SRCH_RSLT_d 0x38 /* ARL Search Result register */
319 // SMP Access Registers
321 #define SMPIG_PORT_d 0x00
322 #define SMPEG_PORT_d 0x04
323 #define SMPEG_CTL_d 0x08
324 #define SMP_SOF_b 0
325 #define SMP_EOF_b 1
326 #define SMP_RXRDY_b 2
327 #define SMPIG_STS_d 0x10
328 #define SMP_NEW_FRM_b 0
329 #define SMP_FRM_PRO_b 1
330 #define SMP_TXRDY_b 2
331 #define SMP_FRM_SIZE_b 5
333 // MIC5308 Access Registers
335 #define MIC_PORT0_d 0x00
336 #define MIC_PORT1_d 0x02
337 #define MIC_PORT2_d 0x04
338 #define MIC_PORT3_d 0x06
339 #define MIC_PORT4_d 0x08
340 #define MIC_PORT5_d 0x0a
341 #define MIC_PORT6_d 0x0c
342 #define MIC_PORT7_d 0x0e
343 #define MIC_PORT8_d 0x10
344 #define MIC_PORT9_d 0x12
345 #define MIC_PORTa_d 0x14
346 #define MIC_PORTb_d 0x16
347 #define MIC_PORTc_d 0x18
348 #define MIC_PORTd_d 0x1a
349 #define MIC_PORTe_d 0x1c
350 #define MIC_PORTf_d 0x1e
351 #define MIC_RSRV_d 0x20
353 // MEM Access Registers
355 #define MEMADR_d 0x00
356 #define MEM_ADR_b 0
357 #define MEM_RW_b 18
358 #define MEM_STDN_b 19
359 #define MEMDAT_d 0x08
360 #define MIBKILLOVR_d 0x2d
363 ** Port MII registers - memory page 0x0c~0x0d
365 #define MIICTL_d 0x00 /* MII Control register */
366 #define MII_RESET_b 0x8000 /* reset */
367 #define MII_LPBK_b 0x4000 /* loopback */
368 #define MII_FORCE100_b 0x2000 /* force 100Mbs */
369 #define MII_AUTONEG_b 0x1000 /* auto-negotiation */
370 #define MII_FDEPLEX_b 0x0100 /* full-duplex */
371 #define MIISTS_d 0x02 /* MII Status register */
372 #define PHYIDH_d 0x04 /* PHY ID high */
373 #define PHYIDL_d 0x06 /* PHY ID low */
374 #define ANADV_d 0x08 /* Auto-Negotiation Advertisement */
375 #define ANLPA_d 0x0a /* Auto-Negotiation Link Partner Ability */
376 #define ANEXP_d 0x0c /* Auto-Negotiation Expansion */
377 #define MII_RSRV0_d 0x0e
378 #define HNDRD_ACTL_d 0x20
379 #define HNDRD_ASTS_d 0x22
380 #define HNDRD_RECNT_d 0x24
381 #define HNDRD_FCSCNT_d 0x26
382 #define MII_RSRV1_d 0x28
383 #define CHIP_1100ID (CHIPID & 0x000000FF)
384 #if (CHIP_1100ID < 0xB0)
385 #define MII_RSRV4_d 0x2C /* Bit 1 = Gamma 1/8 bit */
386 #define MII_GAMMA_b 0x0002 /* gamma 1/8 bit enabled */
387 #endif
388 #define ACTLSTS_d 0x30
389 #define ASTSSUM_d 0x32
390 #define MII_RSRV2_d 0x34
391 #define AMODE2_d 0x36
392 #define AEGSTS_d 0x38
393 #define MII_RSRV3_d 0x3a
394 #define AMPHY_d 0x3c
395 #define BRCMTST_d 0x3e
396 #define MII_RSRV_d 0x40
398 // MIB registers
400 #define TxOctets_d 0x00 // 64-bit
401 #define TxDropPkts_d 0x08
402 #define TxGoodPkts_d 0x0c
403 #define MIB_Hole0_d 0x0c
404 #define TxBroadcastPkts_d 0x10
405 #define TxMulticastPkts_d 0x14
406 #define TxUnicastPkts_d 0x18
407 #define TxCollisions_d 0x1c
408 #define TxSingleCollision_d 0x20
409 #define TxMultipleCollision_d 0x24
410 #define TxDeferredTransmit_d 0x28
411 #define TxLateCollision_d 0x2c
412 #define TxExcessiveCollision_d 0x30
413 #define TxFrameInDisc_d 0x34
414 #define TxPausePkts_d 0x38
415 #define TxReserved2_d 0x3c
416 #define TxReserved3_d 0x40
417 #define RxOctets_d 0x44 // 64-bit
418 #define RxUndersizePkts_d 0x4c
419 #define RxPausePkts_d 0x50
420 #define Pkts64Octets_d 0x54
421 #define Pkts65to127Octets_d 0x58
422 #define Pkts128to255Octets_d 0x5c
423 #define Pkts256to511Octets_d 0x60
424 #define Pkts512to1023Octets_d 0x64
425 #define Pkts1024to1522Octets_d 0x68
426 #define RxOversizePkts_d 0x6c
427 #define RxJabbers_d 0x70
428 #define RxAlignmentErrors_d 0x74
429 #define RxFCSErrors_d 0x78
430 #define RxGoodOctets_d 0x7c // 64-bit
431 #define RxDropPkts_d 0x84
432 #define RxUnicastPkts_d 0x88
433 #define RxMulticastPkts_d 0x8c
434 #define RxBroadcastPkt_d 0x90
435 #define RxSAChanges_d 0x94
436 #define RxFragments_d 0x98
437 #define RxExcessSizeDisc_d 0x9c
438 #define RXSymblErr_d 0xA0
439 #define MIB_RSRV_d 0xA4
441 // Diagnostic registers
442 // --- ARL
444 #define PORT0_RAWPORTMAP_d 0x00
445 #define PORT0_FINALPORTMAP_d 0x02
446 #define PORT1_RAWPORTMAP_d 0x04
447 #define PORT1_FINALPORTMAP_d 0x06
448 #define PORT2_RAWPORTMAP_d 0x08
449 #define PORT2_FINALPORTMAP_d 0x0a
450 #define PORT3_RAWPORTMAP_d 0x0c
451 #define PORT3_FINALPORTMAP_d 0x0e
452 #define PORT4_RAWPORTMAP_d 0x10
453 #define PORT4_FINALPORTMAP_d 0x12
454 #define PORT5_RAWPORTMAP_d 0x14
455 #define PORT5_FINALPORTMAP_d 0x16
456 #define PORT6_RAWPORTMAP_d 0x18
457 #define PORT6_FINALPORTMAP_d 0x1a
458 #define PORT7_RAWPORTMAP_d 0x1c
459 #define PORT7_FINALPORTMAP_d 0x1e
460 #define PORT8_RAWPORTMAP_d 0x20
461 #define PORT8_FINALPORTMAP_d 0x22
462 #define PORT9_RAWPORTMAP_d 0x24
463 #define PORT9_FINALPORTMAP_d 0x26
464 #define PORT10_RAWPORTMAP_d 0x28
465 #define PORT10_FINALPORTMAP_d 0x2a
467 #define DIAG_RSRV1_d 0x2c
470 #define BUFCON_BUFCONREQ0_d 0xd0
471 #define BUFCON_BUFCONREQ1_d 0xd2
472 #define BUFCON_BUFCONREQ2_d 0xd4
473 #define BUFCON_BUFCONREQ3_d 0xd6
474 #define BUFCON_BUFCONREQ4_d 0xd8
475 #define BUFCON_BUFCONREQ5_d 0xda
476 #define BUFCON_BUFCONREQ6_d 0xdc
477 #define BUFCON_BUFCONREQ7_d 0xde
478 #define BUFCON_BUFCONREQ8_d 0xe0
479 #define BUFCON_BUFCONREQ9_d 0xe2
480 #define BUFCON_BUFCONREQ10_d 0xe4
481 #define BUFCON_BUFCONREQ11_d 0xe6
482 #define BUFCON_AVAIL_BUF0_d 0xe8
483 #define BUFCON_AVAIL_BUF1_d 0xea
484 #define BUFCON_AVAIL_BUF2_d 0xec
485 #define BUFCON_AVAIL_BUF3_d 0xee
487 #define DIAG_RSRV2_d 0xf0
489 // --- Flow Control
490 // This is the address MAP for registers in flowcon.
491 // it is not used by the logic but is used by the
492 // test bench
494 #define FCON_DIAG_FLOW_d 0x00
495 #define FCON_10_TH_HYST_d 0x02
496 // FCON_10_TH_HYST_d and FCON_10_TH_PAUSE_d
497 #define FCON_10_TH_DROP_d 0x04
498 #define FCON_100_TH_HYST_d 0x06
499 // FCON_100_TH_HYST_d and FCON_100_TH_PAUSE_d
500 #define FCON_100_TH_DROP_d 0x08
501 #define FCON_EXP_TH_HYST_d 0x0a
502 // FCON_EXP_TH_HYST_d and FCON_EXP_TH_PAUSE_d
503 #define FCON_EXP_TH_DROP_d 0x0c
504 #define FCON_TOT_TH_HYST_d 0x0e
505 // FCON_TOT_TH_HYST_d and FCON_TOT_TH_PAUSE_d
506 #define FCON_TOT_TH_DROP_d 0x10
507 #define FCON_TXQ_FULL_TH_d 0x12
508 #define RSRV_FLOWCON0_d 0x14
509 #define FCON_CONG_MAP0_d 0x20
510 #define FCON_CONG_MAP1_d 0x22
511 #define FCON_CONG_MAP2_d 0x24
512 #define FCON_DROP_HIST_d 0x26
513 #define FCON_PAUSE_HIST_d 0x28
514 #define FCON_PEAK_TOTAL_USED_d 0x2a
515 #define FCON_PEAK_TXQ_CNT_d 0x2c
516 #define FCON_PEAK_RXBCNT_d 0x2e
517 #define FCON_FLOWMIX_d 0x30
518 // Not useful now - hchoy
519 #define RSRV_FCONCON1_d 0x32
520 #define DIAG_RSRV_d 0x62