1/*
2 * Register and bit definitions for the National Semiconductor
3 *   DP83815 10/100 Integrated Ethernet MAC and PHY.
4 * Reference:
5 *   DP83815 10/100 Mb/s Integrated PCI Ethernet Media Access
6 *     Controller and Physical Layer (MacPhyter)
7 *     Hardware Reference Manual, Revision 1.0.
8 *   National Semiconductor Corp., December 2000
9 */
10#ifndef _DP83815_H_
11#define _DP83815_H_
12
13#define _DD_MAKEMASK1(n) (1 << (n))
14#define _DD_MAKEMASK(v,n) ((((1)<<(v))-1) << (n))
15#define _DD_MAKEVALUE(v,n) ((v) << (n))
16#define _DD_GETVALUE(v,n,m) (((v) & (m)) >> (n))
17
18
19/*  PCI Configuration Register offsets (MacPhyter nomenclature) */
20
21#define R_CFGID          PCI_ID_REG
22#define K_PCI_VENDOR_NSC 0x100B
23#define K_PCI_ID_DP83815 0x0020
24
25#define R_CFGCS          PCI_COMMAND_STATUS_REG
26#define R_CFGRID         PCI_CLASS_REG
27#define R_CFGLAT         PCI_BHLC_REG
28
29#define R_CFGIOA         PCI_MAPREG(0)
30#define R_CFGMA          PCI_MAPREG(1)
31
32#define R_CFGSID         PCI_SUBSYS_ID_REG
33#define R_CFGROM         PCI_MAPREG_ROM
34#define R_CAPPTR         PCI_CAPLISTPTR_REG
35#define R_CFGINT         PCI_BPARAM_INTERRUPT_REG
36
37/* Power management capability */
38#define R_PMCAP          0x40
39#define R_PMCSR          0x44
40
41
42/*  MacPhyter Operational Register offsets */
43
44#define R_CR                  0x00
45#define R_CFG                 0x04
46#define R_MEAR                0x08
47#define R_PTSCR               0x0C
48#define R_ISR                 0x10
49#define R_IMR                 0x14
50#define R_IER                 0x18
51#define R_TXDP                0x20
52#define R_TXCFG               0x24
53#define R_RXDP                0x30
54#define R_RXCFG               0x34
55#define R_CCSR                0x3C
56#define R_WCSR                0x40
57#define R_PCR                 0x44
58#define R_RFCR                0x48
59#define R_RFDR                0x4C
60#define R_BRAR                0x50
61#define R_BRDR                0x54
62#define R_SRR                 0x58
63#define R_MIBC                0x5C
64#define R_MIB(n)              (0x60+4*(n))
65
66/*  MacPhyter MIB Registers */
67
68#define R_MIB_RXErroredPkts   R_MIB(0)
69#define R_MIB_RXFCSErrors     R_MIB(1)
70#define R_MIB_RXMsdPktErrors  R_MIB(2)
71#define R_MIB_RXFAErrors      R_MIB(3)
72#define R_MIB_RXSymbolErrors  R_MIB(4)
73#define R_MIB_RXFrameTooLong  R_MIB(5)
74#define R_MIB_TXSQEErrors     R_MIB(6)
75
76#define N_MIB_REGISTERS       7
77
78
79/*  MacPhyter Internal PHY Register offsets */
80
81#define R_BMCR                0x80
82#define R_BMSR                0x84
83#define R_PHYIDR1             0x88
84#define R_PHYIDR2             0x8C
85#define R_ANAR                0x90
86#define R_ANLPAR              0x94
87#define R_ANER                0x98
88#define R_ANNPTR              0x9C
89#define R_PHYSTS              0xC0
90#define R_MICR                0xC4
91#define R_MISR                0xC8
92#define R_FCSCR               0xD0
93#define R_RECR                0xD4
94#define R_PHYCR               0xE4
95#define R_TBTSCR              0xE8
96
97/* Undocumented, updated for CVNG (SRR=0x0302) parts */
98
99#define R_PGSEL               0xCC
100#define R_PMDCSR              0xE4   /* R_PHYCR */
101#define R_DSPCFG              0xF4
102#define R_SDCFG               0xF8
103#define R_TSTDAT              0xFC
104
105
106/* 0x00  CR: Command Register */
107
108#define M_CR_TXE                _DD_MAKEMASK1(0)
109#define M_CR_TXD                _DD_MAKEMASK1(1)
110#define M_CR_RXE                _DD_MAKEMASK1(2)
111#define M_CR_RXD                _DD_MAKEMASK1(3)
112#define M_CR_TXR                _DD_MAKEMASK1(4)
113#define M_CR_RXR                _DD_MAKEMASK1(5)
114#define M_CR_SWI                _DD_MAKEMASK1(7)
115#define M_CR_RST                _DD_MAKEMASK1(8)
116
117
118/* 0x04  CFG: Configuration and Media Status Register */
119
120#define M_CFG_BEM               _DD_MAKEMASK1(0)
121#define M_CFG_BROM_DIS          _DD_MAKEMASK1(2)
122#define M_CFG_PESEL             _DD_MAKEMASK1(3)
123#define M_CFG_EXD               _DD_MAKEMASK1(4)
124#define M_CFG_POW               _DD_MAKEMASK1(5)
125#define M_CFG_SB                _DD_MAKEMASK1(6)
126#define M_CFG_REQALG            _DD_MAKEMASK1(7)
127#define M_CFG_EUPHCOMP          _DD_MAKEMASK1(8)
128#define M_CFG_PHY_DIS           _DD_MAKEMASK1(9)
129#define M_CFG_PHY_RST           _DD_MAKEMASK1(10)
130#define M_CFG_EXT_PHY           _DD_MAKEMASK1(12)
131
132#define S_CFG_ANEG_SEL          13
133#define M_CFG_ANEG_SEL          _DD_MAKEMASK(3,S_CFG_ANEG_SEL)
134#define V_CFG_ANEG_SEL(x)       _DD_MAKEVALUE(x,S_CFG_ANEG_SEL)
135#define G_CFG_ANEG_SEL(x)       _DD_GETVALUE(x,S_CFG_ANEG_SEL,M_CFG_ANEG_SEL)
136
137#define K_ANEG_10H              0x0
138#define K_ANEG_100H             0x2
139#define K_ANEG_10F              0x4
140#define K_ANEG_100F             0x6
141#define K_ANEG_10HF             0x1
142#define K_ANEG_10H_100H         0x3
143#define K_ANEG_100HF            0x5
144#define K_ANEG_10HF_100HF       0x7
145#define K_ANEG_ALL              0x7
146
147#define M_CFG_PAUSE_ADV         _DD_MAKEMASK1(16)
148#define M_CFG_PINT_ACEN         _DD_MAKEMASK1(17)
149
150#define S_CFG_PHY_CFG           18
151#define M_CFG_PHY_CFG           _DD_MAKEMASK(6,S_CFG_PHY_CFG)
152
153#define M_CFG_ANEG_DN           _DD_MAKEMASK1(27)
154#define M_CFG_POL               _DD_MAKEMASK1(28)
155#define M_CFG_FDUP              _DD_MAKEMASK1(29)
156#define M_CFG_SPEED100          _DD_MAKEMASK1(30)
157#define M_CFG_LNKSTS            _DD_MAKEMASK1(31)
158#define M_CFG_LNKSUMMARY        (M_CFG_LNKSTS | M_CFG_SPEED100 | M_CFG_FDUP)
159
160
161/* 0x08  MEAR: EEPROM Access Register (see 4.2.4 for EEPROM Map) */
162
163#define M_MEAR_EEDI             _DD_MAKEMASK1(0)
164#define M_MEAR_EEDO             _DD_MAKEMASK1(1)
165#define M_MEAR_EECLK            _DD_MAKEMASK1(2)
166#define M_MEAR_EESEL            _DD_MAKEMASK1(3)
167#define M_MEAR_MDIO             _DD_MAKEMASK1(4)
168#define M_MEAR_MDDIR            _DD_MAKEMASK1(5)
169#define M_MEAR_MDC              _DD_MAKEMASK1(6)
170
171
172/* 0x0C  PTSCR: PCI Test Control Register */
173
174#define M_PTSCR_EEBIST_FAIL     _DD_MAKEMASK1(0)
175#define M_PTSCR_EEBIST_EN       _DD_MAKEMASK1(1)
176#define M_PTSCR_EELOAD_EN       _DD_MAKEMASK1(2)
177#define M_PTSCR_RBIST_RXFFAIL   _DD_MAKEMASK1(3)
178#define M_PTSCR_RBIST_TXFAIL    _DD_MAKEMASK1(4)
179#define M_PTSCR_RBIST_RXFAIL    _DD_MAKEMASK1(5)
180#define M_PTSCR_RBIST_DONE      _DD_MAKEMASK1(6)
181#define M_PTSCR_RBIST_EN        _DD_MAKEMASK1(7)
182#define M_PTSCR_MBZ8            _DD_MAKEMASK1(8)
183#define M_PTSCR_MBZ9            _DD_MAKEMASK1(9)
184#define M_PTSCR_RBIST_RST       _DD_MAKEMASK1(10)
185#define M_PTSCR_MBZ12           _DD_MAKEMASK1(12)
186
187
188/* 0x10  ISR: Interrupt Status Register */
189/* 0x14  IMR: Interrupt Mask Register */
190
191#define M_INT_RXOK              _DD_MAKEMASK1(0)
192#define M_INT_RXDESC            _DD_MAKEMASK1(1)
193#define M_INT_RXERR             _DD_MAKEMASK1(2)
194#define M_INT_RXEARLY           _DD_MAKEMASK1(3)
195#define M_INT_RXIDLE            _DD_MAKEMASK1(4)
196#define M_INT_RXORN             _DD_MAKEMASK1(5)
197#define M_INT_TXOK              _DD_MAKEMASK1(6)
198#define M_INT_TXDESC            _DD_MAKEMASK1(7)
199#define M_INT_TXERR             _DD_MAKEMASK1(8)
200#define M_INT_TXIDLE            _DD_MAKEMASK1(9)
201#define M_INT_TXURN             _DD_MAKEMASK1(10)
202#define M_INT_MIB               _DD_MAKEMASK1(11)
203#define M_INT_SWI               _DD_MAKEMASK1(12)
204#define M_INT_PME               _DD_MAKEMASK1(13)
205#define M_INT_PHY               _DD_MAKEMASK1(14)
206#define M_INT_HIBERR            _DD_MAKEMASK1(15)
207#define M_INT_RXSOVR            _DD_MAKEMASK1(16)
208#define M_INT_RTABT             _DD_MAKEMASK1(20)
209#define M_INT_RMABT             _DD_MAKEMASK1(21)
210#define M_INT_SSERR             _DD_MAKEMASK1(22)
211#define M_INT_DPERR             _DD_MAKEMASK1(23)
212#define M_INT_RXRCMP            _DD_MAKEMASK1(24)
213#define M_INT_TXRCMP            _DD_MAKEMASK1(25)
214
215
216/* 0x18  IER: Interrupt Enable Register */
217
218#define M_IER_IE                _DD_MAKEMASK1(0)
219
220
221/* 0x20  TXDP: Transmit Descriptor Pointer Register */
222
223
224/* 0x24  TXCFG: Transmit Configuration Register */
225
226#define S_TXCFG_DRTH            0
227#define M_TXCFG_DRTH            _DD_MAKEMASK(6,S_TXCFG_DRTH)
228#define V_TXCFG_DRTH(x)         _DD_MAKEVALUE(x,S_TXCFG_DRTH)
229#define G_TXCFG_DRTH(x)         _DD_GETVALUE(x,S_TXCFG_DRTH,M_TXCFG_DRTH)
230
231#define S_TXCFG_FLTH            8
232#define M_TXCFG_FLTH            _DD_MAKEMASK(6,S_TXCFG_FLTH)
233#define V_TXCFG_FLTH(x)         _DD_MAKEVALUE(x,S_TXCFG_FLTH)
234#define G_TXCFG_FLTH(x)         _DD_GETVALUE(x,S_TXCFG_FLTH,M_TXCFG_FLTH)
235
236#define S_TXCFG_MXDMA           20
237#define M_TXCFG_MXDMA           _DD_MAKEMASK(3,S_TXCFG_MXDMA)
238#define V_TXCFG_MXDMA(x)        _DD_MAKEVALUE(x,S_TXCFG_MXDMA)
239#define G_TXCFG_MXDMA(x)        _DD_GETVALUE(x,S_TXCFG_MXDMA,M_TXCFG_MXDMA)
240
241/* Max DMA burst size (bytes) - RX also */
242#define K_MXDMA_512             0x0
243#define K_MXDMA_4               0x1
244#define K_MXDMA_8               0x2
245#define K_MXDMA_16              0x3
246#define K_MXDMA_32              0x4
247#define K_MXDMA_64              0x5
248#define K_MXDMA_128             0x6
249#define K_MXDMA_256             0x7
250
251#define M_TXCFG_ECRETRY         _DD_MAKEMASK1(23)
252
253#define S_TXCFG_IFG             26
254#define M_TXCFG_IFG             _DD_MAKEMASK(2,S_TXCFG_IFG)
255#define V_TXCFG_IFG(x)          _DD_MAKEVALUE(x,S_TXCFG_IFG)
256#define G_TXCFG_IFG(x)          _DD_GETVALUE(x,S_TXCFG_IFG,M_TXCFG_IFG)
257
258#define M_TXCFG_ATP             _DD_MAKEMASK1(28)
259#define M_TXCFG_MLB             _DD_MAKEMASK1(29)
260#define M_TXCFG_HBI             _DD_MAKEMASK1(30)
261#define M_TXCFG_CSI             _DD_MAKEMASK1(31)
262
263
264/* 0x30  RXDP: Receive Descriptor Pointer Register */
265
266
267/* 0x34  RXCFG: Receive Configuration Register */
268
269#define S_RXCFG_DRTH            1
270#define M_RXCFG_DRTH            _DD_MAKEMASK(5,S_RXCFG_DRTH)
271#define V_RXCFG_DRTH(x)         _DD_MAKEVALUE(x,S_RXCFG_DRTH)
272#define G_RXCFG_DRTH(x)         _DD_GETVALUE(x,S_RXCFG_DRTH,M_RXCFG_DRTH)
273
274#define S_RXCFG_MXDMA           20
275#define M_RXCFG_MXDMA           _DD_MAKEMASK(3,S_RXCFG_MXDMA)
276#define V_RXCFG_MXDMA(x)        _DD_MAKEVALUE(x,S_RXCFG_MXDMA)
277#define G_RXCFG_MXDMA(x)        _DD_GETVALUE(x,S_RXCFG_MXDMA,M_RXCFG_MXDMA)
278
279#define M_RXCFG_ALP             _DD_MAKEMASK1(27)
280#define M_RXCFG_ATX             _DD_MAKEMASK1(28)
281#define M_RXCFG_ARP             _DD_MAKEMASK1(30)
282#define M_RXCFG_AEP             _DD_MAKEMASK1(31)
283
284
285/* 0x3C  CCSR: CLKRUN Control/Status Register */
286
287#define M_CCSR_CLKRUN_EN        _DD_MAKEMASK1(0)
288#define M_CCSR_PMEEN            _DD_MAKEMASK1(8)
289#define M_CCSR_PMESTS           _DD_MAKEMASK1(15)
290
291
292/* 0x40  WCSR: Wake Command/Status Register */
293
294#define M_WCSR_WKPHY            _DD_MAKEMASK1(0)
295#define M_WCSR_WKUCP            _DD_MAKEMASK1(1)
296#define M_WCSR_WKMCP            _DD_MAKEMASK1(2)
297#define M_WCSR_WKBCP            _DD_MAKEMASK1(3)
298#define M_WCSR_WKARP            _DD_MAKEMASK1(4)
299#define M_WCSR_WKPAT0           _DD_MAKEMASK1(5)
300#define M_WCSR_WKPAT1           _DD_MAKEMASK1(6)
301#define M_WCSR_WKPAT2           _DD_MAKEMASK1(7)
302#define M_WCSR_WKPAT3           _DD_MAKEMASK1(8)
303#define M_WCSR_WKMAG            _DD_MAKEMASK1(9)
304#define M_WCSR_MPSOE            _DD_MAKEMASK1(10)
305#define M_WCSR_SOHACK           _DD_MAKEMASK1(20)
306#define M_WCSR_PHYINT           _DD_MAKEMASK1(22)
307#define M_WCSR_UCASTR           _DD_MAKEMASK1(23)
308#define M_WCSR_MCASTR           _DD_MAKEMASK1(24)
309#define M_WCSR_BCASTR           _DD_MAKEMASK1(25)
310#define M_WCSR_ARPR             _DD_MAKEMASK1(26)
311#define M_WCSR_PATM0            _DD_MAKEMASK1(27)
312#define M_WCSR_PATM1            _DD_MAKEMASK1(28)
313#define M_WCSR_PATM2            _DD_MAKEMASK1(29)
314#define M_WCSR_PATM3            _DD_MAKEMASK1(30)
315#define M_WCSR_MPR              _DD_MAKEMASK1(31)
316
317
318/* 0x44  PCR: Pause Control/Status Register */
319
320#define S_PCR_PAUSE_CNT         0
321#define M_PCR_PAUSE_CNT         _DD_MAKEMASK(16,S_PCR_PAUSE_CNT)
322#define V_PCR_PAUSE_CNT(x)      _DD_MAKEVALUE(x,S_PCR_PAUSE_CNT)
323#define G_PCR_PAUSE_CNT(x)      _DD_GETVALUE(x,S_PCR_PAUSE_CNT,M_PCR_PAUSE_CNT)
324
325#define M_PCR_MLD_EN            _DD_MAKEMASK1(16)
326#define M_PCR_PSNEG             _DD_MAKEMASK1(21)
327#define M_PCR_PS_RCVD           _DD_MAKEMASK1(22)
328#define M_PCR_PS_ACT            _DD_MAKEMASK1(23)
329#define M_PCR_PS_DA             _DD_MAKEMASK1(29)
330#define M_PCR_PS_MCAST          _DD_MAKEMASK1(30)
331#define M_PCR_PSEN              _DD_MAKEMASK1(31)
332
333
334/* 0x48  RFCR: Receive Filter/Match Control Register */
335
336
337#define S_RFCR_RFADDR           0
338#define M_RFCR_RFADDR           _DD_MAKEMASK(10,S_RFCR_RFADDR)
339#define V_RFCR_RFADDR(x)        _DD_MAKEVALUE(x,S_RFCR_RFADDR)
340#define G_RFCR_RFADDR(x)        _DD_GETVALUE(x,S_RFCR_RFADDR,M_RFCR_RFADDR)
341
342#define K_RFCR_PMATCH_ADDR      0x000
343#define K_RFCR_PCOUNT_ADDR      0x006
344#define K_RFCR_FILTER_ADDR      0x200
345
346#define M_RFCR_ULM              _DD_MAKEMASK1(19)
347#define M_RFCR_UHEN             _DD_MAKEMASK1(20)
348#define M_RFCR_MHEN             _DD_MAKEMASK1(21)
349#define M_RFCR_AARP             _DD_MAKEMASK1(22)
350#define M_RFCR_APAT0            _DD_MAKEMASK1(23)
351#define M_RFCR_APAT1            _DD_MAKEMASK1(24)
352#define M_RFCR_APAT2            _DD_MAKEMASK1(25)
353#define M_RFCR_APAT3            _DD_MAKEMASK1(26)
354#define M_RFCR_APAT             (M_RFCR_APAT0 | M_RFCR_APAT1 | \
355                                 M_RFCR_APAT2 | M_RFCR_APAT3 )
356#define M_RFCR_APM              _DD_MAKEMASK1(27)
357#define M_RFCR_AAU              _DD_MAKEMASK1(28)
358#define M_RFCR_AAM              _DD_MAKEMASK1(29)
359#define M_RFCR_AAB              _DD_MAKEMASK1(30)
360#define M_RFCR_RFEN             _DD_MAKEMASK1(31)
361
362
363/* 0x4C  RFDR: Receive Filter/Match Data Register */
364
365#define S_RFDR_RFDATA           0
366#define M_RFDR_RFDATA           _DD_MAKEMASK(16,S_RFDR_RFDATA)
367#define V_RFDR_RFDATA(x)        _DD_MAKEVALUE(x,S_RFDR_RFDATA)
368#define G_RFDR_RFDATA(x)        _DD_GETVALUE(x,S_RFDR_RFDATA,M_RFDR_RFDATA)
369
370#define S_RFDR_BMASK            16
371#define M_RFDR_BMASK            _DD_MAKEMASK(2,S_RFDR_BMASK)
372#define V_RFDR_BMASK(x)         _DD_MAKEVALUE(x,S_RFDR_BMASK)
373#define G_RFDR_BMASK(x)         _DD_GETVALUE(x,S_RFDR_BMASK,M_RFDR_BMASK)
374
375
376/* 0x50  BRAR: Boot ROM Address Register */
377
378#define S_BRAR_ADDR             0
379#define M_BRAR_ADDR             _DD_MAKEMASK(16,S_BRAR_ADDR)
380#define V_BRAR_ADDR(x)          _DD_MAKEVALUE(x,S_BRAR_ADDR)
381#define G_BRAR_ADDR(x)          _DD_GETVALUE(x,S_BRAR_ADDR,M_BRAR_ADDR)
382
383#define M_BRAR_AUTOINC          _DD_MAKEMASK1(31)
384
385
386/* 0x54  BRDR: Boot ROM Data Register */
387
388
389/* 0x58  SRR: Silicon Revision Register */
390
391#define S_SRR_REV               0
392#define M_SRR_REV               _DD_MAKEMASK(16,S_SRR_REV)
393#define V_SRR_REV(x)            _DD_MAKEVALUE(x,S_SRR_REV)
394#define G_SRR_REV(x)            _DD_GETVALUE(x,S_SRR_REV,M_SRR_REV)
395
396#define K_REV_CVNG              0x00000302
397#define K_REV_DVNG_UJB          0x00000403
398
399
400/* 0x5C  MIBC: Management Information Base Control Register */
401
402#define M_MIBC_WRN              _DD_MAKEMASK1(0)
403#define M_MIBC_FRZ              _DD_MAKEMASK1(1)
404#define M_MIBC_ACLR             _DD_MAKEMASK1(2)
405#define M_MIBC_MIBS             _DD_MAKEMASK1(3)
406
407
408/* MIB Counters */
409
410/* 0x60  RXErroredPkts  */
411/* 0x64  RXFCSErrors    */
412/* 0x68  RXMsdPktErrors */
413/* 0x6C  RXFAErrors     */
414/* 0x70  RXSymbolErrors */
415/* 0x74  RXFrameTooLong */
416/* 0x78  TXSQEErrors    */
417
418
419/* See ../net/mii.h for fields of standard (MII) PHY registers */
420
421#define K_83815_PHYID1           0x2000
422#define K_83815_PHYID2           0x5C21
423
424#define K_ANNPTR_NULL            0x0001
425
426
427/* 0xC0  PHYSTS: PHY Status Register */
428
429#define PHYSTS_RXERRLATCH        0x2000
430#define PHYSTS_POLARITYSTAT      0x1000
431#define PHYSTS_FALSECARRLATCH    0x0800
432#define PHYSTS_SIGNALDETECT      0x0400
433#define PHYSTS_DESCRAMBLOCK      0x0200
434#define PHYSTS_PAGERECVD         0x0100
435#define PHYSTS_MIIINT            0x0080
436#define PHYSTS_REMOTEFAULT       0x0040
437#define PHYSTS_JABBERDET         0x0020
438#define PHYSTS_ANCOMPLETE        0x0010
439#define PHYSTS_LOOPBACK          0x0008
440#define PHYSTS_DUPLEX            0x0004
441#define PHYSTS_SPEED10           0x0002
442#define PHYSTS_LINKSTAT          0x0001
443
444
445/* 0xC4  MICR: MII Interrupt Control Register */
446
447#define MICR_INTEN               0x0002
448#define MICR_TINT                0x0001
449
450
451/* 0xC8  MISR: MII Interrupt Status and Misc. Control Register */
452
453#define MISR_MINT                0x8000
454#define MISR_MSKLINK             0x4000
455#define MISR_MSKJAB              0x2000
456#define MISR_MSKRF               0x1000
457#define MISR_MSKANC              0x0800
458#define MISR_MSKFHF              0x0400
459#define MISR_MSKRHF              0x0200
460
461
462/* 0xD0  FCSCR: False Carrier Sense Counter Register */
463
464#define FCSCR_FCSCNT             0x00FF
465
466
467/* 0xD4  RECR: Receiver Error Counter Register */
468
469#define RECR_RXERCNT             0x00FF
470
471
472/* 0xD8  PCSR: 100 Mb/s PCS Configuration and Status Register */
473
474#define PCSR_BYP4B5B             0x1000
475#define PCSR_FREECLK             0x0800
476#define PCSR_TQEN                0x0400
477#define PCSR_SDFORCEB            0x0200
478#define PCSR_SDOPTION            0x0100
479#define PCSR_FORCE100OK          0x0020
480#define PCSR_NRZIBYPASS          0x0004
481
482
483/* 0xE4  PHYCR: PHY Control Register */
484
485#define PHYCR_PSR15              0x0800
486#define PHYCR_BISTSTATUS         0x0400
487#define PHYCR_BISTSTART          0x0200
488#define PHYCR_BPSTRETCH          0x0100
489#define PHYCR_PAUSESTS           0x0080
490#define PHYCR_PHYADDR            0x001F
491
492
493/* 0xE8  TBTSCR: 10Base-T Status/Control Register */
494
495#define TBTSCR_LPBK10DIS         0x0100
496#define TBTSCR_LPDIS             0x0080
497#define TBTSCR_FORCELINK10       0x0040
498#define TBTSCR_FORCEPOLCOR       0x0020
499#define TBTSCR_POLARITY          0x0010
500#define TBTSCR_AUTOPOLDIS        0x0008
501#define TBTSCR_HBDIS             0x0002
502#define TBTSCR_JABBERDIS         0x0001
503
504
505/*  MacPhyter Transmit and Receive Descriptors */
506
507/* Common Command/Status Fields */
508#define S_DES1_SIZE              0
509#define M_DES1_SIZE              _DD_MAKEMASK(12,S_DES1_SIZE)
510#define V_DES1_SIZE(x)           _DD_MAKEVALUE(x,S_DES1_SIZE)
511#define G_DES1_SIZE(x)           _DD_GETVALUE(x,S_DES1_SIZE,M_DES1_SIZE)
512
513#define M_DES1_OK                _DD_MAKEMASK1(27)
514#define M_DES1_INTR              _DD_MAKEMASK1(29)
515#define M_DES1_MORE              _DD_MAKEMASK1(30)
516#define M_DES1_OWN               _DD_MAKEMASK1(31)
517
518/* Transmit Command/Status Bits */
519#define S_DES1_CCNT              16
520#define M_DES1_CCNT              _DD_MAKEMASK(4,S_DES1_CCNT)
521#define V_DES1_CCNT(x)           _DD_MAKEVALUE(x,S_DES1_CCNT)
522#define G_DES1_CCNT(x)           _DD_GETVALUE(x,S_DES1_CCNT,M_DES1_CCNT)
523
524#define M_DES1_EC                _DD_MAKEMASK1(20)
525#define M_DES1_OWC               _DD_MAKEMASK1(21)
526#define M_DES1_ED                _DD_MAKEMASK1(22)
527#define M_DES1_TD                _DD_MAKEMASK1(23)
528#define M_DES1_CRS               _DD_MAKEMASK1(24)
529#define M_DES1_TFU               _DD_MAKEMASK1(25)
530#define M_DES1_TXA               _DD_MAKEMASK1(26)
531#define M_DES1_SUPCRC            _DD_MAKEMASK1(28)
532
533/* Receive Command/Status Bits */
534#define M_DES1_COL               _DD_MAKEMASK1(16)
535#define M_DES1_LBP               _DD_MAKEMASK1(17)
536#define M_DES1_FAE               _DD_MAKEMASK1(18)
537#define M_DES1_CRCE              _DD_MAKEMASK1(19)
538#define M_DES1_ISE               _DD_MAKEMASK1(20)
539#define M_DES1_RUNT              _DD_MAKEMASK1(21)
540#define M_DES1_LONG              _DD_MAKEMASK1(22)
541#define M_DES1_RX_ERRORS         (M_DES1_CRCE |                           \
542                                  M_DES1_COL | M_DES1_FAE | M_DES1_ISE |  \
543                                  M_DES1_RUNT | M_DES1_LONG | M_DES1_RXO)
544
545#define S_DES1_DEST              23
546#define M_DES1_DEST              _DD_MAKEMASK(2,S_DES1_DEST)
547#define V_DES1_DEST(x)           _DD_MAKEVALUE(x,S_DES1_DEST)
548#define G_DES1_DEST(x)           _DD_GETVALUE(x,S_DES1_DEST,M_DES1_DEST)
549
550#define K_DEST_REJECT            0
551#define K_DEST_UNICAST           1
552#define K_DEST_MULTICAST         2
553#define K_DEST_BROADCAST         3
554
555#define M_DES1_RXO               _DD_MAKEMASK1(25)
556#define M_DES1_RXA               _DD_MAKEMASK1(26)
557#define M_DES1_INCCRC            _DD_MAKEMASK1(28)
558
559#endif /* _DP83815_H_ */
560