1/* 2 * Register and bit definitions for the DEC/Intel 21143 Ethernet controller, 3 * part of the Tulip family of 10 and 10/100 controllers. 4 * Reference: 5 * 21143 PCI/CardBus 10/100 Mb/s Ethernet LAN Controller, 6 * Hardware Reference Manual, Revision 1.0. 7 * Document No. 278074-001 8 * Intel Corp., October 1998 9 * Includes extensions/alternatives for the DEC 21040, 21041 and 21140(A) 10 * Ethernet controllers. 11 */ 12#ifndef _DC21143_H_ 13#define _DC21143_H_ 14 15#define _DD_MAKEMASK1(n) (1 << (n)) 16#define _DD_MAKEMASK(v,n) ((((1)<<(v))-1) << (n)) 17#define _DD_MAKEVALUE(v,n) ((v) << (n)) 18#define _DD_GETVALUE(v,n,m) (((v) & (m)) >> (n)) 19 20 21/* ********************************************************************* 22 * PCI Configuration Register offsets (Tulip nomenclature) 23 ********************************************************************* */ 24 25#define R_CFG_CFID PCI_ID_REG 26#define K_PCI_VENDOR_DEC 0x1011 27#define K_PCI_ID_DC21040 0x0002 28#define K_PCI_ID_DC21041 0x0014 29#define K_PCI_ID_DC21140 0x0009 30#define K_PCI_ID_DC21143 0x0019 31 32#define R_CFG_CFRV PCI_CLASS_REG 33 34#define R_CFG_CBIO PCI_MAPREG(0) 35#define R_CFG_CBMA PCI_MAPREG(1) 36 37#define R_CFG_CFIT PCI_BPARAM_INTERRUPT_REG 38 39/* Tulip extensions */ 40#define R_CFG_CFDD 0x40 41 42#define M_CFDD_SLEEP __DD_MAKEMASK1(31) 43#define M_CFDD_SNOOZE __DD_MAKEMASK1(30) 44 45#define R_CFG_CPMS 0xE0 46 47 48/* ********************************************************************* 49 * CSRs: offsets 50 ********************************************************************* */ 51 52#define R_CSR_BUSMODE 0x00 53#define R_CSR_TXPOLL 0x08 54#define R_CSR_RXPOLL 0x10 55#define R_CSR_RXRING 0x18 56#define R_CSR_TXRING 0x20 57#define R_CSR_STATUS 0x28 58#define R_CSR_OPMODE 0x30 59#define R_CSR_INTMASK 0x38 60#define R_CSR_MISSEDFRAME 0x40 61#define R_CSR_ROM_MII 0x48 62#define R_CSR_BOOTROM_ADDR 0x50 63#define R_CSR_GENTIMER 0x58 64 65/* The following registers are specific to the 21040 */ 66 67#define R_CSR_FDUPLEX 0x58 68 69/* The following registers are specific to the 21040/21041 and 21142/21143 */ 70 71#define R_CSR_SIASTATUS 0x60 72#define R_CSR_SIAMODE0 0x68 73#define R_CSR_SIAMODE1 0x70 74#define R_CSR_SIAMODE2 0x78 75 76/* The following registers are specific to the 21140/21140A */ 77 78#define R_CSR_GENPORT 0x60 79#define R_CSR_WATCHDOG_TIMER 0x78 80 81 82/* CSR0: Bus Mode register */ 83 84#define M_CSR0_SWRESET _DD_MAKEMASK1(0) 85#define M_CSR0_BUSARB _DD_MAKEMASK1(1) 86 87#define S_CSR0_SKIPLEN 2 88#define M_CSR0_SKIPLEN _DD_MAKEMASK(5,S_CSR0_SKIPLEN) 89#define V_CSR0_SKIPLEN(x) _DD_MAKEVALUE(x,S_CSR0_SKIPLEN) 90#define G_CSR0_SKIPLEN(x) _DD_GETVALUE(x,S_CSR0_SKIPLEN,M_CSR0_SKIPLEN) 91 92#define M_CSR0_BIGENDIAN _DD_MAKEMASK1(7) 93 94#define S_CSR0_BURSTLEN 8 95#define M_CSR0_BURSTLEN _DD_MAKEMASK(6,S_CSR0_BURSTLEN) 96#define V_CSR0_BURSTLEN(x) _DD_MAKEVALUE(x,S_CSR0_BURSTLEN) 97#define G_CSR0_BURSTLEN(x) _DD_GETVALUE(x,S_CSR0_BURSTLEN,M_CSR0_BURSTLEN) 98 99#define S_CSR0_CACHEALIGN 14 100#define M_CSR0_CACHEALIGN _DD_MAKEMASK(2,S_CSR0_CACHEALIGN) 101#define V_CSR0_CACHEALIGN(x) _DD_MAKEVALUE(x,S_CSR0_CACHEALIGN) 102#define G_CSR0_CACHEALIGN(x) _DD_GETVALUE(x,S_CSR0_CACHEALIGN,M_CSR0_CACHEALIGN) 103 104#define S_CSR0_TXAUTOPOLL 17 105#define M_CSR0_TXAUTOPOLL _DD_MAKEMASK(3,S_CSR0_AUTOPOLL) 106#define V_CSR0_TXAUTOPOLL(x) _DD_MAKEVALUE(x,S_CSR0_TXAUTOPOLL) 107#define G_CSR0_TXAUTOPOLL(x) _DD_GETVALUE(x,S_CSR0_TXAUTOPOLL,M_CSR0_TXAUTOPOLL) 108 109#define M_CSR0_DESCBYTEORDER _DD_MAKEMASK1(20) /* not 21040 */ 110#define M_CSR0_READMULTENAB _DD_MAKEMASK1(21) /* not 2104{0,1} */ 111#define M_CSR0_READLINEENAB _DD_MAKEMASK1(23) /* not 2104{0,1} */ 112#define M_CSR0_WRITEINVALENAB _DD_MAKEMASK1(24) /* not 2104{0,1} */ 113 114#define K_CSR0_TAPDISABLED 0x00 115#define K_CSR0_TAP200US 0x01 116#define K_CSR0_TAP800US 0x02 117#define K_CSR0_TAP1600US 0x03 118 119#define K_CSR0_ALIGNNONE 0 120#define K_CSR0_ALIGN32 1 121#define K_CSR0_ALIGN64 2 122#define K_CSR0_ALIGN128 3 123 124#define K_CSR0_BURST32 32 125#define K_CSR0_BURST16 16 126#define K_CSR0_BURST8 8 127#define K_CSR0_BURST4 4 128#define K_CSR0_BURST2 2 129#define K_CSR0_BURST1 1 130#define K_CSR0_BURSTANY 0 131 132 133#define M_CSR3_RXDSCRADDR 0xFFFFFFFC 134#define M_CSR4_TXDSCRADDR 0xFFFFFFFC 135 136 137/* CSR5: Status register */ 138 139#define M_CSR5_TXINT _DD_MAKEMASK1(0) 140#define M_CSR5_TXSTOP _DD_MAKEMASK1(1) 141#define M_CSR5_TXBUFUNAVAIL _DD_MAKEMASK1(2) 142#define M_CSR5_TXJABTIMEOUT _DD_MAKEMASK1(3) 143#define M_CSR5_LINKPASS _DD_MAKEMASK1(4) /* not 21040 */ 144#define M_CSR5_TXUNDERFLOW _DD_MAKEMASK1(5) 145#define M_CSR5_RXINT _DD_MAKEMASK1(6) 146#define M_CSR5_RXBUFUNAVAIL _DD_MAKEMASK1(7) 147#define M_CSR5_RXSTOPPED _DD_MAKEMASK1(8) 148#define M_CSR5_RXWDOGTIMEOUT _DD_MAKEMASK1(9) 149#define M_CSR5_AUITPPIN _DD_MAKEMASK1(10) /* 21040 only */ 150#define M_CSR5_TXEARLYINT _DD_MAKEMASK1(10) /* not 2104{0,1} */ 151#define M_CSR5_FDSHORTFRAME _DD_MAKEMASK1(11) /* 21040 only */ 152#define M_CSR5_GPTIMEREXPIRE _DD_MAKEMASK1(11) /* not 21040 */ 153#define M_CSR5_LINKFAIL _DD_MAKEMASK1(12) 154#define M_CSR5_FATALBUSERROR _DD_MAKEMASK1(13) 155#define M_CSR5_RXEARLYINT _DD_MAKEMASK1(14) /* not 21040 */ 156#define M_CSR5_ABNORMALINT _DD_MAKEMASK1(15) 157#define M_CSR5_NORMALINT _DD_MAKEMASK1(16) 158 159#define S_CSR5_RXPROCSTATE 17 160#define M_CSR5_RXPROCSTATE _DD_MAKEMASK(3,S_CSR5_RXPROCSTATE) 161#define V_CSR5_RXPROCSTATE(x) _DD_MAKEVALUE(x,S_CSR5_RXPROCSTATE) 162#define G_CSR5_RXPROCSTATE(x) _DD_GETVALUE(x,S_CSR5_RXPROCSTATE,M_CSR5_RXPROCSTATE) 163 164#define K_CSR5_RXSTOPPED 0x00 /* RESET or STOP command */ 165#define K_CSR5_RXFETCH 0x01 /* fetching rx desc */ 166#define K_CSR5_RXCHECK 0x02 /* checking end of rx pkt */ 167#define K_CSR5_RXWAIT 0x03 /* waiting for rx pkt */ 168#define K_CSR5_RXSUSPEND 0x04 /* unavailable rx buffer */ 169#define K_CSR5_RXCLOSE 0x05 /* closing rx desc */ 170#define K_CSR5_RXFLUSH 0x06 /* flushing rx frame */ 171#define K_CSR5_RXQUEUE 0x07 /* reading rx frame from FIFO */ 172 173#define S_CSR5_TXPROCSTATE 20 174#define M_CSR5_TXPROCSTATE _DD_MAKEMASK(3,S_CSR5_TXPROCSTATE) 175#define V_CSR5_TXPROCSTATE(x) _DD_MAKEVALUE(x,S_CSR5_TXPROCSTATE) 176#define G_CSR5_TXPROCSTATE(x) _DD_GETVALUE(x,S_CSR5_TXPROCSTATE,M_CSR5_TXPROCSTATE) 177 178#define K_CSR5_TXSTOPPED 0x00 /* RESET or STOP command */ 179#define K_CSR5_TXFETCH 0x01 /* fetching tx desc */ 180#define K_CSR5_TXWAIT 0x02 /* waiting for end of tx */ 181#define K_CSR5_TXREAD 0x03 /* reading buffer into FIFO */ 182#define K_CSR5_TXSETUP 0x05 /* setup packet */ 183#define K_CSR5_TXSUSPEND 0x06 /* tx underflow or no tx desc */ 184#define K_CSR5_TXCLOSE 0x07 /* closing tx desc */ 185 186#define S_CSR5_ERRORBITS 23 187#define M_CSR5_ERRORBITS _DD_MAKEMASK(3,S_CSR5_ERRORBITS) 188#define V_CSR5_ERRORBITS(x) _DD_MAKEVALUE(x,S_CSR5_ERRORBITS) 189#define G_CSR5_ERRORBITS(x) _DD_GETVALUE(x,S_CSR5_ERRORBITS,M_CSR5_ERRORBITS) 190 191#define K_CSR5_FBE_PARITY 0x00 192#define K_CSR5_FBE_MABORT 0x01 193#define K_CSR5_FBE_TABORT 0x02 194 195#define M_CSR5_GPPORTINT _DD_MAKEMASK1(26) /* not 2104{0,1} */ 196#define M_CSR5_LINKCHANGED _DD_MAKEMASK1(27) /* not 2104{0,1} */ 197 198 199/* CSR6: Operating Mode register */ 200 201#define M_CSR6_RXHASHFILT _DD_MAKEMASK1(0) 202#define M_CSR6_RXSTART _DD_MAKEMASK1(1) 203#define M_CSR6_HASHONLY _DD_MAKEMASK1(2) 204#define M_CSR6_PASSBADFRAMES _DD_MAKEMASK1(3) 205#define M_CSR6_INVERSEFILT _DD_MAKEMASK1(4) 206#define M_CSR6_STOPBACKOFF _DD_MAKEMASK1(5) 207#define M_CSR6_PROMISCUOUS _DD_MAKEMASK1(6) 208#define M_CSR6_PASSALLMULTI _DD_MAKEMASK1(7) 209#define M_CSR6_FULLDUPLEX _DD_MAKEMASK1(9) 210 211#define M_CSR6_INTLOOPBACK _DD_MAKEMASK1(10) 212#define M_CSR6_EXTLOOPBACK _DD_MAKEMASK1(11) 213 214#define S_CSR6_OPMODE 10 215#define M_CSR6_OPMODE _DD_MAKEMASK(2,S_CSR6_OPMODE) 216#define V_CSR6_OPMODE(x) _DD_MAKEVALUE(x,S_CSR6_OPMODE) 217#define G_CSR6_OPMODE(x) _DD_GETVALUE(x,S_CSR6_OPMODE,M_CSR6_OPMODE) 218 219#define M_CSR6_FORCECOLL _DD_MAKEMASK1(12) 220#define M_CSR6_TXSTART _DD_MAKEMASK1(13) 221 222#define S_CSR6_THRESHCONTROL 14 223#define M_CSR6_THRESHCONTROL _DD_MAKEMASK(2,S_CSR6_THRESHCONTROL) 224#define V_CSR6_THRESHCONTROL(x) _DD_MAKEVALUE(x,S_CSR6_THRESHCONTROL) 225#define G_CSR6_THRESHCONTROL(x) _DD_GETVALUE(x,S_CSR6_THRESHCONTROL,M_CSR6_THRESHCONTROL) 226 227#define M_CSR6_BACKPRESSURE _DD_MAKEMASK1(16) /* 21040 only */ 228#define M_CSR6_CAPTUREEFFECT _DD_MAKEMASK1(17) 229 230#define M_CSR6_PORTSEL _DD_MAKEMASK1(18) /* not 2104{0,1} */ 231#define M_CSR6_HBDISABLE _DD_MAKEMASK1(19) /* not 2104{0,1} */ 232#define M_CSR6_STOREFWD _DD_MAKEMASK1(21) /* not 2104{0,1} */ 233#define M_CSR6_TXTHRESH _DD_MAKEMASK1(22) /* not 2104{0,1} */ 234#define M_CSR6_PCSFUNC _DD_MAKEMASK1(23) /* not 2104{0,1} */ 235#define M_CSR6_SCRAMMODE _DD_MAKEMASK1(24) /* not 2104{0,1} */ 236#define M_CSR6_MBO _DD_MAKEMASK1(25) /* not 2104{0,1} */ 237#define M_CSR6_RXALL _DD_MAKEMASK1(30) /* not 2104{0,1} */ 238 239#define M_CSR6_SPECCAP _DD_MAKEMASK1(31) /* not 21040 */ 240 241#define K_CSR6_TXTHRES_128_72 0x00 242#define K_CSR6_TXTHRES_256_96 0x01 243#define K_CSR6_TXTHRES_512_128 0x02 244#define K_CSR6_TXTHRES_1024_160 0x03 245 246 247#ifndef EB332 248#define M_CSR6_SPEED_10 (M_CSR6_TXTHRESH) 249 250#define M_CSR6_SPEED_100 (M_CSR6_HBDISABLE | \ 251 M_CSR6_SCRAMMODE | \ 252 M_CSR6_PCSFUNC | \ 253 M_CSR6_PORTSEL) 254 255#define M_CSR6_SPEED_10_MII (M_CSR6_TXTHRESH | \ 256 M_CSR6_PORTSEL) 257 258#define M_CSR6_SPEED_100_MII (M_CSR6_HBDISABLE | \ 259 M_CSR6_PORTSEL) 260 261#else 262#define M_CSR6_SPEED_10 (0) 263 264#define M_CSR6_SPEED_100 (M_CSR6_SCRAMMODE | \ 265 M_CSR6_PORTSEL) 266 267#define M_CSR6_SPEED_10_MII (M_CSR6_PORTSEL) 268 269#define M_CSR6_SPEED_100_MII (M_CSR6_PORTSEL) 270#endif 271 272/* CSR7: Interrupt mask register */ 273 274#define M_CSR7_TXINT _DD_MAKEMASK1(0) 275#define M_CSR7_TXSTOP _DD_MAKEMASK1(1) 276#define M_CSR7_TXBUFUNAVAIL _DD_MAKEMASK1(2) 277#define M_CSR7_TXJABTIMEOUT _DD_MAKEMASK1(3) 278#define M_CSR7_LINKPASS _DD_MAKEMASK1(4) /* not 21040 */ 279#define M_CSR7_TXUNDERFLOW _DD_MAKEMASK1(5) 280#define M_CSR7_RXINT _DD_MAKEMASK1(6) 281#define M_CSR7_RXBUFUNAVAIL _DD_MAKEMASK1(7) 282#define M_CSR7_RXSTOPPED _DD_MAKEMASK1(8) 283#define M_CSR7_RXWDOGTIMEOUT _DD_MAKEMASK1(9) 284#define M_CSR7_AUITPSW _DD_MAKEMASK1(10) /* 21040 only */ 285#define M_CSR7_TXEARLY _DD_MAKEMASK1(10) /* not 2104{0,1} */ 286#define M_CSR7_FD _DD_MAKEMASK1(11) /* 21040 only */ 287#define M_CSR7_GPTIMER _DD_MAKEMASK1(11) /* not 21040 */ 288#define M_CSR7_LINKFAIL _DD_MAKEMASK1(12) 289#define M_CSR7_FATALBUSERROR _DD_MAKEMASK1(13) 290#define M_CSR7_RXEARLY _DD_MAKEMASK1(14) /* not 21040 */ 291#define M_CSR7_ABNORMALINT _DD_MAKEMASK1(15) 292#define M_CSR7_NORMALINT _DD_MAKEMASK1(16) 293#define M_CSR7_GPPORT _DD_MAKEMASK1(26) /* not 2104{0,1} */ 294#define M_CSR7_LINKCHANGED _DD_MAKEMASK1(27) /* not 2104{0,1} */ 295 296 297/* CSR8: Missed Frame register */ 298 299#define M_CSR8_RXOVER_WRAP _DD_MAKEMASK1(28) /* not 2104{0,1} */ 300#define S_CSR8_RXOVER 17 301#define M_CSR8_RXOVER _DD_MAKEMASK(11,S_CSR8_RXOVER) /* not 2104{0,1} */ 302#define V_CSR8_RXOVER(x) _DD_MAKEVALUE(x,S_CSR8_RXOVER) 303#define G_CSR8_RXOVER(x) _DD_GETVALUE(x,S_CSR8_RXOVER,M_CSR8_RXOVER) 304 305#define M_CSR8_MISSEDWRAP _DD_MAKEMASK1(16) 306#define S_CSR8_MISSED 0 307#define M_CSR8_MISSED _DD_MAKEMASK(16,S_CSR8_MISSED) 308#define V_CSR8_MISSED(x) _DD_MAKEVALUE(x,S_CSR8_MISSED) 309#define G_CSR8_MISSED(x) _DD_GETVALUE(x,S_CSR8_MISSED,M_CSR8_MISSED) 310 311 312/* CSR9: ROM and MII register */ 313 314#define S_CSR9_ROMDATA 0 315#define M_CSR9_ROMDATA _DD_MAKEMASK(8,S_CSR9_ROMDATA) 316#define V_CSR9_ROMDATA(x) _DD_MAKEVALUE(x,S_CSR9_ROMDATA) 317#define G_CSR9_ROMDATA(x) _DD_GETVALUE(x,S_CSR9_ROMDATA,M_CSR9_ROMDATA) 318 319#define M_CSR9_SROMCHIPSEL _DD_MAKEMASK1(0) /* not 21040 */ 320#define M_CSR9_SROMCLOCK _DD_MAKEMASK1(1) /* not 21040 */ 321#define M_CSR9_SROMDATAIN _DD_MAKEMASK1(2) /* not 21040 */ 322#define M_CSR9_SROMDATAOUT _DD_MAKEMASK1(3) /* not 21040 */ 323 324#define M_CSR9_REGSELECT _DD_MAKEMASK1(10) /* not 21040 */ 325#define M_CSR9_SERROMSEL _DD_MAKEMASK1(11) /* not 21040 */ 326#define M_CSR9_ROMSEL _DD_MAKEMASK1(12) /* not 21040 */ 327#define M_CSR9_ROMWRITE _DD_MAKEMASK1(13) /* not 21040 */ 328#define M_CSR9_ROMREAD _DD_MAKEMASK1(14) /* not 21040 */ 329#define M_CSR9_MODESEL _DD_MAKEMASK1(15) /* 21041 only */ 330#define M_CSR9_MDC _DD_MAKEMASK1(16) /* not 2104{0,1} */ 331#define M_CSR9_MDO _DD_MAKEMASK1(17) /* not 2104{0,1} */ 332#define M_CSR9_MIIMODE _DD_MAKEMASK1(18) /* not 2104{0,1} */ 333#define M_CSR9_MDI _DD_MAKEMASK1(19) /* not 2104{0,1} */ 334 335#define M_CSR9_DATANOTVALID _DD_MAKEMASK1(31) /* 21040 only */ 336 337#define M_CSR10_BOOTROMADDR _DD_MAKEMASK(18,0) /* not 21040 */ 338 339 340/* CSR11 General Purpose Timer register */ 341 342#define S_CSR11_GPTIMER 0 /* not 21040 */ 343#define M_CSR11_GPTIMER _DD_MAKEMASK(16,S_CSR11_GPTIMER) 344#define V_CSR11_GPTIMER(x) _DD_MAKEVALUE(x,S_CSR11_GPTIMER) 345#define G_CSR11_GPTIMER(x) _DD_GETVALUE(x,S_CSR11_GPTIMER,M_CSR11_GPTIMER) 346 347 348#define M_CSR11_GPTIMERCONT _DD_MAKEMASK1(16) /* not 21040 */ 349 350#define S_CSR11_FDAUTOCONF 0 /* 21040 only */ 351#define M_CSR11_FDAUTOCONF _DD_MAKEMASK(16,S_CSR11_FDAUTOCONF) 352#define V_CSR11_FDAUTOCONF(x) _DD_MAKEVALUE(x,S_CSR11_FDAUTOCONF) 353#define G_CSR11_FRAUTOCONF(x) _DD_GETVALUE(x,S_CSR11_FDAUTOCONF,M_CSR11_AUTOCONF) 354 355 356/* CSR12: SIA Status register (21143) */ 357 358#define M_CSR12_MIIRPA _DD_MAKEMASK1(0) 359#define M_CSR12_100MBLINK _DD_MAKEMASK1(1) 360#define M_CSR12_10MBLINK _DD_MAKEMASK1(2) 361#define M_CSR12_AUTOPOLSTATE _DD_MAKEMASK1(3) 362 363#define M_CSR12_RXAUIACT _DD_MAKEMASK1(8) 364#define M_CSR12_RX10BASETACT _DD_MAKEMASK1(9) 365#define M_CSR12_NLPDETECT _DD_MAKEMASK1(10) 366#define M_CSR12_TXREMFAULT _DD_MAKEMASK1(11) 367 368#define S_CSR12_AUTONEGARBIT 12 369#define M_CSR12_AUTONEGARBIT _DD_MAKEMASK(3,S_CSR12_AUTONEGARBIT) 370#define V_CSR12_AUTONEGARBIT(x) _DD_MAKEVALUE(x,S_CSR12_AUTONEGARBIT) 371#define G_CSR12_AUTONEGARBIT(x) _DD_GETVALUE(x,S_CSR12_AUTONEGARBIT,M_CSR12_AUTONEGARBIT) 372 373#define M_CSR12_LINKPARTNEG _DD_MAKEMASK1(15) 374 375#define S_CSR12_LINKPARTCODE 16 376#define M_CSR12_LINKPARTCODE _DD_MAKEMASK(16,S_CSR12_LINKPARTCODE) 377#define V_CSR12_LINKPARTCODE(x) _DD_MAKEVALUE(x,S_CSR12_LINKPARTCODE) 378#define G_CSR12_LINKPARTCODE(x) _DD_GETVALUE(x,S_CSR12_LINKPARTCODE,M_CSR12_LINKPARTCODE) 379 380 381/* CSR12: SIA Status register (21041, also 31:12, 3:3 as for 21143) */ 382 383#define M_CSR12_NETCONNERR _DD_MAKEMASK1(1) 384#define M_CSR12_LINKFAIL _DD_MAKEMASK1(2) 385#define M_CSR12_SELPORTACT _DD_MAKEMASK1(8) 386#define M_CSR12_NONSELPORTACT _DD_MAKEMASK1(9) 387#define M_CSR12_AUTONEGRESTART _DD_MAKEMASK1(10) 388#define M_CSR12_UNSTABLENLP _DD_MAKEMASK1(11) 389 390 391/* CSR12: General Purpose Port register (21140) */ 392 393#define S_CSR12_DATA 0 394#define M_CSR12_DATA _DD_MAKEMASK(8,S_CSR12_DATA) 395#define V_CSR12_DATA _DD_MAKEVALUE(x,S_CSR12_DATA,M_CSR12_DATA) 396#define G_CSR12_DATA(x) _DD_GETVALUE(x,S_CSR12_DATA,M_CSR12_DATA) 397 398#define M_CSR12_CONTROL _DD_MAKEMASK1(8) 399 400 401/* CSR13: SIA Mode 0 register (21143 and 21041) */ 402 403#define M_CSR13_CONN_NOT_RESET _DD_MAKEMASK1(0) 404#define M_CSR13_CONN_CSR_AUTO _DD_MAKEMAKS1(2) /* 21041 only */ 405#define M_CSR13_CONN_AUI_10BT _DD_MAKEMASK1(3) 406 407 408/* CSR14: SIA Mode 1 register (21143 and 21041) */ 409 410#define M_CSR14_ENCODER _DD_MAKEMASK1(0) 411#define M_CSR14_LOOPBACK _DD_MAKEMASK1(1) 412#define M_CSR14_DRIVER _DD_MAKEMASK1(2) 413#define M_CSR14_LINKPULSE _DD_MAKEMASK1(3) 414 415#define S_CSR14_COMPENSATE 4 416#define M_CSR14_COMPENSATE _DD_MAKEMASK(2,S_CSR14_COMPENSATE) 417#define V_CSR15_COMPENSATE(x) _DD_MAKEVALUE(x,S_CSR15_COMPENSATE) 418#define G_CSR15_COMPENSATE(x) _DD_GETVALUE(x,S_CSR15_COMPENSATE,M_CSR15_COMPENSATE) 419 420#define M_CSR14_HALFDUPLEX10BASET _DD_MAKEMASK1(6) 421#define M_CSR14_AUTONEGOTIATE _DD_MAKEMASK1(7) 422#define M_CSR14_RXSQUELCH _DD_MAKEMASK1(8) 423#define M_CSR14_COLLSQUELCH _DD_MAKEMASK1(9) 424#define M_CSR14_COLLDETECT _DD_MAKEMASK1(10) 425#define M_CSR14_SIGQUALGEN _DD_MAKEMASK1(11) 426#define M_CSR14_LINKTEST _DD_MAKEMASK1(12) 427#define M_CSR14_AUTOPOLARITY _DD_MAKEMASK1(13) 428#define M_CSR14_SETPOLARITY _DD_MAKEMASK1(14) 429#define M_CSR14_10BASETAUIAUTO _DD_MAKEMASK1(15) 430#define M_CSR14_100BASETHALFDUP _DD_MAKEMASK1(16) /* not 21041 */ 431#define M_CSR14_100BASETFULLDUP _DD_MAKEMASK1(17) /* not 21041 */ 432#define M_CSR14_100BASET4 _DD_MAKEMASK1(18) /* not 21041 */ 433 434#define M_CSR14_10BT_HD 0x7F3F 435#define M_CSR14_10BT_FD 0x7F3D 436 437 438/* CSR15: SIA Mode 2 register (21143 and 21041) */ 439 440#define M_CSR15_GP_JABBERDIS _DD_MAKEMASK1(0) /* 21041 only */ 441#define M_CSR15_GP_HOSTUNJAB _DD_MAKEMASK1(1) 442#define M_CSR15_GP_JABBERCLK _DD_MAKEMASK1(2) 443#define M_CSR15_GP_AUIBNC _DD_MAKEMASK1(3) 444#define M_CSR15_GP_RXWATCHDIS _DD_MAKEMASK1(4) 445#define M_CSR15_GP_RXWATCHREL _DD_MAKEMASK1(5) 446 447/* (CSR15: 21143 only) */ 448 449#define S_CSR15_GP_GPDATA 16 450#define M_CSR15_GP_GPDATA _DD_MAKEMASK(4,S_CSR15_GP_GPDATA) 451#define V_CSR15_GP_GPDATA(x) _DD_MAKEVALUE(x,S_CSR15_GP_GPDATA) 452#define G_CSR15_GP_GPDATA(x) _DD_GETVALUE(x,S_CSR15_GP_GPDATA,M_CSR15_GP_GPDATA) 453 454#define M_CSR15_GP_LED0 _DD_MAKEMASK1(20) 455#define M_CSR15_GP_LED1 _DD_MAKEMASK1(21) 456#define M_CSR15_GP_LED2 _DD_MAKEMASK1(22) 457#define M_CSR15_GP_LED3 _DD_MAKEMASK1(23) 458#define M_CSR15_GP_INTPORT0 _DD_MAKEMASK1(24) 459#define M_CSR15_GP_INTPORT1 _DD_MAKEMASK1(25) 460#define M_CSR15_GP_RXMATCH _DD_MAKEMASK1(26) 461#define M_CSR15_GP_CONTROLWRITE _DD_MAKEMASK1(27) 462#define M_CSR15_GP_GPINT0 _DD_MAKEMASK1(28) 463#define M_CSR15_GP_GPINT1 _DD_MAKEMASK1(29) 464#define M_CSR15_GP_RXMATCHINT _DD_MAKEMASK1(30) 465 466#define M_CSR15_DEFAULT_VALUE 0x00050008 467#define M_CSR15_CONFIG_GEPS_LEDS 0x08af0000 468 469/* (CSR15: 21041 only) */ 470 471#define M_CSR15_GP_LED1ENB _DD_MAKEMASK1(6) 472#define M_CSR15_GP_LED1VALUE _DD_MAKEMASK1(7) 473#define M_CSR15_GP_TSTCLK _DD_MAKEMASK1(8) 474#define M_CSR15_GP_FORCEUNSQ _DD_MAKEMASK1(9) 475#define M_CSR15_GP_FORCEFAIL _DD_MAKEMASK1(10) 476#define M_CSR15_GP_LEDSTRDIS _DD_MAKEMASK1(11) 477#define M_CSR15_GP_PLLTEST _DD_MAKEMASK1(12) 478#define M_CSR15_GP_FORCERXLOW _DD_MAKEMASK1(13) 479#define M_CSR15_GP_LED2ENB _DD_MAKEMASK1(14) 480#define M_CSR15_GP_LED2VALUE _DD_MAKEMASK1(15) 481 482 483/* CSR15: Watchdog Timer register (21140) */ 484 485#define M_CSR15_WT_JABBER _DD_MAKEMASK1(0) 486#define M_CSR15_WT_HOSTUNJAB _DD_MAKEMASK1(1) 487#define M_CSR15_WT_JABBERCLK _DD_MAKEMASK1(2) 488#define M_CSR15_WT_RXWATCHDIS _DD_MAKEMASK1(4) 489#define M_CSR15_WT_RXWATCHREL _DD_MAKEMASK1(5) 490 491 492/* ********************************************************************* 493 * Receive Descriptors 494 ********************************************************************* */ 495 496#define M_RDES0_OWNSYS 0 497#define M_RDES0_OWNADAP _DD_MAKEMASK1(31) 498 499#define S_RDES0_FRAMELEN 16 500#define M_RDES0_FRAMELEN _DD_MAKEMASK(14,S_RDES0_FRAMELEN) 501#define V_RDES0_FRAMELEN(x) _DD_MAKEVALUE(x,S_RDES0_FRAMELEN) 502#define G_RDES0_FRAMELEN(x) _DD_GETVALUE(x,S_RDES0_FRAMELEN,M_RDES0_FRAMELEN) 503 504#define M_RDES0_ZERO _DD_MAKEMASK1(0) 505#define M_RDES0_OVFL _DD_MAKEMAKS1(0) /* 21041 only */ 506#define M_RDES0_CRCERR _DD_MAKEMASK1(1) 507#define M_RDES0_DRIBBLE _DD_MAKEMASK1(2) 508#define M_RDES0_MIIERROR _DD_MAKEMASK1(3) /* not 21041 */ 509#define M_RDES0_WDOGTIMER _DD_MAKEMASK1(4) 510#define M_RDES0_FRAMETYPE _DD_MAKEMASK1(5) 511#define M_RDES0_COLLSEEN _DD_MAKEMASK1(6) 512#define M_RDES0_FRAMETOOLONG _DD_MAKEMASK1(7) 513#define M_RDES0_LASTDES _DD_MAKEMASK1(8) 514#define M_RDES0_FIRSTDES _DD_MAKEMASK1(9) 515#define M_RDES0_MCASTFRAME _DD_MAKEMASK1(10) 516#define M_RDES0_RUNTFRAME _DD_MAKEMASK1(11) 517 518#define S_RDES0_DATATYPE 12 519#define M_RDES0_DATATYPE _DD_MAKEMASK(2,S_RDES0_DATATYPE) 520#define V_RDES0_DATATYPE(x) _DD_MAKEVALUE(x,S_RDES0_DATATYPE) 521#define G_RDES0_DATATYPE(x) _DD_GETVALUE(x,S_RDES0_DATATYPE,M_RDES0_DATATYPE) 522 523#define M_RDES0_ERROR _DD_MAKEMASK1(14) 524#define M_RDES0_ERRORSUM _DD_MAKEMASK1(15) 525#define M_RDES0_FILTFAIL _DD_MAKEMASK1(30) /* not 21041 */ 526 527#define S_RDES1_BUF1SIZE 0 528#define M_RDES1_BUF1SIZE _DD_MAKEMASK(11,S_TDES1_BUF1SIZE) 529#define V_RDES1_BUF1SIZE(x) _DD_MAKEVALUE(x,S_RDES1_BUF1SIZE) 530#define G_RDES1_BUF1SIZE(x) _DD_GETVALUE(x,S_RDES1_BUF1SIZE,M_RDES1_BUF1SIZE) 531 532#define S_RDES1_BUF2SIZE 11 533#define M_RDES1_BUF2SIZE _DD_MAKEMASK(11,S_TDES2_BUF2SIZE) 534#define V_RDES1_BUF2SIZE(x) _DD_MAKEVALUE(x,S_RDES1_BUF2SIZE) 535#define G_RDES1_BUF2SIZE(x) _DD_GETVALUE(x,S_RDES1_BUF2SIZE,M_RDES1_BUF2SIZE) 536 537#define M_RDES1_CHAINED _DD_MAKEMASK1(24) 538#define M_RDES1_ENDOFRING _DD_MAKEMASK1(25) 539 540#define M_RDES2_BUFADDR 0xFFFFFFFF 541#define M_RDES3_BUFADDR 0xFFFFFFFF 542 543/* ********************************************************************* 544 * Transmit Descriptors 545 ********************************************************************* */ 546 547#define M_TDES0_OWNSYS 0 548#define M_TDES0_OWNADAP _DD_MAKEMASK1(31) 549 550#define M_TDES0_DEFERRED _DD_MAKEMASK1(0) 551#define M_TDES0_UNDERFLOW _DD_MAKEMASK1(1) 552#define M_TDES0_LINK_FAIL _DD_MAKEMASK1(2) 553 554#define S_TDES0_COLLCOUNT 3 555#define M_TDES0_COLLCOUNT _DD_MAKEMASK(4,S_TDES0_COLLCOUNT) 556#define V_TDES0_COLLCOUNT(x) _DD_MAKEVALUE(x,S_TDES0_COLLCOUNT) 557#define G_TDES0_COLLCOUNT(x) _DD_GETVALUE(x,S_TDES0_COLLCOUNT,M_TDES0_COLLCOUNT) 558 559#define M_TDES0_HEARTBEAT_FAIL _DD_MAKEMASK1(7) 560#define M_TDES0_EXCESSIVE_COLLISIONS _DD_MAKEMASK1(8) 561#define M_TDES0_LATE_COLLISION _DD_MAKEMASK1(9) 562#define M_TDES0_NO_CARRIER _DD_MAKEMASK1(10) 563#define M_TDES0_LOSS_OF_CARRIER _DD_MAKEMASK1(11) 564#define M_TDES0_TX_JABBER_TIMEOUT _DD_MAKEMASK1(14) 565#define M_TDES0_ERROR_SUMMARY _DD_MAKEMASK1(15) 566#define M_TDES0_OWN_BIT _DD_MAKEMASK1(31) 567 568#define S_TDES1_BUF1SIZE 0 569#define M_TDES1_BUF1SIZE _DD_MAKEMASK(11,S_TDES1_BUF1SIZE) 570#define V_TDES1_BUF1SIZE(x) _DD_MAKEVALUE(x,S_TDES1_BUF1SIZE) 571#define G_TDES1_BUF1SIZE(x) _DD_GETVALUE(x,S_TDES1_BUF1SIZE,M_TDES1_BUF1SIZE) 572 573#define S_TDES1_BUF2SIZE 11 574#define M_TDES1_BUF2SIZE _DD_MAKEMASK(11,S_TDES2_BUF2SIZE) 575#define V_TDES1_BUF2SIZE(x) _DD_MAKEVALUE(x,S_TDES1_BUF2SIZE) 576#define G_TDES1_BUF2SIZE(x) _DD_GETVALUE(x,S_TDES1_BUF2SIZE,M_TDES1_BUF2SIZE) 577 578#define M_TDES1_FT0 _DD_MAKEMASK1(22) 579#define M_TDES1_NOPADDING _DD_MAKEMASK1(23) 580#define M_TDES1_CHAINED _DD_MAKEMASK1(24) 581#define M_TDES1_ENDOFRING _DD_MAKEMASK1(25) 582#define M_TDES1_NOADDCRC _DD_MAKEMASK1(26) 583#define M_TDES1_SETUP _DD_MAKEMASK1(27) 584#define M_TDES1_FT1 _DD_MAKEMASK1(28) 585#define M_TDES1_FIRSTSEG _DD_MAKEMASK1(29) 586#define M_TDES1_LASTSEG _DD_MAKEMASK1(30) 587#define M_TDES1_INTERRUPT _DD_MAKEMASK1(31) 588 589#define M_TDES2_BUFADDR 0xFFFFFFFF 590#define M_TDES3_BUFADDR 0xFFFFFFFF 591 592 593/* CAM */ 594 595#define CAM_HASH_THRESHOLD 14 596#define CAM_PERFECT_ENTRIES 16 597 598#define CAM_SETUP_BUFFER_SIZE 192 599 600#endif /* _DC21143_H_ */ 601