]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/dev/dme/if_dmereg.h
MFV 354917, 354918, 354919
[FreeBSD/FreeBSD.git] / sys / dev / dme / if_dmereg.h
1 /*
2  * Copyright (C) 2010 Andrew Turner
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24  * SUCH DAMAGE.
25  *
26  * $FreeBSD$
27  */
28
29 #ifndef __IF_DMEREG_H__
30 #define __IF_DMEREG_H__
31
32 /*
33  * DM9000 register definitions
34  */
35 #define DME_NCR         0x00
36 #define  NCR_EXT_PHY    (1<<7)
37 #define  NCR_WAKEEN     (1<<6)
38 #define  NCR_FCOL       (1<<4)
39 #define  NCR_FDX        (1<<3)
40 #define  NCR_LBK_NORMAL (0<<1)
41 #define  NCR_LBK_MAC    (1<<1)
42 #define  NCR_LBK_PHY    (2<<1)
43 #define  NCR_RST        (1<<0)
44 #define DME_NSR         0x01
45 #define  NSR_SPEED      (1<<7)
46 #define  NSR_LINKST     (1<<6)
47 #define  NSR_WAKEST     (1<<5)
48 #define  NSR_TX2END     (1<<3)
49 #define  NSR_TX1END     (1<<2)
50 #define  NSR_RXOV       (1<<1)
51 #define DME_TCR         0x02
52 #define  TCR_TJDIS      (1<<6)
53 #define  TCR_EXCECM     (1<<5)
54 #define  TCR_PAD_DIS2   (1<<4)
55 #define  TCR_PAD_CRC2   (1<<3)
56 #define  TCR_PAD_DIS1   (1<<2)
57 #define  TCR_PAD_CRC1   (1<<1)
58 #define  TCR_TXREQ      (1<<0)
59 #define DME_TSR1        0x03
60 #define DME_TSR2        0x04
61 #define DME_RCR         0x05
62 #define  RCR_WTDIS      (1<<6)
63 #define  RCR_DIS_LONG   (1<<5)
64 #define  RCR_DIS_CRC    (1<<4)
65 #define  RCR_ALL        (1<<3)
66 #define  RCR_RUNT       (1<<2)
67 #define  RCR_PRMSC      (1<<1)
68 #define  RCR_RXEN       (1<<0)
69 #define DME_RSR         0x06
70 #define DME_ROCR        0x07
71 #define DME_BPTR        0x08
72 #define  BPTR_BPHW(v)   (((v) & 0x0f) << 4)
73 #define  BPTR_JPT(v)    (((v) & 0x0f) << 0)
74 #define DME_FCTR        0x09
75 #define  FCTR_HWOT(v)   (((v) & 0x0f) << 4)
76 #define  FCTR_LWOT(v)   (((v) & 0x0f) << 0)
77 #define DME_FCR         0x0A
78 #define DME_EPCR        0x0B
79 #define  EPCR_REEP      (1<<5)
80 #define  EPCR_WEP       (1<<4)
81 #define  EPCR_EPOS      (1<<3)
82 #define  EPCR_ERPRR     (1<<2)
83 #define  EPCR_ERPRW     (1<<1)
84 #define  EPCR_ERRE      (1<<0)
85 #define DME_EPAR        0x0C
86 #define DME_EPDRL       0x0D
87 #define DME_EPDRH       0x0E
88 #define DME_WCR         0x0F
89 #define DME_PAR_BASE    0x10
90 #define DME_PAR(n)      (DME_PAR_BASE + n)
91 #define DME_MAR_BASE    0x16
92 #define DME_MAR(n)      (DME_MAR_BASE + n)
93 #define DME_GPCR        0x1E
94 #define DME_GPR         0x1F
95 #define DME_TRPAL       0x22
96 #define DME_TRPAH       0x23
97 #define DME_RWPAL       0x24
98 #define DME_RWPAH       0x25
99 #define DME_VIDL        0x28
100 #define DME_VIDH        0x29
101 #define DME_PIDL        0x2A
102 #define DME_PIDH        0x2B
103 #define DME_CHIPR       0x2C
104 #define DME_SMCR        0x2F
105 #define DME_MRCMDX      0xF0
106 #define DME_MRCMD       0xF2
107 #define DME_MRRL        0xF4
108 #define DME_MRRH        0xF5
109 #define DME_MWCMDX      0xF6
110 #define DME_MWCMD       0xF8
111 #define DME_MWRL        0xFA
112 #define DME_MWRH        0xFB
113 #define DME_TXPLL       0xFC
114 #define DME_TXPLH       0xFD
115 #define DME_ISR         0xFE
116 #define  ISR_LNKCHG     (1<<5)
117 #define  ISR_UDRUN      (1<<4)
118 #define  ISR_ROO        (1<<3)
119 #define  ISR_ROS        (1<<2)
120 #define  ISR_PT         (1<<1)
121 #define  ISR_PR         (1<<0)
122
123 #define DME_IMR         0xFF
124 #define  IMR_PAR        (1<<7)
125 #define  IMR_LNKCHGI    (1<<5)
126 #define  IMR_UDRUNI     (1<<4)
127 #define  IMR_ROOI       (1<<3)
128 #define  IMR_ROI        (1<<2)
129 #define  IMR_PTI        (1<<1)
130 #define  IMR_PRI        (1<<0)
131
132 /* Extra PHY register from DM9000B */
133 #define MII_DME_DSPCR   0x1B
134 #define DSPCR_INIT      0xE100
135
136 #endif /* __DMEREGS_H__ */
137