xref: /titanic_50/usr/src/uts/common/sys/nxge/nxge_mii.h (revision 6b4389256364527aaad06f3fd83d4b05358a4c02)
16f45ec7bSml29623 /*
26f45ec7bSml29623  * CDDL HEADER START
36f45ec7bSml29623  *
46f45ec7bSml29623  * The contents of this file are subject to the terms of the
56f45ec7bSml29623  * Common Development and Distribution License (the "License").
66f45ec7bSml29623  * You may not use this file except in compliance with the License.
76f45ec7bSml29623  *
86f45ec7bSml29623  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
96f45ec7bSml29623  * or http://www.opensolaris.org/os/licensing.
106f45ec7bSml29623  * See the License for the specific language governing permissions
116f45ec7bSml29623  * and limitations under the License.
126f45ec7bSml29623  *
136f45ec7bSml29623  * When distributing Covered Code, include this CDDL HEADER in each
146f45ec7bSml29623  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
156f45ec7bSml29623  * If applicable, add the following below this CDDL HEADER, with the
166f45ec7bSml29623  * fields enclosed by brackets "[]" replaced with your own identifying
176f45ec7bSml29623  * information: Portions Copyright [yyyy] [name of copyright owner]
186f45ec7bSml29623  *
196f45ec7bSml29623  * CDDL HEADER END
206f45ec7bSml29623  */
216f45ec7bSml29623 /*
22d81011f0Ssbehera  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
236f45ec7bSml29623  * Use is subject to license terms.
246f45ec7bSml29623  */
256f45ec7bSml29623 
266f45ec7bSml29623 #ifndef _SYS_NXGE_NXGE_MII_H_
276f45ec7bSml29623 #define	_SYS_NXGE_NXGE_MII_H_
286f45ec7bSml29623 
296f45ec7bSml29623 #pragma ident	"%Z%%M%	%I%	%E% SMI"
306f45ec7bSml29623 
316f45ec7bSml29623 #ifdef __cplusplus
326f45ec7bSml29623 extern "C" {
336f45ec7bSml29623 #endif
346f45ec7bSml29623 
35*6b438925Ssbehera #include <sys/miiregs.h>
36*6b438925Ssbehera 
376f45ec7bSml29623 /*
386f45ec7bSml29623  * Configuration Register space.
396f45ec7bSml29623  */
406f45ec7bSml29623 
41*6b438925Ssbehera #define	NXGE_MII_LPRXNPR		8
42*6b438925Ssbehera #define	NXGE_MII_GCR			9
43*6b438925Ssbehera #define	NXGE_MII_GSR			10
44*6b438925Ssbehera #define	NXGE_MII_RES0			11
45*6b438925Ssbehera #define	NXGE_MII_RES1			12
46*6b438925Ssbehera #define	NXGE_MII_RES2			13
47*6b438925Ssbehera #define	NXGE_MII_RES3			14
48*6b438925Ssbehera #define	NXGE_MII_ESR			15
49*6b438925Ssbehera 
50*6b438925Ssbehera #define	NXGE_MII_SHADOW			MII_VENDOR(0xc)
51d81011f0Ssbehera /* Shadow register definition */
52*6b438925Ssbehera #define	NXGE_MII_MODE_CONTROL_REG	MII_VENDOR(0xf)
536f45ec7bSml29623 
546f45ec7bSml29623 #define	NXGE_MAX_MII_REGS		32
556f45ec7bSml29623 
566f45ec7bSml29623 /*
576f45ec7bSml29623  * Configuration Register space.
586f45ec7bSml29623  */
596f45ec7bSml29623 typedef struct _mii_regs {
606f45ec7bSml29623 	uchar_t bmcr;		/* Basic mode control register */
616f45ec7bSml29623 	uchar_t bmsr;		/* Basic mode status register */
626f45ec7bSml29623 	uchar_t idr1;		/* Phy identifier register 1 */
636f45ec7bSml29623 	uchar_t idr2;		/* Phy identifier register 2 */
646f45ec7bSml29623 	uchar_t anar;		/* Auto-Negotiation advertisement register */
656f45ec7bSml29623 	uchar_t anlpar;		/* Auto-Negotiation link Partner ability reg */
666f45ec7bSml29623 	uchar_t aner;		/* Auto-Negotiation expansion register */
676f45ec7bSml29623 	uchar_t nptxr;		/* Next page transmit register */
686f45ec7bSml29623 	uchar_t lprxnpr;	/* Link partner received next page register */
696f45ec7bSml29623 	uchar_t gcr;		/* Gigabit basic mode control register. */
706f45ec7bSml29623 	uchar_t gsr;		/* Gigabit basic mode status register */
716f45ec7bSml29623 	uchar_t mii_res1[4];	/* For future use by MII working group */
726f45ec7bSml29623 	uchar_t esr;		/* Extended status register. */
73d81011f0Ssbehera 	uchar_t vendor_res[12];	/* For future use by Phy Vendors */
74d81011f0Ssbehera 	uchar_t shadow;
75d81011f0Ssbehera 	uchar_t vendor_res2[3]; /* For future use by Phy Vendors */
766f45ec7bSml29623 } mii_regs_t, *p_mii_regs_t;
776f45ec7bSml29623 
786f45ec7bSml29623 /*
796f45ec7bSml29623  * MII Register 0: Basic mode control register.
806f45ec7bSml29623  */
816f45ec7bSml29623 typedef union _mii_bmcr {
826f45ec7bSml29623 	uint16_t value;
836f45ec7bSml29623 	struct {
846f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL)
856f45ec7bSml29623 		uint16_t reset:1;
866f45ec7bSml29623 		uint16_t loopback:1;
876f45ec7bSml29623 		uint16_t speed_sel:1;
886f45ec7bSml29623 		uint16_t enable_autoneg:1;
896f45ec7bSml29623 		uint16_t power_down:1;
906f45ec7bSml29623 		uint16_t isolate:1;
916f45ec7bSml29623 		uint16_t restart_autoneg:1;
926f45ec7bSml29623 		uint16_t duplex_mode:1;
936f45ec7bSml29623 		uint16_t col_test:1;
946f45ec7bSml29623 		uint16_t speed_1000_sel:1;
956f45ec7bSml29623 		uint16_t res1:6;
966f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH)
976f45ec7bSml29623 		uint16_t res1:6;
986f45ec7bSml29623 		uint16_t speed_1000_sel:1;
996f45ec7bSml29623 		uint16_t col_test:1;
1006f45ec7bSml29623 		uint16_t duplex_mode:1;
1016f45ec7bSml29623 		uint16_t restart_autoneg:1;
1026f45ec7bSml29623 		uint16_t isolate:1;
1036f45ec7bSml29623 		uint16_t power_down:1;
1046f45ec7bSml29623 		uint16_t enable_autoneg:1;
1056f45ec7bSml29623 		uint16_t speed_sel:1;
1066f45ec7bSml29623 		uint16_t loopback:1;
1076f45ec7bSml29623 		uint16_t reset:1;
1086f45ec7bSml29623 #endif
1096f45ec7bSml29623 	} bits;
1106f45ec7bSml29623 } mii_bmcr_t, *p_mii_bmcr_t;
1116f45ec7bSml29623 
1126f45ec7bSml29623 /*
1136f45ec7bSml29623  * MII Register 1:  Basic mode status register.
1146f45ec7bSml29623  */
1156f45ec7bSml29623 typedef union _mii_bmsr {
1166f45ec7bSml29623 	uint16_t value;
1176f45ec7bSml29623 	struct {
1186f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL)
1196f45ec7bSml29623 		uint16_t link_100T4:1;
1206f45ec7bSml29623 		uint16_t link_100fdx:1;
1216f45ec7bSml29623 		uint16_t link_100hdx:1;
1226f45ec7bSml29623 		uint16_t link_10fdx:1;
1236f45ec7bSml29623 		uint16_t link_10hdx:1;
1246f45ec7bSml29623 		uint16_t res2:2;
1256f45ec7bSml29623 		uint16_t extend_status:1;
1266f45ec7bSml29623 		uint16_t res1:1;
1276f45ec7bSml29623 		uint16_t preamble_supress:1;
1286f45ec7bSml29623 		uint16_t auto_neg_complete:1;
1296f45ec7bSml29623 		uint16_t remote_fault:1;
1306f45ec7bSml29623 		uint16_t auto_neg_able:1;
1316f45ec7bSml29623 		uint16_t link_status:1;
1326f45ec7bSml29623 		uint16_t jabber_detect:1;
1336f45ec7bSml29623 		uint16_t ext_cap:1;
1346f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH)
1356f45ec7bSml29623 		int16_t ext_cap:1;
1366f45ec7bSml29623 		uint16_t jabber_detect:1;
1376f45ec7bSml29623 		uint16_t link_status:1;
1386f45ec7bSml29623 		uint16_t auto_neg_able:1;
1396f45ec7bSml29623 		uint16_t remote_fault:1;
1406f45ec7bSml29623 		uint16_t auto_neg_complete:1;
1416f45ec7bSml29623 		uint16_t preamble_supress:1;
1426f45ec7bSml29623 		uint16_t res1:1;
1436f45ec7bSml29623 		uint16_t extend_status:1;
1446f45ec7bSml29623 		uint16_t res2:2;
1456f45ec7bSml29623 		uint16_t link_10hdx:1;
1466f45ec7bSml29623 		uint16_t link_10fdx:1;
1476f45ec7bSml29623 		uint16_t link_100hdx:1;
1486f45ec7bSml29623 		uint16_t link_100fdx:1;
1496f45ec7bSml29623 		uint16_t link_100T4:1;
1506f45ec7bSml29623 #endif
1516f45ec7bSml29623 	} bits;
1526f45ec7bSml29623 } mii_bmsr_t, *p_mii_bmsr_t;
1536f45ec7bSml29623 
1546f45ec7bSml29623 /*
1556f45ec7bSml29623  * MII Register 2: Physical Identifier 1.
1566f45ec7bSml29623  */
1576f45ec7bSml29623 /* contains BCM OUI bits [3:18] */
1586f45ec7bSml29623 typedef union _mii_idr1 {
1596f45ec7bSml29623 	uint16_t value;
1606f45ec7bSml29623 	struct {
1616f45ec7bSml29623 		uint16_t ieee_address:16;
1626f45ec7bSml29623 	} bits;
1636f45ec7bSml29623 } mii_idr1_t, *p_mii_idr1_t;
1646f45ec7bSml29623 
1656f45ec7bSml29623 /*
1666f45ec7bSml29623  * MII Register 3: Physical Identifier 2.
1676f45ec7bSml29623  */
1686f45ec7bSml29623 typedef union _mii_idr2 {
1696f45ec7bSml29623 	uint16_t value;
1706f45ec7bSml29623 	struct {
1716f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL)
1726f45ec7bSml29623 		uint16_t ieee_address:6;
1736f45ec7bSml29623 		uint16_t model_no:6;
1746f45ec7bSml29623 		uint16_t rev_no:4;
1756f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH)
1766f45ec7bSml29623 		uint16_t rev_no:4;
1776f45ec7bSml29623 		uint16_t model_no:6;
1786f45ec7bSml29623 		uint16_t ieee_address:6;
1796f45ec7bSml29623 #endif
1806f45ec7bSml29623 	} bits;
1816f45ec7bSml29623 } mii_idr2_t, *p_mii_idr2_t;
1826f45ec7bSml29623 
1836f45ec7bSml29623 /*
1846f45ec7bSml29623  * MII Register 4: Auto-negotiation advertisement register.
1856f45ec7bSml29623  */
1866f45ec7bSml29623 typedef union _mii_anar {
1876f45ec7bSml29623 	uint16_t value;
1886f45ec7bSml29623 	struct {
1896f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL)
1906f45ec7bSml29623 		uint16_t np_indication:1;
1916f45ec7bSml29623 		uint16_t acknowledge:1;
1926f45ec7bSml29623 		uint16_t remote_fault:1;
1936f45ec7bSml29623 		uint16_t res1:1;
1946f45ec7bSml29623 		uint16_t cap_asmpause:1;
1956f45ec7bSml29623 		uint16_t cap_pause:1;
1966f45ec7bSml29623 		uint16_t cap_100T4:1;
1976f45ec7bSml29623 		uint16_t cap_100fdx:1;
1986f45ec7bSml29623 		uint16_t cap_100hdx:1;
1996f45ec7bSml29623 		uint16_t cap_10fdx:1;
2006f45ec7bSml29623 		uint16_t cap_10hdx:1;
2016f45ec7bSml29623 		uint16_t selector:5;
2026f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH)
2036f45ec7bSml29623 		uint16_t selector:5;
2046f45ec7bSml29623 		uint16_t cap_10hdx:1;
2056f45ec7bSml29623 		uint16_t cap_10fdx:1;
2066f45ec7bSml29623 		uint16_t cap_100hdx:1;
2076f45ec7bSml29623 		uint16_t cap_100fdx:1;
2086f45ec7bSml29623 		uint16_t cap_100T4:1;
2096f45ec7bSml29623 		uint16_t cap_pause:1;
2106f45ec7bSml29623 		uint16_t cap_asmpause:1;
2116f45ec7bSml29623 		uint16_t res1:1;
2126f45ec7bSml29623 		uint16_t remote_fault:1;
2136f45ec7bSml29623 		uint16_t acknowledge:1;
2146f45ec7bSml29623 		uint16_t np_indication:1;
2156f45ec7bSml29623 #endif
2166f45ec7bSml29623 	} bits;
2176f45ec7bSml29623 } mii_anar_t, *p_mii_anar_t;
2186f45ec7bSml29623 
2196f45ec7bSml29623 /*
2206f45ec7bSml29623  * MII Register 5: Auto-negotiation link partner ability register.
2216f45ec7bSml29623  */
2226f45ec7bSml29623 typedef mii_anar_t mii_anlpar_t, *pmii_anlpar_t;
2236f45ec7bSml29623 
2246f45ec7bSml29623 /*
2256f45ec7bSml29623  * MII Register 6: Auto-negotiation expansion register.
2266f45ec7bSml29623  */
2276f45ec7bSml29623 typedef union _mii_aner {
2286f45ec7bSml29623 	uint16_t value;
2296f45ec7bSml29623 	struct {
2306f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL)
2316f45ec7bSml29623 		uint16_t res:11;
2326f45ec7bSml29623 		uint16_t mlf:1;
2336f45ec7bSml29623 		uint16_t lp_np_able:1;
2346f45ec7bSml29623 		uint16_t np_able:1;
2356f45ec7bSml29623 		uint16_t page_rx:1;
2366f45ec7bSml29623 		uint16_t lp_an_able:1;
2376f45ec7bSml29623 #else
2386f45ec7bSml29623 		uint16_t lp_an_able:1;
2396f45ec7bSml29623 		uint16_t page_rx:1;
2406f45ec7bSml29623 		uint16_t np_able:1;
2416f45ec7bSml29623 		uint16_t lp_np_able:1;
2426f45ec7bSml29623 		uint16_t mlf:1;
2436f45ec7bSml29623 		uint16_t res:11;
2446f45ec7bSml29623 #endif
2456f45ec7bSml29623 	} bits;
2466f45ec7bSml29623 } mii_aner_t, *p_mii_aner_t;
2476f45ec7bSml29623 
2486f45ec7bSml29623 /*
2496f45ec7bSml29623  * MII Register 7: Next page transmit register.
2506f45ec7bSml29623  */
2516f45ec7bSml29623 typedef	union _mii_nptxr {
2526f45ec7bSml29623 	uint16_t value;
2536f45ec7bSml29623 	struct {
2546f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL)
2556f45ec7bSml29623 		uint16_t np:1;
2566f45ec7bSml29623 		uint16_t res:1;
2576f45ec7bSml29623 		uint16_t msgp:1;
2586f45ec7bSml29623 		uint16_t ack2:1;
2596f45ec7bSml29623 		uint16_t toggle:1;
2606f45ec7bSml29623 		uint16_t res1:11;
2616f45ec7bSml29623 #else
2626f45ec7bSml29623 		uint16_t res1:11;
2636f45ec7bSml29623 		uint16_t toggle:1;
2646f45ec7bSml29623 		uint16_t ack2:1;
2656f45ec7bSml29623 		uint16_t msgp:1;
2666f45ec7bSml29623 		uint16_t res:1;
2676f45ec7bSml29623 		uint16_t np:1;
2686f45ec7bSml29623 #endif
2696f45ec7bSml29623 	} bits;
2706f45ec7bSml29623 } mii_nptxr_t, *p_mii_nptxr_t;
2716f45ec7bSml29623 
2726f45ec7bSml29623 /*
2736f45ec7bSml29623  * MII Register 8: Link partner received next page register.
2746f45ec7bSml29623  */
2756f45ec7bSml29623 typedef union _mii_lprxnpr {
2766f45ec7bSml29623 	uint16_t value;
2776f45ec7bSml29623 	struct {
2786f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL)
2796f45ec7bSml29623 		uint16_t np:1;
2806f45ec7bSml29623 			uint16_t ack:1;
2816f45ec7bSml29623 		uint16_t msgp:1;
2826f45ec7bSml29623 		uint16_t ack2:1;
2836f45ec7bSml29623 		uint16_t toggle:1;
2846f45ec7bSml29623 		uint16_t mcf:11;
2856f45ec7bSml29623 #else
2866f45ec7bSml29623 		uint16_t mcf:11;
2876f45ec7bSml29623 		uint16_t toggle:1;
2886f45ec7bSml29623 		uint16_t ack2:1;
2896f45ec7bSml29623 		uint16_t msgp:1;
2906f45ec7bSml29623 		uint16_t ack:1;
2916f45ec7bSml29623 		uint16_t np:1;
2926f45ec7bSml29623 #endif
2936f45ec7bSml29623 	} bits;
2946f45ec7bSml29623 } mii_lprxnpr_t, *p_mii_lprxnpr_t;
2956f45ec7bSml29623 
2966f45ec7bSml29623 /*
2976f45ec7bSml29623  * MII Register 9: 1000BaseT control register.
2986f45ec7bSml29623  */
2996f45ec7bSml29623 typedef union _mii_gcr {
3006f45ec7bSml29623 	uint16_t value;
3016f45ec7bSml29623 	struct {
3026f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL)
3036f45ec7bSml29623 		uint16_t test_mode:3;
3046f45ec7bSml29623 		uint16_t ms_mode_en:1;
3056f45ec7bSml29623 		uint16_t master:1;
3066f45ec7bSml29623 		uint16_t dte_or_repeater:1;
3076f45ec7bSml29623 		uint16_t link_1000fdx:1;
3086f45ec7bSml29623 		uint16_t link_1000hdx:1;
3096f45ec7bSml29623 		uint16_t res:8;
3106f45ec7bSml29623 #else
3116f45ec7bSml29623 		uint16_t res:8;
3126f45ec7bSml29623 		uint16_t link_1000hdx:1;
3136f45ec7bSml29623 		uint16_t link_1000fdx:1;
3146f45ec7bSml29623 		uint16_t dte_or_repeater:1;
3156f45ec7bSml29623 		uint16_t master:1;
3166f45ec7bSml29623 		uint16_t ms_mode_en:1;
3176f45ec7bSml29623 		uint16_t test_mode:3;
3186f45ec7bSml29623 #endif
3196f45ec7bSml29623 	} bits;
3206f45ec7bSml29623 } mii_gcr_t, *p_mii_gcr_t;
3216f45ec7bSml29623 
3226f45ec7bSml29623 /*
3236f45ec7bSml29623  * MII Register 10: 1000BaseT status register.
3246f45ec7bSml29623  */
3256f45ec7bSml29623 typedef union _mii_gsr {
3266f45ec7bSml29623 	uint16_t value;
3276f45ec7bSml29623 	struct {
3286f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL)
3296f45ec7bSml29623 		uint16_t ms_config_fault:1;
3306f45ec7bSml29623 		uint16_t ms_resolve:1;
3316f45ec7bSml29623 		uint16_t local_rx_status:1;
3326f45ec7bSml29623 		uint16_t remote_rx_status:1;
3336f45ec7bSml29623 		uint16_t link_1000fdx:1;
3346f45ec7bSml29623 		uint16_t link_1000hdx:1;
3356f45ec7bSml29623 		uint16_t res:2;
3366f45ec7bSml29623 		uint16_t idle_err_cnt:8;
3376f45ec7bSml29623 #else
3386f45ec7bSml29623 		uint16_t idle_err_cnt:8;
3396f45ec7bSml29623 		uint16_t res:2;
3406f45ec7bSml29623 		uint16_t link_1000hdx:1;
3416f45ec7bSml29623 		uint16_t link_1000fdx:1;
3426f45ec7bSml29623 		uint16_t remote_rx_status:1;
3436f45ec7bSml29623 		uint16_t local_rx_status:1;
3446f45ec7bSml29623 		uint16_t ms_resolve:1;
3456f45ec7bSml29623 		uint16_t ms_config_fault:1;
3466f45ec7bSml29623 #endif
3476f45ec7bSml29623 	} bits;
3486f45ec7bSml29623 } mii_gsr_t, *p_mii_gsr_t;
3496f45ec7bSml29623 
3506f45ec7bSml29623 /*
3516f45ec7bSml29623  * MII Register 15: Extended status register.
3526f45ec7bSml29623  */
3536f45ec7bSml29623 typedef union _mii_esr {
3546f45ec7bSml29623 	uint16_t value;
3556f45ec7bSml29623 	struct {
3566f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL)
3576f45ec7bSml29623 		uint16_t link_1000Xfdx:1;
3586f45ec7bSml29623 		uint16_t link_1000Xhdx:1;
3596f45ec7bSml29623 		uint16_t link_1000fdx:1;
3606f45ec7bSml29623 		uint16_t link_1000hdx:1;
3616f45ec7bSml29623 		uint16_t res:12;
3626f45ec7bSml29623 #else
3636f45ec7bSml29623 			uint16_t res:12;
3646f45ec7bSml29623 		uint16_t link_1000hdx:1;
3656f45ec7bSml29623 		uint16_t link_1000fdx:1;
3666f45ec7bSml29623 		uint16_t link_1000Xhdx:1;
3676f45ec7bSml29623 		uint16_t link_1000Xfdx:1;
3686f45ec7bSml29623 #endif
3696f45ec7bSml29623 	} bits;
3706f45ec7bSml29623 } mii_esr_t, *p_mii_esr_t;
3716f45ec7bSml29623 
372d81011f0Ssbehera #define	NXGE_MODE_SELECT_FIBER	0x01
373d81011f0Ssbehera /* Shadow regiser 0x11111 */
374d81011f0Ssbehera typedef union _mii_mode_control_stat {
375d81011f0Ssbehera 	uint16_t value;
376d81011f0Ssbehera 	struct {
377d81011f0Ssbehera #if defined(_BIT_FIELDS_HTOL)
378d81011f0Ssbehera 		uint16_t write_enable:1;
379d81011f0Ssbehera 		uint16_t shadow:5;
380d81011f0Ssbehera 		uint16_t rsv:1;
381d81011f0Ssbehera 		uint16_t change:1;
382d81011f0Ssbehera 		uint16_t copper:1;
383d81011f0Ssbehera 		uint16_t fiber:1;
384d81011f0Ssbehera 		uint16_t copper_energy:1;
385d81011f0Ssbehera 		uint16_t fiber_signal:1;
386d81011f0Ssbehera 		uint16_t rsv1:1;
387d81011f0Ssbehera 		uint16_t mode:2;
388d81011f0Ssbehera 		uint16_t enable:1;
389d81011f0Ssbehera #elif defined(_BIT_FIELDS_LTOH)
390d81011f0Ssbehera 		uint16_t enable:1;
391d81011f0Ssbehera 		uint16_t mode:2;
392d81011f0Ssbehera 		uint16_t rsv1:1;
393d81011f0Ssbehera 		uint16_t fiber_signal:1;
394d81011f0Ssbehera 		uint16_t copper_energy:1;
395d81011f0Ssbehera 		uint16_t fiber:1;
396d81011f0Ssbehera 		uint16_t copper:1;
397d81011f0Ssbehera 		uint16_t change:1;
398d81011f0Ssbehera 		uint16_t rsv:1;
399d81011f0Ssbehera 		uint16_t shadow:5;
400d81011f0Ssbehera 		uint16_t write_enable:1;
401d81011f0Ssbehera #endif
402d81011f0Ssbehera 	} bits;
403d81011f0Ssbehera } mii_mode_control_stat_t, *p_mode_control_stat_t;
404d81011f0Ssbehera 
4056f45ec7bSml29623 #ifdef __cplusplus
4066f45ec7bSml29623 }
4076f45ec7bSml29623 #endif
4086f45ec7bSml29623 
4096f45ec7bSml29623 #endif /* _SYS_NXGE_NXGE_MII_H_ */
410