~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/ipxe/src/drivers/net/amd8111e.h

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Advanced  Micro Devices Inc. AMD8111E Linux Network Driver 
 
3
 * Copyright (C) 2003 Advanced Micro Devices 
 
4
 *
 
5
 * This program is free software; you can redistribute it and/or modify
 
6
 * it under the terms of the GNU General Public License as published by
 
7
 * the Free Software Foundation; either version 2 of the License, or
 
8
 * (at your option) any later version.
 
9
 *
 
10
 * This program is distributed in the hope that it will be useful,
 
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
 * GNU General Public License for more details.
 
14
 *
 
15
 * You should have received a copy of the GNU General Public License
 
16
 * along with this program; if not, write to the Free Software
 
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 
18
 * 02110-1301, USA.
 
19
 *
 
20
 * You can also choose to distribute this program under the terms of
 
21
 * the Unmodified Binary Distribution Licence (as given in the file
 
22
 * COPYING.UBDL), provided that you have satisfied its requirements.
 
23
 * USA
 
24
 
 
25
Module Name:
 
26
 
 
27
    amd8111e.h
 
28
 
 
29
Abstract:
 
30
        
 
31
         AMD8111 based 10/100 Ethernet Controller driver definitions. 
 
32
 
 
33
Environment:
 
34
    
 
35
        Kernel Mode
 
36
 
 
37
Revision History:
 
38
        3.0.0
 
39
           Initial Revision.
 
40
        3.0.1
 
41
*/
 
42
 
 
43
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
 
44
 
 
45
#ifndef _AMD811E_H
 
46
#define _AMD811E_H
 
47
 
 
48
/* Command style register access
 
49
 
 
50
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. 
 
51
 
 
52
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.
 
53
 
 
54
*/
 
55
 
 
56
/*  Offset for Memory Mapped Registers. */
 
57
/* 32 bit registers */
 
58
 
 
59
#define  ASF_STAT               0x00    /* ASF status register */
 
60
#define CHIPID                  0x04    /* Chip ID regsiter */
 
61
#define MIB_DATA                0x10    /* MIB data register */
 
62
#define MIB_ADDR                0x14    /* MIB address register */
 
63
#define STAT0                   0x30    /* Status0 register */
 
64
#define INT0                    0x38    /* Interrupt0 register */
 
65
#define INTEN0                  0x40    /* Interrupt0  enable register*/
 
66
#define CMD0                    0x48    /* Command0 register */
 
67
#define CMD2                    0x50    /* Command2 register */
 
68
#define CMD3                    0x54    /* Command3 resiter */
 
69
#define CMD7                    0x64    /* Command7 register */
 
70
 
 
71
#define CTRL1                   0x6C    /* Control1 register */
 
72
#define CTRL2                   0x70    /* Control2 register */
 
73
 
 
74
#define XMT_RING_LIMIT          0x7C    /* Transmit ring limit register */
 
75
 
 
76
#define AUTOPOLL0               0x88    /* Auto-poll0 register */
 
77
#define AUTOPOLL1               0x8A    /* Auto-poll1 register */
 
78
#define AUTOPOLL2               0x8C    /* Auto-poll2 register */
 
79
#define AUTOPOLL3               0x8E    /* Auto-poll3 register */
 
80
#define AUTOPOLL4               0x90    /* Auto-poll4 register */
 
81
#define AUTOPOLL5               0x92    /* Auto-poll5 register */
 
82
 
 
83
#define AP_VALUE                0x98    /* Auto-poll value register */
 
84
#define DLY_INT_A               0xA8    /* Group A delayed interrupt register */
 
85
#define DLY_INT_B               0xAC    /* Group B delayed interrupt register */
 
86
 
 
87
#define FLOW_CONTROL            0xC8    /* Flow control register */
 
88
#define PHY_ACCESS              0xD0    /* PHY access register */
 
89
 
 
90
#define STVAL                   0xD8    /* Software timer value register */
 
91
 
 
92
#define XMT_RING_BASE_ADDR0     0x100   /* Transmit ring0 base addr register */
 
93
#define XMT_RING_BASE_ADDR1     0x108   /* Transmit ring1 base addr register */
 
94
#define XMT_RING_BASE_ADDR2     0x110   /* Transmit ring2 base addr register */
 
95
#define XMT_RING_BASE_ADDR3     0x118   /* Transmit ring2 base addr register */
 
96
 
 
97
#define RCV_RING_BASE_ADDR0     0x120   /* Transmit ring0 base addr register */
 
98
 
 
99
#define PMAT0                   0x190   /* OnNow pattern register0 */
 
100
#define PMAT1                   0x194   /* OnNow pattern register1 */
 
101
 
 
102
/* 16bit registers */
 
103
 
 
104
#define XMT_RING_LEN0           0x140   /* Transmit Ring0 length register */
 
105
#define XMT_RING_LEN1           0x144   /* Transmit Ring1 length register */
 
106
#define XMT_RING_LEN2           0x148   /* Transmit Ring2 length register */
 
107
#define XMT_RING_LEN3           0x14C   /* Transmit Ring3 length register */
 
108
 
 
109
#define RCV_RING_LEN0           0x150   /* Receive Ring0 length register */
 
110
 
 
111
#define SRAM_SIZE               0x178   /* SRAM size register */
 
112
#define SRAM_BOUNDARY           0x17A   /* SRAM boundary register */
 
113
 
 
114
/* 48bit register */
 
115
 
 
116
#define PADR                    0x160   /* Physical address register */
 
117
 
 
118
#define IFS1                    0x18C   /* Inter-frame spacing Part1 register */
 
119
#define IFS                     0x18D   /* Inter-frame spacing register */
 
120
#define IPG                     0x18E   /* Inter-frame gap register */
 
121
/* 64bit register */
 
122
 
 
123
#define LADRF                   0x168   /* Logical address filter register */
 
124
 
 
125
 
 
126
/* Register Bit Definitions */
 
127
typedef enum {
 
128
 
 
129
        ASF_INIT_DONE           = (1 << 1),
 
130
        ASF_INIT_PRESENT        = (1 << 0),
 
131
 
 
132
}STAT_ASF_BITS; 
 
133
   
 
134
typedef enum {
 
135
 
 
136
        MIB_CMD_ACTIVE          = (1 << 15 ),
 
137
        MIB_RD_CMD              = (1 << 13 ),
 
138
        MIB_CLEAR               = (1 << 12 ),
 
139
        MIB_ADDRESS             = (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3)|
 
140
                                        (1 << 4) | (1 << 5),
 
141
}MIB_ADDR_BITS;
 
142
 
 
143
 
 
144
typedef enum {
 
145
        
 
146
        PMAT_DET                = (1 << 12),
 
147
        MP_DET                  = (1 << 11),
 
148
        LC_DET                  = (1 << 10),
 
149
        SPEED_MASK              = (1 << 9)|(1 << 8)|(1 << 7),
 
150
        FULL_DPLX               = (1 << 6),
 
151
        LINK_STATS              = (1 << 5),
 
152
        AUTONEG_COMPLETE        = (1 << 4),
 
153
        MIIPD                   = (1 << 3),
 
154
        RX_SUSPENDED            = (1 << 2),
 
155
        TX_SUSPENDED            = (1 << 1),
 
156
        RUNNING                 = (1 << 0),
 
157
 
 
158
}STAT0_BITS;
 
159
 
 
160
#define PHY_SPEED_10            0x2
 
161
#define PHY_SPEED_100           0x3
 
162
 
 
163
/* INT0                         0x38, 32bit register */
 
164
typedef enum {
 
165
 
 
166
        INTR                    = (1 << 31),
 
167
        PCSINT                  = (1 << 28), 
 
168
        LCINT                   = (1 << 27),
 
169
        APINT5                  = (1 << 26),
 
170
        APINT4                  = (1 << 25),
 
171
        APINT3                  = (1 << 24),
 
172
        TINT_SUM                = (1 << 23),
 
173
        APINT2                  = (1 << 22),
 
174
        APINT1                  = (1 << 21),
 
175
        APINT0                  = (1 << 20),
 
176
        MIIPDTINT               = (1 << 19),
 
177
        MCCINT                  = (1 << 17),
 
178
        MREINT                  = (1 << 16),
 
179
        RINT_SUM                = (1 << 15),
 
180
        SPNDINT                 = (1 << 14),
 
181
        MPINT                   = (1 << 13),
 
182
        SINT                    = (1 << 12),
 
183
        TINT3                   = (1 << 11),
 
184
        TINT2                   = (1 << 10),
 
185
        TINT1                   = (1 << 9),
 
186
        TINT0                   = (1 << 8),
 
187
        UINT                    = (1 << 7),
 
188
        STINT                   = (1 << 4),
 
189
        RINT0                   = (1 << 0),
 
190
 
 
191
}INT0_BITS;
 
192
 
 
193
typedef enum {
 
194
 
 
195
        VAL3                    = (1 << 31),   /* VAL bit for byte 3 */
 
196
        VAL2                    = (1 << 23),   /* VAL bit for byte 2 */
 
197
        VAL1                    = (1 << 15),   /* VAL bit for byte 1 */
 
198
        VAL0                    = (1 << 7),    /* VAL bit for byte 0 */
 
199
 
 
200
}VAL_BITS;
 
201
 
 
202
typedef enum {
 
203
 
 
204
        /* VAL3 */
 
205
        LCINTEN                 = (1 << 27),
 
206
        APINT5EN                = (1 << 26),
 
207
        APINT4EN                = (1 << 25),
 
208
        APINT3EN                = (1 << 24),
 
209
        /* VAL2 */
 
210
        APINT2EN                = (1 << 22),
 
211
        APINT1EN                = (1 << 21),
 
212
        APINT0EN                = (1 << 20),
 
213
        MIIPDTINTEN             = (1 << 19),
 
214
        MCCIINTEN               = (1 << 18),
 
215
        MCCINTEN                = (1 << 17),
 
216
        MREINTEN                = (1 << 16),
 
217
        /* VAL1 */
 
218
        SPNDINTEN               = (1 << 14),
 
219
        MPINTEN                 = (1 << 13),
 
220
        TINTEN3                 = (1 << 11),
 
221
        SINTEN                  = (1 << 12),
 
222
        TINTEN2                 = (1 << 10),
 
223
        TINTEN1                 = (1 << 9),
 
224
        TINTEN0                 = (1 << 8),
 
225
        /* VAL0 */
 
226
        STINTEN                 = (1 << 4),
 
227
        RINTEN0                 = (1 << 0),
 
228
 
 
229
        INTEN0_CLEAR            = 0x1F7F7F1F, /* Command style register */
 
230
 
 
231
}INTEN0_BITS;           
 
232
 
 
233
typedef enum {
 
234
        /* VAL2 */
 
235
        RDMD0                   = (1 << 16),
 
236
        /* VAL1 */
 
237
        TDMD3                   = (1 << 11),
 
238
        TDMD2                   = (1 << 10),
 
239
        TDMD1                   = (1 << 9),
 
240
        TDMD0                   = (1 << 8),
 
241
        /* VAL0 */
 
242
        UINTCMD                 = (1 << 6),
 
243
        RX_FAST_SPND            = (1 << 5),
 
244
        TX_FAST_SPND            = (1 << 4),
 
245
        RX_SPND                 = (1 << 3),
 
246
        TX_SPND                 = (1 << 2),
 
247
        INTREN                  = (1 << 1),
 
248
        RUN                     = (1 << 0),
 
249
 
 
250
        CMD0_CLEAR              = 0x000F0F7F,   /* Command style register */    
 
251
 
 
252
}CMD0_BITS;
 
253
 
 
254
typedef enum {
 
255
 
 
256
        /* VAL3 */
 
257
        CONDUIT_MODE            = (1 << 29),
 
258
        /* VAL2 */
 
259
        RPA                     = (1 << 19),
 
260
        DRCVPA                  = (1 << 18),
 
261
        DRCVBC                  = (1 << 17),
 
262
        PROM                    = (1 << 16),
 
263
        /* VAL1 */
 
264
        ASTRP_RCV               = (1 << 13),
 
265
        RCV_DROP0               = (1 << 12),
 
266
        EMBA                    = (1 << 11),
 
267
        DXMT2PD                 = (1 << 10),
 
268
        LTINTEN                 = (1 << 9),
 
269
        DXMTFCS                 = (1 << 8),
 
270
        /* VAL0 */
 
271
        APAD_XMT                = (1 << 6),
 
272
        DRTY                    = (1 << 5),
 
273
        INLOOP                  = (1 << 4),
 
274
        EXLOOP                  = (1 << 3),
 
275
        REX_RTRY                = (1 << 2),
 
276
        REX_UFLO                = (1 << 1),
 
277
        REX_LCOL                = (1 << 0),
 
278
 
 
279
        CMD2_CLEAR              = 0x3F7F3F7F,   /* Command style register */
 
280
 
 
281
}CMD2_BITS;
 
282
 
 
283
typedef enum {
 
284
 
 
285
        /* VAL3 */
 
286
        ASF_INIT_DONE_ALIAS     = (1 << 29),
 
287
        /* VAL2 */
 
288
        JUMBO                   = (1 << 21),
 
289
        VSIZE                   = (1 << 20),    
 
290
        VLONLY                  = (1 << 19),
 
291
        VL_TAG_DEL              = (1 << 18),    
 
292
        /* VAL1 */
 
293
        EN_PMGR                 = (1 << 14),                    
 
294
        INTLEVEL                = (1 << 13),
 
295
        FORCE_FULL_DUPLEX       = (1 << 12),    
 
296
        FORCE_LINK_STATUS       = (1 << 11),    
 
297
        APEP                    = (1 << 10),    
 
298
        MPPLBA                  = (1 << 9),     
 
299
        /* VAL0 */
 
300
        RESET_PHY_PULSE         = (1 << 2),     
 
301
        RESET_PHY               = (1 << 1),     
 
302
        PHY_RST_POL             = (1 << 0),     
 
303
 
 
304
}CMD3_BITS;
 
305
 
 
306
 
 
307
typedef enum {
 
308
 
 
309
        /* VAL0 */
 
310
        PMAT_SAVE_MATCH         = (1 << 4),
 
311
        PMAT_MODE               = (1 << 3),
 
312
        MPEN_SW                 = (1 << 1),
 
313
        LCMODE_SW               = (1 << 0),
 
314
 
 
315
        CMD7_CLEAR              = 0x0000001B    /* Command style register */
 
316
 
 
317
}CMD7_BITS;
 
318
 
 
319
 
 
320
typedef enum {
 
321
 
 
322
        RESET_PHY_WIDTH         = (0xF << 16) | (0xF<< 20), /* 0x00FF0000 */
 
323
        XMTSP_MASK              = (1 << 9) | (1 << 8),  /* 9:8 */
 
324
        XMTSP_128               = (1 << 9),     /* 9 */ 
 
325
        XMTSP_64                = (1 << 8),
 
326
        CACHE_ALIGN             = (1 << 4),
 
327
        BURST_LIMIT_MASK        = (0xF << 0 ),
 
328
        CTRL1_DEFAULT           = 0x00010111,
 
329
 
 
330
}CTRL1_BITS;
 
331
 
 
332
typedef enum {
 
333
 
 
334
        FMDC_MASK               = (1 << 9)|(1 << 8),    /* 9:8 */
 
335
        XPHYRST                 = (1 << 7),
 
336
        XPHYANE                 = (1 << 6),
 
337
        XPHYFD                  = (1 << 5),
 
338
        XPHYSP                  = (1 << 4) | (1 << 3),  /* 4:3 */
 
339
        APDW_MASK               = (1 << 2) | (1 << 1) | (1 << 0), /* 2:0 */
 
340
 
 
341
}CTRL2_BITS;
 
342
 
 
343
/* XMT_RING_LIMIT               0x7C, 32bit register */
 
344
typedef enum {
 
345
 
 
346
        XMT_RING2_LIMIT         = (0xFF << 16), /* 23:16 */
 
347
        XMT_RING1_LIMIT         = (0xFF << 8),  /* 15:8 */
 
348
        XMT_RING0_LIMIT         = (0xFF << 0),  /* 7:0 */
 
349
 
 
350
}XMT_RING_LIMIT_BITS;
 
351
 
 
352
typedef enum {
 
353
 
 
354
        AP_REG0_EN              = (1 << 15),
 
355
        AP_REG0_ADDR_MASK       = (0xF << 8) |(1 << 12),/* 12:8 */
 
356
        AP_PHY0_ADDR_MASK       = (0xF << 0) |(1 << 4),/* 4:0 */
 
357
 
 
358
}AUTOPOLL0_BITS;
 
359
 
 
360
/* AUTOPOLL1                    0x8A, 16bit register */
 
361
typedef enum {
 
362
 
 
363
        AP_REG1_EN              = (1 << 15),
 
364
        AP_REG1_ADDR_MASK       = (0xF << 8) |(1 << 12),/* 12:8 */
 
365
        AP_PRE_SUP1             = (1 << 6),
 
366
        AP_PHY1_DFLT            = (1 << 5),
 
367
        AP_PHY1_ADDR_MASK       = (0xF << 0) |(1 << 4),/* 4:0 */
 
368
 
 
369
}AUTOPOLL1_BITS;
 
370
 
 
371
 
 
372
typedef enum {
 
373
 
 
374
        AP_REG2_EN              = (1 << 15),
 
375
        AP_REG2_ADDR_MASK       = (0xF << 8) |(1 << 12),/* 12:8 */
 
376
        AP_PRE_SUP2             = (1 << 6),
 
377
        AP_PHY2_DFLT            = (1 << 5),
 
378
        AP_PHY2_ADDR_MASK       = (0xF << 0) |(1 << 4),/* 4:0 */
 
379
 
 
380
}AUTOPOLL2_BITS;
 
381
 
 
382
typedef enum {
 
383
 
 
384
        AP_REG3_EN              = (1 << 15),
 
385
        AP_REG3_ADDR_MASK       = (0xF << 8) |(1 << 12),/* 12:8 */
 
386
        AP_PRE_SUP3             = (1 << 6),
 
387
        AP_PHY3_DFLT            = (1 << 5),
 
388
        AP_PHY3_ADDR_MASK       = (0xF << 0) |(1 << 4),/* 4:0 */
 
389
 
 
390
}AUTOPOLL3_BITS;
 
391
 
 
392
 
 
393
typedef enum {
 
394
 
 
395
        AP_REG4_EN              = (1 << 15),
 
396
        AP_REG4_ADDR_MASK       = (0xF << 8) |(1 << 12),/* 12:8 */
 
397
        AP_PRE_SUP4             = (1 << 6),
 
398
        AP_PHY4_DFLT            = (1 << 5),
 
399
        AP_PHY4_ADDR_MASK       = (0xF << 0) |(1 << 4),/* 4:0 */
 
400
 
 
401
}AUTOPOLL4_BITS;
 
402
 
 
403
 
 
404
typedef enum {
 
405
 
 
406
        AP_REG5_EN              = (1 << 15),
 
407
        AP_REG5_ADDR_MASK       = (0xF << 8) |(1 << 12),/* 12:8 */
 
408
        AP_PRE_SUP5             = (1 << 6),
 
409
        AP_PHY5_DFLT            = (1 << 5),
 
410
        AP_PHY5_ADDR_MASK       = (0xF << 0) |(1 << 4),/* 4:0 */
 
411
 
 
412
}AUTOPOLL5_BITS;
 
413
 
 
414
 
 
415
 
 
416
 
 
417
/* AP_VALUE                     0x98, 32bit ragister */
 
418
typedef enum {
 
419
 
 
420
        AP_VAL_ACTIVE           = (1 << 31),
 
421
        AP_VAL_RD_CMD           = ( 1 << 29),
 
422
        AP_ADDR                 = (1 << 18)|(1 << 17)|(1 << 16), /* 18:16 */
 
423
        AP_VAL                  = (0xF << 0) | (0xF << 4) |( 0xF << 8) |
 
424
                                  (0xF << 12),  /* 15:0 */
 
425
 
 
426
}AP_VALUE_BITS;
 
427
 
 
428
typedef enum {
 
429
 
 
430
        DLY_INT_A_R3            = (1 << 31),
 
431
        DLY_INT_A_R2            = (1 << 30),
 
432
        DLY_INT_A_R1            = (1 << 29),
 
433
        DLY_INT_A_R0            = (1 << 28),
 
434
        DLY_INT_A_T3            = (1 << 27),
 
435
        DLY_INT_A_T2            = (1 << 26),
 
436
        DLY_INT_A_T1            = (1 << 25),
 
437
        DLY_INT_A_T0            = ( 1 << 24),
 
438
        EVENT_COUNT_A           = (0xF << 16) | (0x1 << 20),/* 20:16 */
 
439
        MAX_DELAY_TIME_A        = (0xF << 0) | (0xF << 4) | (1 << 8)|
 
440
                                  (1 << 9) | (1 << 10), /* 10:0 */
 
441
 
 
442
}DLY_INT_A_BITS;
 
443
 
 
444
typedef enum {
 
445
 
 
446
        DLY_INT_B_R3            = (1 << 31),
 
447
        DLY_INT_B_R2            = (1 << 30),
 
448
        DLY_INT_B_R1            = (1 << 29),
 
449
        DLY_INT_B_R0            = (1 << 28),
 
450
        DLY_INT_B_T3            = (1 << 27),
 
451
        DLY_INT_B_T2            = (1 << 26),
 
452
        DLY_INT_B_T1            = (1 << 25),
 
453
        DLY_INT_B_T0            = ( 1 << 24),
 
454
        EVENT_COUNT_B           = (0xF << 16) | (0x1 << 20),/* 20:16 */
 
455
        MAX_DELAY_TIME_B        = (0xF << 0) | (0xF << 4) | (1 << 8)| 
 
456
                                  (1 << 9) | (1 << 10), /* 10:0 */
 
457
}DLY_INT_B_BITS;
 
458
 
 
459
 
 
460
/* FLOW_CONTROL                 0xC8, 32bit register */
 
461
typedef enum {
 
462
 
 
463
        PAUSE_LEN_CHG           = (1 << 30),
 
464
        FTPE                    = (1 << 22),
 
465
        FRPE                    = (1 << 21),
 
466
        NAPA                    = (1 << 20),
 
467
        NPA                     = (1 << 19),
 
468
        FIXP                    = ( 1 << 18),
 
469
        FCCMD                   = ( 1 << 16),
 
470
        PAUSE_LEN               = (0xF << 0) | (0xF << 4) |( 0xF << 8) |                                          (0xF << 12),  /* 15:0 */
 
471
 
 
472
}FLOW_CONTROL_BITS;
 
473
 
 
474
/* PHY_ ACCESS                  0xD0, 32bit register */
 
475
typedef enum {
 
476
 
 
477
        PHY_CMD_ACTIVE          = (1 << 31),
 
478
        PHY_WR_CMD              = (1 << 30),
 
479
        PHY_RD_CMD              = (1 << 29),
 
480
        PHY_RD_ERR              = (1 << 28),
 
481
        PHY_PRE_SUP             = (1 << 27),
 
482
        PHY_ADDR                = (1 << 21) | (1 << 22) | (1 << 23)|
 
483
                                        (1 << 24) |(1 << 25),/* 25:21 */
 
484
        PHY_REG_ADDR            = (1 << 16) | (1 << 17) | (1 << 18)|                                                    (1 << 19) | (1 << 20),/* 20:16 */
 
485
        PHY_DATA                = (0xF << 0)|(0xF << 4) |(0xF << 8)|
 
486
                                        (0xF << 12),/* 15:0 */
 
487
 
 
488
}PHY_ACCESS_BITS;
 
489
 
 
490
 
 
491
/* PMAT0                        0x190,   32bit register */
 
492
typedef enum {
 
493
        PMR_ACTIVE              = (1 << 31),
 
494
        PMR_WR_CMD              = (1 << 30),
 
495
        PMR_RD_CMD              = (1 << 29),
 
496
        PMR_BANK                = (1 <<28),
 
497
        PMR_ADDR                = (0xF << 16)|(1 << 20)|(1 << 21)|
 
498
                                        (1 << 22),/* 22:16 */
 
499
        PMR_B4                  = (0xF << 0) | (0xF << 4),/* 15:0 */
 
500
}PMAT0_BITS;
 
501
 
 
502
 
 
503
/* PMAT1                        0x194,   32bit register */
 
504
typedef enum {
 
505
        PMR_B3                  = (0xF << 24) | (0xF <<28),/* 31:24 */
 
506
        PMR_B2                  = (0xF << 16) |(0xF << 20),/* 23:16 */
 
507
        PMR_B1                  = (0xF << 8) | (0xF <<12), /* 15:8 */
 
508
        PMR_B0                  = (0xF << 0)|(0xF << 4),/* 7:0 */
 
509
}PMAT1_BITS;
 
510
 
 
511
/************************************************************************/
 
512
/*                                                                      */
 
513
/*                      MIB counter definitions                         */
 
514
/*                                                                      */
 
515
/************************************************************************/
 
516
 
 
517
#define rcv_miss_pkts                           0x00
 
518
#define rcv_octets                              0x01
 
519
#define rcv_broadcast_pkts                      0x02
 
520
#define rcv_multicast_pkts                      0x03
 
521
#define rcv_undersize_pkts                      0x04
 
522
#define rcv_oversize_pkts                       0x05
 
523
#define rcv_fragments                           0x06
 
524
#define rcv_jabbers                             0x07
 
525
#define rcv_unicast_pkts                        0x08
 
526
#define rcv_alignment_errors                    0x09
 
527
#define rcv_fcs_errors                          0x0A
 
528
#define rcv_good_octets                         0x0B
 
529
#define rcv_mac_ctrl                            0x0C
 
530
#define rcv_flow_ctrl                           0x0D
 
531
#define rcv_pkts_64_octets                      0x0E
 
532
#define rcv_pkts_65to127_octets                 0x0F
 
533
#define rcv_pkts_128to255_octets                0x10
 
534
#define rcv_pkts_256to511_octets                0x11
 
535
#define rcv_pkts_512to1023_octets               0x12
 
536
#define rcv_pkts_1024to1518_octets              0x13
 
537
#define rcv_unsupported_opcode                  0x14
 
538
#define rcv_symbol_errors                       0x15
 
539
#define rcv_drop_pkts_ring1                     0x16
 
540
#define rcv_drop_pkts_ring2                     0x17
 
541
#define rcv_drop_pkts_ring3                     0x18
 
542
#define rcv_drop_pkts_ring4                     0x19
 
543
#define rcv_jumbo_pkts                          0x1A
 
544
 
 
545
#define xmt_underrun_pkts                       0x20
 
546
#define xmt_octets                              0x21
 
547
#define xmt_packets                             0x22
 
548
#define xmt_broadcast_pkts                      0x23
 
549
#define xmt_multicast_pkts                      0x24
 
550
#define xmt_collisions                          0x25
 
551
#define xmt_unicast_pkts                        0x26
 
552
#define xmt_one_collision                       0x27
 
553
#define xmt_multiple_collision                  0x28
 
554
#define xmt_deferred_transmit                   0x29
 
555
#define xmt_late_collision                      0x2A
 
556
#define xmt_excessive_defer                     0x2B
 
557
#define xmt_loss_carrier                        0x2C
 
558
#define xmt_excessive_collision                 0x2D
 
559
#define xmt_back_pressure                       0x2E
 
560
#define xmt_flow_ctrl                           0x2F
 
561
#define xmt_pkts_64_octets                      0x30
 
562
#define xmt_pkts_65to127_octets                 0x31
 
563
#define xmt_pkts_128to255_octets                0x32
 
564
#define xmt_pkts_256to511_octets                0x33
 
565
#define xmt_pkts_512to1023_octets               0x34
 
566
#define xmt_pkts_1024to1518_octet               0x35
 
567
#define xmt_oversize_pkts                       0x36
 
568
#define xmt_jumbo_pkts                          0x37
 
569
 
 
570
/* ipg parameters */
 
571
#define DEFAULT_IPG                     0x60
 
572
#define IFS1_DELTA                      36
 
573
#define IPG_CONVERGE_JIFFIES (HZ/2)
 
574
#define IPG_STABLE_TIME 5
 
575
#define MIN_IPG 96
 
576
#define MAX_IPG 255
 
577
#define IPG_STEP        16
 
578
#define CSTATE  1 
 
579
#define SSTATE  2 
 
580
 
 
581
/* amd8111e descriptor flag definitions */
 
582
typedef enum {
 
583
 
 
584
        OWN_BIT         =       (1 << 15),
 
585
        ADD_FCS_BIT     =       (1 << 13),
 
586
        LTINT_BIT       =       (1 << 12),
 
587
        STP_BIT         =       (1 << 9),
 
588
        ENP_BIT         =       (1 << 8),
 
589
        KILL_BIT        =       (1 << 6),
 
590
        TCC_VLAN_INSERT =       (1 << 1),
 
591
        TCC_VLAN_REPLACE =      (1 << 1) |( 1<< 0),
 
592
 
 
593
}TX_FLAG_BITS;
 
594
 
 
595
typedef enum {
 
596
        ERR_BIT         =       (1 << 14),
 
597
        FRAM_BIT        =       (1 << 13),
 
598
        OFLO_BIT        =       (1 << 12),
 
599
        CRC_BIT         =       (1 << 11),
 
600
        PAM_BIT         =       (1 << 6),
 
601
        LAFM_BIT        =       (1 << 5),
 
602
        BAM_BIT         =       (1 << 4),
 
603
        TT_VLAN_TAGGED  =       (1 << 3) |(1 << 2),/* 0x000 */
 
604
        TT_PRTY_TAGGED  =       (1 << 3),/* 0x0008 */
 
605
 
 
606
}RX_FLAG_BITS;
 
607
 
 
608
#define RESET_RX_FLAGS          0x0000
 
609
#define TT_MASK                 0x000c
 
610
#define TCC_MASK                0x0003
 
611
 
 
612
/* driver ioctl parameters */
 
613
#define AMD8111E_REG_DUMP_LEN    13*sizeof(u32) 
 
614
 
 
615
/* crc generator constants */
 
616
#define CRC32 0xedb88320
 
617
#define INITCRC 0xFFFFFFFF
 
618
 
 
619
/* 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.
 
620
BUG? */
 
621
#define  amd8111e_writeq(_UlData,_memMap)   \
 
622
                writel(*(u32*)(&_UlData), _memMap);     \
 
623
                writel(*(u32*)((u8*)(&_UlData)+4), _memMap+4)   
 
624
 
 
625
/* maps the external speed options to internal value */
 
626
typedef enum {
 
627
        SPEED_AUTONEG,
 
628
        SPEED10_HALF,
 
629
        SPEED10_FULL,
 
630
        SPEED100_HALF,
 
631
        SPEED100_FULL,
 
632
}EXT_PHY_OPTION;
 
633
 
 
634
 
 
635
#endif /* _AMD8111E_H */
 
636