4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
22 * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
27 * Definitions for MII registers from 802.3u and vendor documentation
33 #pragma ident "%Z%%M% %I% %E% SMI"
39 /* Register addresses: Section 22.2.4 */
44 #define MII_AN_ADVERT 4 /* Auto negotiation advertisement. */
45 #define MII_AN_LPABLE 5 /* Auto neg. Link Partner Ability */
46 #define MII_AN_EXPANSION 6 /* Auto neg. Expansion. */
47 #define MII_AN_NXTPGXMIT 7 /* Auto neg. Next Page Transmit */
48 #define MII_RESERVED 8 /* Reserved up to 16 */
49 #define MII_VENDOR(x) (16+(x)) /* Vendor specific */
51 /* Control register: 22.2.4.1 */
52 #define MII_CONTROL_RESET (1<<15)
53 #define MII_CONTROL_LOOPBACK (1<<14)
54 #define MII_CONTROL_100MB (1<<13)
55 #define MII_CONTROL_ANE (1<<12)
56 #define MII_CONTROL_PWRDN (1<<11)
57 #define MII_CONTROL_ISOLATE (1<<10)
58 #define MII_CONTROL_RSAN (1<<9)
59 #define MII_CONTROL_FDUPLEX (1<<8)
60 #define MII_CONTROL_COLTST (1<<7)
61 #define MII_CONTROL_RESERVED 0x7f
63 /* Status register: 22.2.4.2 */
64 #define MII_STATUS_100_BASE_T4 (1<<15)
65 #define MII_STATUS_100_BASEX_FD (1<<14)
66 #define MII_STATUS_100_BASEX (1<<13)
67 #define MII_STATUS_10_FD (1<<12)
68 #define MII_STATUS_10 (1<<11)
69 #define MII_STATUS_RESERVED (0xf<<7)
70 #define MII_STATUS_MFPRMBLSUPR (1<<6)
71 #define MII_STATUS_ANDONE (1<<5)
72 #define MII_STATUS_REMFAULT (1<<4)
73 #define MII_STATUS_CANAUTONEG (1<<3)
74 #define MII_STATUS_LINKUP (1<<2)
75 #define MII_STATUS_JABBERING (1<<1)
76 #define MII_STATUS_EXTENDED (1<<0)
78 /* Advertisement/Partner ability registers: 28.2.4.1.3/4 */
80 #define MII_AN_ADVERT_NP (1<<15)
81 #define MII_AN_ADVERT_ACK (1<<14)
82 #define MII_AN_ADVERT_REMFAULT (1<<13)
83 #define MII_AN_ADVERT_RESERVED (3<<11)
84 #define MII_AN_ADVERT_FCS (1<<10)
85 #define MII_AN_ADVERT_TECHABLE (0xff<<5)
86 #define MII_AN_ADVERT_SELECTOR (0x1f)
88 /* Technology field bits (above). From Annex 28B */
89 #define MII_ABILITY_10BASE_T (1<<5)
90 #define MII_ABILITY_10BASE_T_FD (1<<6)
91 #define MII_ABILITY_100BASE_TX (1<<7)
92 #define MII_ABILITY_100BASE_TX_FD (1<<8)
93 #define MII_ABILITY_100BASE_T4 (1<<9)
95 /* Expansion register 28.2.4.1.5 */
96 #define MII_AN_EXP_PARFAULT (1<<4) /* fault detected */
97 #define MII_AN_EXP_LPCANNXTP (1<<3) /* Link partner is Next Page able */
98 #define MII_AN_EXP_CANNXTPP (1<<2) /* Local is next page able */
99 #define MII_AN_EXP_PAGERCVD (1<<1) /* A new page has been recvd. */
100 #define MII_AN_EXP_LPCANAN (1<<0) /* LP can auto-negotiate */
103 * Truncated OUIs as found in the PHY Identifier ( 22.2.4.3.1 ),
104 * and known models (and their registers) from those manufacturers
107 #define PHY_MANUFACTURER(x) (((x) >> 10) & 0x3fffff) /* 22 bits, 10-31 */
108 #define PHY_MODEL(x) (((x) >> 4) & 0x3f) /* 6 bits,4-9 */
109 #define PHY_REVISION(x) ((x) & 0xf) /* 4 bits, 0-3 */
111 #define OUI_NATIONAL_SEMICONDUCTOR 0x80017
112 #define NS_DP83840 0x00
113 #define MII_83840_ADDR 25
114 #define NS83840_ADDR_SPEED10 (1<<6)
115 #define NS83840_ADDR_CONSTAT (1<<5)
116 #define NS83840_ADDR_ADDR (0x1f<<0)
118 #define OUI_INTEL 0x0aa00
119 #define INTEL_82553_CSTEP 0x35 /* A and B steps are non-standard */
120 #define MII_82553_EX0 16
121 #define I82553_EX0_FDUPLEX (1<<0)
122 #define I82553_EX0_100MB (1<<1)
123 #define I82553_EX0_WAKE (1<<2)
124 #define I82553_EX0_SQUELCH (3<<3) /* 3:4 */
125 #define I82553_EX0_REVCNTR (7<<5) /* 5:7 */
126 #define I82553_EX0_FRCFAIL (1<<8)
127 #define I82553_EX0_TEST (0x1f<<9) /* 13:9 */
128 #define I82553_EX0_LINKDIS (1<<14)
129 #define I82553_EX0_JABDIS (1<<15)
131 #define MII_82553_EX1
132 #define I82553_EX1_RESERVE (0x1ff<<0) /* 0:8 */
133 #define I82553_EX1_CH2EOF (1<<9)
134 #define I82553_EX1_MNCHSTR (1<<10)
135 #define I82553_EX1_EOP (1<<11)
136 #define I82553_EX1_BADCODE (1<<12)
137 #define I82553_EX1_INVALCODE (1<<13)
138 #define I82553_EX1_DCBALANCE (1<<14)
139 #define I82553_EX1_PAIRSKEW (1<<15)
141 #define INTEL_82555 0x15
142 #define INTEL_82562_EH 0x33
143 #define INTEL_82562_ET 0x32
144 #define INTEL_82562_EM 0x31
146 #define OUI_ICS 0x57d
149 #define ICS_EXCTRL 16
150 #define ICS_EXCTRL_CMDOVRD (1<<15)
151 #define ICS_EXCTRL_PHYADDR (0x1f<<6)
152 #define ICS_EXCTRL_SCSTEST (1<<5)
153 #define ICS_EXCTRL_INVECTEST (1<<2)
154 #define ICS_EXCTRL_SCDISABLE (1<<0)
156 #define ICS_QUICKPOLL 17
157 #define ICS_QUICKPOLL_100MB (1<<15)
158 #define ICS_QUICKPOLL_FDUPLEX (1<<14)
159 #define ICS_QUICKPOLL_ANPROG (7<<11)
160 #define ICS_QUICKPOLL_RSE (1<<10)
161 #define ICS_QUICKPOLL_PLLLOCK (1<<9)
162 #define ICS_QUICKPOLL_FALSECD (1<<8)
163 #define ICS_QUICKPOLL_SYMINVAL (1<<7)
164 #define ICS_QUICKPOLL_SYMHALT (1<<6)
165 #define ICS_QUICKPOLL_PREMEND (1<<5)
166 #define ICS_QUICKPOLL_ANDONE (1<<4)
167 #define ICS_QUICKPOLL_RESERVED (1<<3)
168 #define ICS_QUICKPOLL_JABBER (1<<2)
169 #define ICS_QUICKPOLL_REMFAULT (1<<1)
170 #define ICS_QUICKPOLL_LINKSTAT (1<<0)
172 #define ICS_10BASET 18
173 #define ICS_10BASET_REMJABBER (1<<15)
174 #define ICS_10BASET_REVPOLARITY (1<<14)
175 #define ICS_10BASET_RESERVED (0xff<<6)
176 #define ICS_10BASET_NOJABBER (1<<5)
177 #define ICS_10BASET_NORMLOOP (1<<4)
178 #define ICS_10BASET_NOAUTOPOLL (1<<3)
179 #define ICS_10BASET_NOSQE (1<<2)
180 #define ICS_10BASET_NOLINKLOSS (1<<1)
181 #define ICS_10BASET_NOSQUELCH (1<<0)
183 #define ICS_EXCTRL2 19
184 #define ICS_EXCTRL2_ISREPEATER (1<<15)
185 #define ICS_EXCTRL2_SOFTPRI (1<<14)
186 #define ICS_EXCTRL2_LPCANREMF (1<<13)
187 #define ICS_EXCTRL2_RMFSXMITED (1<<10)
188 #define ICS_EXCTRL2_ANPWRREMF (1<<4)
189 #define ICS_EXCTRL2_10BASETQUAL (1<<2)
190 #define ICS_EXCTRL2_AUTOPWRDN (1<<0)
192 #define OUI_DAVICOM 0x0606e
195 #define DM_SCR_F_TX (1<<10)
196 #define DM_SCR_UTP (1<<9)
197 #define DM_SCR_F_LINK_100 (1<<7)
198 #define DM_SCR_LED_CTL (1<<5)
199 #define DM_SCR_SMRST (1<<3)
200 #define DM_SCR_MFPSC (1<<2)
201 #define DM_SCR_SLEEP (1<<1)
202 #define DM_SCR_RLOUT (1<<0)
205 #define DM_SCSR_100FDX (1<<15)
206 #define DM_SCSR_100HDX (1<<14)
207 #define DM_SCSR_10FDX (1<<13)
208 #define DM_SCSR_10HDX (1<<12)
209 #define DM_SCSR_PHYAD (0x1f<<4)
210 #define DM_SCSR_ANMB (0x0f)
213 #define DM_10BT_LB_EN (1<<14)
214 #define DM_10BT_HBE (1<<13)
215 #define DM_10BT_JABEN (1<<11)
221 #endif /* _MIIREGS_H */