00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 FILE_LICENCE ( GPL2_OR_LATER );
00039
00040 #ifndef _AMD811E_H
00041 #define _AMD811E_H
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054 #define ASF_STAT 0x00
00055 #define CHIPID 0x04
00056 #define MIB_DATA 0x10
00057 #define MIB_ADDR 0x14
00058 #define STAT0 0x30
00059 #define INT0 0x38
00060 #define INTEN0 0x40
00061 #define CMD0 0x48
00062 #define CMD2 0x50
00063 #define CMD3 0x54
00064 #define CMD7 0x64
00065
00066 #define CTRL1 0x6C
00067 #define CTRL2 0x70
00068
00069 #define XMT_RING_LIMIT 0x7C
00070
00071 #define AUTOPOLL0 0x88
00072 #define AUTOPOLL1 0x8A
00073 #define AUTOPOLL2 0x8C
00074 #define AUTOPOLL3 0x8E
00075 #define AUTOPOLL4 0x90
00076 #define AUTOPOLL5 0x92
00077
00078 #define AP_VALUE 0x98
00079 #define DLY_INT_A 0xA8
00080 #define DLY_INT_B 0xAC
00081
00082 #define FLOW_CONTROL 0xC8
00083 #define PHY_ACCESS 0xD0
00084
00085 #define STVAL 0xD8
00086
00087 #define XMT_RING_BASE_ADDR0 0x100
00088 #define XMT_RING_BASE_ADDR1 0x108
00089 #define XMT_RING_BASE_ADDR2 0x110
00090 #define XMT_RING_BASE_ADDR3 0x118
00091
00092 #define RCV_RING_BASE_ADDR0 0x120
00093
00094 #define PMAT0 0x190
00095 #define PMAT1 0x194
00096
00097
00098
00099 #define XMT_RING_LEN0 0x140
00100 #define XMT_RING_LEN1 0x144
00101 #define XMT_RING_LEN2 0x148
00102 #define XMT_RING_LEN3 0x14C
00103
00104 #define RCV_RING_LEN0 0x150
00105
00106 #define SRAM_SIZE 0x178
00107 #define SRAM_BOUNDARY 0x17A
00108
00109
00110
00111 #define PADR 0x160
00112
00113 #define IFS1 0x18C
00114 #define IFS 0x18D
00115 #define IPG 0x18E
00116
00117
00118 #define LADRF 0x168
00119
00120
00121
00122 typedef enum {
00123
00124 ASF_INIT_DONE = (1 << 1),
00125 ASF_INIT_PRESENT = (1 << 0),
00126
00127 }STAT_ASF_BITS;
00128
00129 typedef enum {
00130
00131 MIB_CMD_ACTIVE = (1 << 15 ),
00132 MIB_RD_CMD = (1 << 13 ),
00133 MIB_CLEAR = (1 << 12 ),
00134 MIB_ADDRESS = (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3)|
00135 (1 << 4) | (1 << 5),
00136 }MIB_ADDR_BITS;
00137
00138
00139 typedef enum {
00140
00141 PMAT_DET = (1 << 12),
00142 MP_DET = (1 << 11),
00143 LC_DET = (1 << 10),
00144 SPEED_MASK = (1 << 9)|(1 << 8)|(1 << 7),
00145 FULL_DPLX = (1 << 6),
00146 LINK_STATS = (1 << 5),
00147 AUTONEG_COMPLETE = (1 << 4),
00148 MIIPD = (1 << 3),
00149 RX_SUSPENDED = (1 << 2),
00150 TX_SUSPENDED = (1 << 1),
00151 RUNNING = (1 << 0),
00152
00153 }STAT0_BITS;
00154
00155 #define PHY_SPEED_10 0x2
00156 #define PHY_SPEED_100 0x3
00157
00158
00159 typedef enum {
00160
00161 INTR = (1 << 31),
00162 PCSINT = (1 << 28),
00163 LCINT = (1 << 27),
00164 APINT5 = (1 << 26),
00165 APINT4 = (1 << 25),
00166 APINT3 = (1 << 24),
00167 TINT_SUM = (1 << 23),
00168 APINT2 = (1 << 22),
00169 APINT1 = (1 << 21),
00170 APINT0 = (1 << 20),
00171 MIIPDTINT = (1 << 19),
00172 MCCINT = (1 << 17),
00173 MREINT = (1 << 16),
00174 RINT_SUM = (1 << 15),
00175 SPNDINT = (1 << 14),
00176 MPINT = (1 << 13),
00177 SINT = (1 << 12),
00178 TINT3 = (1 << 11),
00179 TINT2 = (1 << 10),
00180 TINT1 = (1 << 9),
00181 TINT0 = (1 << 8),
00182 UINT = (1 << 7),
00183 STINT = (1 << 4),
00184 RINT0 = (1 << 0),
00185
00186 }INT0_BITS;
00187
00188 typedef enum {
00189
00190 VAL3 = (1 << 31),
00191 VAL2 = (1 << 23),
00192 VAL1 = (1 << 15),
00193 VAL0 = (1 << 7),
00194
00195 }VAL_BITS;
00196
00197 typedef enum {
00198
00199
00200 LCINTEN = (1 << 27),
00201 APINT5EN = (1 << 26),
00202 APINT4EN = (1 << 25),
00203 APINT3EN = (1 << 24),
00204
00205 APINT2EN = (1 << 22),
00206 APINT1EN = (1 << 21),
00207 APINT0EN = (1 << 20),
00208 MIIPDTINTEN = (1 << 19),
00209 MCCIINTEN = (1 << 18),
00210 MCCINTEN = (1 << 17),
00211 MREINTEN = (1 << 16),
00212
00213 SPNDINTEN = (1 << 14),
00214 MPINTEN = (1 << 13),
00215 TINTEN3 = (1 << 11),
00216 SINTEN = (1 << 12),
00217 TINTEN2 = (1 << 10),
00218 TINTEN1 = (1 << 9),
00219 TINTEN0 = (1 << 8),
00220
00221 STINTEN = (1 << 4),
00222 RINTEN0 = (1 << 0),
00223
00224 INTEN0_CLEAR = 0x1F7F7F1F,
00225
00226 }INTEN0_BITS;
00227
00228 typedef enum {
00229
00230 RDMD0 = (1 << 16),
00231
00232 TDMD3 = (1 << 11),
00233 TDMD2 = (1 << 10),
00234 TDMD1 = (1 << 9),
00235 TDMD0 = (1 << 8),
00236
00237 UINTCMD = (1 << 6),
00238 RX_FAST_SPND = (1 << 5),
00239 TX_FAST_SPND = (1 << 4),
00240 RX_SPND = (1 << 3),
00241 TX_SPND = (1 << 2),
00242 INTREN = (1 << 1),
00243 RUN = (1 << 0),
00244
00245 CMD0_CLEAR = 0x000F0F7F,
00246
00247 }CMD0_BITS;
00248
00249 typedef enum {
00250
00251
00252 CONDUIT_MODE = (1 << 29),
00253
00254 RPA = (1 << 19),
00255 DRCVPA = (1 << 18),
00256 DRCVBC = (1 << 17),
00257 PROM = (1 << 16),
00258
00259 ASTRP_RCV = (1 << 13),
00260 RCV_DROP0 = (1 << 12),
00261 EMBA = (1 << 11),
00262 DXMT2PD = (1 << 10),
00263 LTINTEN = (1 << 9),
00264 DXMTFCS = (1 << 8),
00265
00266 APAD_XMT = (1 << 6),
00267 DRTY = (1 << 5),
00268 INLOOP = (1 << 4),
00269 EXLOOP = (1 << 3),
00270 REX_RTRY = (1 << 2),
00271 REX_UFLO = (1 << 1),
00272 REX_LCOL = (1 << 0),
00273
00274 CMD2_CLEAR = 0x3F7F3F7F,
00275
00276 }CMD2_BITS;
00277
00278 typedef enum {
00279
00280
00281 ASF_INIT_DONE_ALIAS = (1 << 29),
00282
00283 JUMBO = (1 << 21),
00284 VSIZE = (1 << 20),
00285 VLONLY = (1 << 19),
00286 VL_TAG_DEL = (1 << 18),
00287
00288 EN_PMGR = (1 << 14),
00289 INTLEVEL = (1 << 13),
00290 FORCE_FULL_DUPLEX = (1 << 12),
00291 FORCE_LINK_STATUS = (1 << 11),
00292 APEP = (1 << 10),
00293 MPPLBA = (1 << 9),
00294
00295 RESET_PHY_PULSE = (1 << 2),
00296 RESET_PHY = (1 << 1),
00297 PHY_RST_POL = (1 << 0),
00298
00299 }CMD3_BITS;
00300
00301
00302 typedef enum {
00303
00304
00305 PMAT_SAVE_MATCH = (1 << 4),
00306 PMAT_MODE = (1 << 3),
00307 MPEN_SW = (1 << 1),
00308 LCMODE_SW = (1 << 0),
00309
00310 CMD7_CLEAR = 0x0000001B
00311
00312 }CMD7_BITS;
00313
00314
00315 typedef enum {
00316
00317 RESET_PHY_WIDTH = (0xF << 16) | (0xF<< 20),
00318 XMTSP_MASK = (1 << 9) | (1 << 8),
00319 XMTSP_128 = (1 << 9),
00320 XMTSP_64 = (1 << 8),
00321 CACHE_ALIGN = (1 << 4),
00322 BURST_LIMIT_MASK = (0xF << 0 ),
00323 CTRL1_DEFAULT = 0x00010111,
00324
00325 }CTRL1_BITS;
00326
00327 typedef enum {
00328
00329 FMDC_MASK = (1 << 9)|(1 << 8),
00330 XPHYRST = (1 << 7),
00331 XPHYANE = (1 << 6),
00332 XPHYFD = (1 << 5),
00333 XPHYSP = (1 << 4) | (1 << 3),
00334 APDW_MASK = (1 << 2) | (1 << 1) | (1 << 0),
00335
00336 }CTRL2_BITS;
00337
00338
00339 typedef enum {
00340
00341 XMT_RING2_LIMIT = (0xFF << 16),
00342 XMT_RING1_LIMIT = (0xFF << 8),
00343 XMT_RING0_LIMIT = (0xFF << 0),
00344
00345 }XMT_RING_LIMIT_BITS;
00346
00347 typedef enum {
00348
00349 AP_REG0_EN = (1 << 15),
00350 AP_REG0_ADDR_MASK = (0xF << 8) |(1 << 12),
00351 AP_PHY0_ADDR_MASK = (0xF << 0) |(1 << 4),
00352
00353 }AUTOPOLL0_BITS;
00354
00355
00356 typedef enum {
00357
00358 AP_REG1_EN = (1 << 15),
00359 AP_REG1_ADDR_MASK = (0xF << 8) |(1 << 12),
00360 AP_PRE_SUP1 = (1 << 6),
00361 AP_PHY1_DFLT = (1 << 5),
00362 AP_PHY1_ADDR_MASK = (0xF << 0) |(1 << 4),
00363
00364 }AUTOPOLL1_BITS;
00365
00366
00367 typedef enum {
00368
00369 AP_REG2_EN = (1 << 15),
00370 AP_REG2_ADDR_MASK = (0xF << 8) |(1 << 12),
00371 AP_PRE_SUP2 = (1 << 6),
00372 AP_PHY2_DFLT = (1 << 5),
00373 AP_PHY2_ADDR_MASK = (0xF << 0) |(1 << 4),
00374
00375 }AUTOPOLL2_BITS;
00376
00377 typedef enum {
00378
00379 AP_REG3_EN = (1 << 15),
00380 AP_REG3_ADDR_MASK = (0xF << 8) |(1 << 12),
00381 AP_PRE_SUP3 = (1 << 6),
00382 AP_PHY3_DFLT = (1 << 5),
00383 AP_PHY3_ADDR_MASK = (0xF << 0) |(1 << 4),
00384
00385 }AUTOPOLL3_BITS;
00386
00387
00388 typedef enum {
00389
00390 AP_REG4_EN = (1 << 15),
00391 AP_REG4_ADDR_MASK = (0xF << 8) |(1 << 12),
00392 AP_PRE_SUP4 = (1 << 6),
00393 AP_PHY4_DFLT = (1 << 5),
00394 AP_PHY4_ADDR_MASK = (0xF << 0) |(1 << 4),
00395
00396 }AUTOPOLL4_BITS;
00397
00398
00399 typedef enum {
00400
00401 AP_REG5_EN = (1 << 15),
00402 AP_REG5_ADDR_MASK = (0xF << 8) |(1 << 12),
00403 AP_PRE_SUP5 = (1 << 6),
00404 AP_PHY5_DFLT = (1 << 5),
00405 AP_PHY5_ADDR_MASK = (0xF << 0) |(1 << 4),
00406
00407 }AUTOPOLL5_BITS;
00408
00409
00410
00411
00412
00413 typedef enum {
00414
00415 AP_VAL_ACTIVE = (1 << 31),
00416 AP_VAL_RD_CMD = ( 1 << 29),
00417 AP_ADDR = (1 << 18)|(1 << 17)|(1 << 16),
00418 AP_VAL = (0xF << 0) | (0xF << 4) |( 0xF << 8) |
00419 (0xF << 12),
00420
00421 }AP_VALUE_BITS;
00422
00423 typedef enum {
00424
00425 DLY_INT_A_R3 = (1 << 31),
00426 DLY_INT_A_R2 = (1 << 30),
00427 DLY_INT_A_R1 = (1 << 29),
00428 DLY_INT_A_R0 = (1 << 28),
00429 DLY_INT_A_T3 = (1 << 27),
00430 DLY_INT_A_T2 = (1 << 26),
00431 DLY_INT_A_T1 = (1 << 25),
00432 DLY_INT_A_T0 = ( 1 << 24),
00433 EVENT_COUNT_A = (0xF << 16) | (0x1 << 20),
00434 MAX_DELAY_TIME_A = (0xF << 0) | (0xF << 4) | (1 << 8)|
00435 (1 << 9) | (1 << 10),
00436
00437 }DLY_INT_A_BITS;
00438
00439 typedef enum {
00440
00441 DLY_INT_B_R3 = (1 << 31),
00442 DLY_INT_B_R2 = (1 << 30),
00443 DLY_INT_B_R1 = (1 << 29),
00444 DLY_INT_B_R0 = (1 << 28),
00445 DLY_INT_B_T3 = (1 << 27),
00446 DLY_INT_B_T2 = (1 << 26),
00447 DLY_INT_B_T1 = (1 << 25),
00448 DLY_INT_B_T0 = ( 1 << 24),
00449 EVENT_COUNT_B = (0xF << 16) | (0x1 << 20),
00450 MAX_DELAY_TIME_B = (0xF << 0) | (0xF << 4) | (1 << 8)|
00451 (1 << 9) | (1 << 10),
00452 }DLY_INT_B_BITS;
00453
00454
00455
00456 typedef enum {
00457
00458 PAUSE_LEN_CHG = (1 << 30),
00459 FTPE = (1 << 22),
00460 FRPE = (1 << 21),
00461 NAPA = (1 << 20),
00462 NPA = (1 << 19),
00463 FIXP = ( 1 << 18),
00464 FCCMD = ( 1 << 16),
00465 PAUSE_LEN = (0xF << 0) | (0xF << 4) |( 0xF << 8) | (0xF << 12),
00466
00467 }FLOW_CONTROL_BITS;
00468
00469
00470 typedef enum {
00471
00472 PHY_CMD_ACTIVE = (1 << 31),
00473 PHY_WR_CMD = (1 << 30),
00474 PHY_RD_CMD = (1 << 29),
00475 PHY_RD_ERR = (1 << 28),
00476 PHY_PRE_SUP = (1 << 27),
00477 PHY_ADDR = (1 << 21) | (1 << 22) | (1 << 23)|
00478 (1 << 24) |(1 << 25),
00479 PHY_REG_ADDR = (1 << 16) | (1 << 17) | (1 << 18)| (1 << 19) | (1 << 20),
00480 PHY_DATA = (0xF << 0)|(0xF << 4) |(0xF << 8)|
00481 (0xF << 12),
00482
00483 }PHY_ACCESS_BITS;
00484
00485
00486
00487 typedef enum {
00488 PMR_ACTIVE = (1 << 31),
00489 PMR_WR_CMD = (1 << 30),
00490 PMR_RD_CMD = (1 << 29),
00491 PMR_BANK = (1 <<28),
00492 PMR_ADDR = (0xF << 16)|(1 << 20)|(1 << 21)|
00493 (1 << 22),
00494 PMR_B4 = (0xF << 0) | (0xF << 4),
00495 }PMAT0_BITS;
00496
00497
00498
00499 typedef enum {
00500 PMR_B3 = (0xF << 24) | (0xF <<28),
00501 PMR_B2 = (0xF << 16) |(0xF << 20),
00502 PMR_B1 = (0xF << 8) | (0xF <<12),
00503 PMR_B0 = (0xF << 0)|(0xF << 4),
00504 }PMAT1_BITS;
00505
00506
00507
00508
00509
00510
00511
00512 #define rcv_miss_pkts 0x00
00513 #define rcv_octets 0x01
00514 #define rcv_broadcast_pkts 0x02
00515 #define rcv_multicast_pkts 0x03
00516 #define rcv_undersize_pkts 0x04
00517 #define rcv_oversize_pkts 0x05
00518 #define rcv_fragments 0x06
00519 #define rcv_jabbers 0x07
00520 #define rcv_unicast_pkts 0x08
00521 #define rcv_alignment_errors 0x09
00522 #define rcv_fcs_errors 0x0A
00523 #define rcv_good_octets 0x0B
00524 #define rcv_mac_ctrl 0x0C
00525 #define rcv_flow_ctrl 0x0D
00526 #define rcv_pkts_64_octets 0x0E
00527 #define rcv_pkts_65to127_octets 0x0F
00528 #define rcv_pkts_128to255_octets 0x10
00529 #define rcv_pkts_256to511_octets 0x11
00530 #define rcv_pkts_512to1023_octets 0x12
00531 #define rcv_pkts_1024to1518_octets 0x13
00532 #define rcv_unsupported_opcode 0x14
00533 #define rcv_symbol_errors 0x15
00534 #define rcv_drop_pkts_ring1 0x16
00535 #define rcv_drop_pkts_ring2 0x17
00536 #define rcv_drop_pkts_ring3 0x18
00537 #define rcv_drop_pkts_ring4 0x19
00538 #define rcv_jumbo_pkts 0x1A
00539
00540 #define xmt_underrun_pkts 0x20
00541 #define xmt_octets 0x21
00542 #define xmt_packets 0x22
00543 #define xmt_broadcast_pkts 0x23
00544 #define xmt_multicast_pkts 0x24
00545 #define xmt_collisions 0x25
00546 #define xmt_unicast_pkts 0x26
00547 #define xmt_one_collision 0x27
00548 #define xmt_multiple_collision 0x28
00549 #define xmt_deferred_transmit 0x29
00550 #define xmt_late_collision 0x2A
00551 #define xmt_excessive_defer 0x2B
00552 #define xmt_loss_carrier 0x2C
00553 #define xmt_excessive_collision 0x2D
00554 #define xmt_back_pressure 0x2E
00555 #define xmt_flow_ctrl 0x2F
00556 #define xmt_pkts_64_octets 0x30
00557 #define xmt_pkts_65to127_octets 0x31
00558 #define xmt_pkts_128to255_octets 0x32
00559 #define xmt_pkts_256to511_octets 0x33
00560 #define xmt_pkts_512to1023_octets 0x34
00561 #define xmt_pkts_1024to1518_octet 0x35
00562 #define xmt_oversize_pkts 0x36
00563 #define xmt_jumbo_pkts 0x37
00564
00565
00566 #define DEFAULT_IPG 0x60
00567 #define IFS1_DELTA 36
00568 #define IPG_CONVERGE_JIFFIES (HZ/2)
00569 #define IPG_STABLE_TIME 5
00570 #define MIN_IPG 96
00571 #define MAX_IPG 255
00572 #define IPG_STEP 16
00573 #define CSTATE 1
00574 #define SSTATE 2
00575
00576
00577 typedef enum {
00578
00579 OWN_BIT = (1 << 15),
00580 ADD_FCS_BIT = (1 << 13),
00581 LTINT_BIT = (1 << 12),
00582 STP_BIT = (1 << 9),
00583 ENP_BIT = (1 << 8),
00584 KILL_BIT = (1 << 6),
00585 TCC_VLAN_INSERT = (1 << 1),
00586 TCC_VLAN_REPLACE = (1 << 1) |( 1<< 0),
00587
00588 }TX_FLAG_BITS;
00589
00590 typedef enum {
00591 ERR_BIT = (1 << 14),
00592 FRAM_BIT = (1 << 13),
00593 OFLO_BIT = (1 << 12),
00594 CRC_BIT = (1 << 11),
00595 PAM_BIT = (1 << 6),
00596 LAFM_BIT = (1 << 5),
00597 BAM_BIT = (1 << 4),
00598 TT_VLAN_TAGGED = (1 << 3) |(1 << 2),
00599 TT_PRTY_TAGGED = (1 << 3),
00600
00601 }RX_FLAG_BITS;
00602
00603 #define RESET_RX_FLAGS 0x0000
00604 #define TT_MASK 0x000c
00605 #define TCC_MASK 0x0003
00606
00607
00608 #define AMD8111E_REG_DUMP_LEN 13*sizeof(u32)
00609
00610
00611 #define CRC32 0xedb88320
00612 #define INITCRC 0xFFFFFFFF
00613
00614
00615
00616 #define amd8111e_writeq(_UlData,_memMap) \
00617 writel(*(u32*)(&_UlData), _memMap); \
00618 writel(*(u32*)((u8*)(&_UlData)+4), _memMap+4)
00619
00620
00621 typedef enum {
00622 SPEED_AUTONEG,
00623 SPEED10_HALF,
00624 SPEED10_FULL,
00625 SPEED100_HALF,
00626 SPEED100_FULL,
00627 }EXT_PHY_OPTION;
00628
00629
00630 #endif
00631