amd8111e.h

Go to the documentation of this file.
00001 /*
00002  * Advanced  Micro Devices Inc. AMD8111E Linux Network Driver 
00003  * Copyright (C) 2003 Advanced Micro Devices 
00004  *
00005  * This program is free software; you can redistribute it and/or modify
00006  * it under the terms of the GNU General Public License as published by
00007  * the Free Software Foundation; either version 2 of the License, or
00008  * (at your option) any later version.
00009  *
00010  * This program is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  * GNU General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU General Public License
00016  * along with this program; if not, write to the Free Software
00017  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 
00018  * USA
00019 
00020 Module Name:
00021 
00022     amd8111e.h
00023 
00024 Abstract:
00025         
00026          AMD8111 based 10/100 Ethernet Controller driver definitions. 
00027 
00028 Environment:
00029     
00030         Kernel Mode
00031 
00032 Revision History:
00033         3.0.0
00034            Initial Revision.
00035         3.0.1
00036 */
00037 
00038 FILE_LICENCE ( GPL2_OR_LATER );
00039 
00040 #ifndef _AMD811E_H
00041 #define _AMD811E_H
00042 
00043 /* Command style register access
00044 
00045 Registers CMD0, CMD2, CMD3,CMD7 and INTEN0 uses a write access technique called command style access. It allows the write to selected bits of this register without altering the bits that are not selected. Command style registers are divided into 4 bytes that can be written independently. Higher order bit of each byte is the  value bit that specifies the value that will be written into the selected bits of register. 
00046 
00047 eg., if the value 10011010b is written into the least significant byte of a command style register, bits 1,3 and 4 of the register will be set to 1, and the other bits will not be altered. If the value 00011010b is written into the same byte, bits 1,3 and 4 will be cleared to 0 and the other bits will not be altered.
00048 
00049 */
00050 
00051 /*  Offset for Memory Mapped Registers. */
00052 /* 32 bit registers */
00053 
00054 #define  ASF_STAT               0x00    /* ASF status register */
00055 #define CHIPID                  0x04    /* Chip ID regsiter */
00056 #define MIB_DATA                0x10    /* MIB data register */
00057 #define MIB_ADDR                0x14    /* MIB address register */
00058 #define STAT0                   0x30    /* Status0 register */
00059 #define INT0                    0x38    /* Interrupt0 register */
00060 #define INTEN0                  0x40    /* Interrupt0  enable register*/
00061 #define CMD0                    0x48    /* Command0 register */
00062 #define CMD2                    0x50    /* Command2 register */
00063 #define CMD3                    0x54    /* Command3 resiter */
00064 #define CMD7                    0x64    /* Command7 register */
00065 
00066 #define CTRL1                   0x6C    /* Control1 register */
00067 #define CTRL2                   0x70    /* Control2 register */
00068 
00069 #define XMT_RING_LIMIT          0x7C    /* Transmit ring limit register */
00070 
00071 #define AUTOPOLL0               0x88    /* Auto-poll0 register */
00072 #define AUTOPOLL1               0x8A    /* Auto-poll1 register */
00073 #define AUTOPOLL2               0x8C    /* Auto-poll2 register */
00074 #define AUTOPOLL3               0x8E    /* Auto-poll3 register */
00075 #define AUTOPOLL4               0x90    /* Auto-poll4 register */
00076 #define AUTOPOLL5               0x92    /* Auto-poll5 register */
00077 
00078 #define AP_VALUE                0x98    /* Auto-poll value register */
00079 #define DLY_INT_A               0xA8    /* Group A delayed interrupt register */
00080 #define DLY_INT_B               0xAC    /* Group B delayed interrupt register */
00081 
00082 #define FLOW_CONTROL            0xC8    /* Flow control register */
00083 #define PHY_ACCESS              0xD0    /* PHY access register */
00084 
00085 #define STVAL                   0xD8    /* Software timer value register */
00086 
00087 #define XMT_RING_BASE_ADDR0     0x100   /* Transmit ring0 base addr register */
00088 #define XMT_RING_BASE_ADDR1     0x108   /* Transmit ring1 base addr register */
00089 #define XMT_RING_BASE_ADDR2     0x110   /* Transmit ring2 base addr register */
00090 #define XMT_RING_BASE_ADDR3     0x118   /* Transmit ring2 base addr register */
00091 
00092 #define RCV_RING_BASE_ADDR0     0x120   /* Transmit ring0 base addr register */
00093 
00094 #define PMAT0                   0x190   /* OnNow pattern register0 */
00095 #define PMAT1                   0x194   /* OnNow pattern register1 */
00096 
00097 /* 16bit registers */
00098 
00099 #define XMT_RING_LEN0           0x140   /* Transmit Ring0 length register */
00100 #define XMT_RING_LEN1           0x144   /* Transmit Ring1 length register */
00101 #define XMT_RING_LEN2           0x148   /* Transmit Ring2 length register */
00102 #define XMT_RING_LEN3           0x14C   /* Transmit Ring3 length register */
00103 
00104 #define RCV_RING_LEN0           0x150   /* Receive Ring0 length register */
00105 
00106 #define SRAM_SIZE               0x178   /* SRAM size register */
00107 #define SRAM_BOUNDARY           0x17A   /* SRAM boundary register */
00108 
00109 /* 48bit register */
00110 
00111 #define PADR                    0x160   /* Physical address register */
00112 
00113 #define IFS1                    0x18C   /* Inter-frame spacing Part1 register */
00114 #define IFS                     0x18D   /* Inter-frame spacing register */
00115 #define IPG                     0x18E   /* Inter-frame gap register */
00116 /* 64bit register */
00117 
00118 #define LADRF                   0x168   /* Logical address filter register */
00119 
00120 
00121 /* Register Bit Definitions */
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 /* INT0                         0x38, 32bit register */
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),   /* VAL bit for byte 3 */
00191         VAL2                    = (1 << 23),   /* VAL bit for byte 2 */
00192         VAL1                    = (1 << 15),   /* VAL bit for byte 1 */
00193         VAL0                    = (1 << 7),    /* VAL bit for byte 0 */
00194 
00195 }VAL_BITS;
00196 
00197 typedef enum {
00198 
00199         /* VAL3 */
00200         LCINTEN                 = (1 << 27),
00201         APINT5EN                = (1 << 26),
00202         APINT4EN                = (1 << 25),
00203         APINT3EN                = (1 << 24),
00204         /* VAL2 */
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         /* VAL1 */
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         /* VAL0 */
00221         STINTEN                 = (1 << 4),
00222         RINTEN0                 = (1 << 0),
00223 
00224         INTEN0_CLEAR            = 0x1F7F7F1F, /* Command style register */
00225 
00226 }INTEN0_BITS;           
00227 
00228 typedef enum {
00229         /* VAL2 */
00230         RDMD0                   = (1 << 16),
00231         /* VAL1 */
00232         TDMD3                   = (1 << 11),
00233         TDMD2                   = (1 << 10),
00234         TDMD1                   = (1 << 9),
00235         TDMD0                   = (1 << 8),
00236         /* VAL0 */
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,   /* Command style register */    
00246 
00247 }CMD0_BITS;
00248 
00249 typedef enum {
00250 
00251         /* VAL3 */
00252         CONDUIT_MODE            = (1 << 29),
00253         /* VAL2 */
00254         RPA                     = (1 << 19),
00255         DRCVPA                  = (1 << 18),
00256         DRCVBC                  = (1 << 17),
00257         PROM                    = (1 << 16),
00258         /* VAL1 */
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         /* VAL0 */
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,   /* Command style register */
00275 
00276 }CMD2_BITS;
00277 
00278 typedef enum {
00279 
00280         /* VAL3 */
00281         ASF_INIT_DONE_ALIAS     = (1 << 29),
00282         /* VAL2 */
00283         JUMBO                   = (1 << 21),
00284         VSIZE                   = (1 << 20),    
00285         VLONLY                  = (1 << 19),
00286         VL_TAG_DEL              = (1 << 18),    
00287         /* VAL1 */
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         /* VAL0 */
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         /* VAL0 */
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    /* Command style register */
00311 
00312 }CMD7_BITS;
00313 
00314 
00315 typedef enum {
00316 
00317         RESET_PHY_WIDTH         = (0xF << 16) | (0xF<< 20), /* 0x00FF0000 */
00318         XMTSP_MASK              = (1 << 9) | (1 << 8),  /* 9:8 */
00319         XMTSP_128               = (1 << 9),     /* 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),    /* 9:8 */
00330         XPHYRST                 = (1 << 7),
00331         XPHYANE                 = (1 << 6),
00332         XPHYFD                  = (1 << 5),
00333         XPHYSP                  = (1 << 4) | (1 << 3),  /* 4:3 */
00334         APDW_MASK               = (1 << 2) | (1 << 1) | (1 << 0), /* 2:0 */
00335 
00336 }CTRL2_BITS;
00337 
00338 /* XMT_RING_LIMIT               0x7C, 32bit register */
00339 typedef enum {
00340 
00341         XMT_RING2_LIMIT         = (0xFF << 16), /* 23:16 */
00342         XMT_RING1_LIMIT         = (0xFF << 8),  /* 15:8 */
00343         XMT_RING0_LIMIT         = (0xFF << 0),  /* 7: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),/* 12:8 */
00351         AP_PHY0_ADDR_MASK       = (0xF << 0) |(1 << 4),/* 4:0 */
00352 
00353 }AUTOPOLL0_BITS;
00354 
00355 /* AUTOPOLL1                    0x8A, 16bit register */
00356 typedef enum {
00357 
00358         AP_REG1_EN              = (1 << 15),
00359         AP_REG1_ADDR_MASK       = (0xF << 8) |(1 << 12),/* 12:8 */
00360         AP_PRE_SUP1             = (1 << 6),
00361         AP_PHY1_DFLT            = (1 << 5),
00362         AP_PHY1_ADDR_MASK       = (0xF << 0) |(1 << 4),/* 4:0 */
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),/* 12:8 */
00371         AP_PRE_SUP2             = (1 << 6),
00372         AP_PHY2_DFLT            = (1 << 5),
00373         AP_PHY2_ADDR_MASK       = (0xF << 0) |(1 << 4),/* 4:0 */
00374 
00375 }AUTOPOLL2_BITS;
00376 
00377 typedef enum {
00378 
00379         AP_REG3_EN              = (1 << 15),
00380         AP_REG3_ADDR_MASK       = (0xF << 8) |(1 << 12),/* 12:8 */
00381         AP_PRE_SUP3             = (1 << 6),
00382         AP_PHY3_DFLT            = (1 << 5),
00383         AP_PHY3_ADDR_MASK       = (0xF << 0) |(1 << 4),/* 4:0 */
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),/* 12:8 */
00392         AP_PRE_SUP4             = (1 << 6),
00393         AP_PHY4_DFLT            = (1 << 5),
00394         AP_PHY4_ADDR_MASK       = (0xF << 0) |(1 << 4),/* 4:0 */
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),/* 12:8 */
00403         AP_PRE_SUP5             = (1 << 6),
00404         AP_PHY5_DFLT            = (1 << 5),
00405         AP_PHY5_ADDR_MASK       = (0xF << 0) |(1 << 4),/* 4:0 */
00406 
00407 }AUTOPOLL5_BITS;
00408 
00409 
00410 
00411 
00412 /* AP_VALUE                     0x98, 32bit ragister */
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), /* 18:16 */
00418         AP_VAL                  = (0xF << 0) | (0xF << 4) |( 0xF << 8) |
00419                                   (0xF << 12),  /* 15:0 */
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),/* 20:16 */
00434         MAX_DELAY_TIME_A        = (0xF << 0) | (0xF << 4) | (1 << 8)|
00435                                   (1 << 9) | (1 << 10), /* 10:0 */
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),/* 20:16 */
00450         MAX_DELAY_TIME_B        = (0xF << 0) | (0xF << 4) | (1 << 8)| 
00451                                   (1 << 9) | (1 << 10), /* 10:0 */
00452 }DLY_INT_B_BITS;
00453 
00454 
00455 /* FLOW_CONTROL                 0xC8, 32bit register */
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),  /* 15:0 */
00466 
00467 }FLOW_CONTROL_BITS;
00468 
00469 /* PHY_ ACCESS                  0xD0, 32bit register */
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),/* 25:21 */
00479         PHY_REG_ADDR            = (1 << 16) | (1 << 17) | (1 << 18)|                                                    (1 << 19) | (1 << 20),/* 20:16 */
00480         PHY_DATA                = (0xF << 0)|(0xF << 4) |(0xF << 8)|
00481                                         (0xF << 12),/* 15:0 */
00482 
00483 }PHY_ACCESS_BITS;
00484 
00485 
00486 /* PMAT0                        0x190,   32bit register */
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),/* 22:16 */
00494         PMR_B4                  = (0xF << 0) | (0xF << 4),/* 15:0 */
00495 }PMAT0_BITS;
00496 
00497 
00498 /* PMAT1                        0x194,   32bit register */
00499 typedef enum {
00500         PMR_B3                  = (0xF << 24) | (0xF <<28),/* 31:24 */
00501         PMR_B2                  = (0xF << 16) |(0xF << 20),/* 23:16 */
00502         PMR_B1                  = (0xF << 8) | (0xF <<12), /* 15:8 */
00503         PMR_B0                  = (0xF << 0)|(0xF << 4),/* 7:0 */
00504 }PMAT1_BITS;
00505 
00506 /************************************************************************/
00507 /*                                                                      */
00508 /*                      MIB counter definitions                         */
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 /* ipg parameters */
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 /* amd8111e decriptor flag definitions */
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),/* 0x000 */
00599         TT_PRTY_TAGGED  =       (1 << 3),/* 0x0008 */
00600 
00601 }RX_FLAG_BITS;
00602 
00603 #define RESET_RX_FLAGS          0x0000
00604 #define TT_MASK                 0x000c
00605 #define TCC_MASK                0x0003
00606 
00607 /* driver ioctl parameters */
00608 #define AMD8111E_REG_DUMP_LEN    13*sizeof(u32) 
00609 
00610 /* crc generator constants */
00611 #define CRC32 0xedb88320
00612 #define INITCRC 0xFFFFFFFF
00613 
00614 /* kernel provided writeq does not write 64 bits into the amd8111e device register instead writes only higher 32bits data into lower 32bits of the register.
00615 BUG? */
00616 #define  amd8111e_writeq(_UlData,_memMap)   \
00617                 writel(*(u32*)(&_UlData), _memMap);     \
00618                 writel(*(u32*)((u8*)(&_UlData)+4), _memMap+4)   
00619 
00620 /* maps the external speed options to internal value */
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 /* _AMD8111E_H */
00631 

Generated on Tue Apr 6 20:00:54 2010 for gPXE by  doxygen 1.5.7.1