xref: /titanic_51/usr/src/uts/common/sys/miiregs.h (revision 0f80586b3bacc64fa0fe4b2e533b58d252c70e42)
17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate  * CDDL HEADER START
37c478bd9Sstevel@tonic-gate  *
47c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*0f80586bSgd78059  * Common Development and Distribution License (the "License").
6*0f80586bSgd78059  * You may not use this file except in compliance with the License.
77c478bd9Sstevel@tonic-gate  *
87c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
107c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
117c478bd9Sstevel@tonic-gate  * and limitations under the License.
127c478bd9Sstevel@tonic-gate  *
137c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
147c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
167c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
177c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
187c478bd9Sstevel@tonic-gate  *
197c478bd9Sstevel@tonic-gate  * CDDL HEADER END
207c478bd9Sstevel@tonic-gate  */
217c478bd9Sstevel@tonic-gate /*
22*0f80586bSgd78059  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
237c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
247c478bd9Sstevel@tonic-gate  */
257c478bd9Sstevel@tonic-gate 
267c478bd9Sstevel@tonic-gate /*
277c478bd9Sstevel@tonic-gate  * Definitions for MII registers from 802.3u and vendor documentation
287c478bd9Sstevel@tonic-gate  */
297c478bd9Sstevel@tonic-gate 
307c478bd9Sstevel@tonic-gate #ifndef _MIIREGS_H
317c478bd9Sstevel@tonic-gate #define	_MIIREGS_H
327c478bd9Sstevel@tonic-gate 
337c478bd9Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
347c478bd9Sstevel@tonic-gate 
357c478bd9Sstevel@tonic-gate #ifdef __cplusplus
367c478bd9Sstevel@tonic-gate extern "C" {
377c478bd9Sstevel@tonic-gate #endif
387c478bd9Sstevel@tonic-gate 
397c478bd9Sstevel@tonic-gate /* Register addresses: Section 22.2.4 */
407c478bd9Sstevel@tonic-gate #define	MII_CONTROL		0
417c478bd9Sstevel@tonic-gate #define	MII_STATUS		1
427c478bd9Sstevel@tonic-gate #define	MII_PHYIDH		2
437c478bd9Sstevel@tonic-gate #define	MII_PHYIDL		3
447c478bd9Sstevel@tonic-gate #define	MII_AN_ADVERT		4	/* Auto negotiation advertisement. */
457c478bd9Sstevel@tonic-gate #define	MII_AN_LPABLE		5	/* Auto neg. Link Partner Ability  */
467c478bd9Sstevel@tonic-gate #define	MII_AN_EXPANSION	6	/* Auto neg. Expansion.		   */
477c478bd9Sstevel@tonic-gate #define	MII_AN_NXTPGXMIT	7	/* Auto neg. Next Page Transmit	   */
487c478bd9Sstevel@tonic-gate #define	MII_RESERVED		8	/* Reserved up to 16		   */
497c478bd9Sstevel@tonic-gate #define	MII_VENDOR(x)		(16+(x)) /* Vendor specific		   */
507c478bd9Sstevel@tonic-gate 
517c478bd9Sstevel@tonic-gate /* Control register: 22.2.4.1 */
527c478bd9Sstevel@tonic-gate #define	MII_CONTROL_RESET	(1<<15)
537c478bd9Sstevel@tonic-gate #define	MII_CONTROL_LOOPBACK	(1<<14)
547c478bd9Sstevel@tonic-gate #define	MII_CONTROL_100MB	(1<<13)
557c478bd9Sstevel@tonic-gate #define	MII_CONTROL_ANE		(1<<12)
567c478bd9Sstevel@tonic-gate #define	MII_CONTROL_PWRDN	(1<<11)
577c478bd9Sstevel@tonic-gate #define	MII_CONTROL_ISOLATE	(1<<10)
587c478bd9Sstevel@tonic-gate #define	MII_CONTROL_RSAN	(1<<9)
597c478bd9Sstevel@tonic-gate #define	MII_CONTROL_FDUPLEX	(1<<8)
607c478bd9Sstevel@tonic-gate #define	MII_CONTROL_COLTST	(1<<7)
617c478bd9Sstevel@tonic-gate #define	MII_CONTROL_RESERVED	0x7f
627c478bd9Sstevel@tonic-gate 
637c478bd9Sstevel@tonic-gate /* Status register: 22.2.4.2 */
647c478bd9Sstevel@tonic-gate #define	MII_STATUS_100_BASE_T4	(1<<15)
657c478bd9Sstevel@tonic-gate #define	MII_STATUS_100_BASEX_FD	(1<<14)
667c478bd9Sstevel@tonic-gate #define	MII_STATUS_100_BASEX	(1<<13)
677c478bd9Sstevel@tonic-gate #define	MII_STATUS_10_FD	(1<<12)
687c478bd9Sstevel@tonic-gate #define	MII_STATUS_10		(1<<11)
697c478bd9Sstevel@tonic-gate #define	MII_STATUS_RESERVED	(0xf<<7)
707c478bd9Sstevel@tonic-gate #define	MII_STATUS_MFPRMBLSUPR	(1<<6)
717c478bd9Sstevel@tonic-gate #define	MII_STATUS_ANDONE	(1<<5)
727c478bd9Sstevel@tonic-gate #define	MII_STATUS_REMFAULT	(1<<4)
737c478bd9Sstevel@tonic-gate #define	MII_STATUS_CANAUTONEG	(1<<3)
747c478bd9Sstevel@tonic-gate #define	MII_STATUS_LINKUP	(1<<2)
757c478bd9Sstevel@tonic-gate #define	MII_STATUS_JABBERING	(1<<1)
767c478bd9Sstevel@tonic-gate #define	MII_STATUS_EXTENDED	(1<<0)
777c478bd9Sstevel@tonic-gate 
787c478bd9Sstevel@tonic-gate /* Advertisement/Partner ability registers: 28.2.4.1.3/4 */
797c478bd9Sstevel@tonic-gate 
807c478bd9Sstevel@tonic-gate #define	MII_AN_ADVERT_NP	(1<<15)
817c478bd9Sstevel@tonic-gate #define	MII_AN_ADVERT_ACK	(1<<14)
827c478bd9Sstevel@tonic-gate #define	MII_AN_ADVERT_REMFAULT	(1<<13)
837c478bd9Sstevel@tonic-gate #define	MII_AN_ADVERT_RESERVED	(3<<11)
847c478bd9Sstevel@tonic-gate #define	MII_AN_ADVERT_FCS	(1<<10)
857c478bd9Sstevel@tonic-gate #define	MII_AN_ADVERT_TECHABLE	(0xff<<5)
867c478bd9Sstevel@tonic-gate #define	MII_AN_ADVERT_SELECTOR	(0x1f)
877c478bd9Sstevel@tonic-gate 
887c478bd9Sstevel@tonic-gate /* Technology field bits (above). From Annex 28B */
897c478bd9Sstevel@tonic-gate #define	MII_ABILITY_10BASE_T	(1<<5)
907c478bd9Sstevel@tonic-gate #define	MII_ABILITY_10BASE_T_FD	(1<<6)
917c478bd9Sstevel@tonic-gate #define	MII_ABILITY_100BASE_TX	(1<<7)
927c478bd9Sstevel@tonic-gate #define	MII_ABILITY_100BASE_TX_FD (1<<8)
937c478bd9Sstevel@tonic-gate #define	MII_ABILITY_100BASE_T4	(1<<9)
947c478bd9Sstevel@tonic-gate 
957c478bd9Sstevel@tonic-gate /* Expansion register 28.2.4.1.5 */
967c478bd9Sstevel@tonic-gate #define	MII_AN_EXP_PARFAULT	(1<<4)	/* fault detected		  */
977c478bd9Sstevel@tonic-gate #define	MII_AN_EXP_LPCANNXTP	(1<<3)	/* Link partner is Next Page able */
987c478bd9Sstevel@tonic-gate #define	MII_AN_EXP_CANNXTPP	(1<<2)	/* Local is next page able	  */
997c478bd9Sstevel@tonic-gate #define	MII_AN_EXP_PAGERCVD	(1<<1)	/* A new page has been recvd.	  */
1007c478bd9Sstevel@tonic-gate #define	MII_AN_EXP_LPCANAN	(1<<0)	/* LP can auto-negotiate	  */
1017c478bd9Sstevel@tonic-gate 
1027c478bd9Sstevel@tonic-gate /*
1037c478bd9Sstevel@tonic-gate  * Truncated OUIs as found in the PHY Identifier ( 22.2.4.3.1 ),
1047c478bd9Sstevel@tonic-gate  * and known models (and their registers) from those manufacturers
1057c478bd9Sstevel@tonic-gate  */
1067c478bd9Sstevel@tonic-gate 
1077c478bd9Sstevel@tonic-gate #define	PHY_MANUFACTURER(x)	(((x) >> 10) & 0x3fffff) /* 22 bits, 10-31 */
1087c478bd9Sstevel@tonic-gate #define	PHY_MODEL(x)		(((x) >> 4) & 0x3f)	 /* 6 bits,4-9	   */
1097c478bd9Sstevel@tonic-gate #define	PHY_REVISION(x)		((x) & 0xf)		 /* 4 bits, 0-3	   */
1107c478bd9Sstevel@tonic-gate 
1117c478bd9Sstevel@tonic-gate #define	OUI_NATIONAL_SEMICONDUCTOR 0x80017
1127c478bd9Sstevel@tonic-gate #define	NS_DP83840		0x00
1137c478bd9Sstevel@tonic-gate #define	MII_83840_ADDR		25
1147c478bd9Sstevel@tonic-gate #define	NS83840_ADDR_SPEED10	(1<<6)
1157c478bd9Sstevel@tonic-gate #define	NS83840_ADDR_CONSTAT	(1<<5)
1167c478bd9Sstevel@tonic-gate #define	NS83840_ADDR_ADDR	(0x1f<<0)
1177c478bd9Sstevel@tonic-gate 
1187c478bd9Sstevel@tonic-gate #define	OUI_INTEL		0x0aa00
1197c478bd9Sstevel@tonic-gate #define	INTEL_82553_CSTEP	0x35	/* A and B steps are non-standard */
1207c478bd9Sstevel@tonic-gate #define	MII_82553_EX0		16
1217c478bd9Sstevel@tonic-gate #define	I82553_EX0_FDUPLEX	(1<<0)
1227c478bd9Sstevel@tonic-gate #define	I82553_EX0_100MB	(1<<1)
1237c478bd9Sstevel@tonic-gate #define	I82553_EX0_WAKE		(1<<2)
1247c478bd9Sstevel@tonic-gate #define	I82553_EX0_SQUELCH	(3<<3) /* 3:4 */
1257c478bd9Sstevel@tonic-gate #define	I82553_EX0_REVCNTR	(7<<5) /* 5:7 */
1267c478bd9Sstevel@tonic-gate #define	I82553_EX0_FRCFAIL	(1<<8)
1277c478bd9Sstevel@tonic-gate #define	I82553_EX0_TEST		(0x1f<<9) /* 13:9 */
1287c478bd9Sstevel@tonic-gate #define	I82553_EX0_LINKDIS	(1<<14)
1297c478bd9Sstevel@tonic-gate #define	I82553_EX0_JABDIS	(1<<15)
1307c478bd9Sstevel@tonic-gate 
1317c478bd9Sstevel@tonic-gate #define	MII_82553_EX1
1327c478bd9Sstevel@tonic-gate #define	I82553_EX1_RESERVE	(0x1ff<<0) /* 0:8 */
1337c478bd9Sstevel@tonic-gate #define	I82553_EX1_CH2EOF	(1<<9)
1347c478bd9Sstevel@tonic-gate #define	I82553_EX1_MNCHSTR	(1<<10)
1357c478bd9Sstevel@tonic-gate #define	I82553_EX1_EOP		(1<<11)
1367c478bd9Sstevel@tonic-gate #define	I82553_EX1_BADCODE	(1<<12)
1377c478bd9Sstevel@tonic-gate #define	I82553_EX1_INVALCODE	(1<<13)
1387c478bd9Sstevel@tonic-gate #define	I82553_EX1_DCBALANCE	(1<<14)
1397c478bd9Sstevel@tonic-gate #define	I82553_EX1_PAIRSKEW	(1<<15)
1407c478bd9Sstevel@tonic-gate 
1417c478bd9Sstevel@tonic-gate #define	INTEL_82555		0x15
1427c478bd9Sstevel@tonic-gate #define	INTEL_82562_EH		0x33
1437c478bd9Sstevel@tonic-gate #define	INTEL_82562_ET		0x32
144*0f80586bSgd78059 #define	INTEL_82562_EM		0x31
1457c478bd9Sstevel@tonic-gate 
1467c478bd9Sstevel@tonic-gate #define	OUI_ICS			0x57d
1477c478bd9Sstevel@tonic-gate #define	ICS_1890		2
1487c478bd9Sstevel@tonic-gate #define	ICS_1889		1
1497c478bd9Sstevel@tonic-gate #define	ICS_EXCTRL		16
1507c478bd9Sstevel@tonic-gate #define	ICS_EXCTRL_CMDOVRD	(1<<15)
1517c478bd9Sstevel@tonic-gate #define	ICS_EXCTRL_PHYADDR	(0x1f<<6)
1527c478bd9Sstevel@tonic-gate #define	ICS_EXCTRL_SCSTEST	(1<<5)
1537c478bd9Sstevel@tonic-gate #define	ICS_EXCTRL_INVECTEST	(1<<2)
1547c478bd9Sstevel@tonic-gate #define	ICS_EXCTRL_SCDISABLE	(1<<0)
1557c478bd9Sstevel@tonic-gate 
1567c478bd9Sstevel@tonic-gate #define	ICS_QUICKPOLL		17
1577c478bd9Sstevel@tonic-gate #define	ICS_QUICKPOLL_100MB	(1<<15)
1587c478bd9Sstevel@tonic-gate #define	ICS_QUICKPOLL_FDUPLEX	(1<<14)
1597c478bd9Sstevel@tonic-gate #define	ICS_QUICKPOLL_ANPROG	(7<<11)
1607c478bd9Sstevel@tonic-gate #define	ICS_QUICKPOLL_RSE	(1<<10)
1617c478bd9Sstevel@tonic-gate #define	ICS_QUICKPOLL_PLLLOCK	(1<<9)
1627c478bd9Sstevel@tonic-gate #define	ICS_QUICKPOLL_FALSECD	(1<<8)
1637c478bd9Sstevel@tonic-gate #define	ICS_QUICKPOLL_SYMINVAL	(1<<7)
1647c478bd9Sstevel@tonic-gate #define	ICS_QUICKPOLL_SYMHALT	(1<<6)
1657c478bd9Sstevel@tonic-gate #define	ICS_QUICKPOLL_PREMEND	(1<<5)
1667c478bd9Sstevel@tonic-gate #define	ICS_QUICKPOLL_ANDONE	(1<<4)
1677c478bd9Sstevel@tonic-gate #define	ICS_QUICKPOLL_RESERVED	(1<<3)
1687c478bd9Sstevel@tonic-gate #define	ICS_QUICKPOLL_JABBER	(1<<2)
1697c478bd9Sstevel@tonic-gate #define	ICS_QUICKPOLL_REMFAULT	(1<<1)
1707c478bd9Sstevel@tonic-gate #define	ICS_QUICKPOLL_LINKSTAT	(1<<0)
1717c478bd9Sstevel@tonic-gate 
1727c478bd9Sstevel@tonic-gate #define	ICS_10BASET		18
1737c478bd9Sstevel@tonic-gate #define	ICS_10BASET_REMJABBER	(1<<15)
1747c478bd9Sstevel@tonic-gate #define	ICS_10BASET_REVPOLARITY (1<<14)
1757c478bd9Sstevel@tonic-gate #define	ICS_10BASET_RESERVED	(0xff<<6)
1767c478bd9Sstevel@tonic-gate #define	ICS_10BASET_NOJABBER	(1<<5)
1777c478bd9Sstevel@tonic-gate #define	ICS_10BASET_NORMLOOP	(1<<4)
1787c478bd9Sstevel@tonic-gate #define	ICS_10BASET_NOAUTOPOLL	(1<<3)
1797c478bd9Sstevel@tonic-gate #define	ICS_10BASET_NOSQE	(1<<2)
1807c478bd9Sstevel@tonic-gate #define	ICS_10BASET_NOLINKLOSS	(1<<1)
1817c478bd9Sstevel@tonic-gate #define	ICS_10BASET_NOSQUELCH	(1<<0)
1827c478bd9Sstevel@tonic-gate 
1837c478bd9Sstevel@tonic-gate #define	ICS_EXCTRL2		19
1847c478bd9Sstevel@tonic-gate #define	ICS_EXCTRL2_ISREPEATER	(1<<15)
1857c478bd9Sstevel@tonic-gate #define	ICS_EXCTRL2_SOFTPRI	(1<<14)
1867c478bd9Sstevel@tonic-gate #define	ICS_EXCTRL2_LPCANREMF	(1<<13)
1877c478bd9Sstevel@tonic-gate #define	ICS_EXCTRL2_RMFSXMITED	(1<<10)
1887c478bd9Sstevel@tonic-gate #define	ICS_EXCTRL2_ANPWRREMF	(1<<4)
1897c478bd9Sstevel@tonic-gate #define	ICS_EXCTRL2_10BASETQUAL (1<<2)
1907c478bd9Sstevel@tonic-gate #define	ICS_EXCTRL2_AUTOPWRDN	(1<<0)
1917c478bd9Sstevel@tonic-gate 
1927c478bd9Sstevel@tonic-gate #define	OUI_DAVICOM		0x0606e
1937c478bd9Sstevel@tonic-gate 
1947c478bd9Sstevel@tonic-gate #define	DM_SCR			16
1957c478bd9Sstevel@tonic-gate #define	DM_SCR_F_TX		(1<<10)
1967c478bd9Sstevel@tonic-gate #define	DM_SCR_UTP		(1<<9)
1977c478bd9Sstevel@tonic-gate #define	DM_SCR_F_LINK_100	(1<<7)
1987c478bd9Sstevel@tonic-gate #define	DM_SCR_LED_CTL		(1<<5)
1997c478bd9Sstevel@tonic-gate #define	DM_SCR_SMRST		(1<<3)
2007c478bd9Sstevel@tonic-gate #define	DM_SCR_MFPSC		(1<<2)
2017c478bd9Sstevel@tonic-gate #define	DM_SCR_SLEEP		(1<<1)
2027c478bd9Sstevel@tonic-gate #define	DM_SCR_RLOUT		(1<<0)
2037c478bd9Sstevel@tonic-gate 
2047c478bd9Sstevel@tonic-gate #define	DM_SCSR			17
2057c478bd9Sstevel@tonic-gate #define	DM_SCSR_100FDX		(1<<15)
2067c478bd9Sstevel@tonic-gate #define	DM_SCSR_100HDX		(1<<14)
2077c478bd9Sstevel@tonic-gate #define	DM_SCSR_10FDX		(1<<13)
2087c478bd9Sstevel@tonic-gate #define	DM_SCSR_10HDX		(1<<12)
2097c478bd9Sstevel@tonic-gate #define	DM_SCSR_PHYAD		(0x1f<<4)
2107c478bd9Sstevel@tonic-gate #define	DM_SCSR_ANMB		(0x0f)
2117c478bd9Sstevel@tonic-gate 
2127c478bd9Sstevel@tonic-gate #define	DM_10BT			18
2137c478bd9Sstevel@tonic-gate #define	DM_10BT_LB_EN		(1<<14)
2147c478bd9Sstevel@tonic-gate #define	DM_10BT_HBE		(1<<13)
2157c478bd9Sstevel@tonic-gate #define	DM_10BT_JABEN		(1<<11)
2167c478bd9Sstevel@tonic-gate 
2177c478bd9Sstevel@tonic-gate #ifdef __cplusplus
2187c478bd9Sstevel@tonic-gate }
2197c478bd9Sstevel@tonic-gate #endif
2207c478bd9Sstevel@tonic-gate 
2217c478bd9Sstevel@tonic-gate #endif /* _MIIREGS_H */
222